Свой сервер
Если сервер не работает
Всё, что сервер может сказать, он пишет в консоль и в logs/server.log. Начните с лога.
Сервер не запускается
Заголовок раздела «Сервер не запускается»Если сервер не может запуститься, он объясняет почему, пишет Closing in 10 seconds и завершается
с кодом 1. Служба systemd видит это как сбой, а не как обычную остановку.
| Сообщение | Что случилось | Что сделать |
|---|---|---|
Cannot listen on port … (…): the port is already in use (…). … |
Порт занят. Чаще всего это вторая копия сервера, которую забыли остановить. | Остановите другую копию или задайте другой порт. |
Cannot listen on port … (…): … failed: …. Closing. |
Порт не открылся по другой причине, в строке — слова системы. | Прочитайте их. Проверьте, что [server] address — адрес этой машины. |
[server] address = "…" is not an IP address (…); the server cannot listen. … |
В address (или NODE_IP) не адрес. |
Верните "::". |
Error parsing config file value: …: the table […] appears twice. … |
Таблица в server.toml записана дважды, обычно это второй [listing]. |
Перенесите ключи в первую таблицу, вторую удалите. |
Error parsing config file value: …: the key … is given twice. … |
Одна настройка дважды в одной таблице. | Удалите одну из строк. |
Error parsing config file value: …: … -- the line reads … |
Другая ошибка в файле, строка процитирована. | Исправьте строку или удалите server.toml, чтобы сервер написал новый. |
[network] timers must satisfy lag_grace_sec < seat_takeover_sec <= seat_release_sec <= disconnect_sec … |
Четыре таймера идут не по порядку. | Исправьте их в server.toml или в переменных NODE_NETWORK_*. |
TLS: cannot write … (…); the certificate pair is generated on the first start, … |
Сервер не может записать сертификат туда, куда указывают настройки. | Укажите в [network] tls_cert и tls_key файлы в папке, куда можно писать. В Docker см. ниже. |
Если сервер запустился, но какая-то его часть — нет, в логе будет
started, but … failed — what they do may not work, а строки выше скажут почему. Сервер при этом
продолжает работать.
До сервера не достучаться
Заголовок раздела «До сервера не достучаться»Лаунчер пишет, что не может достучаться до сервера, или сервер не появляется в списке.
- Порт должен быть открыт и для TCP, и для UDP. TCP нужен для входа и всего надёжного, UDP — для позиций машин. Проверьте брандмауэр на машине и проброс порта на роутере.
- Проверяйте снаружи. Подключение из своей сети ничего не говорит о роутере. Попросите друга или воспользуйтесь сервисом проверки портов.
[server] addressдолжен быть"::". Тогда сервер слушает все адреса, и лог это подтверждает:listening on [::]:30814 (tcp, tls 1.3, dual-stack: IPv4 + IPv6).- В Docker пробрасывайте тот порт, на котором сервер работает:
-p 30814:30814/tcpи-p 30814:30814/udpили тот, что задан вNODE_PORT. Порт, указанный в метаданных образа, роли не играет.
Игроки из той же сети, что и сервер, заходят по локальному адресу, например 192.168.1.20:30814.
Игроков не пускает на входе
Заголовок раздела «Игроков не пускает на входе»Игрок пишет, что лаунчер показал TLS handshake failed: unexpected eof while reading. Часто это
сразу несколько игроков из одного места или все с одного VPN. Сервер ограничивает, сколько
подключений с одного адреса могут одновременно проходить вход, и закрывает лишние до рукопожатия. В
логе сервера это видно под тегом Net.
- Лимит —
[network] max_connections_per_ip, по умолчанию 32. Поднимите его, если многие игроки приходят с одного адреса: клуб, NAT оператора, выход VPN. [network] connection_limit_exempt— диапазоны адресов без лимита на адрес. По умолчанию это локальные и частные сети: так покрывается VPN или прокси на той же машине, что и сервер.- Фоновые опросы списка серверов из лаунчеров тоже считаются подключениями.
Каждое подключение, которое сорвалось до входа, сервер пишет в лог под тегом Net с адресом и
причиной: тайм-аут, не TLS 1.3, вообще не TLS, клиент закрыл соединение.
Сервер останавливается сразу после запуска с TLS: cannot write /opt/node/node_key.pem (…).
Внутри образа папка программы только для чтения, а сертификат по умолчанию пишется туда. Перенесите
его в папку данных:
-e NODE_TLS_CERT=/data/tls/node_cert.pem-e NODE_TLS_KEY=/data/tls/node_key.pemОбраз создаёт /data/tls при каждом запуске. Эти два файла — личность сервера, берегите их.
server.toml не читается. Так и задумано: образ ставит NODE_PROVIDER_DISABLE_CONFIG=true, и
все настройки идут из переменных NODE_*. Если хочется файл, задайте
NODE_PROVIDER_DISABLE_CONFIG=false — тогда сервер будет читать и писать /data/server.toml.
«Permission denied» при запуске, или скопированные файлы не подхватываются. Сервер работает от
пользователя 10001. Выполните sudo chown -R 10001:10001 data и перезапустите контейнер.
Консоль не отвечает. У контейнера без терминала консоли нет. Запустите его с терминалом (-it
или stdin_open и tty в Compose) и подключитесь через docker attach.
Сервера нет в списке
Заголовок раздела «Сервера нет в списке»См. Попасть в список. Чаще всего дело в порте: NodeMP должен достучаться до сервера снаружи, прежде чем покажет его.
Игрок жалуется на лаги
Заголовок раздела «Игрок жалуется на лаги»Найдите в logs/server.log его строки netstats, по одной каждые 15 секунд. rtt — время туда и обратно в
миллисекундах, loss — доля потерянных пакетов с позициями. Если цифры высокие у одного игрока, а у
остальных всё хорошо, дело в его соединении — пришлите ему страницу
Плохое соединение. Если плохо у всех, проблема в канале самого сервера.