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

Развёртывание сервера Valheim в Docker Compose: переменные окружения, persistent volumes и автообновление

Развёртывание выделенного сервера Valheim в Docker Compose: образ lloesche/valheim-server, монтирование томов сохранений, настройка кроссплея и корректный stop_grace_period.

Развёртывание сервера Valheim в Docker Compose: переменные окружения, persistent volumes и автообновление

Контейнеризация выделенного сервера Valheim с помощью Docker и Docker Compose — современный стандарт развёртывания игровых сред. Запуск сервера внутри изолированного контейнера избавляет от необходимости вручную компилировать runtime-библиотеки Unity на хосте, упрощает перенос мира между серверами и гарантирует автоматическое обновление файлов игры при выходе официальных патчей в Steam.

В этом подробном руководстве мы разберём создание файла docker-compose.yml на базе популярного образа lloesche/valheim-server, настройку персистентных томов (persistent volumes) для сохранения мира, поддержку кроссплея с консолями и тайм-ауты корректного завершения контейнера.

Подготовка директорий на хосте для персистентного хранения#

Контейнеры являются эфемерными: любые файлы, созданные внутри файловой системы контейнера, будут уничтожены при его пересоздании. Все файлы сохранений мира (.db и .fwl), модификации BepInEx и кэш SteamCMD должны монтироваться с хостовой системы.

Создайте структуру каталогов и назначьте права доступа:

bash
mkdir -p /opt/valheim/config /opt/valheim/data && sudo chown -R 1000:1000 /opt/valheim

Директория /opt/valheim/config будет содержать ваши миры и конфигурации, а /opt/valheim/data — скомпилированные бинарные файлы сервера.

Составление файла docker-compose.yml#

Создайте файл /opt/valheim/docker-compose.yml со следующей конфигурацией:

yaml
services:
  valheim:
    image: lloesche/valheim-server
    container_name: valheim-server
    restart: unless-stopped
    stop_grace_period: 2m
    ports:
      - "2456-2457:2456-2457/udp"
    environment:
      - SERVER_NAME=VikingKingdom
      - WORLD_NAME=Dedicated
      - SERVER_PASS=SecretPass123
      - SERVER_PUBLIC=true
      - SERVER_ARGS=-crossplay
      - UPDATE_CRON=0 4 * * *
    volumes:
      - /opt/valheim/config:/config
      - /opt/valheim/data:/opt/valheim

Ключевые директивы конфигурации:

  • stop_grace_period: 2m — критически важный параметр. Серверу Valheim требуется время, чтобы записать тяжелую базу данных мира .db на диск при завершении. Стандартный 10-секундный тайм-аут Docker приведет к принудительному SIGKILL и повреждению мира.
  • SERVER_ARGS=-crossplay — подключает сетевой бэкенд PlayFab для кроссплея с Xbox.
  • UPDATE_CRON=0 4 * * * — встроенный планировщик проверяет обновления SteamCMD каждую ночь в 04:00.

Проброс игровых UDP-портов в фаерволе#

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

bash
sudo ufw allow 2456:2457/udp

Порты TCP открывать не требуется.

Запуск контейнера и фоновое обслуживание#

Перейдите в директорию с файлом конфигурации и запустите контейнер в фоновом режиме:

bash
cd /opt/valheim && docker compose up -d

Docker автоматически загрузит актуальный образ, скачает файлы выделенного сервера через SteamCMD и выполнит первичную генерацию мира.

Мониторинг журнала инициализации и Join Code#

Отслеживайте вывод консоли контейнера в реальном времени:

bash
docker compose logs -f valheim

При успешном старте в логе отобразится строка Game server connected и уникальный шестнадцатизначный код подключения (Join Code).

Если вы хотите запускать выделенные миры Valheim без настройки конфигураций Docker и управления портами, надёжный хостинг серверов Valheim предоставляет готовые контейнерные окружения с резервным копированием и мониторингом через веб-панель.

Источники#