Как стать автором
Обновить
148.42
Aéza
Хостинг, который позволяет быть на высоте

Создаем аналог Hamachi на примере ZeroTier для игры с друзьями по сети

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3K

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

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

Установка

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

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

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

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

Теги:
Хабы:
+4
Комментарии14

Публикации

Информация

Сайт
aeza.net
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия