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

Как перенести мир Valheim на выделенный сервер после 1.0

Перенесите полный мир Valheim после 1.0: экспорт локальной копии, вся структура сохранения, выбор мира и проверка рестарта.

Как перенести мир Valheim на выделенный сервер после 1.0

Перенесите все данные мира, сохраните возможность вернуть прежнее состояние сервера и направьте -world вместе с -savedir на импортированную копию. Двух файлов из старого руководства для переноса современного мира Valheim 1.0 уже недостаточно.

Инструкция рассчитана на мир с ПК и Linux-службу из руководства по установке Valheim: пользователь valheim, скрипт /srv/valheim/start.sh, явный каталог данных /srv/valheim/data. Предполагается, что с этим каталогом работает один серверный процесс. Источники проверены 17 октября 2026 года. Для другой установки сначала измените пути.

Определите формат до выбора файлов#

Анонс Valheim 1.0 подтверждает выпуск 9 сентября. В подробных заметках разработчика в Steam новая система сохранения описана как разделение данных мира на чанки.

У старого, ещё не преобразованного мира есть согласованная пара .db и .fwl. Это граница исторического формата, а не универсальный рецепт современного экспорта. Мир, записанный новой системой, содержит дополнительные файлы: сохраните всю структуру его каталога и составляющие данные. Не выбирайте только знакомые расширения и не смешивайте части разных поколений резервных копий.

Здесь переносится весь worlds_local в отдельный закрытый каталог. Так процедура не зависит от неполного вручную составленного списка файлов актуального формата. Каталог может содержать другие локальные миры: учтите размер и не делайте загрузку публичной. Какой мир запустится, определяет явный параметр выбора. Персонажи хранятся отдельно; загружать их сохранения на сервер ради входа с существующим персонажем не требуется.

Исходник, загруженную копию и прежние данные сервера храните отдельно до проверки реального входа и перезапуска.

Сделайте облачный мир локальным и закройте игру#

В меню выбора мира откройте Manage Saves → Worlds, выберите нужный мир и нажмите Move to Local, если он хранится в облаке. Дождитесь завершения и выйдите из Valheim. В инструкции Iron Gate по облачным сохранениям объясняется, что выделенному серверу нужна локальная копия. Простое отключение Steam Cloud не выполняет экспорт.

На Windows откройте %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local. Для нативного Linux-клиента исходная точка — ~/.config/unity3d/IronGate/Valheim/worlds_local. До экспорта проверьте мир в игре, запишите точное имя и узнаваемое поселение или ориентир. Сделайте независимую копию каталога после закрытия игры и оставьте её на ПК.

Если мир существует только на консоли, сначала найдите поддерживаемый способ получить локальную копию на ПК для соответствующей платформы и учётной записи. Прямого доступа к файловой системе консолей эта инструкция не предусматривает. Случайный облачный файл от другой учётной записи его не заменяет.

Определите каталог назначения и остановите сервер#

На VPS проверьте службу и скрипт:

bash
sudo systemctl cat valheim
sudo systemctl show valheim -p User -p Environment -p ExecStart
sudo -u valheim test -r /srv/valheim/start.sh
sudo df -h /srv/valheim /var/backups

Убедитесь, что скрипт использует -savedir /srv/valheim/data, и посмотрите прежнее значение -world. Без явного пути сохранения привязаны к домашнему каталогу пользователя службы, который может отличаться от пользователя SSH. В контейнере данные могут находиться в подключённом томе: определите реальное хранилище до продолжения.

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

bash
sudo systemctl stop valheim
sudo systemctl show valheim -p MainPID -p SubState
sudo journalctl -u valheim -n 80 --no-pager

Продолжайте только при MainPID=0, неактивной службе и завершённой остановке в журнале. В unit из инструкции предусмотрен штатный SIGINT. Если остановка зависла или остался другой записывающий процесс, сначала устраните причину. Исходный мир на ПК тоже не запускайте до принятия переноса.

Сохраните прежние данные и загрузите полный каталог#

На VPS создайте закрытый архив текущих данных и скрипта. Выполняйте блок целиком: ошибка остановит последовательность.

bash
(
set -e
test ! -e "$HOME/valheim-import"
test ! -L "$HOME/valheim-import"
test "$(sudo systemctl show valheim -p ActiveState --value)" = inactive
test "$(sudo systemctl show valheim -p MainPID --value)" = 0
sudo install -d -o root -g root -m 700 /var/backups/valheim
valheim_archive=$(sudo mktemp /var/backups/valheim/pre-import-XXXXXXXX.tar.gz)
sudo tar -czf "$valheim_archive" -C /srv/valheim data start.sh
sudo tar -tzf "$valheim_archive" >/dev/null
install -d -m 700 "$HOME/valheim-import"
printf '%s\n' "$valheim_archive"
)

