Для сервера Valheim на Linux VPS нужна x86-64 машина с двумя vCPU, 4 ГБ памяти для группы до шести человек (6-8 ГБ для десяти или для модов), 20 ГБ SSD и больше, Ubuntu LTS или Debian и расположение рядом с игроками. Установите сервер через SteamCMD от непривилегированного пользователя, откройте UDP 2456 и 2457 и в собственном файрволе VPS (sudo ufw allow 2456:2457/udp), и в сетевом файрволе провайдера, если он есть, и запускайте сервер как службу systemd, а не в tmux, чтобы он переживал перезагрузки и сохранялся при остановке. После этого поддерживайте в актуальном состоянии две вещи по разным графикам: операционную систему - автоматически, а игру - осознанно. Это вся работа; остальная часть статьи - рассуждения, точные команды и проблемы, которые VPS добавляет по сравнению с домашним ПК или игровым хостингом.
Подходит ли VPS для сервера Valheim?#
VPS даёт вам целую Linux-машину за ежемесячную плату: root-доступ, публичный IP и ничьих чужих правил. Для Valheim это означает любой мод, любой аргумент запуска, любую схему бэкапов, несколько миров на одной машине и другие сервисы рядом с сервером - бота Discord, небольшой сайт, просмотрщик карты.
Это также делает администратором вас. Никто другой не обновляет ядро, не замечает заполняющийся диск, не ротирует логи и не восстанавливает мир, когда он повреждён. Если это звучит как хобби, VPS - выгодное решение. Если как повинность, управляемый игровой сервер делает ту же работу с панелью сверху, а разница в цене меньше, чем принято считать. Различия в том, что именно вы арендуете, объясняет статья VPS, VDS и выделенный сервер: чем они отличаются.
Две вещи нужно исключить, прежде чем платить:
- Инстансы ARM. Выделенный сервер Valheim собран только для x86-64 Linux. Дешёвые ARM-тарифы, которые рекламируют некоторые провайдеры, нативно его не запустят, а слои эмуляции - не то, на чём стоит строить мир группы. Проверьте архитектуру процессора в описании тарифа.
- Burst-процессор или сильно разделяемый CPU. Тарифы, дающие долю ядра с «burst-кредитами», несколько минут работают нормально, а потом троттлятся. Симуляция Valheim - это постоянная нагрузка, а не всплески, поэтому она израсходует кредиты и начнёт подтормаживать.
Выбор размера VPS#
Сервер Valheim опирается на один главный поток, поэтому быстрое ядро важнее, чем много медленных, но второй vCPU стоит иметь - сохранение, сеть и обновления SteamCMD выполняются вне главного потока, а операционной системе нужно где-то работать. Память растёт вместе с исследованным миром и количеством строительных элементов; обследованному миру с четырьмя большими базами нужно гораздо больше, чем свежему сиду.
Цифры ниже относятся ко всему VPS, поэтому включают операционную систему, SSH, файрвол и скачок памяти во время обновления SteamCMD - примерно 0,5-1 ГБ сверх самой игры.
| Группа | vCPU | Память VPS | Диск |
|---|---|---|---|
| 1-3 игрока, новый мир | 2 | 4 ГБ | 20 ГБ |
| 4-6 игроков, несколько баз | 2 | 4-6 ГБ | 25 ГБ |
| 7-10 игроков, исследованный мир | 2-4 | 6-8 ГБ | 30 ГБ |
| С модами, 10+ модов BepInEx | 4 | 8 ГБ | 30-40 ГБ |
Использование диска скромное: около 2 ГБ под сервер, файл мира, который обычно вырастает до 20-150 МБ, и бэкапы. Дополнительное место в таблице - для ОС, кэша SteamCMD и разумного числа архивных бэкапов на самой машине. Предпочитайте NVMe или SSD; зависание во время сохранения мира - это запись на диск.
Расположение важнее любых характеристик. Выбирайте регион с наименьшей задержкой для большинства вашей группы; для европейской группы немецкий или нидерландский дата-центр всегда обойдёт более быструю машину в США. Valheim использует мало трафика - десятки или малые сотни КБ/с на игрока, - так что скорость порта в тарифе не имеет значения. Подробности того, как растёт память за время жизни мира, есть в статье сколько RAM нужно серверу Valheim.
На общей виртуализации, когда сервер уже работает с игроками, проверьте CPU steal:
$ vmstat 1 10# the last column, st, is time the hypervisor gave your vCPU to someone elseЕсли steal держится выше нескольких процентов, пока игроки жалуются на лаги, хост перепродан, и никакая настройка внутри VPS этого не исправит. Исправит тариф с выделенными ядрами или другой провайдер.
Первые шаги на свежем VPS#
Прежде чем делать что-либо, связанное с Valheim, сделайте машину безопасной для оставления в интернете. В Ubuntu или Debian, от root или пользователя с sudo:
$ sudo apt update && sudo apt full-upgrade -y$ sudo adduser admin && sudo usermod -aG sudo admin# copy your SSH public key to the new user, log in with it, then:$ sudoedit /etc/ssh/sshd_config.d/50-hardening.confPasswordAuthentication noPermitRootLogin no$ sudo sshd -t && sudo systemctl reload sshНе закрывайте текущую сессию и проверьте новый вход, прежде чем её закрыть; опечатка в конфигурации SSH закрывает вам доступ, а на VPS это означает консоль восстановления провайдера. Служба SSH называется ssh в Ubuntu и Debian и sshd в большинстве других дистрибутивов. Ключи, fail2ban и остальное описаны в статье SSH-ключи и защита.
Если в тарифе 4 ГБ или меньше, добавьте небольшой файл подкачки. Сервер быстрее от этого не станет - игровой сервер, ушедший в своп, - это игровой сервер с подтормаживаниями, - но ядру будет куда выгрузить неиспользуемую память во время обновления SteamCMD вместо того, чтобы убивать сервер:
$ sudo fallocate -l 2G /swapfile$ sudo chmod 600 /swapfile$ sudo mkswap /swapfile && sudo swapon /swapfile$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstabЧто происходит, когда память всё же заканчивается, и почему мир теряет всё несохранённое, объясняет статья подкачка Linux и OOM killer.
Затем установите сам сервер: SteamCMD, отдельного пользователя valheim, приложение 896660 с анонимным входом и вашу собственную копию стартового скрипта. Это работа на пятнадцать минут, пошагово описанная в статье установка сервера Valheim на Linux через SteamCMD, поэтому здесь не повторяется.
Открываем порты: ufw#
Valheim нужны два UDP-порта: игровой, по умолчанию 2456, и следующий за ним 2457, отвечающий на запросы Steam. Оба - UDP. Правило для TCP ничего не даёт.
В Ubuntu самая простая оболочка файрвола - ufw. Сначала разрешите SSH, иначе включение файрвола оборвёт ваше собственное соединение:
$ sudo ufw allow OpenSSH$ sudo ufw allow 2456:2457/udp comment 'Valheim'$ sudo ufw default deny incoming$ sudo ufw default allow outgoing$ sudo ufw enable$ sudo ufw status verboseOpenSSH - профиль приложения, который ufw поставляет в Ubuntu; в минимальной установке Debian, где его нет, используйте sudo ufw allow 22/tcp или тот порт, на который вы перенесли SSH. Если вы запускаете второй мир с -port 2458, добавьте также 2458:2459/udp. Каждый сервер использует свой игровой порт и следующий за ним, поэтому серверы должны отстоять как минимум на два порта. Почему старые руководства открывают 2458 для одного сервера, объясняет статья порты Valheim 2456-2458: разбор.
Общие приёмы - запрет по умолчанию, ограничение SSH, журналирование - описаны в руководстве по файрволу ufw.
Открываем порты: iptables и nftables#
Если вы не используете ufw или в дистрибутиве его нет, пишите правила напрямую. С iptables:
$ sudo iptables -A INPUT -i lo -j ACCEPT$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT$ sudo iptables -A INPUT -p udp --dport 2456:2457 -j ACCEPT$ sudo iptables -P INPUT DROPПорядок важен: правила для SSH и установленных соединений должны быть на месте до того, как политика по умолчанию станет DROP. Заданные так правила исчезают при перезагрузке. В Debian и Ubuntu установите iptables-persistent и сохраните их:
$ sudo apt install iptables-persistent$ sudo netfilter-persistent saveВ современных Debian и Ubuntu команда iptables обычно является слоем совместимости поверх nftables. Если вы предпочитаете писать nftables напрямую, эквивалентное правило внутри цепочки input таблицы фильтра inet выглядит так:
udp dport 2456-2457 acceptКаким бы инструментом вы ни пользовались, используйте только один. Запуск ufw вместе с написанными вручную правилами iptables даёт набор правил, в котором никто не разберётся. Общая картина описана в статье правила файрвола, которые важны.
Чтобы проверить, что сервер слушает:
$ sudo ss -ulpn | grep valheimВы должны увидеть сокеты UDP на 2456 и 2457. Проверять UDP снаружи не так удобно, как TCP - большинство проверяльщиков портов понимают только TCP, а закрытый UDP-порт часто выглядит так же, как открытый, не давший ответа. Честная проверка - игрок, подключающийся по IP, и затем проверка, что сервер появился в списке сообщества.
tmux или screen против службы#
В большинстве быстрых руководств сервер запускают в tmux или screen, чтобы он продолжал работать после выхода из системы:
$ tmux new -s valheim$ ./start_valheim.sh# detach: Ctrl+b then d; come back with: tmux attach -t valheim$ screen -S valheim$ ./start_valheim.sh# detach: Ctrl+a then d; come back with: screen -r valheimДля вечера тестов это нормально. Для сервера, который вы оставляете работать, - нет, из-за того, чего он не делает:
| tmux / screen | Служба systemd | |
|---|---|---|
| Переживает выход из системы | Да | Да |
| Запускается при загрузке | Нет | Да |
| Перезапускается после сбоя | Нет | Да, с лимитом |
| Чистое сохранение при выключении | Только если вы остановили его вручную заранее | Да, с KillSignal=SIGINT |
| Лог с поиском | Только прокрутка | journalctl |
| Подключаемая консоль | Да | Нет |
Мир теряет данные из-за четвёртой строки. Когда VPS перезагружается из-за обновления ядра, сессия tmux убивается вместе со всем остальным, и мир теряет всё с момента последнего сохранения по таймеру - до тридцати минут при -saveinterval по умолчанию. Unit systemd сначала останавливает сервер сигналом SIGINT, Valheim сохраняется, и только потом машина выключается.
Подключаемая консоль - единственное, что даёт tmux и чего нет в systemd, - для Valheim почти ничего не стоит: выделенный сервер не читает команды из стандартного ввода. Админские команды вводятся в консоли F5 игрового клиента. Unit, политика перезапуска и таймеры собраны в статье запуск Valheim как службы systemd. Если вам нужен tmux плюс инструменты управления, vhserver из LinuxGSM оборачивает сервер в сессию tmux со своими командами обновления, бэкапа и мониторинга.
Поддерживаем актуальность: ОС и игра#
На VPS с Valheim бывает два вида обновлений, и относиться к ним нужно противоположно.
Операционная система должна обновляться сама. Ubuntu по умолчанию включает unattended-upgrades для обновлений безопасности; в Debian установите его и выполните sudo dpkg-reconfigure -plow unattended-upgrades. Обновления ядра вступают в силу только после перезагрузки, а unattended-upgrades не перезагружает, пока ему не скажут. Пусть он перезагружается в тихий час:
Unattended-Upgrade::Automatic-Reboot "true";Unattended-Upgrade::Automatic-Reboot-Time "05:00";Это безопасно только потому, что сервер работает как служба systemd с чистой остановкой. Когда сервер в tmux, автоматическая перезагрузка - это автоматическая потеря прогресса. Если вы предпочитаете перезагружать вручную, примерно раз в неделю проверяйте /var/run/reboot-required.
Игра должна обновляться тогда, когда решаете вы. Когда выходит патч Valheim, клиенты игроков обновляются через Steam, а сервер должен совпадать точно, иначе все видят Incompatible version. Обновление - одна строка SteamCMD, запускаемая от пользователя valheim при остановленном сервере:
$ sudo systemctl stop valheim$ sudo -u valheim /usr/games/steamcmd +force_install_dir /home/valheim/server \ +login anonymous +app_update 896660 validate +quit$ sudo systemctl start valheimНа ванильном сервере это можно автоматизировать: пусть unit запускает обновление перед каждым стартом, и перезапуск подхватит патч. На модифицированном сервере так делать нельзя: патчи ломают моды BepInEx, пока авторы их не пересоберут, и обновление, которое вы не выбирали, оставляет сервер, который не запускается. validate также восстанавливает start_server.sh до поставляемой версии, поэтому сервер стоит запускать из собственной копии. Выбор времени для групп и проблема расхождения версий описаны в статье обновление сервера Valheim и несовпадение версий.
Бэкапы и ежедневные проверки#
VPS даёт вам один диск, а встроенные копии -backups Valheim лежат на нём рядом с миром. Они защищают от неудачного сохранения, но не от удалённого каталога, переполненного диска или инцидента у провайдера. Архивируйте каталог сохранений по расписанию, по возможности после чистого рестарта, и копируйте архив за пределы машины - в объектное хранилище или на другой компьютер. Восстановление описано в статье бэкапы сервера Valheim и повреждение мира, а как отправить архивы в другое место - в статье бэкапы игровых серверов в S3. Снапшоты провайдера - полезное дополнение, но снапшот, снятый в момент сохранения, - это снапшот недописанного мира.
Короткая рутина ловит большинство проблем раньше игроков:
$ systemctl status valheim$ journalctl -u valheim --since today -g "Exception|Error"$ free -h$ df -h /$ uptimeСледите за тремя тенденциями на протяжении недель: память, ползущая к лимиту (еженедельный рестарт обычно держит её на ровном уровне), диск, заполняющийся бэкапами или логами, и load average выше количества ваших vCPU, пока люди играют. Первые две дёшево исправить. Третья означает более крупный тариф или мир, который перерос свой сервер. Если эти инструменты вам в новинку, начать можно со статьи команды Linux для администраторов серверов.
На RE:NODE#
Если вам нужна вся машина, линейка VDS на RE:NODE - это Intel i9-9900K в Германии, от 8 ГБ памяти и 2 vCPU, настраиваемая вручную в течение 24 часов; на неё распространяется всё из этой статьи. Если вам нужен только сервер Valheim, игровые тарифы начинаются с 2 ГБ, приходят примерно через минуту после оплаты с включённым кроссплеем и уже выделенными обоими UDP-портами и заменяют работу с файрволом, службой и обновлениями панелью: чистые Stop и Restart, вкладка Schedules для рестартов и бэкапов и слоты бэкапов вне машины.
FAQ#
Какой самый маленький VPS запускает Valheim?
Два vCPU и 4 ГБ памяти на x86-64 для небольшой группы на свежем мире. Сама игра при таком размере умещается примерно в 2 ГБ; остальное - запас для операционной системы и обновлений SteamCMD. VPS с 2 ГБ запустит её, но совсем без запаса.
Почему никто не может подключиться, хотя ufw разрешает порты?
Проверьте сетевой файрвол провайдера в его веб-консоли - он стоит перед VPS и блокирует трафик до того, как его увидит ufw. Затем убедитесь, что правила для UDP, а не TCP, и что ss -ulpn показывает сервер слушающим на обоих портах.
Можно ли запустить Valheim на ARM VPS?
Нативно - нет. Выделенный сервер собран только для x86-64. Слои эмуляции существуют, но они снижают производительность и ломаются при обновлениях, так что для общего мира это ненадёжная основа. Выбирайте тариф x86-64.
Достаточно ли tmux, если быть осторожным?
Он работает, пока VPS не перезагрузится без предупреждения - из-за окна обслуживания провайдера или обновления ядра, - и мир теряет всё с момента последнего сохранения. Unit systemd стоит десять строк и устраняет этот риск, а вы ничего полезного не теряете, поскольку у Valheim нет консоли stdin.
Как часто нужно обновлять сервер?
При каждом патче Valheim, потому что клиент и сервер должны совпадать. Ванильные серверы можно обновлять при каждом запуске. Модифицированные - только когда моды поддерживают новую версию, поэтому проверьте это, прежде чем запускать SteamCMD.


