MAATRIX GAMES / Блог / Как поднять сервер Valheim: пошаговая инструкция

Как поднять сервер Valheim: пошаговая инструкция

MAATRIX GAMES

Друзья зовут в Вальхейм, а домашний хост валится каждый раз, когда хост-игрок выходит из игры или засыпает раньше остальных? Или уже пробовали поднять сервер на своём ПК и упёрлись в проброс портов через провайдерский NAT? Разворачиваем нормальный dedicated-сервер на VPS за один присест — с автозапуском, бэкапами и без сюрпризов на пятый час игры.

Что нужно для сервера Valheim

Valheim — игра не самая прожорливая, но с ростом мира и числа построек аппетиты растут. Ориентируйтесь на такие цифры:

ИгроковRAMvCPUДиск
1-54 ГБ210-15 ГБ
5-106-8 ГБ2-420 ГБ
10+8-16 ГБ425-30 ГБ

Минимум, с которого стоит стартовать — 4 ГБ RAM, это официальный порог и для комфортной игры вдвоём-впятером его обычно хватает. Но если планируете отстраивать несколько крупных баз, ставить много порталов и активно исследовать карту — мир на диске растёт, а вместе с ним и потребление памяти на его подгрузку. Для стабильной группы 8-10 человек 8 ГБ уже ощутимо комфортнее, чем впритык на 4.

Диск — обычный SSD, ничего экзотического. Файл мира весит от пары десятков мегабайт на старте до нескольких сотен мегабайт на "зрелой" карте с исследованными биомами, плюс сам сервер (~1-2 ГБ через SteamCMD) и системные нужды ОС. С запасом под бэкапы 15-20 ГБ — комфортный минимум.

ОС — Ubuntu 22.04 или 24.04 LTS, дальше в инструкции ориентируемся на неё. На Windows Server процесс тоже рабочий (тот же SteamCMD, только .bat вместо bash-скрипта), но линуксовый вариант проще в автоматизации через systemd, поэтому в этой статье — он.

Установка через SteamCMD

Valheim Dedicated Server распространяется через Steam как отдельное приложение с app id 896660, скачивается без покупки игры и без Steam-аккаунта с лицензией — анонимный логин подходит.

Ставим зависимости и SteamCMD:

sudo apt update
sudo apt install -y software-properties-common
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1 libsdl2-2.0-0:i386

На части образов пакет steamcmd в стандартных репозиториях отсутствует — тогда ставим вручную:

mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" -o steamcmd.tar.gz
tar -xvzf steamcmd.tar.gz

Создаём отдельного пользователя под сервер — так безопаснее и проще прибирать процессы:

sudo adduser --disabled-password --gecos "" valheim
sudo su - valheim

Дальше от имени этого пользователя качаем сам сервер:

mkdir -p ~/valheim-server
~/steamcmd/steamcmd.sh +force_install_dir ~/valheim-server \
  +login anonymous \
  +app_update 896660 validate \
  +quit

Скачивание займёт от нескольких минут до пары десятков — зависит от канала VPS. По итогу в ~/valheim-server появится бинарник valheim_server.x86_64 и папка valheim_server_Data с игровыми ресурсами.

Поднять сервер Valheim за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Первый запуск и стартовые параметры

Сервер запускается напрямую бинарником, все настройки — через параметры командной строки. Базовый набор:

cd ~/valheim-server
./valheim_server.x86_64 -name "MyServer" -port 2456 -world "Dedicated" -password "supersecret1" -public 1

Разбор параметров:

  • -name — имя, которое видят игроки в браузере серверов.
  • -port — базовый UDP-порт (по умолчанию 2456, игра занимает ещё два порта следом — подробнее ниже).
  • -world — имя файла мира. Если мира с таким именем ещё нет, сервер сгенерирует новый при первом старте.
  • -password — обязателен для публичных серверов, о его требованиях — отдельный пункт ниже.
  • -public 1 — светить сервер в общем списке (0 — скрыть, тогда подключаются только по прямому IP:порту в меню "Join IP").
  • -savedir — необязательный, но полезный параметр: явно указать, куда сервер пишет сохранения мира (по умолчанию — ~/.config/unity3d/IronGate/Valheim на Linux). Удобно вынести на отдельный путь, если делаете бэкапы по расписанию.

Пример с явным путём сохранений:

./valheim_server.x86_64 -name "MyServer" -port 2456 -world "Dedicated" \
  -password "supersecret1" -public 1 \
  -savedir "/home/valheim/valheim-server/saves"

При первом запуске в консоли пробегает строка Game server connected — это значит, что сервер достучался до сервисов Steam и готов принимать подключения. Если строки нет и процесс висит на "Loading save" бесконечно — почти всегда дело в незакрытых портах, о них ниже.

Пароль сервера — известная грабля

У Valheim жёсткое требование к паролю, о которое спотыкается почти каждый новичок: минимум 5 символов, и пароль не должен содержать имя сервера как подстроку. Если проигнорировать — сервер либо не стартует, либо стартует, но не пускает никого, включая вас, с невнятной ошибкой подключения в логах клиента.

Частые причины провала:

  • Пароль короче 5 символов (123, qwer) — не пройдёт.
  • Пароль совпадает с именем сервера или содержит его целиком (сервер Vikings, пароль Vikings2024) — тоже отклонится.
  • Пробелы в пароле — технически иногда работают, но лучше не рисковать и обойтись без них.

Рабочий вариант — что-то простое, но отдельное от имени: -name "Vikings" и -password "odinwins". Это не про криптостойкость (сервер всё равно живёт за NAT VPS и списком в браузере), а про формальное требование движка игры.

Проброс портов

