В этом руководстве мы скачаем, настроим и запустим выделенный сервер Valheim на Windows, Linux и macOS.
Выделенный сервер даёт вам постоянный мир, который продолжает работать независимо от того, зашёл ли кто-то в игру — это настоящий шаг вперёд по сравнению со схемой «хост и игра», с которой начинает большинство групп. Сервер Valheim бесплатен, не требует второй копии игры и действительно является одним из самых простых в настройке.
Здесь мы рассматриваем ванильную настройку. Если вы хотите добавить моды, наше руководство по модам для Valheim описывает серверную часть BepInEx, а также клиентскую.
Требования
- Машина под управлением Windows 10 или новее, либо современный дистрибутив Linux. Раздел macOS объясняет, почему Mac — особый случай.
- Минимум 4 ГБ ОЗУ для небольшой группы. Серверы Valheim увеличивают потребление памяти по мере исследования и застройки мира, поэтому 8 ГБ — более надёжный ориентир для группы из десяти человек.
- Около 2–3 ГБ места на диске под файлы сервера, плюс место под сохранения мира и резервные копии.
- Аккаунт Steam. Владеть Valheim не обязательно, так как выделенный сервер — бесплатный инструмент.
- Базовые навыки работы с терминалом и редактирования текстовых файлов.
СОВЕТ - Как и с любым игровым сервером, запускайте его от отдельной учётной записи, а не от вашего основного пользователя или root. Это ничего не стоит и ограничивает ущерб, если что-то пойдёт не так.
Бэкенд Steam или бэкенд Crossplay
Решите это до начала настройки, поскольку от этого зависит, придётся ли вам настраивать роутер.
Бэкенд Steam используется по умолчанию. Сервер общается напрямую с клиентами, что означает необходимость проброса портов, и присоединиться или увидеть сервер могут только игроки Steam.
Бэкенд Crossplay, включаемый флагом -crossplay, направляет трафик через ретранслятор PlayFab. Проброс портов не требуется, и присоединиться могут игроки с любой платформы, включая Xbox и версию из Microsoft Store.
Crossplay звучит как очевидный выигрыш, и часто им и является, особенно если вы не можете настроить свой роутер. Компромисс в том, что трафик идёт через ретранслятор, а не напрямую, что может увеличить задержку, и вы не можете подключиться к серверу с crossplay по локальному или loopback IP. Подключение происходит по публичному IP и порту, по коду присоединения или через список серверов.
ПРИМЕЧАНИЕ - Если вы используете моды, учтите, что клиенты Xbox и Microsoft Store не могут загружать BepInEx. Включение crossplay на моддированном сервере позволяет этим игрокам найти его, но не обязательно играть на нём.
Загрузка файлов сервера
Выделенный сервер Valheim — это приложение Steam с ID 896660, и оно бесплатное.
Через клиент Steam
Самый простой путь, если на машине установлен Steam с рабочим столом.
- Откройте вашу Библиотеку Steam.
- Нажмите на выпадающий список в верхнем левом углу и убедитесь, что галочка Tools установлена.
- Найдите Valheim Dedicated Server в списке и нажмите Install.
- По завершении установки нажмите правой кнопкой мыши на него и выберите Manage, затем Browse local files, чтобы открыть папку установки.
Через SteamCMD
Правильный подход для headless-машины, и тот, который стоит использовать на Linux-сервере.
У нас есть отдельное руководство, посвящённое самому SteamCMD:
https://moddingcommunity.com/blog/how-to-download-run-steamcmd/
После установки SteamCMD команды такие:
login anonymous
force_install_dir /path/to/valheim-server
app_update 896660 validate
quit
Или в виде однострочника, который можно вставить в скрипт или cron-задачу:
./steamcmd.sh +login anonymous +force_install_dir /home/valheim/server +app_update 896660 validate +quit
Анонимный вход здесь работает, так что учётные данные не нужны. Повторно запускайте ту же команду каждый раз, когда хотите обновить сервер — это потребуется делать после каждого патча Valheim, поскольку клиенты отказываются подключаться к серверу со старой сборкой.
Требования для Linux
Linux-сервер разделяет большинство требований к библиотекам с клиентом Steam, плюс несколько дополнительных.
Debian и Ubuntu
sudo apt update
sudo apt install -y libatomic1 libpulse-dev libpulse0 screen
Fedora, RHEL и Rocky
sudo dnf install -y libatomic pulseaudio-libs pulseaudio-libs-devel screen
Серверу также нужны GLIBC 2.29 и GLIBCXX 3.4.26 или новее. В любом актуальном дистрибутиве они уже есть. Если у вас что-то более старое, например CentOS 7, поддерживаемый вариант — Docker, а не попытка вручную обновить glibc.
Аргументы запуска
Вся настройка сервера выполняется через аргументы запуска, а не через файл конфигурации. Вот те, что имеют значение.
| Аргумент | По умолчанию | Описание |
|---|---|---|
-name "My server" |
N/A | Название сервера, отображаемое в списке серверов. |
-port 2456 |
2456 |
UDP-порт. Valheim использует этот порт и порт на единицу выше, так что 2456 означает 2456 и 2457. |
-world "Dedicated" |
N/A | Мир, который нужно загрузить. Создаёт его, если он не существует, или загружает существующий мир с этим именем. |
-password "Secret" |
N/A | Пароль для входа. |
-public 1 |
1 |
1 показывает сервер публично. 0 скрывает его, игроки заходят по IP. Хорошо для LAN. |
-crossplay |
выкл. | Использовать бэкенд PlayFab для кроссплея вместо Steam. Проброс портов не нужен. |
-savedir [PATH] |
см. ниже | Переопределяет, где хранятся миры и файлы прав доступа. |
-logFile "/path/log.txt" |
N/A | Куда записывать лог. |
-saveinterval 1800 |
1800 |
Как часто сохраняется мир, в секундах. По умолчанию 30 минут. |
-backups 4 |
4 |
Сколько автоматических резервных копий хранить. |
-backupshort 7200 |
7200 |
Интервал до первой автоматической резервной копии, в секундах. |
-backuplong 43200 |
43200 |
Интервал между последующими резервными копиями, в секундах. |
-instanceid "1" |
N/A | Нужен только при запуске нескольких серверов на одном порту с одного MAC-адреса, чтобы каждый получил уникальный PlayFab ID. |
Пути сохранения по умолчанию, если вы их не переопределяете:
- Windows:
%USERPROFILE%\AppData\LocalLow\IronGate\Valheim - Linux:
~/.config/unity3d/IronGate/Valheim
ПРЕДУПРЕЖДЕНИЕ - Ваш пароль не может быть пустым и не может быть подстрокой названия сервера или мира. Сервер откажется запускаться в этом случае, а сообщение об ошибке легко пропустить в логе.
Модификаторы мира
Сложность и правила мира тоже можно задать через командную строку, что удобно для сервера, поскольку никому не нужно договариваться о ползунках прямо в игре.
-preset задаёт всё сразу. Допустимые значения: Normal, Casual, Easy, Hard, Hardcore, Immersive и Hammer.
-modifier <name> <value> задаёт по одному параметру за раз и должен указываться после пресета, если вы используете оба, так как пресет перезаписывает всё, что было до него:
| Модификатор | Значения |
|---|---|
combat |
veryeasy, easy, hard, veryhard |
deathpenalty |
casual, veryeasy, easy, hard, hardcore |
resources |
muchless, less, more, muchmore, most |
raids |
none, muchless, less, more, muchmore |
portals |
casual, hard, veryhard |
-setkey <name> переключает флажок-ключ: nobuildcost, playerevents, passivemobs или nomap.
Например, сервер без рейдов с щедрыми ресурсами:
-preset normal -modifier raids none -modifier resources more
Запуск сервера на Windows
Сервер поставляется с файлом start_headless_server.bat в папке установки.
Сделайте копию файла и редактируйте копию. Steam сбрасывает оригинал при каждом обновлении сервера, что сотрёт ваши настройки. Единственная загвоздка в том, что ярлык в библиотеке Steam указывает только на оригинальное имя файла, поэтому вашу копию нужно запускать напрямую, а не через Steam.
- Откройте папку установки сервера.
- Скопируйте
start_headless_server.batво что-то вродеstart_myserver.bat. - Щёлкните правой кнопкой по вашей копии и выберите Edit.
- Найдите строку, начинающуюся с
start valheim_server, и укажите в ней ваши аргументы.
Готовая строка выглядит так:
start valheim_server -nographics -batchmode -name "My Valheim Server" -port 2456 -world "Dedicated" -password "secret123" -public 1 -crossplay
- Сохраните файл, затем дважды щёлкните по нему.
- Если появится запрос брандмауэра Windows, отметьте все пункты, чтобы сервер мог общаться с интернетом.
Сервер запущен, когда в консоли появляется:
Game server connected
Запуск сервера на Linux
Аналог на Linux — start_server.sh. Сначала скопируйте его, по той же причине, что и на Windows.
cd /home/valheim/server
cp start_server.sh start_myserver.sh
chmod u+x start_myserver.sh
nano start_myserver.sh
Укажите ваши аргументы в строке ./valheim_server.x86_64:
#!/bin/bash
export templdpath=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
export SteamAppId=892970
./valheim_server.x86_64 \
-nographics \
-batchmode \
-name "My Valheim Server" \
-port 2456 \
-world "Dedicated" \
-password "secret123" \
-public 1 \
-crossplay
export LD_LIBRARY_PATH=$templdpath
Обратите внимание на строку SteamAppId=892970 — это ID приложения самой игры, а не сервера. Она уже есть в стандартном скрипте, и её нужно оставить.
Запустите его командой:
./start_myserver.sh
Запуск через Screen
Если запустить сервер на переднем плане в сессии SSH, он умрёт сразу при отключении. screen решает эту проблему.
screen -S valheim ./start_myserver.sh
Отключитесь клавишами CTRL + A, затем D. Подключитесь обратно командой:
screen -r valheim
Список ваших сессий можно получить командой screen -ls.
Запуск как службы systemd
Для всего, что вам действительно важно, юнит systemd лучше сессии screen. Он запускается при загрузке и перезапускается при сбое.
Создайте файл /etc/systemd/system/valheim.service:
[Unit]
Description=Valheim Dedicated Server
After=network.target
[Service]
Type=simple
User=valheim
WorkingDirectory=/home/valheim/server
ExecStart=/home/valheim/server/start_myserver.sh
Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
Затем включите и запустите его:
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
KillSignal=SIGINT имеет значение. Valheim нужен аналог CTRL + C для корректного завершения работы и сохранения мира, а TimeoutStopSec=120 даёт время на завершение. Если настроить это неправильно, легко потерять прогресс.
Проверить статус можно командой systemctl status valheim, а следить за логом — командой journalctl -u valheim -f.
Запуск через Docker
Выделенному серверу нужны GLIBC 2.29 и GLIBCXX 3.4.26. Если ваш дистрибутив старше, Docker — официально рекомендуемый путь, и сервер поставляется со скриптом для этого.
- Установите Docker, следуя инструкциям для вашего дистрибутива.
- Убедитесь, что демон запущен, а ваш пользователь состоит в группе
docker. Следующая команда должна выполниться без ошибок:
docker ps
- Запустите прилагаемый скрипт, передав ему ваш стартовый скрипт:
./docker_start_server.sh start_myserver.sh
Первый запуск разворачивает контейнер и занимает несколько минут. Последующие запуски происходят сразу.
Данные игры хранятся в томе Docker, имя которого задаётся в DOCKER_DATA_VOLUME внутри docker_start_server.sh, по умолчанию valheim_server_data. Чтобы хранить данные в вашей файловой системе, замените значение на путь:
DOCKER_DATA_VOLUME="${HOME}/valheim_storage"
Создайте эту директорию перед запуском скрипта. Ваши миры, adminlist.txt, bannedlist.txt и permittedlist.txt окажутся именно там. Останавливайте сервер так же, как при прямом запуске.
macOS
У Valheim есть нативный клиент для macOS, но сборки выделенного сервера для macOS не существует. Steam распространяет его только для Windows и Linux.
Если вы хотите хостить сервер с Mac, реальные варианты такие:
- Запустить Linux в виртуальной машине и следовать инструкциям для Linux выше.
- Использовать Docker Desktop для Mac с образом сервера Valheim от сообщества.
- Разместить сервер на машине с Linux или на арендованном VPS и просто играть с Mac.
Игроки на Mac, разумеется, могут подключаться к серверу, размещённому где угодно, а модификация клиента для Mac работает через обходной путь с Rosetta, описанный в нашем гайде по модам.
Проброс портов
Пропустите этот раздел полностью, если используете -crossplay.
На бэкенде Steam пробросьте следующие порты на роутере на машину, где запущен сервер:
| Протокол | Порт | Назначение |
|---|---|---|
| UDP | 2456 | Игровой порт |
| UDP | 2457 | Игровой порт + 1, используется автоматически |
Если вы изменили -port, пробросьте выбранный порт и следующий за ним.
Также может понадобиться разрешить их в файрволе ОС:
# Debian/Ubuntu with ufw
sudo ufw allow 2456:2457/udp
# Fedora/RHEL with firewalld
sudo firewall-cmd --permanent --add-port=2456-2457/udp
sudo firewall-cmd --reload
В Windows достаточно поставить галочки во всех пунктах в запросе файрвола при первом запуске.
СОВЕТ - Запуск нескольких серверов на одной машине работает нормально, если у каждого своя пара портов. Используйте 2456/2457, 2458/2459 и так далее, и задайте каждому свой -instanceid.
Администраторы, баны и список разрешённых
Три текстовых файла в папке сохранений управляют доступом, по одному Platform User ID на строку:
adminlist.txt- кто получает права администратора.bannedlist.txt- кто забанен.permittedlist.txt- список разрешённых.
ПРЕДУПРЕЖДЕНИЕ - Добавление кого-либо в permittedlist.txt банит всех, кого там нет. Это ожидаемое поведение, и оно удивляет людей. Оставьте файл пустым, если только вы не хотите закрытый сервер.
Platform User ID выглядят как [Platform]_[User ID] и чувствительны к регистру. Их можно найти в логе сервера или в игре на панели F2.
В игре администраторы открывают консоль клавишей F5 и имеют доступ к:
| Команда | Эффект |
|---|---|
kick PLAYERNAME |
Кикает игрока. |
ban PLAYERNAME |
Банит игрока. |
unban PLAYERNAME |
Снимает бан. |
banned |
Выводит список всех забаненных. |
Сохранения и резервные копии
Сервер сохраняет мир каждые -saveinterval секунд, по умолчанию 30 минут, и хранит -backups автоматических резервных копий.
По умолчанию это даёт одну резервную копию возрастом около двух часов и ещё три с интервалом в двенадцать часов. Для активного сервера этого мало, и вот более подходящая отправная точка:
-saveinterval 900 -backups 8 -backupshort 3600 -backuplong 21600
Это сохраняет мир каждые 15 минут и хранит восемь резервных копий, первая из которых часовой давности, а остальные с интервалом в шесть часов.
Автоматические резервные копии хранятся рядом с файлами мира в директории сохранений. Они находятся на том же диске, что и то, что резервируется, поэтому копируйте их куда-то ещё по расписанию, если мир вам дорог. Cron-задачи с rsync вполне достаточно.
Правильная остановка сервера
Нажмите CTRL + C в консоли сервера.
Не закрывайте окно крестиком. Собственная документация Iron Gate на удивление откровенна на этот счёт: сервер может продолжать работать в фоне, и они сами толком не знают наверняка. В любом случае вы рискуете потерять всё, что было сделано с последнего сохранения.
В systemd команда systemctl stop valheim отправляет SIGINT, если вы настроили KillSignal=SIGINT, как описано выше, — это то же самое.
Устранение неполадок
Сервер запускается и сразу же завершает работу. В девяти случаях из десяти дело в правиле пароля. Он не может быть пустым и не может входить в название сервера или мира.
Никто не может найти сервер в списке. Публичным спискам может понадобиться несколько минут, чтобы обновиться, и в лучшие времена они не особо надёжны. Попросите кого-нибудь подключиться по IP через Join IP, чтобы убедиться, что сервер сам по себе доступен, а уже потом беспокойтесь о списке.
У игроков несовпадение версий. Сервер работает на другой сборке, чем клиенты. Заново запустите обновление через SteamCMD или обновите через клиент Steam.
Отказ в соединении или таймаут на бэкенде Steam. Проброс портов. Оба UDP-порта должны быть проброшены на нужный внутренний IP и разрешены в файрволе ОС.
Crossplay-сервер недоступен в моей локальной сети. Ожидаемо. Crossplay-серверы недоступны по локальному или loopback IP. Используйте публичный IP, код присоединения или список серверов.
Ошибки о недостающих библиотеках в Linux. Установите libatomic1, libpulse0 и libpulse-dev. Если в ошибках упоминаются версии GLIBC или GLIBCXX, ваш дистрибутив слишком старый, и решением будет Docker.
Потребление памяти постоянно растёт. Это нормально по мере исследования и застройки мира. Перезапуск сервера по расписанию — распространённое и вполне разумное решение.
Мир откатился после сбоя. Вы потеряли всё, что было сделано с последнего сохранения. Уменьшите -saveinterval и убедитесь, что останавливаете сервер через CTRL + C.
Заключение
Сервер Valheim — один из самых дружелюбных в настройке. Скачайте приложение 896660 через SteamCMD, скопируйте стартовый скрипт, укажите в командной строке имя, порт, мир и пароль, и запустите его.
Два решения, о которых стоит подумать заранее, — это выбор между crossplay и бэкендом Steam, что определяет, придётся ли вам вообще трогать роутер, и настройки резервного копирования, поскольку значения по умолчанию скромнее, чем хотелось бы большинству групп.
Если вы планируете позже добавить моды, наш гайд по модам для Valheim рассказывает про start_server_bepinex.sh и о том, какие моды нужно ставить на сервер, а не только на клиент.
Смотрите также
- Официальное руководство по выделенному серверу Valheim - собственная документация Iron Gate, источник для списка аргументов выше.
- Valheim Crossplay FAQ
- Документация SteamCMD
- Discord по моддингу Valheim
- Wiki по моддингу Valheim
- Приложение TMC - наше собственное приложение с браузером серверов, графиками задержки в реальном времени и RCON. Оно также управляет модами для Valheim, о чём рассказывает наше руководство по модам для Valheim. Открытый исходный код под лицензией GPL-3.0, находится на очень ранней стадии разработки, так что попробовать его или оставить отзыв будет действительно приятно.
Мы стараемся поддерживать этот гайд в актуальном состоянии, но Valheim и его серверные инструменты со временем меняются. Если какая-то инструкция здесь больше не соответствует тому, что вы видите, пожалуйста, сообщите об этом или откройте pull request в репозитории этого гайда на GitHub.
Присоединяйтесь к нашему Discord-серверу, если у вас есть вопросы или нужна помощь с чем-либо, связанным с серверами или моддингом!

