RE:NODE

Ресурсы14 мин чтения

VDS или игровая панель: что вам на самом деле нужно

Root-доступ даёт гибкость и стоит часов работы. Что делает за вас панель, что VDS заставляет делать самому и какова честная цена каждого варианта.

Обновлено

0 прочтений

Коротко: если вам нужно от одного до пяти игровых серверов и вы не любите администрировать Linux, берите управляемый тариф. Если нужен софт, который никто не продаёт как продукт, или вы упаковываете восемь мелких сервисов на одну машину, берите VDS. Интересные случаи лежат между ними, и решаются они обычно темпераментом, а не цифрами. Эта статья - попытка решить их цифрами: что на самом деле даёт каждый вариант, сколько памяти операционная система съедает до запуска чего-либо и сколько часов в месяц занимает работа сисадмина, прилагающаяся к root-доступу.

Люди просят VDS, потому что хотят контроля. Получают они контроль плюс вторую неоплачиваемую работу: файрвол, обновления, backup, сертификат, который истекает в воскресенье, и перезапуск в три ночи, который больше никто не сделает. Иногда этот обмен очевидно верный. Часто его покупает человек, который хотел запустить сервер Minecraft, а в итоге читает документацию по sshd_config.

Что вы на самом деле арендуете#

Управляемый тариф для игры или приложения - это контейнер на общей машине. На хосте на базе Pterodactyl это один контейнер Docker на сервер, с памятью, диском и CPU, ограниченными контрольными группами ядра, и веб-панелью как единственным интерфейсом. У вас есть консоль, файловый менеджер, SFTP, задачи по расписанию и backup. Шелла на хосте у вас нет, root тоже, и установить пакет, которого нет в образе, из которого запущен ваш сервер, нельзя.

VDS - это виртуальная машина. У неё своё ядро, свой дистрибутив, свои пользователи, и root - это вы. Всё, что выше гипервизора, ваше, включая каждую ошибку.

Управляемый тарифVDS
ИнтерфейсПанель: консоль, файлы, расписанияSSH и всё, что вы установите
RootНетДа
Произвольное ПОНетДа
Обновления операционной системыНе ваша заботаВаши, еженедельно
ФайрволПорты выделяются на каждый серверПравила пишете вы
BackupСлоты в каждом тарифе, восстановление одной кнопкойСтроите сами
ВыдачаСоздаётся после прохождения платежа, обычно в течение минутыГотовится вручную, в течение 24 часов
Изоляция ресурсовОдин контейнер на сервер, жёсткий предел CPUОдна VM, делите сами
Режим отказаКонтейнер перезапускается начистоВам звонят

Граница проходит не по мощности. Контейнер на хорошем железе запустит сервер Minecraft ровно так же быстро, как та же квота на VM рядом. Граница проходит по ответственности, а у ответственности есть цена в часах, которая никогда не стоит рядом с ежемесячной цифрой. Если вас смущает терминология, в статье VPS, VDS или выделенный сервер все три разведены как следует, а что даёт панель Pterodactyl подробно описывает управляемую сторону.

Накладные расходы, которые никто не считает#

Именно эта часть решает большинство реальных сравнений, и почти никогда не попадает в таблицу на странице с ценами. VDS запускает целую операционную систему до того, как запустит то, что вам нужно.

Измерьте сами на свежей машине командой free -m после перезагрузки, но обычная картина такая:

КомпонентТипичная резидентная память
Минимальный сервер на Debian или Ubuntu, в простое150-350 MB
Демон Docker, без запущенных контейнеров80-150 MB
nginx плюс PHP-FPM для небольшого сайта150-400 MB
Панель Pterodactyl, установленная на той же машине700 MB - 1.2 GB с базой данных и Redis
Агент мониторинга, fail2ban, journald50-150 MB

Так что VDS на 8 ГБ - это не 8 ГБ игрового сервера. Это примерно 7,5 ГБ, если вы запускаете сервисы напрямую, и ближе к 6 ГБ, если ставите на неё панель, чтобы друзья могли перезапускать всё без ключа SSH. Сравните это с покупкой той же памяти в виде управляемых тарифов, где накладные расходы живут на хосте, а платите вы за то, что получает ваш процесс.

Арифметика работает в обе стороны и целиком зависит от формы вашей нагрузки:

  • Одно большое. Один сервер Minecraft на 10 ГБ дешевле и проще как управляемый тариф. Вы платите ровно за память, которую получает JVM, установка готова, и вы не потратили на неё выходные.
  • Много мелкого. Пять ботов Discord, два небольших игровых сервера, экземпляр Postgres и тестовая копия вашего сайта - вот где VDS вырывается вперёд, потому что память объединяется в общий пул. Бот, который простаивает на 90 MB, занимает у бота, который подскакивает до 400 MB. Купите это как восемь отдельных тарифов, и у каждого будет свой потолок, оплаченный независимо от того, используется он или нет.
  • С всплесками и непредсказуемое. VDS позволяет переподписаться и выяснить на практике. Тариф с панелью остановит контейнер на пределе и перезапустит его начисто, что безопаснее и менее снисходительно.

