Преимущества

⭐️ Нет ограничения по слотам.
⭐️ Низкий пинг - можно выбрать любую локацию, например Москва или Питер.
⭐️ Безлимитное количество сетей и устройств, ограничено только мощностью сервера.
⭐️ Нет необходимости покупать дорогостоящий сервер - достаточно арендовать сервер с минимальными ресурсами для обеспечения соединения между игроками, которые и будут выступать хостом.

Установка

Для работы панели необходимо установить 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. Иначе будет ошибка "Недействительная сессия (Попробуйте перезайти в игру)"

Если подключение прошло успешно, значит всё настроено верно.

Для тех, кто не любит многобукаф

Скачать готовый скрипт установки​

Комментарии (11)


  1. 13werwolf13
    15.05.2025 08:39

    перечитал статью дважды, но так и не понял каким образом клиент понимает что нужно топать за конфигом к поднятому selfhosted инстансу а не к официальному публичному..


    1. Grapie
      15.05.2025 08:39

      Ztnet, хоть и не существовенно, но зависит от API Zerotier

      Подробнее тут:

      https://docs.zerotier.com/roots/


    1. daedaldev
      15.05.2025 08:39

      "Резолвинг" селфхостед сервера все равно идет через API Zerotier, однако подключение по итогу проходит через личный сервер, который становится участником сети Zerotier, но с настройками, которыми Вы можете полностью управлять, в отличии от привычного сервиса Zerotier с управлением через их собственный дашборд. Получается не совсем полный selfhosted, который частично зависит от сервиса.


  1. MaximusPrimie
    15.05.2025 08:39

    А зачем? Сервер упомянутой вами игрушки и так легко настроить и запустить.


    1. daedaldev
      15.05.2025 08:39

      Да, но не у всех есть белый / статический IP, а вдски много у кого сейчас есть, но не самые мощные, а для майнкрафта нужна приличная вдска чтобы его захостить, ибо требование к ресурсам высокое. Легче и дешевле захостить у себя на машине локалку и пробросить через VPN в контексте игры с друзьями


  1. ritorichesky_echpochmak
    15.05.2025 08:39

    Есть какие-то плюсы использовать ZeroTier, например, на Keenetic, при условии, что есть SSTP и OpenConnect и вообще любой нужный сервис прокидывается в мир даже из-за NAT через KeenDNS (по сути по SSTP)?

    Как он вообще уживается со всякими DPI? Как реагирует на разрывы? Что по перфомансу в сравнении с SSTP/OpenConnect/WG?


    1. enamchuk
      15.05.2025 08:39

      ZeroTier уже блокируется некоторыми операторами связи (в основном, мобильными).
      Для большей работоспособности советуют использовать не только свой контроллер ZeroTier, но и свои "Луны".


    1. enamchuk
      15.05.2025 08:39

      ZeroTier хорош тем, что позволяет собрать все нужные устройства в одну "локальную" сеть на втором уровне, и, в отличие от классических VPN, нет центрального сервера для обмена трафиком, весь трафик идёт напрямую от клиента к клиенту. Через контроллер трафик данных не идёт, он только управляет клиентами и правилами доступа.


      1. JerzyEx
        15.05.2025 08:39

        А если нет прямого маршрута между клиентами? Провайдеры тупо не видят друг друга, tracert обрывается на шлюзе провайдера


  1. ki11j0y
    15.05.2025 08:39

    Прочитал несколько раз некоторые моменты. Из за зависимости внешнего сервиса, и возможной неработоспособности, продолжаем для этой цели использовать xray с псевдовпн, ocserv так же могут забанить, развернуть шустрый wg поверх websocket не удалось, rdp глючит, с openvpn такая же история, для ws использовался, wstunnel от erebe и gost от китайцев, терминация ws была на обратном прокси по итогу качество соединения не удовлетворяет.


  1. 1dntfkngcare
    15.05.2025 08:39

    Вся титаническая работа по созданию приложения унижается, разбивается о то, что его разработчики не в силах упаковать всё в обычный exe или msi файл.

    99.99% населения земли не будут заниматься этой попоболью с консолью, настройкой докера и т.д.