Valheim Руководство

Как запустить сервер Valheim на Ubuntu: Steam, crossplay и сохранения

Установка, подключение игроков и резервная копия нового мира на собственном VPS.

Как запустить сервер Valheim на Ubuntu: Steam, crossplay и сохранения

Запустим новый мир Valheim без модов как Linux-службу, выберем способ подключения игроков и вынесем сохранения из каталога, который обновляет SteamCMD. Нужны чистый VPS с Ubuntu 24.04 x86_64, публичный IPv4, доступ по SSH и пользователь с sudo. Инструкция рассчитана на стабильный сервер из Steam; источники проверены 12 октября 2026 года.

Выбирайте регион VPS поближе к игрокам. Оставьте память и место на диске для системы, роста мира и резервных копий: число заявленных слотов не показывает производительность конкретного VPS. В FAQ версии 1.0 Valheim описана как игра для 1–10 участников.

Сначала выберите Steam или crossplay#

Если все играют через Steam, не добавляйте -crossplay. Для игроков с других поддерживаемых платформ добавьте этот флаг. Сетевые маршруты различаются:

РежимКак идёт подключениеВходящее правило VPS
SteamНапрямую к игровому серверуUDP 2456–2457 в примере ниже
CrossplayЧерез PlayFab relay; код подключения или публичный адресДля relay проброс игровых портов не нужен

Руководство выделенного сервера указывает основной порт и основной+1. В crossplay нельзя подключаться по локальному адресу или loopback. Для relay важен исходящий сетевой доступ; открытие произвольных входящих портов не исправляет его регистрацию.

Steam-подключение идёт через входящие UDP-порты; crossplay использует relay. Сохранения копируются отдельно, после остановки процесса.

Установите SteamCMD от имени игрового пользователя#

Выполните команды на VPS. 32-битная библиотека нужна SteamCMD; аудио- и atomic-библиотеки — Linux-серверу Valheim:

bash
sudo apt update
sudo apt install -y ca-certificates curl lib32gcc-s1 libatomic1 libpulse0 libpulse-dev nano ufw
sudo adduser --system --group --home /srv/valheim valheim
sudo install -d -o valheim -g valheim -m 750 /srv/valheim/steamcmd /srv/valheim/server /srv/valheim/data
sudo -u valheim -H curl -fsSLo /srv/valheim/steamcmd/steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
sudo -u valheim -H tar -xzf /srv/valheim/steamcmd/steamcmd.tar.gz -C /srv/valheim/steamcmd
sudo -u valheim -H /srv/valheim/steamcmd/steamcmd.sh +force_install_dir /srv/valheim/server +login anonymous +app_update 896660 validate +quit

Игровой пользователь владеет установкой и имеет постоянный HOME; административные права ему не нужны. Убедитесь, что появились /srv/valheim/server/start_server.sh и исполняемый файл сервера. Если загрузка закончилась ошибкой, сначала исправьте её. Сведения о загруженной сборке сохраните в заметках по серверу.

Настройте скрипт, который переживёт обновление#

Скопируйте штатный Linux-скрипт за пределы каталога загрузки:

bash
sudo -u valheim cp /srv/valheim/server/start_server.sh /srv/valheim/start.sh
sudo chmod 700 /srv/valheim/start.sh
sudo -u valheim nano /srv/valheim/start.sh

Сохраните экспорты переменных из скрипта установленной сборки, включая настройки Steam и библиотек. Замените команду запуска сервера на следующую. Перед первым запуском смените пример пароля; он должен отличаться от названия сервера. Удалите второй запуск или интерактивное ожидание после этой команды. exec позволяет systemd отслеживать сам игровой процесс:

bash
exec /srv/valheim/server/valheim_server.x86_64 -nographics -batchmode -name "Our Valheim World" -port 2456 -world "Friends" -password "REPLACE_WITH_RANDOM_SECRET" -savedir /srv/valheim/data -public 0

Будет создан новый мир Friends. -savedir задаёт отдельный каталог постоянных данных; -public 0 скрывает сервер примера из публичного списка. Для crossplay допишите -crossplay в эту же команду. Код подключения используется по схеме crossplay.

Если штатный скрипт выглядит иначе, прочитайте руководство рядом с установленным сервером. Сохраните его подготовку окружения вместо подстановки старого скрипта из инструкции хостинга.

Один раз запустите сервер в текущем терминале, находясь в каталоге программы:

bash
sudo -u valheim -H /bin/bash -c 'cd /srv/valheim/server && /bin/bash /srv/valheim/start.sh'

Дождитесь запуска, нажмите Ctrl+C и дождитесь завершения процесса. На этом этапе игрокам подключаться не нужно. Ошибки библиотек исправьте до перехода к службе.

Создайте службу#

Откройте sudo nano /etc/systemd/system/valheim.service:

ini
[Unit]
Description=Valheim dedicated server
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=valheim
Group=valheim
WorkingDirectory=/srv/valheim/server
Environment=HOME=/srv/valheim
ExecStart=/bin/bash /srv/valheim/start.sh
KillSignal=SIGINT
TimeoutStopSec=180
SendSIGKILL=no
Restart=no
UMask=0027

