Сервер Valheim, который работает, но не появляется в списке сообществ, почти никогда не сломан. В порядке вероятности: список просто ещё не обновился (после запуска подождите десять-пятнадцать минут), сервер запущен с -public 0, query-порт - игровой порт плюс один, по умолчанию 2457 - недоступен по UDP, либо вы ищете сервер в списке из тысяч записей с фильтром, под который попадает половина из них. Прежде чем что-то менять, попробуйте зайти по IP. Если получилось, с сервером всё в порядке, не хватает только записи в списке. Это важно для тех, кто хочет, чтобы вас нашли незнакомые игроки, и совсем не важно для компании друзей, которые и так знают адрес.
Этот материал именно про листинг: как сервер Valheim попадает в список сообществ, что его туда не пускает и как доказать, на каком шаге всё ломается. Если к серверу не удаётся подключиться вообще никак, у вас проблема с подключением, а не с листингом, и лучше начать со статьи ошибки подключения Valheim.
Проверьте сервер, прежде чем проверять список#
Список сообществ и сам сервер - две разные вещи. Сервер принимает игроков на игровом порту. Список - это каталог, который ведёт кто-то другой: мастер-сервер Steam или PlayFab для кроссплей-серверов. Ваш сервер регистрируется в нём, а игры игроков потом запрашивают этот каталог. Сервер может быть абсолютно здоров и при этом отсутствовать в каталоге, а иногда в каталоге висит сервер, который уже остановлен.
Поэтому сначала разделите эти два вопроса:
- Откройте Valheim в Steam-версии, выберите Join Game, затем Add Server.
- Введите адрес и игровой порт, например
203.0.113.10:2456. - Подключитесь и введите пароль.
Если появилось окно ввода пароля, сервер запущен, игровой порт открыт, а версия совпадает. Значит, проблема только в листинге. Если до запроса пароля вы не дошли, дальше можно не читать: сначала почините подключение - никакие эксперименты с -public не сделают недоступный сервер видимым.
На кроссплей-сервере аналогичная проверка - шестизначный код присоединения. Он выводится в лог при каждом запуске строкой такого вида:
Session "Longship Crew" with join code 483920 and IP 203.0.113.10:2456 is active with 0 player(s)Эта строка полезна и сама по себе: она означает, что сервер закончил запуск и зарегистрировал сессию. Если её нет, сервер ещё загружается или упал, а упавший при запуске сервер не будет в списке нигде. Этот случай разобран в статье сервер Valheim падает при запуске.
Как сервер Valheim попадает в список#
На сервере только для Steam (без -crossplay) всё работает по классической схеме Steam:
- Сервер запускается и анонимно входит в Steam как игровой сервер.
- Если задан
-public 1, он сообщает мастер-серверу Steam, что существует, и передаёт название, карту, число игроков, версию и порты. - Игры игроков запрашивают у мастер-сервера список серверов Valheim, получают адреса, а затем опрашивают каждый сервер напрямую на его query-порту, чтобы заполнить подробности.
Последний шаг как раз и упускают. Мастер-сервер хранит только указатель. Название, число игроков и пинг, которые вы видите в списке, берутся из ответа вашего сервера на запрос по UDP 2457. Если этот порт закрыт, сервер может быть зарегистрирован и всё равно не показываться: игра отбрасывает записи, которые не может опросить. Протокол, который за этим стоит, и причины, по которым так ведут себя многие игры, описаны в статье query-порты и A2S.
При -crossplay листинг идёт через сервис Microsoft PlayFab. Сервер регистрирует сессию в PlayFab, а список сообществ во всех версиях игры - Steam, Microsoft Store, Xbox - читает данные оттуда. Query-порт здесь важен меньше, а задержка до появления нового сервера отличается от Steam. Как устроена релейная часть кроссплея, описано в статье кроссплей Valheim и игроки на Xbox. Для листинга достаточно знать одно: кроссплей-сервер и сервер только для Steam попадают в список через две разные системы, поэтому совет для одного не всегда подходит другому.
Флаг -public и настройки, скрывающие сервер#
Первым делом проверьте строку запуска или вкладку Startup в панели хостинга. Именно эти аргументы определяют, попадёт ли сервер в список:
| Аргумент | Влияние на список |
|---|---|
-public 1 | Регистрирует сервер, чтобы он мог появиться в списке сообществ |
-public 0 | В списке не появится никогда. Зайти можно только по IP или коду присоединения |
-crossplay | Листинг переходит с мастер-сервера Steam на PlayFab |
-port 2456 | Меняет игровой порт; query-порт всегда на единицу больше |
-name "..." | Текст, по которому вас ищут. Не должен содержать пароль |
Типичная строка запуска на Linux для сервера, который виден в списке:
$ ./valheim_server.x86_64 -nographics -batchmode \ -name "Longship Crew" -port 2456 -world "Midgard" \ -password "herring-barrel-42" -public 1На чём спотыкаются чаще всего:
- Значение, а не только флаг. У
-publicесть числовой аргумент. Если в скрипте, отредактированном вручную, после-publicничего нет или остался0, скопированный из чужого примера приватного сервера, сервер в список не попадёт. - Отредактировали не тот скрипт. На Linux стандартные файлы -
start_server.shи, при модах,start_server_bepinex.sh. На Windows этоstart_headless_server.bat. Правка того, который вы не запускаете, ничего не меняет. Если установлен BepInEx, рабочим является скрипт BepInEx. - Переменная панели перекрывает вашу правку. На хостинге строка запуска собирается из вкладки Startup. Правка скрипта в файловом менеджере её не меняет.
- Приватность задумана намеренно. Многие группы сознательно ставят
-public 0, чтобы не светиться в списке, полном незнакомцев, подбирающих пароли. Это разумное решение, главное - не забыть, что вы его приняли.
Полный набор аргументов со значениями по умолчанию и правило о пароле, из-за которого сервер вообще не запускается, есть в справочнике аргументов запуска Valheim.
Задержка мастер-сервера#
Сервер в листинге Steam появляется не в момент запуска. В лучшем случае это несколько минут, обычно - десять-пятнадцать. Каждый перезапуск запускает отсчёт заново, поэтому сервер, который падает по кругу или перезапускается каждый час по расписанию, может заметную часть времени оставаться невидимым.
Причины в целом на стороне Steam, а не Valheim: мастер-сервер агрегирует регистрации, клиенты игроков кэшируют список, а встроенный браузер серверов запрашивает его при открытии вкладки, а не непрерывно. Механика для разных игр разобрана в статье видимость в браузере серверов и мастер-сервер Steam.
Что это значит на практике для Valheim:
- Не меняйте настройки каждые две минуты. Каждое изменение - это перезапуск, а каждый перезапуск сбрасывает ожидание. Внесите одно изменение, подождите пятнадцать минут и только потом делайте выводы.
- Обновите список. Вкладка сообщества не обновляется сама, пока открыта. Закройте Join Game и откройте снова или нажмите кнопку обновления.
- Проверьте со второго компьютера. Ваш клиент может держать старую копию списка. Свежий взгляд друга - более надёжная проверка.
- По вечерам медленнее. Листинг Steam сильнее всего нагружен, когда играют все. Сервер, запущенный в пятницу в 20:00, может появиться позже, чем тот же сервер во вторник в 10:00.
Узнать, известен ли Steam ваш сервер, можно и без игры - через публичный веб-API Steam. Ключ не нужен:
$ curl "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v1/?addr=203.0.113.10"В ответе перечислены все серверы, которые Steam зарегистрировал по этому IP, с их портами и app ID. Если ваш сервер в ответе, регистрация прошла, и остаётся проблема с query-портом или с фильтром в игре. Если ответ пуст и через пятнадцать минут, сервер не регистрируется: проверьте -public 1, убедитесь, что у процесса есть исходящий доступ в интернет, и посмотрите начало лога на ошибки входа в Steam. Эта проверка имеет смысл только для серверов только для Steam; кроссплей-сервер попадает в список через PlayFab и здесь может не отобразиться.
Query-порт и файрволы#
Если Steam о сервере знает, а игра его не показывает, главный подозреваемый - query-порт. Игровой и query-порт идут парой:
-port | Игровой порт | Query-порт |
|---|---|---|
2456 (по умолчанию) | UDP 2456 | UDP 2457 |
2466 | UDP 2466 | UDP 2467 |
2476 | UDP 2476 | UDP 2477 |
Открыты должны быть оба, и оба - UDP. Типичные ошибки:
- Правило для TCP. На страницах проброса портов в роутерах по умолчанию часто стоит TCP. Valheim его не использует.
- Только игровой порт. Вход по IP работает, поэтому проброс выглядит правильным, но подробности сервера в списке так и не появляются.
- Сменили игровой порт, а query-порт нет. Для второго сервера на
-port 2466нужно пробросить2466и2467, а не2457. - Файрвол на самой машине. На вашем Linux-сервере правила
ufwилиnftablesдолжны разрешать оба порта. На Windows при первом запуске нужно принять запрос файрвола для того типа сети, в котором вы действительно находитесь.
Сервер можно опросить снаружи так же, как это делает игровой клиент. С помощью Python и пакета python-a2s:
# pip install python-a2simport a2sinfo = a2s.info(("203.0.113.10", 2457), timeout=5)print(info.server_name, info.player_count, info.max_players)Ответ означает, что query-порт работает оттуда, где вы запускали проверку. Тайм-аут снаружи вашей сети при том, что изнутри запрос проходит, говорит о неверном пробросе или файрволе. Запускайте проверку с машины, которая не находится в сети сервера - достаточно точки доступа на телефоне, - потому что запрос из той же локальной сети ничего не доказывает про проброс. Подробнее о диапазоне портов, в том числе о нескольких серверах на одном адресе, рассказано в статье порты Valheim 2456-2458.
Хостинг дома за CGNAT
Если сервер работает на домашнем подключении, проверьте, есть ли у вас вообще публичный адрес IPv4. Сравните WAN-адрес в роутере с тем, что показывает сайт «какой у меня IP». Если они различаются или адрес роутера начинается с 100.64 - 100.127, вы за CGNAT (NAT уровня провайдера). Проброс портов там не работает, запрос до вас не доходит, и в списке Steam сервер не появится, что бы вы ни меняли. Один из обходных путей - кроссплей с кодами присоединения, ведь трафик ретранслирует PlayFab; другой - арендованный сервер. Как это определить и какие есть варианты, описано в статье NAT и CGNAT для хостинга игровых серверов.
Как правильно искать в списке сообществ#
Иногда сервер в списке есть, а найти его никто не может. Список сообществ Valheim длинный - в загруженные часы тысячи записей, а строка поиска просто сопоставляет текст с названием.
- Ищите по необычному слову. «Viking», «Valhalla» и «Midgard» совпадают с сотнями серверов. «Herringbone» совпадёт только с вашим.
- Смотрите вкладку Community, а не Friends и не Favourites. Это отдельные списки.
- Проверьте свои фильтры. Если в списке видна только часть записей, найдите в браузере настройки фильтров и сбросьте их, прежде чем решать, что сервера нет.
- Не используйте странные символы в названии. Эмодзи и необычные знаки - лотерея в чужой строке поиска. Ту часть названия, по которой ищут, оставьте из обычных букв и цифр.
- Название - это не мир.
-name- то, что показывает список;-world- файл сохранения. Люди ищут по названию мира и ничего не находят.
Список показывает и то, нужен ли серверу пароль. Почти у каждого выделенного сервера Valheim он есть, так что для сужения поиска это не помогает; зато по одному списку нельзя понять, какой из закрытых серверов - ваш.
Несовпадение версий
Сервер, отставший от клиентов на один патч, может оставаться в списке, но никто на актуальной версии зайти не сможет, и на практике его игнорируют или считают сломанным. После каждого патча Valheim сервер нужно обновить, иначе подключиться не получится. Если сервер пропал в тот же день, когда вышло обновление игры, сначала проверьте версию: как обновлять и как выбрать время для группы, объясняет статья обновления Valheim и несовпадение версий.
Вход в обход списка#
Для закрытой компании список в лучшем случае удобство. Четыре способа зайти, не зависящие от него:
- Add Server по адресу. Join Game, Add Server,
203.0.113.10:2456. Адрес сохраняется в избранном игры, так что вводить его нужно один раз. - Код присоединения на кроссплей-серверах. Работает на всех платформах, в том числе на Xbox, где ввести IP нельзя. Меняется при каждом перезапуске, поэтому передавайте свежий или подскажите, где его искать.
- Доменное имя. A-запись вроде
valheim.example.com, указывающая на IP сервера, позволяет сохранить адрес при переезде. Саму запись описывает статья как привязать домен к игровому серверу; порт игроки по-прежнему вводят сами. - Собственный браузер серверов Steam. В клиенте Steam откройте View, затем Game Servers, затем Favourites и добавьте адрес. Steam опрашивает сервер на его query-порту, так что это ещё и быстрый способ проверить, отвечает ли query-порт.
Общая механика прямого подключения в играх Steam описана в статье ссылки Steam connect и прямое подключение.
На хостинг-панели#
На RE:NODE сервер Valheim создаётся с уже выделенными обоими UDP-портами и включённым кроссплеем, поэтому листинг идёт через PlayFab, а код присоединения выводится в живой консоли после каждого запуска. -public и название сервера - поля на вкладке Startup: поменяйте их там, перезапустите и подождите пятнадцать минут, прежде чем делать выводы. Вкладка Network показывает, какие порты занимает сервер, так что можно убедиться, что query-порт равен игровому плюс один, а не гадать. Если вам нужен сервер только для Steam, который попадает в список через мастер-сервер Steam, отключите кроссплей на вкладке Startup - компромиссы описаны в статье о кроссплее по ссылке выше.
Чего хостинг сделать не может, так это ускорить список. Задержка принадлежит Steam или PlayFab и везде одинакова.
Чек-лист диагностики#
Проходите пункты по порядку. Каждый отсекает целый класс причин.
- Зайдите по IP или коду присоединения. Получилось - проблема только в листинге. Не получилось - проблема подключения, см. статью об ошибках подключения.
- Прочитайте лог. Есть ли строка сессии с кодом присоединения или вход игрового сервера в Steam? Если запуск сервера не завершился, в список он попасть не может.
- Проверьте `-public 1` в той команде, которая действительно выполняется.
- Подождите пятнадцать минут без перезапусков, затем снова откройте Join Game.
- Спросите Steam.
GetServersAtAddressс вашим IP, для сервера только для Steam. - Опросите сервер на query-порту снаружи вашей сети.
- Поищите уникальное слово из названия на вкладке Community со второго компьютера.
- Сравните версии, если проблема началась в день патча.
Если все восемь пунктов пройдены, а сервера всё равно нет, значит, он в списке, а тот, кто его ищет, его не видит - обычно из-за фильтра, устаревшего кэша списка или собственной сети, блокирующей исходящий UDP.
FAQ#
Сколько времени новому серверу Valheim нужно, чтобы появиться в списке сообществ?
Обычно несколько минут, чаще десять-пятнадцать, иногда дольше в загруженные часы. Каждый перезапуск начинает ожидание заново. Если через двадцать минут без перезапусков сервера всё ещё нет, что-то не так, и чек-лист выше поможет это найти.
Можно ли играть на сервере Valheim, которого нет в списке?
Да. Сервер с -public 0 или тот, который список ещё не подхватил, полностью пригоден для игры. Игроки Steam заходят по адресу через Add Server, а на кроссплей-сервере все могут использовать код присоединения.
Нужно ли открывать query-порт, если мы заходим только по IP?
Строго говоря, нет: вход по IP использует игровой порт. Но список, браузер серверов Steam и большинство инструментов мониторинга используют query-порт, поэтому оставьте его открытым, если нет причин поступить иначе.
Почему я вижу свой сервер в списке, а друг - нет?
Ваш клиент может показывать кэшированный список, либо поиск или фильтры у друга другие. Пусть он снова откроет Join Game, поищет уникальное слово из названия, а если сервер так и не появится, зайдёт по адресу и сохранит его.
Нужно ли закрытой группе делать сервер публичным?
Как правило, нет. Публичный листинг привлекает незнакомцев, пробующих пароли, и ничего не даёт тем, кто уже знает адрес. Поставьте -public 0, делитесь адресом или кодом присоединения и держите надёжный пароль.


