Запустить туннель бесплатно
☰
Игры по сети

Сервер Project Zomboid для друзей на своём ПК без белого IP

Как запустить сервер Project Zomboid на своём ПК и пустить друзей без белого IP: два UDP-порта, настройки servertest.ini и что делать, если запуск отменён.

Серверу Project Zomboid для игры через интернет нужны два UDP-порта: основной 16261 и порт прямого подключения 16262. Так пишут официальная вики и администратор форума разработчиков. Без белого IP эти порты открывают двумя UDP-туннелями fxTunnel, а это тариф Base. Чтобы номера снаружи и внутри совпали, сервер переводят на порты из диапазона туннелей: DefaultPort=20261 и UDPPort=20262 в servertest.ini, затем fxtunnel udp 20261 --remote-port 20261 и fxtunnel udp 20262 --remote-port 20262. Друзья подключаются к fxtun.ru:20261. Ниже по шагам, плюс разбор ошибки «запуск сервера отменён».

Хост из меню или выделенный сервер

В главном меню Project Zomboid два пути к совместной игре: «Хост» (HOST) и «Мультиплеер» (MULTIPLAYER) (вики, Multiplayer).

«Хост» запускает сервер прямо из игры на вашем компьютере. Для Steam-версии вики описывает приглашение друзей через Steam: в игре Esc → Invite или через список друзей Steam (вики, Tech Support). Если друзья заходят так и игра идёт нормально, туннель не нужен.

Выделенный сервер — отдельная программа Project Zomboid Dedicated Server. Она работает без запущенной игры, может крутиться круглые сутки, а друзья подключаются к ней по IP-адресу и порту. Вот здесь белый IP и нужен, а туннель его заменяет.

Актуальная ветка игры — Build 42: онлайн-мультиплеер вернулся в неё с версии 42.13, а страницы вики о сервере описывают версию 42.20. Build 41 доступен как бета-ветка legacy41. Ваша версия сервера и версии игры у всех друзей должны совпадать.

Какие порты нужны

Параметр в servertest.iniПо умолчаниюПротоколЗачем
DefaultPort16261UDPОсновной порт, к нему подключаются игроки
UDPPort16262UDPПорт прямого подключения

Источники: вики, Dedicated server и вики, Server settings. Администратор форума The Indie Stone на вопрос о сообщении «Server has port 16262 closed» ответил так же: нужно пробросить UDP-порты 16261 и 16262 (форум). Оба порта UDP, TCP серверу не нужен.

Без второго порта подключиться иногда можно, но сервер предупредит, что производительность может сильно пострадать. Вики допускает, что на маленьком сервере для друзей это предупреждение иногда можно не замечать. Мы советуем открыть оба порта: на тарифе Base второй туннель входит в те же пять.

Почему номера портов должны совпадать

Туннель fxTunnel выдаёт UDP-порт снаружи из диапазона 20001–30000. Без флагов сервер игры слушал бы 16261, а друзья стучались бы, скажем, на fxtun.ru:20412. Второй туннель получил бы ещё какой-то номер, никак не связанный с первым.

Сервер Project Zomboid знает свои порты из настроек, и как именно клиент узнаёт номер второго порта, мы не проверяли. Поэтому убираем сам вопрос: переводим сервер на порты из диапазона туннелей и просим у fxTunnel ровно такие же номера. Игра позволяет это сделать: порты задаются параметрами DefaultPort и UDPPort в servertest.ini или ключами запуска -port и -udpport (вики, Startup parameters).

интернетигра другаfxtun.ru:20261
сервер fxTunnelдва UDP-порта20261 и 20262
ваш ПКклиент fxtunnelдва туннеля
локальносервер PZ20261 и 20262
Рис. 1. Друг подключается к fxtun.ru:20261, клиент fxtunnel передаёт пакеты серверу игры на том же номере порта. Второй туннель так же ведёт 20262 на 20262.

Шаг 1. Установите выделенный сервер

Сервер ставится бесплатно через Steam: в библиотеке включите фильтр «Инструменты» и установите Project Zomboid Dedicated Server. Второй путь — SteamCMD, приложение с номером 380870 (вики):

TEXT
login anonymous
app_update 380870 validate
quit

Запускать сервер через кнопку «Играть» в Steam вики прямо запрещает. На Windows запускайте StartServer64.bat из папки сервера, на Linux — start-server.sh.

Перед первым запуском проверьте память. По вики StartServer64.bat по умолчанию просит 16 ГБ, и если у вас меньше, сервер упадёт на старте. Поправьте в файле ключи -Xms и -Xmx, например на -Xms6g -Xmx6g. Вики даёт ориентир: 3 ГБ на сам сервер плюс примерно 500 МБ на каждого игрока, для четырёх человек выходит 5 ГБ.

