Среди администраторов выделенных серверов Valheim распространена критическая проблема: игроки тратят часы на исследование биомов и возведение баз, но после перезагрузки VPS или планового перезапуска службы все постройки исчезают, а мир откатывается к начальному состоянию или на несколько дней назад.
В этом руководстве мы разберём механику сохранения миров в Valheim, устраним жёсткое завершение процесса сигналом SIGKILL, проверим права доступа к файлам .db и .fwl и убедимся в совпадении имени мира в скриптах запуска.
Почему сервер Valheim не сохраняет мир: разбор причин#
Потеря прогресса на сервере Valheim практически всегда вызвана одной из четырёх технических причин:
- Жёсткая остановка процесса (SIGKILL): Valheim выгружает структуры и объекты (zDO) из оперативной памяти на диск во время выключения. Если системный менеджер служб (systemd или Docker) прерывает процесс раньше, чем данные запишутся в файл, последние часы прогресса стираются.
- Ошибки прав доступа (Permissions): процесс сервера запускается под непривилегированным пользователем (например,
steam), а директория сохранений принадлежитroot. - Несовпадение имени мира: если аргумент
-worldв скрипте запуска не совпадает с реальным именем файла с точностью до регистра букв, сервер генерирует абсолютно новый пустой мир. - Нехватка дискового пространства: Valheim сначала пишет во временный файл, а затем переименовывает его в
.db. При заполнении раздела на 100% запись обрывается.
Проверка прав доступа и структуры каталога сохранений#
По умолчанию сервер Valheim на Linux сохраняет данные в локальный каталог ~/.config/unity3d/IronGate/Valheim/worlds_local/.
Проверьте наличие файлов мира и их текущих владельцев:
ls -la ~/.config/unity3d/IronGate/Valheim/worlds_local/
Если владельцем файлов или директории числится root, игровой сервер не может обновить состояние базы данных при автосохранении. Восстановите права владения для сервисного пользователя:
sudo chown -R steam:steam ~/.config/unity3d/IronGate/Valheim
sudo chmod -R 755 ~/.config/unity3d/IronGate/Valheim
Настройка корректного завершения процесса через SIGINT#
Стандартная конфигурация systemd посылает процессу сигнал SIGTERM и принудительно убивает его через 10–15 секунд по тайм-ауту. Серверу Valheim с развитой картой и тысячами объектов требуется до 60–90 секунд для полной синхронизации дискового кэша.
Откройте юнит службы /etc/systemd/system/valheim.service и задайте безопасный сигнал остановки:
[Unit]
Description=Valheim Dedicated Server
After=network.target
[Service]
Type=simple
User=steam
Group=steam
ExecStart=/opt/valheim/start_server.sh
KillSignal=SIGINT
TimeoutStopSec=120
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
Параметр KillSignal=SIGINT передаёт игровому движку Unity команду на штатную процедуру сохранения мира, а TimeoutStopSec=120 гарантирует, что система выделит серверу 2 минуты на завершение записи файлов.
Примените обновлённую конфигурацию systemd:
sudo systemctl daemon-reload && sudo systemctl restart valheim
Проверка имени мира и аудит лога Player.log#
Проверьте строку запуска в файле start_server.sh:
grep -E "valheim_server|-world" /opt/valheim/start_server.sh
Убедитесь, что аргумент -world "Dedicated" в точности соответствует именам файлов Dedicated.db и Dedicated.fwl в папке worlds_local/ (в Linux регистр символов имеет значение: dedicated и Dedicated — это два разных файла).
Для подтверждения успешного сохранения проверьте системный журнал сервера:
tail -n 50 ~/.config/unity3d/IronGate/Valheim/Player.log | grep -i "world saved"
Строка вида World saved ( 842.12ms ) подтверждает, что автосохранение работает штатно, а прогресс базы надёжно зафиксирован на диске.
Если вам нужен надёжный сервер Valheim с гарантированным сохранением прогресса, автоматическими бэкапами перед каждым перезапуском и удобным веб-управлением, современный хостинг серверов Valheim берёт на себя всю техническую настройку и мониторинг целостности ваших миров.




