Перейти к содержанию

Как запустить несколько серверов Valheim на одном компьютере

Раздельные стартовые скрипты, каталоги сохранений и пары портов для нескольких миров. Когда нужен уникальный instanceid и почему нельзя совместно писать в один мир.
Версия не проверена

Для нескольких серверов на одном компьютере каждому процессу нужен понятный набор параметров. Разведите имена миров, каталоги сохранений, точки подключения и журналы: разные названия в списке серверов сами по себе не разделяют данные и порты.

Сначала составьте план экземпляров

Параметр · Сервер A — пример · Сервер B — пример
ПараметрСервер A — примерСервер B — пример
-nameFriends AFriends B
-worldWorldAWorldB
-savedir/srv/valheim/a/srv/valheim/b
-port24562458
Используемая пара портов2456–24572458–2459
-logFile/srv/valheim/a/server.log/srv/valheim/b/server.log

Это пример разнесения значений, а не готовая конфигурация для любого хоста. Выбранные каталоги должны существовать и быть доступны процессу сервера. Имена WorldA и WorldB относятся к мирам; это не seed и не отображаемое имя сервера.

Отдельные миры и каталоги сохранений

Параметр -savedir меняет место хранения миров и файлов прав. При раздельных каталогах у каждого экземпляра будут собственные adminlist.txt, bannedlist.txt и permittedlist.txt. Перенесённые списки прав проверяйте отдельно: настройки одного сервера не стоит случайно применять к другому.

Нельзя одновременно открывать один и тот же мир для записи несколькими процессами. Community-источник прямо предупреждает против одновременного использования одного мира игрой и сервером. Для независимых экземпляров используйте отдельные копии после корректной остановки. Если мир хранится парой .db и .fwl, переносите оба файла вместе; при другом формате копируйте полный набор данных мира.

Разведите базовые порты и следующий порт

Valheim использует указанный в -port порт и порт +1. Поэтому значения 2456 и 2457 не образуют две независимые пары: вторая пара пересекается с первой. В примере выше выбраны 2456–2457 и 2458–2459. Перед запуском убедитесь, что эти порты свободны и предназначены именно выбранным экземплярам.

Для Steam backend настройте сетевой доступ и, если нужен внешний доступ через роутер, проброс каждой пары UDP-портов на серверный компьютер. Игрокам сообщайте соответствующий адрес и базовый игровой порт, чтобы они не попадали в другой мир.

Crossplay и параметр instanceid

Crossplay использует PlayFab relay, но номер порта всё равно служит для различения серверов на одном публичном IP. Официальное руководство отдельно описывает -instanceid: при нескольких серверах с одинаковыми портом и MAC address задавайте каждому уникальное значение, чтобы у них были разные PlayFab IDs.

Информация
instanceid решает задачу идентификации PlayFab и не является заменой проверки занятости локальных портов. Для crossplay нельзя подключаться через локальный или loopback IP; используйте актуальный код входа, публичный адрес с портом или список серверов.

Запускайте и проверяйте по одному

  1. Создайте отдельную копию поставляемого стартового скрипта для каждого набора параметров: оригинал может обновляться вместе с сервером.
  2. Сверьте -world, -savedir, -port и путь журнала до запуска первого процесса.
  3. Дождитесь готовности сервера и проверьте вход в нужный мир.
  4. Повторите проверку для второго экземпляра, затем убедитесь, что оба адреса ведут в ожидаемые миры.
  5. Останавливайте каждый процесс корректно и храните резервные копии раздельно.

Если оба подключения приводят в один мир, сначала сравните используемые скрипты, параметры -world и -savedir, а не начинайте создавать новые постройки. Если второй процесс не запускается, проверьте пересечение пар портов и первый сбой его отдельного журнала.

Информация
Инструкция собрана по сохранённому официальному руководству и community-кэшу. Несколько серверов при подготовке материала не запускались; допустимое число экземпляров и производительность конкретного компьютера не измерялись.

Гайд был полезен?