Преимущества
⭐️ Нет ограничения по слотам.
⭐️ Низкий пинг - можно выбрать любую локацию, например Москва или Питер.
⭐️ Безлимитное количество сетей и устройств, ограничено только мощностью сервера.
⭐️ Нет необходимости покупать дорогостоящий сервер - достаточно арендовать сервер с минимальными ресурсами для обеспечения соединения между игроками, которые и будут выступать хостом.
Установка
Для работы панели необходимо установить Docker:
curl -fsSL https://get.docker.com -o get-docker.sh && sudo bash get-docker.sh
Создадим директорию, в которой будет находиться наше решение:
mkdir -p /srv/zerotier/
Создадим в рабочей директории решения файл docker-compose.yml:
touch /srv/zerotier/docker-compose.yml
Добавим в него следующее содержимое, по желанию указав необходимые параметры окружения:
services:
postgres:
image: postgres:15.2-alpine
container_name: ztnet-database
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: ztnet
volumes:
- postgres-data:/var/lib/postgresql/data
zerotier:
image: zyclonite/zerotier:1.14.2
hostname: zerotier
container_name: zerotier
restart: unless-stopped
volumes:
- zerotier:/var/lib/zerotier-one
cap_add:
- NET_ADMIN
- SYS_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
ports:
- "9993:9993/udp"
environment:
- ZT_OVERRIDE_LOCAL_CONF=true
- ZT_ALLOW_MANAGEMENT_FROM=172.31.255.0/29
ztnet:
image: sinamics/ztnet:latest
container_name: ztnet
working_dir: /app
volumes:
- zerotier:/var/lib/zerotier-one
restart: unless-stopped
ports:
- 3000:3000
environment:
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: ztnet
NEXTAUTH_URL: "http://localhost:3000"
NEXTAUTH_SECRET: "random_secret"
NEXTAUTH_URL_INTERNAL: "http://ztnet:3000"
links:
- postgres
depends_on:
- postgres
- zerotier
volumes:
zerotier:
postgres-data:
networks:
default:
name: zerotier
driver: bridge
ipam:
driver: default
config:
- subnet: 172.31.255.0/29
Запуск и настройка
Запустим командой:
docker compose -f /srv/zerotier/docker-compose.yml up -d
Входим в установленную панель по адресу http://<IP_СЕРВЕРА>:3000

Регистрируемся, нажав на кнопку «Get started!», вводим имя пользователя, любую почту (подтверждать её не нужно) и пароль.

После регистрации сразу откроется главный экран панели, на котором нам необходимо нажать «Create a network», для того чтобы приступить к созданию приватной сети.

Созданная сеть выглядит следующим образом:

Сетью уже можно пользоваться, но давайте разберём подробно некоторые моменты:
В правом верхнем углу имеется переключатель видимости сети: Private и Public.

Если необходимо чтобы сеть была доступна только доверенным лицам, и Вы вручную одобряли тех пользователей, которые желают присоединиться к сети – выбираем Private.
Если желаете сделать сеть доступной для свободного присоединения для всех без исключения – выбираем Public.
Вы также можете настроить префикс новой сети, выбрав один из популярных вариантов, или же задав свой, в разделе IP Assignment → Advanced.

Для примера зададим новый префикс сети с CIDR 10.0.0.0/24. Тогда укажем следующие значения:
Range start – 10.0.0.1
Range end – 10.0.0.254

Применив изменения, добавится новый route в разделе «Managed Routes». При этом желательно удалить старый route и старый префикс, в нашем случае это 10.121.15.0/24

Подключение
Устанавливаем клиент ZeroTier с официального сайта, после чего подключаемся к нашей сети.

Жмем ПКМ по иконке ZeroTier в трее и выбираем в нём пункт «Join New network». В появившемся окне вводим ID сети, которую мы создали. Его можно найти в установленной веб-панели ZTNet на вкладке сети.

Новое подключение необходимо подтвердить на стороне панели, нажав на чекбокс около клиента, который пытается осуществить подключение. Тоже самое необходимо осуществить на стороне каждого клиента, который должен находиться в сети ZeroTier.

Эксплуатация
Проверим работоспособность нашего решения на практике:После подключения другого клиента (Ваших друзей) к сети проверим возможность подключения к нему, проверив прямой пинг до него через терминал, возьмём IP нашего друга из примера: Win + R → cmd
ping 10.0.0.201

Если пинг есть - значит всё ок. Теперь мы можем использовать возможности ZeroTier для наших целей.
Майнкрафт - это моя жизнь
Для примера создадим сервер Minecraft и проверим, сможем ли мы играть совместно с участниками сети.
Запускаем одиночную игру и разрешим подключение по сети, указав любой порт:

Делимся с друзьями нашим IP клиента ZeroTier. Его можно будет найти в веб-панели ZTNet.

Просим друзей подключиться через «Прямое подключение» в списке серверов Minecraft.

Примечание: для режима игры "LAN" необходимо наличие лицензии или использование системы скинов, в нашем примере ely.by. Иначе будет ошибка "Недействительная сессия (Попробуйте перезайти в игру)"
Если подключение прошло успешно, значит всё настроено верно.
Для тех, кто не любит многобукаф
Скачать готовый скрипт установки