Самый полезный вопрос: сколько отдельных вещей я запускаю и насколько они скачут? Ниже примерно четырёх панель почти всегда выигрывает по общей стоимости, если вы цените своё время выше нуля. Выше примерно шести VDS начинает выигрывать в деньгах ещё до учёта объединения памяти.

Какой вариант очевидно правильный#

Бывают случаи, когда это не вопрос суждения.

Берите управляемый тариф, когда:

  • Вам нужно от одного до пяти серверов и нет мнения о дистрибутиве.
  • Вы хотите, чтобы установка, команда запуска, версия Java и обновления были сделаны за вас.
  • Вы хотите дать кому-то доступ к консоли, не отдавая машину. Роли, команды и выдачи на ограниченное время существуют ровно для этого, а в статье субпользователи и минимальные привилегии показано, как их настроить.
  • Вы предпочтёте восстановить backup кнопкой, а не вспоминать, как настраивали задачу cron, которая должна была их делать.
  • Ваша реакция на фразу «проверьте цепочку DOCKER-USER» - закрыть вкладку.

Берите VDS, когда:

  • Вам нужен софт, который не продаётся как хостинговый продукт: домашний сервер Matrix, почтовый релей, собственный бинарник, конкретный модуль ядра, экзотический дистрибутив.
  • Вы запускаете столько сервисов, что объединение памяти стоит реальных денег.
  • Вам нужен собственный стек Docker или Compose с томами и сетями, которые определяете вы. Отправные точки - Docker на VDS и Compose для небольших стеков.
  • Вы и так ежедневно администрируете Linux, и панель только мешала бы.
  • Вам нужна одна машина с единственным адресом, на которой работают несколько игровых серверов на выбранных вами портах; это отдельная тема в статье несколько игровых серверов на одном VDS.

Решать не должно убеждение, что VDS быстрее. CPU в управляемом тарифе - это жёсткое ограничение до купленной доли, так что сервер на 100% работает медленно, а не ломается, и за это его никогда не приостанавливают. VDS с двумя vCPU ограничен двумя vCPU точно так же. Разница в том, что на VDS ничто не мешает одному из ваших собственных сервисов съесть всю квоту и оставить других без ресурсов, и решать эту проблему теперь вы купили право. В статье общий CPU и шумные соседи разобрано, что доля на самом деле гарантирует.

Первый час на VDS в командах#

Если вы берёте VDS, вот минимум до установки чего-либо. Ничто из этого не необязательно, и всё это на вас. Более длинная версия есть в статье первый час на новом VDS.

  1. Обновите всё и перезагрузитесь, если изменилось ядро.
  2. Создайте обычного пользователя с sudo и перестаньте пользоваться root в интерактивном режиме.
  3. Положите на него ключ SSH и отключите пароли.
  4. Закройте все порты, которыми вы намеренно не пользуетесь.
  5. Включите автоматические обновления безопасности, чтобы машина не гнила.
bash
$ apt update && apt full-upgrade -y$ adduser deploy && usermod -aG sudo deploy$ ssh-keygen -t ed25519 -C "laptop"          # run this on your machine$ ssh-copy-id deploy@203.0.113.10

Затем усильте демон. Складывайте изменения в drop-in файл, а не правьте основной конфиг, чтобы обновление пакета не откатило их тихо:

/etc/ssh/sshd_config.d/99-hardening.conf
PermitRootLogin noPasswordAuthentication noKbdInteractiveAuthentication no

Проверьте новые настройки во втором терминале, прежде чем закрыть первый. sshd -t проверяет синтаксис; VDS, к которому вы потеряли доступ, чинится только сеансом консоли у провайдера. В статье ключи SSH и усиление защиты есть остальное, включая агентов и jump-хосты.

Дальше файрвол. Запрет по умолчанию, затем откройте ровно то, что нужно:

bash
$ ufw default deny incoming$ ufw default allow outgoing$ ufw allow 22/tcp$ ufw allow 25565/tcp        # Minecraft$ ufw allow 2456:2457/udp    # Valheim game and query$ ufw enable$ ufw status numbered

Завершите автоматическими обновлениями и демоном банов:

bash
$ apt install unattended-upgrades fail2ban$ dpkg-reconfigure -plow unattended-upgrades$ systemctl enable --now fail2ban$ fail2ban-client status sshd

Это около сорока минут в первый раз и пятнадцать, когда вы сделали это дважды. И это ещё дешёвая часть.