Valheim использует UDP, а не TCP, и занимает не один порт, а три подряд начиная с указанного в -port:

ПортНазначение
2456/UDPИгровой порт (основной)
2457/UDPQuery-порт (для листинга в браузере серверов)
2458/UDPДополнительный служебный порт

На VPS с "белым" IP без NAT обычно достаточно открыть их в файрволе:

sudo ufw allow 2456:2458/udp
sudo ufw status

Если провайдер или панель хостинга держит облачный файрвол (security group) — те же три порта нужно открыть и там, иначе ufw не спасёт: пакеты срежет ещё на уровне сети провайдера. На серверах MAATRIX GAMES эти порты для игровых тарифов открываются автоматически при деплое — руками ничего пробрасывать не нужно.

Если сервер поднят локально или за домашним роутером — придётся пробрасывать те же 2456-2458/UDP в настройках роутера на локальный IP машины, что для NAT провайдеров (CGNAT, часто встречается у мобильных и части домашних тарифов) может быть попросту невозможно без VPS-прослойки.

Автозапуск через systemd

Ручной запуск в screen или tmux работает, но при перезагрузке VPS сервер не поднимется сам. Юнит systemd решает это красиво — плюс сервер будет автоматически перезапускаться при падении.

Создаём файл /etc/systemd/system/valheim.service:

[Unit]
Description=Valheim Dedicated Server
After=network.target

[Service]
Type=simple
User=valheim
WorkingDirectory=/home/valheim/valheim-server
ExecStart=/home/valheim/valheim-server/valheim_server.x86_64 \
  -name "Vikings" -port 2456 -world "Dedicated" \
  -password "odinwins" -public 1 \
  -savedir "/home/valheim/valheim-server/saves"
Restart=on-failure
RestartSec=15
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Применяем:

sudo systemctl daemon-reload
sudo systemctl enable valheim
sudo systemctl start valheim
sudo systemctl status valheim

Логи смотрим через:

journalctl -u valheim -f

Restart=on-failure — важная мелочь: если сервер упадёт по OOM или из-за бага (на некоторых билдах Valheim такое случается при перегрузке мира постройками), systemd поднимет процесс сам, без вашего вмешательства среди ночи.

Автобэкапы мира

Valheim сам создаёт резервные копии при закрытии сервера, но полагаться только на это рискованно — падение по питанию или kill -9 бэкап не создаст. Отдельный cron-скрипт надёжнее.

Файлы мира — это пара файлов <world>.db и <world>.fwl в папке -savedir (или в ~/.config/unity3d/IronGate/Valheim/worlds_local, если путь не переопределяли). Простой скрипт бэкапа:

#!/bin/bash
# /home/valheim/backup-valheim.sh
SRC="/home/valheim/valheim-server/saves/worlds_local"
DST="/home/valheim/backups"
DATE=$(date +%Y%m%d_%H%M)

mkdir -p "$DST"
tar -czf "$DST/valheim_backup_$DATE.tar.gz" -C "$SRC" .

# храним только последние 14 бэкапов
cd "$DST" && ls -t valheim_backup_*.tar.gz | tail -n +15 | xargs -r rm --

Даём права на выполнение и добавляем в cron — раз в 6 часов достаточно для большинства групп:

chmod +x /home/valheim/backup-valheim.sh
crontab -e

Строка в crontab:

0 */6 * * * /home/valheim/backup-valheim.sh

Перед крупными обновлениями сервера (новый патч Iron Gate, особенно с изменением формата мира) стоит сделать бэкап вручную и не полагаться только на расписание — откат на предыдущую версию мира иногда единственный способ вернуть постройки после кривого патча.

Обновление сервера

Патчи Valheim выходят нерегулярно, но при мажорных обновлениях (новые биомы, боссы) лучше обновляться в тот же день, иначе клиенты с новой версией игры не смогут подключиться — версии сервера и клиента должны совпадать.

sudo systemctl stop valheim
~/steamcmd/steamcmd.sh +force_install_dir ~/valheim-server \
  +login anonymous \
  +app_update 896660 validate \
  +quit
sudo systemctl start valheim

Обновление не трогает файлы мира в -savedir, так что прогресс сохраняется — но бэкап перед апдейтом всё равно не будет лишним, особенно если сервер держит моды через BepInEx (о модах — отдельная тема, сама механика патчинга игры их не учитывает и может конфликтовать с изменённым API после обновления).

Поднять сервер Valheim за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Сервер запускается, но в списке серверов его не видно.

Обычно дело в закрытом query-порте 2457/UDP или в -public 0. Проверьте оба пункта и подождите пару минут — листинг в браузере серверов обновляется не мгновенно.

Игроки видят сервер, но не могут подключиться — "Connection timed out".

Это почти всегда порт 2456/UDP закрыт файрволом (локальным или облачным у провайдера), либо сервер ещё не дописал загрузку мира — проверьте journalctl -u valheim -f на строку Game server connected.

Сколько игроков реально тянет сервер на 4 ГБ RAM?

Комфортно — 2-5 человек на среднем по размеру мире. Больше игроков или сильно разросшаяся база построек — уже ближе к 6-8 ГБ, иначе возможны просадки и долгая подгрузка чанков.

Можно ли перенести существующий мир с домашнего ПК на VPS?

Да — скопируйте пару файлов <world>.db и <world>.fwl в -savedir на сервере и укажите то же имя в параметре -world, сервер подхватит существующий прогресс.

Нужен ли статический IP для сервера?

Крайне желателен — динамический IP ломает закладки игроков в браузере серверов и требует каждый раз заново сообщать адрес. У VPS-хостинга это, как правило, не проблема — IP статический по умолчанию.