← К вики

Установка сервера Valheim

Как поднять выделенный сервер Valheim через SteamCMD и запустить его через systemd.

Время: 15 мин · Сложность: ★★☆☆☆

Подходит: ✓ Ubuntu 22.04 · ✓ Debian 12


Краткое описание

Дедикейтед-сервер Valheim, как и большинство серверов на движке Unity, распространяется через SteamCMD отдельным приложением.

Когда пригодится

  • Хотите постоянный мир для игры с друзьями без ограничения по времени сессии
  • Текущий хост игры (у кого-то на компьютере) отключается, когда человек выходит из игры
  • Нужен мир, который не завязан на то, что кто-то из группы держит игру открытой

Что понадобится

  • VPS от 2 ГБ RAM (для 5–10 игроков достаточно, под большие миры с полной картой закладывайте 4 ГБ)
  • Доступ по SSH — см. Подключение по SSH
  • Открытые порты 2456-2458/udp

Пошаговая инструкция

1. Установите SteamCMD

apt update
apt install -y lib32gcc-s1 curl
useradd -m -s /bin/bash steam
su - steam
mkdir ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

2. Скачайте сервер Valheim

./steamcmd.sh +force_install_dir /home/steam/valheimserver +login anonymous +app_update 896660 validate +quit

3. Запустите сервер вручную для проверки

cd /home/steam/valheimserver
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
./valheim_server.x86_64 -name "Мой сервер" -port 2456 -world "Dedicated" -password "смените_меня" -public 1

-password обязателен и должен быть не короче 5 символов, иначе сервер откажется стартовать. Дождитесь строки Game server connected и остановите Ctrl+C.

4. Заведите systemd-юнит

/etc/systemd/system/valheim.service:

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

[Service]
User=steam
WorkingDirectory=/home/steam/valheimserver
Environment=LD_LIBRARY_PATH=/home/steam/valheimserver/linux64
Environment=SteamAppId=892970
ExecStart=/home/steam/valheimserver/valheim_server.x86_64 -name "Мой сервер" -port 2456 -world "Dedicated" -password "смените_меня" -public 1 -crossplay
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target

SteamAppId=892970 (id клиента игры) нужен серверу, чтобы правильно инициализировать некоторые библиотеки — без него возможны падения при старте.

systemctl daemon-reload
systemctl enable --now valheim

5. Откройте порты

Серверу нужны три последовательных UDP-порта, начиная с указанного в -port:

ufw allow 2456:2458/udp

Подробнее — Настройка UFW.

Проверка результата

  • systemctl status valheim — active (running)
  • В логе видна строка Game server connected:
    journalctl -u valheim -f
    
  • При -public 1 сервер находится в списке серверов внутри игры по имени; при -public 0 подключение только напрямую по IP

Возможные ошибки

Сервер падает сразу после запуска без вывода в консоль — почти всегда не выставлен LD_LIBRARY_PATH (см. шаг 3/4) или не хватает пакета lib32gcc-s1.

Failed to start Steam client. Continuing without it — это предупреждение, не ошибка, сервер продолжает работать нормально. Игнорируйте.

Игроки видят «Connection error 4: Failed to connect» — версия сервера отстаёт от версии клиента. Обновите сервер тем же способом, что и в шаге 2, повторив app_update.

Мир не сохраняется между рестартами — проверьте, что параметр -world называется одинаково при каждом запуске и что процесс завершается штатно (systemctl stop, а не kill -9) — так гарантируется сохранение перед выходом.

FAQ

Как обновить сервер? Остановите юнит, повторите команду app_update из шага 2, запустите юнит снова:

systemctl stop valheim
/home/steam/steamcmd/steamcmd.sh +force_install_dir /home/steam/valheimserver +login anonymous +app_update 896660 validate +quit
systemctl start valheim

Как сделать бэкап мира? Файлы мира лежат в ~/.config/unity3d/IronGate/Valheim/worlds_local/. Достаточно архивировать эту папку по cron.

Можно ли поставить моды (BepInEx)? Да, устанавливается поверх той же папки сервера — распакуйте BepInEx в /home/steam/valheimserver и добавьте doorstop_libs в LD_LIBRARY_PATH юнита. Сама механика запуска не меняется.

Полезные ссылки

Следующие статьи

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