Держать всё живым - вот настоящая работа#

Ничто на VDS не перезапускается само, пока вы этого не устроите. Инструмент - systemd, и именно в юнит-файле лежит большая часть настоящей разницы между «работает» и «переживёт»:

/etc/systemd/system/valheim.service
[Unit]Description=Valheim dedicated serverAfter=network-online.target[Service]User=valheimWorkingDirectory=/home/valheim/serverExecStart=/home/valheim/server/valheim_server.x86_64 -nographics -batchmode \  -name "Longship Crew" -port 2456 -world "Midgard" -password "herring-barrel-42"Restart=on-failureRestartSec=10KillSignal=SIGINTTimeoutStopSec=90[Install]WantedBy=multi-user.target

KillSignal=SIGINT - строка, которая важна и которую люди пропускают. Многие игровые серверы сохраняются при корректном прерывании и теряют всё с последнего автосохранения при SIGKILL, так что юнит-файл по умолчанию, который шлёт SIGTERM и сдаётся через 90 секунд, может тихо стоить вам вечера прогресса при каждой перезагрузке машины. Остальные директивы разобраны в статье службы systemd для ваших приложений.

Backup - другое, что само не происходит. Снимок, сделанный провайдером, защищает от смерти диска; он не защищает от того, что вы удалите мир в полночь. Что-то вроде restic, направленного на хранилище на другой машине, настраивается за десять минут:

bash
$ restic -r sftp:backup@198.51.100.5:/srv/restic init$ restic -r sftp:backup@198.51.100.5:/srv/restic backup /home/valheim/server/worlds_local$ restic -r sftp:backup@198.51.100.5:/srv/restic forget \    --keep-daily 7 --keep-weekly 4 --prune

Поставьте это в таймер systemd или запись cron, а затем восстановите один backup куда-нибудь безвредное до того, как он понадобится. Backup, который никто не восстанавливал, - гипотеза, а проверка восстановления до того, как оно понадобится - самая короткая статья на этом сайте, которую стоит прочитать дважды.

В управляемом тарифе весь этот раздел - вкладка Backups со слотами в каждом тарифе, по требованию или по расписанию, с восстановлением кнопкой и хранением вне машины, которую они защищают. В панели есть и вкладка Schedules с выражениями cron и упорядоченными задачами, так что ночной backup плюс еженедельный перезапуск - это около двух минут щелчков, а не два юнит-файла.

Панель на вашем собственном VDS#

Распространённое желание - получить сразу и то и другое: root-доступ и удобный интерфейс для тех, кто делит сервер. Это возможно, и многие так делают, но чётко понимайте, на что подписываетесь.

браузераккаунт субпользователяsshВыВаши друзьяВаш VDSroot, ufw, обновленияУпр. тарифпанель, backup, SFTPWings + Dockerставите и патчите самиИгровой сервер
Один игровой сервер, два способа им владеть

Pterodactyl состоит из двух частей. Панель - приложение на Laravel, которому нужны веб-сервер, PHP с перечисленными расширениями, MySQL-совместимая база данных, Redis и Composer. Wings - демон на Go, которому нужен Docker и который общается с панелью через собственный порт, а SFTP обслуживается отдельно. По умолчанию в оригинальной сборке API Wings стоит на 8080, его слушатель SFTP - на 2022, а сама панель - на 80 и 443.

Это минимум пять сервисов, которые надо держать обновлёнными, плюс сертификаты для имени хоста панели, плюс образы Docker для каждой игры, которую вы запускаете. На VDS с 16 ГБ это нормально. На тарифе с 8 ГБ это ощутимый кусок памяти, потраченный на инфраструктуру, а не на игроков, и каждый из этих компонентов может сломаться в неудобный час.

Разумное правило: ставьте панель на свою машину, когда вы хостите для других людей и панель - часть продукта. Не ставьте её ради того, чтобы трое друзей могли нажимать Restart. Дайте им аккаунт субпользователя в управляемом тарифе и сохраните выходные.

Безопасность - там, где разница настоящая#

В управляемом тарифе модель безопасности уже построена и одинакова во всех тарифах: двухфакторная защита кодами аутентификатора и одноразовыми кодами восстановления, гранулярные роли, чтобы у кого-то была консоль, но не биллинг, журналы активности по каждому серверу, данные SFTP, выдаваемые на сервер, а не на аккаунт, и ключи API, которые можно ограничить по адресу. Платформенные backup идут каждую ночь, копируются на отдельное железо, проверяются и чистятся. Если контейнер попадает в беду, он останавливается и запускается начисто.

