| Следующая версия | Предыдущая версия |
| selfhosted:zerotier [2026/04/27 14:18] – init: ZeroTier deep-dive melnoff | selfhosted:zerotier [2026/04/27 18:03] (текущий) – controller upgraded 1.14.1 -> 1.16.0 melnoff |
|---|
| |
| ^ Узел / Description ^ ZT addr ^ ZT IP ^ Public/LAN endpoint ^ Заметки ^ | ^ Узел / Description ^ ZT addr ^ ZT IP ^ Public/LAN endpoint ^ Заметки ^ |
| | Контроллер + moon (хост ''zt.melnoff.com'') | ''c53bc939c1'' | ''172.25.30.225'' | ''94.103.86.3:9993'' | Linux Oracle 10. ZT крутится в Docker (zyclonite/zerotier:1.14.1). Web UI = ztnet. | | | Контроллер + moon (хост ''zt.melnoff.com'') | ''c53bc939c1'' | ''172.25.30.225'' | ''94.103.86.3:9993'' | Linux Oracle 10. ZT крутится в Docker (zyclonite/zerotier:1.16.0). Web UI = ztnet. | |
| | Этот мак | ''54dcf8821c'' | ''172.25.30.11'' | ''212.74.229.169:9993'' | macOS, ZT 1.16.1, ''feth2340'' интерфейс. | | | Этот мак | ''54dcf8821c'' | ''172.25.30.11'' | ''212.74.229.169:9993'' | macOS, ZT 1.16.1, ''feth2340'' интерфейс. | |
| | Узел "imelnikov" | (см. контроллер) | ''172.25.30.10'' | — | Доступ ''ssh imelnikov@172.25.30.10''. | | | Узел "imelnikov" | (см. контроллер) | ''172.25.30.10'' | — | Доступ ''ssh imelnikov@172.25.30.10''. | |
| |
| ^ Контейнер ^ Образ ^ Порт ^ Назначение ^ | ^ Контейнер ^ Образ ^ Порт ^ Назначение ^ |
| | ''zerotier'' | ''zyclonite/zerotier:1.14.1'' | UDP 9993 (host network) | Сам ZT-демон в режиме контроллера. ZT-addr ''c53bc939c1''. | | | ''zerotier'' | ''zyclonite/zerotier:1.16.0'' | UDP 9993 (host network) | Сам ZT-демон в режиме контроллера. ZT-addr ''c53bc939c1''. | |
| | ''ztnet'' | ''sinamics/ztnet:latest'' | ''3000'' (HTTP) | Современный web UI/API для управления контроллером. | | | ''ztnet'' | ''sinamics/ztnet:latest'' | ''3000'' (HTTP) | Современный web UI/API для управления контроллером. | |
| | ''postgres'' | ''postgres:16-alpine'' | (internal) | БД для ztnet. | | | ''postgres'' | ''postgres:16-alpine'' | (internal) | БД для ztnet. | |
| |
| ⚠️ Версия zerotier-демона **1.14.1** — старая. На клиентах уже 1.16.x. Пока работает, но в долгосрочной перспективе стоит обновить до 1.16.x (для возможного улучшения WHOIS-протокола). | Обновлён до 1.16.0 на 2026-04-27 (in-place recreate с named volume ''ztnet_zerotier''; identity и БД members сохранены). Compose-файл: ''/opt/ztnet/docker-compose.yml''. Бэкап volume оставлен в ''/root/zt-volume-backup-*.tgz''. |
| |
| ==== Полезные команды на контроллере ==== | ==== Полезные команды на контроллере ==== |
| * [[https://github.com/sinamics/ztnet|ztnet (controller UI)]] | * [[https://github.com/sinamics/ztnet|ztnet (controller UI)]] |
| * [[selfhosted:hardware|Где физически живут участники сети]] | * [[selfhosted:hardware|Где физически живут участники сети]] |
| | |
| | ===== Резервная копия moon-файла ===== |
| | |
| | На случай, если контроллер ''zt.melnoff.com'' будет недоступен (катастрофа / блокировка / порт 9993 закрыт), а нужно поднять новый клиент — вот канонический moon-файл в base64. |
| | |
| | В файле **нет** приватных ключей — только публичная identity moon-узла, его stable endpoint и подпись world'а. Поэтому хранить его в публичной wiki безопасно. |
| | |
| | * **Имя файла:** ''000000c53bc939c1.moon'' |
| | * **Размер:** 259 байт |
| | * **SHA-256:** ''76e8a39807413a5b650c61d133d53285492484af0a7d519cf72a86dd3ce76cf6'' |
| | * **Извлечён с:** ''zt.melnoff.com:/var/lib/zerotier-one/moons.d/000000c53bc939c1.moon'' (в Docker-контейнере ''zerotier''). |
| | |
| | ==== Содержимое (base64) ==== |
| | |
| | <file text moon.b64> |
| | fwAAAMU7yTnBAAABnK+hl0TThMZt6mNZ+M7RQUomXAqP14FfhYP31JFStqq/jyPQcZjitqCMpAHybQcKvbtOW+8oLS2CSNAxzpru31jfdZwqwP1gRqQV7UP6nk+nGmCJcToCv+gF4CUe+JiQaLRXpQEPkeSeSREa4W/4DQ/2NmxR0J7qdLPYWmzZhWknkTbrCzr/9qY6M14n+j2IIPrWKO18x06B6Ed1HZ/Z2KIIlcwVAcU7yTnBALm27ZEIiAep3L8bws8Jwp88Q1I52ZzB8iUyNesmZbJ74rWPvgYpHJq5p66QE4l5x3wAkt0LZ3IqD4TSoVcatj0AAQReZ1YDJwkAAA== |
| | </file> |
| | |
| | ==== Восстановление на новом клиенте ==== |
| | |
| | === Linux === |
| | |
| | <code bash> |
| | # 1. Декодировать в правильное имя файла |
| | mkdir -p /var/lib/zerotier-one/moons.d |
| | echo 'fwAAAMU7yTnBAAABnK+hl0TThMZt6mNZ+M7RQUomXAqP14FfhYP31JFStqq/jyPQcZjitqCMpAHybQcKvbtOW+8oLS2CSNAxzpru31jfdZwqwP1gRqQV7UP6nk+nGmCJcToCv+gF4CUe+JiQaLRXpQEPkeSeSREa4W/4DQ/2NmxR0J7qdLPYWmzZhWknkTbrCzr/9qY6M14n+j2IIPrWKO18x06B6Ed1HZ/Z2KIIlcwVAcU7yTnBALm27ZEIiAep3L8bws8Jwp88Q1I52ZzB8iUyNesmZbJ74rWPvgYpHJq5p66QE4l5x3wAkt0LZ3IqD4TSoVcatj0AAQReZ1YDJwkAAA==' \ |
| | | base64 -d > /var/lib/zerotier-one/moons.d/000000c53bc939c1.moon |
| | |
| | # 2. Проверить (sha256 должен совпасть) |
| | sha256sum /var/lib/zerotier-one/moons.d/000000c53bc939c1.moon |
| | # ожидаем: 76e8a39807413a5b650c61d133d53285492484af0a7d519cf72a86dd3ce76cf6 |
| | |
| | # 3. Перезапустить демон |
| | sudo systemctl restart zerotier-one |
| | |
| | # 4. Убедиться что moon подхватился |
| | sudo zerotier-cli listmoons |
| | </code> |
| | |
| | === macOS === |
| | |
| | <code bash> |
| | sudo mkdir -p "/Library/Application Support/ZeroTier/One/moons.d" |
| | echo 'fwAAAMU7yTnBAAABnK+hl0TThMZt6mNZ+M7RQUomXAqP14FfhYP31JFStqq/jyPQcZjitqCMpAHybQcKvbtOW+8oLS2CSNAxzpru31jfdZwqwP1gRqQV7UP6nk+nGmCJcToCv+gF4CUe+JiQaLRXpQEPkeSeSREa4W/4DQ/2NmxR0J7qdLPYWmzZhWknkTbrCzr/9qY6M14n+j2IIPrWKO18x06B6Ed1HZ/Z2KIIlcwVAcU7yTnBALm27ZEIiAep3L8bws8Jwp88Q1I52ZzB8iUyNesmZbJ74rWPvgYpHJq5p66QE4l5x3wAkt0LZ3IqD4TSoVcatj0AAQReZ1YDJwkAAA==' \ |
| | | base64 -D | sudo tee "/Library/Application Support/ZeroTier/One/moons.d/000000c53bc939c1.moon" > /dev/null |
| | |
| | # Перезапуск |
| | sudo launchctl kickstart -k system/com.zerotier.one |
| | sudo zerotier-cli listmoons |
| | </code> |
| | |
| | === Windows (PowerShell, admin) === |
| | |
| | <code powershell> |
| | $b64 = 'fwAAAMU7yTnBAAABnK+hl0TThMZt6mNZ+M7RQUomXAqP14FfhYP31JFStqq/jyPQcZjitqCMpAHybQcKvbtOW+8oLS2CSNAxzpru31jfdZwqwP1gRqQV7UP6nk+nGmCJcToCv+gF4CUe+JiQaLRXpQEPkeSeSREa4W/4DQ/2NmxR0J7qdLPYWmzZhWknkTbrCzr/9qY6M14n+j2IIPrWKO18x06B6Ed1HZ/Z2KIIlcwVAcU7yTnBALm27ZEIiAep3L8bws8Jwp88Q1I52ZzB8iUyNesmZbJ74rWPvgYpHJq5p66QE4l5x3wAkt0LZ3IqD4TSoVcatj0AAQReZ1YDJwkAAA==' |
| | $dir = 'C:\ProgramData\ZeroTier\One\moons.d' |
| | New-Item -ItemType Directory -Force -Path $dir | Out-Null |
| | [IO.File]::WriteAllBytes("$dir\000000c53bc939c1.moon", [Convert]::FromBase64String($b64)) |
| | Restart-Service ZeroTierOneService |
| | & 'C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat' listmoons |
| | </code> |
| | |
| | ==== Альтернатива — без файла ==== |
| | |
| | Если узел может достучаться до публичных planet'ов ZT, можно обойтись без файла — одной командой: |
| | |
| | <code bash> |
| | sudo zerotier-cli orbit c53bc939c1 c53bc939c1 |
| | </code> |
| | |
| | Демон сам найдёт identity moon-узла через planet'ы. Это проще, но требует, чтобы хотя бы при первом запуске planet'ы были достижимы. |
| |