При первом запуске сервер попросит придумать пароль администратора и создаст файлы настроек. Дождитесь сообщения об успешном запуске и остановите сервер командой quit в его окне.

Шаг 2. Порты в servertest.ini

Настройки лежат в папке Zomboid\Server в профиле пользователя:

  • Windows: C:\Users\<имя>\Zomboid\Server\servertest.ini;
  • Linux: ~/Zomboid/Server/servertest.ini.

Откройте файл текстовым редактором и поменяйте две строки:

INI
DefaultPort=20261
UDPPort=20262

Там же стоит задать пароль сервера, его друзья введут при подключении:

INI
Password=ПридумайтеПароль

Сохраните файл и запустите сервер снова. Если вместо правки файла удобнее ключи запуска, допишите -port 20261 -udpport 20262 в строку запуска в StartServer64.bat или к start-server.sh.

Шаг 3. Два туннеля

Установите клиент fxTunnel и войдите, это делается один раз. На Windows в PowerShell:

POWERSHELL
irm https://fxtun.ru/install.ps1 | iex

На Linux и macOS:

BASH
curl -fsSL https://fxtun.ru/install.sh | sh

Затем в новом окне терминала:

BASH
fxtunnel login

Теперь откройте туннели, каждый в своём окне терминала:

BASH
fxtunnel udp 20261 --remote-port 20261
CONSOLE
Connecting to fxtunnel server...
Tunnel established!
UDP: fxtun.ru:20261
Forwarding to localhost:20261
Inspector: http://127.0.0.1:4040
Ready to receive connections
BASH
fxtunnel udp 20262 --remote-port 20262

Второй туннель напечатает такие же строки с портом 20262. Строку Inspector: для игры можно не замечать, она про HTTP-туннели.

Два окна неудобны, если сервер работает постоянно. Опишите туннели в файле fxtunnel.yaml и поднимите их в фоне одной командой fxtunnel up:

YAML
# fxtunnel.yaml
tunnels:
  - name: pz-game
    type: udp
    local_port: 20261
    remote_port: 20261
  - name: pz-direct
    type: udp
    local_port: 20262
    remote_port: 20262

Как это работает и как включить автозапуск, рассказано в статье «fxtunnel up: все туннели в фоне по одному конфигу».

На бесплатном тарифе UDP-туннель не откроется:

CONSOLE
Failed to connect: server rejected tunnel: UDP tunnels are not available on your plan — upgrade to enable UDP

Это ответ сервера, а не сбой сети: UDP и несколько туннелей одновременно доступны с тарифа Base.

Шаг 4. Подключение друзей

По вики друг подключается так:

  1. Запускает Project Zomboid и выбирает в главном меню подключение к серверу (MULTIPLAYER, в старых версиях Join).
  2. Открывает вкладку Favorites и добавляет сервер.
  3. В поле IP вписывает fxtun.ru, в поле порта — 20261.
  4. Вводит имя и пароль аккаунта на этом сервере (при первом входе любые, вики так и пишет), а если сервер закрыт паролем, то и пароль сервера из Password=.
  5. Сохраняет, выбирает сервер и подключается.

Вики в инструкции говорит о публичном IPv4-адресе. Если игра не примет имя fxtun.ru, впишите его IP-адрес: его покажет команда nslookup fxtun.ru.

Вы сами можете подключаться к своему серверу так же, через fxtun.ru:20261, или по локальному адресу компьютера, как в домашней сети.

У фиксированного порта есть ещё один плюс. По вики игра хранит данные карты у клиента в папке, названной по адресу и порту сервера. Пока адрес и порт те же, у друзей сохраняется открытая карта.

Если порт занят

Порт из диапазона закрепляется за тем, кто занял его первым. Если 20261 или 20262 уже у кого-то, клиент ответит:

CONSOLE
Failed to connect: server rejected tunnel: port 20261 is already in use

Выберите другую пару в диапазоне 20001–30000, например 20361 и 20362, поменяйте DefaultPort и UDPPort в servertest.ini и откройте туннели на новые номера. Навсегда порт за аккаунтом не закрепляется, поэтому держите в запасе пару вариантов.

Без --remote-port сервер fxTunnel выдал бы первый свободный порт, а после перезапуска fxtunnel — снова какой-то новый. Для Project Zomboid, где номер вписан в настройки сервера, флаг обязателен.

Режим «Хост» и туннель