На VDS каждое из этого нужно строить самому или обходиться без него. Стоит прямо сказать, что на самом деле идёт не так на небольших самообслуживаемых машинах, примерно в порядке частоты:

  • Аккаунт SSH с парольной аутентификацией и слабым паролем, который сканер находит через несколько часов после того, как адрес заработал.
  • База данных или административный интерфейс, привязанные к 0.0.0.0 и опубликованные через Docker в обход файрвола.
  • Зависимость приложения с известной дырой на машине, где ничего не обновлялось со дня заказа.
  • Учётные данные, закоммиченные в публичный репозиторий и затем использованные откуда-то совсем из другого места.

Почти ничего из этого не эксплойт ядра. Проверяйте, что слушает порты, командой ss -tulpen в день окончания настройки и потом раз в месяц, и держите ответ коротким. В статье правила файрвола, которые важны - практический вариант этой привычки.

Стоимость в часах, а не только в долларах#

Оцените часы по цене вашего часа и затем сравните. Это типичные, а не худшие случаи, и они предполагают, что ничего не идёт совсем плохо.

ЗадачаУправляемый тарифVDS
Запуск игрового сервера1 минута после оплаты1-3 часа в первый раз
Обновления операционной системыНет15-30 минут в месяц
Настройка backupВключить расписание30-60 минут, один раз
Восстановление backupОдна кнопка10-30 минут, если вы тренировались
Добавление второго игрового сервераЗаказать его20-60 минут
Доступ друга к перезапускуПригласить субпользователяАккаунт SSH, или скрипт, или панель
Падение в 3 часа ночиОтслежено, перезапущено, тикет открытВаше

Последнюю строку стоит развернуть, потому что именно она по-настоящему разделяет два варианта. В управляемом тарифе наблюдатель раз в пару минут проверяет сервер, который ушёл офлайн или у которого аптайм пошёл назад, а перезапуски, о которых вы просили, против вас не засчитываются. Три неожиданных перезапуска за час выводят предупреждение на страницу сервера и автоматически открывают тикет. На VDS эквивалент - строка Restart=on-failure и тот мониторинг, что вы построили, а о цикле падений вы обычно узнаёте из сообщения игрока. Прочитайте мониторинг, который что-то вам говорит до того, как строить его самому.

Деньги, для проверки на здравый смысл, по нынешним линейкам: линия VDS начинается с 8 ГБ, 128 ГБ диска и двух vCPU на Intel i9-9900K и поднимается до 16 ГБ с четырьмя vCPU и 24 ГБ с шестью. Один управляемый тариф Minecraft с 4 ГБ и 1,5 vCPU - малая доля этого. Два или три отдельных управляемых сервера укладываются в тот же диапазон, что и начальный VDS, с меньшим суммарным объёмом памяти, но без всякой работы. Шесть или семь отдельных небольших сервисов - нет, и это и есть точка пересечения.

FAQ#

VDS быстрее управляемого игрового сервера?

Не по природе. Оба - доля одного и того же вида железа с жёстким пределом CPU, и сервер Minecraft с 1,5 vCPU ведёт себя одинаково в обоих случаях. VDS может казаться быстрее, потому что вы можете настраивать всю машину, и медленнее - потому что вы же отвечаете и за настройку.

Можно ли запустить панель игрового хостинга на моём VDS?

Да. Панель Pterodactyl и Wings установятся на любой свежий Debian или Ubuntu с Docker. Заложите около 1 ГБ памяти и обновление нескольких сервисов за эту привилегию и делайте это только тогда, когда панель - часть того, что вы предлагаете другим людям.

Дают ли на управляемом тарифе root или SSH?

Нет. Вы получаете SFTP с данными для входа, выдаваемыми на каждый сервер, файловый менеджер в браузере с редактором с подсветкой синтаксиса и нефильтрованную консоль с историей команд. Этого хватает для конфигурации, загрузок и чтения логов, а это большая часть того, ради чего люди на самом деле хотят root.

Сколько Linux нужно знать, прежде чем брать VDS?

Достаточно, чтобы свободно обращаться с менеджером пакетов, systemctl, journalctl, файрволом и правами доступа к файлам, не заглядывая каждый раз в справку. Если этот список читается как домашнее задание, а не как обычный вторник, то сейчас правильный ответ - панель.

Что происходит, когда на VDS кончается память?

Убийца OOM в ядре выбирает процесс и завершает его, обычно самый большой, а это обычно именно то, что вам было дорого. Управляемые контейнеры останавливаются на пределе и перезапускаются начисто, а не остаются свопиться. В статье своп и убийца OOM объяснено, как потом читать улики.

Можно ли потом перейти с одного на другое?

Да, и данные обычно переезжают чисто, потому что мир или приложение - просто файлы. Скопируйте их через SFTP, скопируйте обратно с другой стороны, смените адрес, которым пользуются игроки. В статье как переехать, не потеряв игроков описано, как сделать это без дня путаницы.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000