No description
  • Go 98.4%
  • Dockerfile 1.6%
Find a file
2026-06-18 18:11:33 +05:00
docker-compose.yml Initial commit with README 2026-06-18 18:05:31 +05:00
Dockerfile Initial commit with README 2026-06-18 18:05:31 +05:00
go.mod Initial commit with README 2026-06-18 18:05:31 +05:00
main.go Initial commit with README 2026-06-18 18:05:31 +05:00
README.md docs: improve README with detailed project description 2026-06-18 18:11:33 +05:00

Relay Server (Minecraft Tunneling & Voice Chat)

Специализированный релей-сервер для проксирования соединений Minecraft, написанный на Go. Позволяет хостить Minecraft-серверы локально (без "белого" IP-адреса) и предоставлять игрокам доступ через автоматически генерируемые поддомены (например, happy-wolf-1234.porkof48.ru).

Ключевой особенностью сервера является встроенная поддержка UDP-туннелирования, что позволяет полноценно использовать мод Simple Voice Chat вместе с проксированием.

Как это работает

Релей-сервер открывает несколько портов для взаимодействия:

  • 25565/TCP (Minecraft Port): Сюда подключаются обычные игроки. Сервер парсит начальный пакет рукопожатия, извлекает запрошенный адрес (например, subdomain.porkof48.ru), находит активную сессию хоста и ставит клиента в ожидание.
  • 25566/TCP (Control Port): Порт для управляющего соединения от хост-машины (мода на стороне локального сервера). При подключении хоста релей регистрирует новую сессию и выдает ей уникальный поддомен, а также выделяет UDP-порт для голосового чата.
  • 25567/TCP (Data Port): Хост использует этот порт для создания отдельных TCP-туннелей (для передачи трафика конкретных игроков) и для UDP-туннеля (чтобы получать и отправлять пакеты Voice Chat).
  • 25570-35570/UDP (Динамические порты): Релей динамически биндит один из этих портов под каждую сессию для трансляции UDP-пакетов между клиентами и хостом.

Поддержка Simple Voice Chat

Чтобы обойти ограничения TCP-туннелей, релей "упаковывает" UDP-трафик между клиентами (которые шлют голосовые пакеты на динамический UDP-порт релея) и отправляет его хосту по единому TCP-каналу (UDP Tunnel). На стороне хоста трафик распаковывается и перенаправляется на локальный сервер Simple Voice Chat.

Запуск сервера

Для запуска предоставляется готовый docker-compose.yml. Сервер использует network_mode: host, чтобы напрямую работать с сетью хоста машины и биндить необходимые порты.

docker-compose up -d

Логи

Просмотр логов контейнера:

docker logs relay-server_relay_1 -f