Если друзья не могут зайти по приглашению Steam, попробовать туннель можно и с сервером, запущенным кнопкой «Хост». Его настройки создаются в меню «Хост» → Manage Settings и хранятся в тех же ini-файлах в папке Zomboid\Server. На странице настроек вики отдельно помечает параметры, которые кнопка «Хост» игнорирует, например Password. DefaultPort и UDPPort среди них не значатся. Мы этот режим через туннель не проверяли, поэтому для игры по IP советуем выделенный сервер: там порты под вашим контролем.

«Запуск сервера отменён»: где искать причину

Сообщение об отменённом запуске говорит только о том, что процесс сервера завершился, не успев стартовать. Причину оно не называет. Искать её нужно в журналах (вики, Tech Support):

  • coop-console.txt в папке Zomboid — для сервера, запущенного кнопкой «Хост»;
  • server-console.txt там же — для выделенного сервера.

Папка Zomboid лежит в профиле пользователя: %USERPROFILE%\Zomboid на Windows, ~/Zomboid на Linux и macOS. Ошибки удобно искать по строке STACK TRACE.

Частые причины, которые описывает вики:

  • Моды. Модов нет у сервера или они включены не везде. Для «Хоста» вики советует сначала включить моды в панели Mods главного меню, а затем отметить их и на вкладке Steam Workshop в настройках сервера.
  • Память. Для «Хоста» объём выбирается в меню «Хост», в списке Server memory; для выделенного сервера — ключом -Xmx в StartServer64.bat (на Linux — в ProjectZomboid64.json).
  • Ошибка DisguisedUsernames в 42.20+. Если в журнале есть NullPointerException с player.role, вики советует выключить в настройках сервера DisguisedUsernames и HideDisguisedUsernames.
  • Остатки Build 41. Если раньше на этой машине стоял сервер Build 41, выделенный сервер Build 42 может падать с ошибкой Illegal termination of worker thread. Вики советует проверить, что в steam_appid.txt одна строка 108600, и, сохранив копию старых настроек и сохранений, пересоздать папку Zomboid.

Туннель к этой ошибке отношения не имеет. Клиент fxtunnel не занимает порты игры на вашем компьютере: он сам подключается к серверу по localhost, как ещё один участник. Сервер стартует или падает одинаково, запущен туннель или нет.

Если друг не может подключиться

Открыт TCP вместо UDP. Project Zomboid работает только по UDP. Команда должна быть fxtunnel udp, а не fxtunnel tcp.

Номера не совпадают. В servertest.ini одни порты, а туннели открыты на другие. Сверьте DefaultPort, UDPPort и числа в командах fxtunnel.

Второй туннель не открыт. Сервер предупреждает, что второй порт закрыт. Проверьте, что работают оба туннеля.

Разные версии. У вас Build 42, у друга ветка legacy41, или наоборот. Выберите одну версию на всех.

Steam и не-Steam. К серверу, запущенному с -nosteam, подключаются только клиенты без Steam. Владельцу Steam-версии для этого нужно добавить -nosteam в параметры запуска игры (вики).

Сервер запущен через Steam. Вики советует закрыть его командой quit, проверить целостность файлов и запускать только StartServer64.bat.

Кого пускать на сервер

Адрес туннеля публичный, кто знает fxtun.ru:20261, тот может постучаться. Средства защиты у Project Zomboid свои (вики, Server settings):

  • Password= — пароль сервера, без него не зайти;
  • Open=false — войти могут только те, кому администратор создал аккаунт командой /adduser "имя" "пароль".

У UDP-туннеля есть и флаг --allow-ip: сервер fxTunnel пропустит пакеты только с перечисленных адресов, остальные отбросит.

BASH
fxtunnel udp 20261 --remote-port 20261 --allow-ip 203.0.113.10 --allow-ip 198.51.100.0/24

Список придётся обновлять, если у друга меняется домашний IP. Флага --auth у UDP-туннелей нет, он только для HTTP.

Одна особенность туннеля: сервер игры видит всех игроков с локального адреса, ведь пакеты ему передаёт клиент fxtunnel на той же машине. Поэтому бан с ключом -ip (/banuser "имя" -ip) заблокирует этот общий адрес, то есть всех сразу. Баньте по имени, без -ip.

Что дальше

UDP — с тарифа Base

Игровые серверы, голосовые чаты и DNS работают по UDP. UDP-туннели открываются на тарифе Base и выше, вместе с пятью туннелями одновременно.

Выберите клиент на странице скачивания: GUI для работы через графический интерфейс или CLI для терминала.

$ curl -fsSL https://fxtun.ru/install.sh | sh
@mephistofx

Пишу fxTunnel — туннели для разработчиков без белого IP. Рассказываю, как это устроено изнутри.

Написать в Telegram →

Читайте дальше