Через SFTP под обычным пользователем SSH загрузите весь каталог worlds_local с ПК в valheim-import его домашнего каталога. Итоговый путь — ~/valheim-import/worlds_local, без лишнего вложения worlds_local/worlds_local. Сравните количество файлов, размеры и, желательно, SHA-256-манифесты с путями относительно одного и того же каталога. Сообщение клиента об окончании передачи не доказывает, что для отправки были выбраны все файлы.

Если исходный ПК работает на Linux, после закрытия игры создайте манифест:

bash
cd "$HOME/.config/unity3d/IronGate/Valheim"
find worlds_local -type f -print0 | LC_ALL=C sort -z | xargs -0 -r sha256sum > "$HOME/valheim-worlds.sha256"

Загрузите его рядом с промежуточным каталогом. На VPS проверьте данные до установки:

bash
cd "$HOME/valheim-import"
sha256sum -c valheim-worlds.sha256

Для Windows используйте сравнение SHA-256 в программе передачи или подходящую утилиту создания манифеста с относительными путями. Команда Linux не предназначена для PowerShell. При пропущенном файле или несовпадении хеша оставьте сервер остановленным.

Каталог загрузки должен быть новым. Если он уже существует, выберите другой путь во всех командах вместо объединения содержимого. Блок установки также отклоняет симлинки и специальные файлы: используйте независимую копию обычных файлов.

Установите данные и выберите нужный мир#

В этом примере на сервере уже есть worlds_local. Имя для прежнего каталога ниже должно быть свободно. Если оно занято, последовательно выберите другое, не перезаписывая существующую копию:

bash
(
set -e
test -d "$HOME/valheim-import/worlds_local"
python3 - "$HOME/valheim-import/worlds_local" <<'PYTREE'
import sys
from pathlib import Path
root = Path(sys.argv[1])
for item in [root, *root.rglob('*')]:
    if item.is_symlink() or not (item.is_file() or item.is_dir()):
        raise SystemExit('Use an independent tree of regular files and directories')
PYTREE
sudo test -d /srv/valheim/data/worlds_local
sudo test ! -e /srv/valheim/data/worlds_local.before-import-20261017
sudo mv /srv/valheim/data/worlds_local /srv/valheim/data/worlds_local.before-import-20261017
sudo cp -a "$HOME/valheim-import/worlds_local" /srv/valheim/data/worlds_local
sudo chown -R valheim:valheim /srv/valheim/data/worlds_local
sudo chmod -R u+rwX,go-rwx /srv/valheim/data/worlds_local
sudo -u valheim nano /srv/valheim/start.sh
)

Установите -world в точное имя импортированного мира, оставив -savedir /srv/valheim/data. Сохраните настройки библиотек, пароль и выбранный режим подключения в скрипте. Публичное имя -name не заменяет параметр выбора мира. Не переименовывайте внутренние файлы чанков под вывеску сервера.

Списки доступа находятся в корневом каталоге данных сервера. Для импорта мира не требуется заменять его администраторов или разрешённых игроков настройками с ПК. Проверьте, что существующие правила допускают игрока, который будет проверять перенос.

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

bash
sudo systemctl start valheim
sudo journalctl -u valheim --since '5 minutes ago' --no-pager

Проверьте выбранный мир в журнале. Подключитесь настоящим клиентом и посетите записанное поселение. Незнакомый мир или пустая стартовая область — повод остановиться и проверить имя с путём, а не продолжать игру в ожидании построек. Если crossplay ломается до загрузки мира, используйте разбор подключения.

Сделайте небольшое узнаваемое изменение, выйдите, штатно остановите сервер, запустите его снова и переподключитесь. Убедитесь, что изменение осталось. До этого сохраняйте исходный экспорт на ПК и архив перед переносом.

Для отката снова остановите и проверьте процесс, отложите неудачную импортированную копию, верните прежний worlds_local вместе со скриптом, затем запустите и проверьте сервер. Не объединяйте старые и новые файлы чанков. Если меняли версию, верните и соответствующий исполняемый сервер: преобразованное сохранение не доказывает обратную совместимость. В заметках Iron Gate об ошибке преобразования также объясняется, почему восстановление старого снимка мира отменяет последующий прогресс.