[Install]
WantedBy=multi-user.target

SIGINT повторяет описанную разработчиком остановку через Ctrl+C. Автоматический перезапуск отключён, чтобы повторяющаяся ошибка загрузки или сохранения оставалась заметной. При превышении времени остановки изучите процесс и журнал до архивации: служба не убивает его принудительно по этому таймауту.

bash
sudo systemctl daemon-reload
sudo systemctl enable --now valheim
sudo systemctl status valheim --no-pager
sudo journalctl -u valheim -n 100 --no-pager

Откройте нужный маршрут и проверьте вход#

Сначала разрешите свой реальный SSH-порт. В примере это 22; замените его до включения UFW, если используете другой. Проверьте также firewall провайдера. Для Steam-режима:

bash
sudo ufw allow 22/tcp
sudo ufw allow 2456:2457/udp
sudo ufw enable
sudo ufw status verbose
sudo ss -lunp

При первоначальной настройке crossplay пропустите правило 2456:2457. Если переводите уже работающий Steam-сервер, сохраните прежний маршрут до успешного входа через relay, затем отдельно удалите ненужное правило.

В Steam-режиме введите VPS_IP:2456 в поле адреса внутри игры. В crossplay используйте актуальный код подключения или публичный адрес, как указано в руководстве. Сам по себе Steam Deck с версией из Steam не требует перехода на crossplay.

Активная служба и UDP-сокет показывают только локальную готовность. Зайдите с внешнего подключения игрока, введите пароль, измените что-нибудь небольшое в мире, выйдите и зайдите снова. После управляемого перезапуска службы убедитесь, что изменение сохранилось:

bash
sudo systemctl restart valheim
sudo journalctl -u valheim -n 100 --no-pager

Скопируйте весь каталог сохранений#

Остановите службу и проверьте её состояние и завершение процесса:

bash
sudo systemctl stop valheim
sudo systemctl is-active valheim
sudo systemctl show valheim -p MainPID -p SubState
sudo journalctl -u valheim -n 60 --no-pager

Ожидаемые проверки — inactive, MainPID=0 и завершённая остановка в журнале. Если процесс ещё останавливается или остановка закончилась ошибкой, сначала разберитесь с этим. Не архивируйте изменяющееся сохранение.

Сохраните весь каталог данных и скрипт запуска. Примечания Iron Gate к обновлениям подтверждают изменение формата сохранений в 1.0. Копирование только старой пары .db/.fwl не подходит как универсальная процедура для актуального сервера.

bash
set -e
sudo install -d -m 700 /var/backups/valheim
VALHEIM_BACKUP="/var/backups/valheim/valheim-$(date -u +%Y%m%dT%H%M%SZ).tar.gz"
sudo tar -czf "$VALHEIM_BACKUP" -C /srv/valheim data start.sh
sudo tar -tzf "$VALHEIM_BACKUP"
install -d -m 700 "$HOME/gamehost-backup-export"
sudo install -m 600 -o "$(id -u)" -g "$(id -g)" "$VALHEIM_BACKUP" "$HOME/gamehost-backup-export/valheim-backup.tar.gz"
sudo systemctl start valheim

Выполните блок архивации целиком: set -e остановит его при ошибке до перезапуска службы. Файл для скачивания создаётся сразу с правами 600 в вашем закрытом каталоге; датированный архив остаётся доступен только root.

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

bash
scp SSH_USER@VPS_IP:gamehost-backup-export/valheim-backup.tar.gz ./valheim-backup.tar.gz

После скачивания выполните на VPS rm -- "$HOME/gamehost-backup-export/valheim-backup.tar.gz". Датированный архив, файл службы и сведения о сборке храните также вне сервера. Просмотр архива не проверяет восстановление: отрепетируйте его на отдельном экземпляре с соответствующей версией программы и изолированным портом.

Обновляйте отдельно и разбирайте ошибки по симптомам#

Перед обновлением повторите копирование остановленных данных, пропустив последнюю команду sudo systemctl start valheim в блоке архивации. Ещё раз проверьте MainPID=0, затем выполните прежнюю команду установки SteamCMD. Сравните обновлённые скрипт и руководство с вашим окружением, запустите службу и повторите вход из игры. Если после копирования вы уже запустили сервер, сначала снова остановите службу и подтвердите завершение. Обновление планируйте на окно обслуживания, а не на каждый старт процесса.

Что наблюдаетеЧто проверить дальше
Сервер не запускаетсяjournalctl, наличие исполняемого файла, сохранённые экспорты окружения и библиотеки.
Steam-игрок получает таймаутUDP 2456–2457 в обоих firewall и публичный адрес. TCP-проверка веб-порта не проверяет этот маршрут.
Crossplay не работает с локальным адресомИспользуйте код или публичный адрес; проверьте регистрацию relay и исходящий доступ.
Появился новый мирОстановитесь до продолжения игры; сопоставьте -world, -savedir и выбранную копию. Перед сменой путей сохраните все старые данные.
Обновление будто не применилосьSteamCMD должен обновлять /srv/valheim/server, а служба — запускать эту же установку.

Так можно сузить причину ошибки без удаления мира и открытия посторонних портов.