- Баллы
- 66
- Имя в Minecraft
- iForgotPassword
Привет всем! У меня уже есть две статьи - Создание сервера с нуля от А до Я и Настройка сервера и оптимизация от А до Я. Обе про сам Minecraft. А эта - про машину, на которой он живет.
Тема большая и почти всегда идет мимо новичков. Сервер собрали, плагины поставили, а дальше арендовали VPS, зашли по паролю от root и запустили все как есть. Работает же. Работает, пока однажды не перестает.
Разберем по шагам - от письма с IP до того момента, когда Вы понимаете, что сервер могли взломать, и знаете, что с этим делать.
p.s Я исхожу из того, что сервер Вы уже поднимали хотя бы локально и знаете, что такое server.properties и папка plugins. Linux при этом можете видеть впервые - это нормально, с него и начнем.
Берем VPS, а не хостинг
Панельный хостинг - это когда Вам дают веб-морду, куда можно залить плагины и нажать "старт". Дешево, просто и заканчивается ровно там, где начинается эта статья. Ни своего порта, ни своих процессов, ни файрвола, ни бэкапов по расписанию. Про безопасность там говорить нечего, потому что управляете не Вы.
Нам нужен VPS или VDS - виртуальная машина, где Вы root и делаете что хотите.
Какую систему ставить
При заказе провайдер спросит, какую ОС развернуть. Берем Ubuntu 26.04 LTS - вышла в апреле 2026, поддержка до апреля 2031. LTS в названии означает долгую поддержку, и для сервера это единственный разумный выбор: обновления безопасности будут приходить пять лет, а система под Вами не поменяется.
Ubuntu 24.04 LTS тоже живая, если провайдер еще не завез свежую. Debian отличается мелочами, все команды из статьи работают и там.
Промежуточные версии вроде 25.10 не берите. Поддержка у них девять месяцев, и через год Вы будете переустанавливать систему вместо того, чтобы заниматься сервером.
Первые десять минут
Провайдер прислал письмо с IP, пользователем root и паролем. Заходим:
Первый раз спросит про отпечаток ключа - отвечаем yes. Дальше вводим пароль, символы при вводе не отображаются, это нормально.
Сразу про пароли. Придумывать их головой не надо: то, что придумал человек, подбирается заметно быстрее случайного. Машина сделает лучше:
Команду стоит запомнить, дальше по статье она пригодится не раз - так генерируется любой пароль или секрет. Результат сразу в менеджер паролей, запоминать эти строки не нужно.
Если менеджера паролей еще нет - посмотрите, какие бывают. Bitwarden - самый популярный выбор, работает везде и синхронизируется через облако. 1Password - платный, но удобнее всех. KeePassXC - хранит все в одном файле на Вашем диске, без всякого облака.
Меняем пароль root на свой, сгенерированный:
Обновляем систему. Это первое, что стоит сделать на любой новой машине:
После обновления перезагружаемся. Если в обновления попало ядро или системные библиотеки, они начнут работать только после перезагрузки. Понять, нужна ли она, просто - при следующем заходе по SSH система сама напишет в приветствии:
Увидели эту строку - перезагружаемся и не тянем:
Связь оборвется, это нормально. Через полминуты-минуту заходим снова, и строка должна пропасть.
Пока Вы на пустой машине, перезагружаться можно спокойно. Дальше, когда на ней будут игроки, для этого понадобится выбрать время - но это уже другая история и другая часть.
Заодно Вы наверняка заметили, что Ubuntu вываливает при каждом входе пол-экрана текста с рекламой Ubuntu Pro. Это лечится, но чтобы не отвлекаться сейчас - разберем в самом конце статьи, вместе с цветным приглашением.
Ставим то, что понадобится дальше:
Часовой пояс - чтобы время в логах совпадало с Вашим:
Заводим себе пользователя
Под root постоянно сидеть не надо. Одна опечатка в команде с rm - и восстанавливать нечего. Заводим обычного пользователя и дальше живем под ним:
Пароль тут генерируется той же командой, что и выше, только сразу кладется в переменную и оттуда устанавливается пользователю. Последняя строка печатает его в консоль - копируйте в менеджер паролей. Группа sudo дает право выполнять команды от имени root, когда это правда нужно - через sudo команда.
Случайное значение получается один раз, в первой строке, и дальше просто лежит в переменной. Поэтому повторный echo "$PASS" покажет тот же пароль - так и надо, ведь именно он установлен на аккаунт. Живет переменная до конца сессии: вышли по SSH и зашли снова - она уже пустая. Скопировали пароль в менеджер - можно убрать за собой через unset PASS и clear.
Дальше мы отключим вход по паролю совсем, и останется он только для sudo - вводить его по SSH Вы не будете.
Проверяем, что новый пользователь работает, не закрывая текущую сессию:
Вторая команда должна ответить root. Если да - переключаемся на этого пользователя насовсем.
Оба раза вводим пароль mc, тот самый, что напечатала команда выше. При sudo это особенно сбивает с толку, но пароль root тут ни при чем: sudo проверяет, что Вы действительно тот пользователь, под которым сидите, и уже потом смотрит, состоите ли Вы в группе sudo. В приглашении это и написано - password for mc.
Машина готова. В следующей части закроем главную дверь - вход по SSH.
>>> Часть 2: Ключи вместо паролей (тык)
Тема большая и почти всегда идет мимо новичков. Сервер собрали, плагины поставили, а дальше арендовали VPS, зашли по паролю от root и запустили все как есть. Работает же. Работает, пока однажды не перестает.
Разберем по шагам - от письма с IP до того момента, когда Вы понимаете, что сервер могли взломать, и знаете, что с этим делать.
p.s Я исхожу из того, что сервер Вы уже поднимали хотя бы локально и знаете, что такое server.properties и папка plugins. Linux при этом можете видеть впервые - это нормально, с него и начнем.
Статья не влезает в один пост, поэтому разбита на части. Части 2 и далее лежат в комментариях этой темы.
Часть 1 (этот пост) - Выбор машины, клиенты и первые шаги
Часть 2 - Ключи вместо паролей (тык)
Часть 3 - Файрвол и топология портов (тык)
Часть 4 - Java, запуск и systemd (тык)
Часть 5 - Docker и когда он оправдан (тык)
Часть 6 - База данных и доступ к ней (тык)
Часть 7 - Мониторинг и алерты (тык)
Часть 8 - Бэкапы (тык)
Часть 9 - Восстановление и хранилище провайдера (тык)
Часть 10 - Защита самого Minecraft (тык)
Часть 11 - Аудит: сервер могли взломать (тык)
Часть 12 - Если подтвердилось, и частые вопросы (тык)
Часть 13 - Инструменты и мелочи для удобства (тык)
Часть 1 (этот пост) - Выбор машины, клиенты и первые шаги
Часть 2 - Ключи вместо паролей (тык)
Часть 3 - Файрвол и топология портов (тык)
Часть 4 - Java, запуск и systemd (тык)
Часть 5 - Docker и когда он оправдан (тык)
Часть 6 - База данных и доступ к ней (тык)
Часть 7 - Мониторинг и алерты (тык)
Часть 8 - Бэкапы (тык)
Часть 9 - Восстановление и хранилище провайдера (тык)
Часть 10 - Защита самого Minecraft (тык)
Часть 11 - Аудит: сервер могли взломать (тык)
Часть 12 - Если подтвердилось, и частые вопросы (тык)
Часть 13 - Инструменты и мелочи для удобства (тык)
Берем VPS, а не хостинг
Панельный хостинг - это когда Вам дают веб-морду, куда можно залить плагины и нажать "старт". Дешево, просто и заканчивается ровно там, где начинается эта статья. Ни своего порта, ни своих процессов, ни файрвола, ни бэкапов по расписанию. Про безопасность там говорить нечего, потому что управляете не Вы.
Нам нужен VPS или VDS - виртуальная машина, где Вы root и делаете что хотите.
Только KVM, не OpenVZ. При OpenVZ ядро общее с соседями: ресурсы плавают, параметры ядра не поменять, и половина того, что мы будем делать дальше, просто не сработает.
Частота ядра важнее их количества. Основной тик Minecraft однопоточный, поэтому 4 быстрых ядра почти всегда лучше 8 медленных.
NVMe, не HDD. Загрузка и сохранение чанков - это дисковые операции, и на них все упирается быстрее, чем в процессор.
Память. На 5-20 игроков берите 4-8 ГБ. Серверу нельзя отдавать всю память машины, системе тоже надо чем-то дышать.
Облачные тарифы не берите. "Облачный VPS" рассчитан на другую нагрузку: доля процессора плавает вместе с соседями, диск часто сетевой, а не локальный. Minecraft этого не прощает - получите рваный TPS без единой ошибки в логах и будете месяц искать несуществующий кривой плагин.
Локация. Смотрите на пинг до Ваших игроков, а не на цену. Разница между Москвой и Франкфуртом для игрока из Новосибирска ощутимая.
Тестовый период. Есть почти у всех, от 7 до 30 дней. Пользуйтесь: замерьте пинг и посмотрите TPS до того, как платить за месяц.
Чем платить. У OVH и Hetzner железо дешевле, но российской картой их не оплатить. Российские провайдеры принимают СБП и МИР, выбор среди них сейчас нормальный. Конкретных советовать не буду, цены и качество меняются быстрее, чем обновляется статья.
Частота ядра важнее их количества. Основной тик Minecraft однопоточный, поэтому 4 быстрых ядра почти всегда лучше 8 медленных.
NVMe, не HDD. Загрузка и сохранение чанков - это дисковые операции, и на них все упирается быстрее, чем в процессор.
Память. На 5-20 игроков берите 4-8 ГБ. Серверу нельзя отдавать всю память машины, системе тоже надо чем-то дышать.
Облачные тарифы не берите. "Облачный VPS" рассчитан на другую нагрузку: доля процессора плавает вместе с соседями, диск часто сетевой, а не локальный. Minecraft этого не прощает - получите рваный TPS без единой ошибки в логах и будете месяц искать несуществующий кривой плагин.
Локация. Смотрите на пинг до Ваших игроков, а не на цену. Разница между Москвой и Франкфуртом для игрока из Новосибирска ощутимая.
Тестовый период. Есть почти у всех, от 7 до 30 дней. Пользуйтесь: замерьте пинг и посмотрите TPS до того, как платить за месяц.
Чем платить. У OVH и Hetzner железо дешевле, но российской картой их не оплатить. Российские провайдеры принимают СБП и МИР, выбор среди них сейчас нормальный. Конкретных советовать не буду, цены и качество меняются быстрее, чем обновляется статья.
Какую систему ставить
При заказе провайдер спросит, какую ОС развернуть. Берем Ubuntu 26.04 LTS - вышла в апреле 2026, поддержка до апреля 2031. LTS в названии означает долгую поддержку, и для сервера это единственный разумный выбор: обновления безопасности будут приходить пять лет, а система под Вами не поменяется.
Ubuntu 24.04 LTS тоже живая, если провайдер еще не завез свежую. Debian отличается мелочами, все команды из статьи работают и там.
Промежуточные версии вроде 25.10 не берите. Поддержка у них девять месяцев, и через год Вы будете переустанавливать систему вместо того, чтобы заниматься сервером.
Под все системы сразу
Termius - им пользуюсь сам. Хранит список серверов, ключи, подключается в один клик, есть SFTP для файлов и приложения на телефон. Бесплатного тарифа хватает полностью: SSH, SFTP и проброс портов там есть. Платный добавляет синхронизацию между устройствами, но без нее спокойно живется.
Tabby - открытая альтернатива, тоже под все три системы, SFTP встроен.
macOS и Linux
Ставить ничего не обязательно: ssh уже есть, файлы копируются через scp и rsync, а в Nautilus или Dolphin можно открыть sftp://адрес как обычную папку. Из отдельных программ на macOS хорош ForkLift - двухпанельный менеджер, правит файл прямо на сервере и заливает обратно при сохранении.
Windows
ssh встроен и тут, просто откройте Терминал и пишите как в Linux, PuTTY сегодня не обязателен. Хочется полноценный Linux под рукой - ставьте WSL, все команды из статьи заработают один в один. Для файлов - WinSCP или MobaXterm, который заменяет PuTTY и WinSCP разом.
Красивый клиент безопасности не добавляет. Она берется от ключей и настроенной машины, а не от интерфейса.
Termius - им пользуюсь сам. Хранит список серверов, ключи, подключается в один клик, есть SFTP для файлов и приложения на телефон. Бесплатного тарифа хватает полностью: SSH, SFTP и проброс портов там есть. Платный добавляет синхронизацию между устройствами, но без нее спокойно живется.
Tabby - открытая альтернатива, тоже под все три системы, SFTP встроен.
macOS и Linux
Ставить ничего не обязательно: ssh уже есть, файлы копируются через scp и rsync, а в Nautilus или Dolphin можно открыть sftp://адрес как обычную папку. Из отдельных программ на macOS хорош ForkLift - двухпанельный менеджер, правит файл прямо на сервере и заливает обратно при сохранении.
Windows
ssh встроен и тут, просто откройте Терминал и пишите как в Linux, PuTTY сегодня не обязателен. Хочется полноценный Linux под рукой - ставьте WSL, все команды из статьи заработают один в один. Для файлов - WinSCP или MobaXterm, который заменяет PuTTY и WinSCP разом.
Красивый клиент безопасности не добавляет. Она берется от ключей и настроенной машины, а не от интерфейса.
Первые десять минут
Провайдер прислал письмо с IP, пользователем root и паролем. Заходим:
Код:
Сразу про пароли. Придумывать их головой не надо: то, что придумал человек, подбирается заметно быстрее случайного. Машина сделает лучше:
Код:
openssl rand -base64 18
Если менеджера паролей еще нет - посмотрите, какие бывают. Bitwarden - самый популярный выбор, работает везде и синхронизируется через облако. 1Password - платный, но удобнее всех. KeePassXC - хранит все в одном файле на Вашем диске, без всякого облака.
Меняем пароль root на свой, сгенерированный:
Код:
passwd
Обновляем систему. Это первое, что стоит сделать на любой новой машине:
Код:
apt update && apt upgrade -y
После обновления перезагружаемся. Если в обновления попало ядро или системные библиотеки, они начнут работать только после перезагрузки. Понять, нужна ли она, просто - при следующем заходе по SSH система сама напишет в приветствии:
Код:
*** System restart required ***
Код:
reboot
Пока Вы на пустой машине, перезагружаться можно спокойно. Дальше, когда на ней будут игроки, для этого понадобится выбрать время - но это уже другая история и другая часть.
Заодно Вы наверняка заметили, что Ubuntu вываливает при каждом входе пол-экрана текста с рекламой Ubuntu Pro. Это лечится, но чтобы не отвлекаться сейчас - разберем в самом конце статьи, вместе с цветным приглашением.
Ставим то, что понадобится дальше:
Код:
apt install -y tmux curl jq htop unzip
Часовой пояс - чтобы время в логах совпадало с Вашим:
Код:
timedatectl set-timezone Europe/Moscow
Заводим себе пользователя
Под root постоянно сидеть не надо. Одна опечатка в команде с rm - и восстанавливать нечего. Заводим обычного пользователя и дальше живем под ним:
Код:
PASS=$(openssl rand -base64 18)
adduser --disabled-password --gecos "" mc
echo "mc:$PASS" | chpasswd
usermod -aG sudo mc
echo "Пароль mc: $PASS"
Случайное значение получается один раз, в первой строке, и дальше просто лежит в переменной. Поэтому повторный echo "$PASS" покажет тот же пароль - так и надо, ведь именно он установлен на аккаунт. Живет переменная до конца сессии: вышли по SSH и зашли снова - она уже пустая. Скопировали пароль в менеджер - можно убрать за собой через unset PASS и clear.
Дальше мы отключим вход по паролю совсем, и останется он только для sudo - вводить его по SSH Вы не будете.
Проверяем, что новый пользователь работает, не закрывая текущую сессию:
Код:
ssh [email protected]
sudo whoami
Оба раза вводим пароль mc, тот самый, что напечатала команда выше. При sudo это особенно сбивает с толку, но пароль root тут ни при чем: sudo проверяет, что Вы действительно тот пользователь, под которым сидите, и уже потом смотрит, состоите ли Вы в группе sudo. В приглашении это и написано - password for mc.
Вопрос всплывает регулярно, поэтому разберу сразу.
sh на Ubuntu - это не bash, а dash, урезанная оболочка. Отсюда классическая ловушка: человек пишет в скрипте #!/bin/sh, использует внутри массивы или [[ ]], и все падает с невнятной ошибкой.
bash - оболочка по умолчанию, в ней Вы и работаете. Ее и оставляем, а до ума доведем в конце статьи, там есть отдельный блок про настройку терминала.
zsh - то, что некоторые советуют ставить сразу. Штука приятная, но на сервер я бы ее не тащил. Выигрыш небольшой: тут Вы либо сидите в tmux с одним процессом, либо выполняете отдельные команды, а не живете в терминале. А главное - люди путаются и начинают писать #!/bin/zsh в скриптах, после чего те не запускаются на машине без zsh.
Если zsh все-таки хочется - ставьте его себе, а root не трогайте никогда: сломается zsh или не окажется его в аварийном режиме, и заходить будет нечем. На своей рабочей машине - что угодно, там это окупается.
И правило на всю статью: скрипты пишем с #!/bin/bash. Не /bin/sh, потому что это dash, и не /bin/zsh, потому что его на сервере может не быть.
sh на Ubuntu - это не bash, а dash, урезанная оболочка. Отсюда классическая ловушка: человек пишет в скрипте #!/bin/sh, использует внутри массивы или [[ ]], и все падает с невнятной ошибкой.
bash - оболочка по умолчанию, в ней Вы и работаете. Ее и оставляем, а до ума доведем в конце статьи, там есть отдельный блок про настройку терминала.
zsh - то, что некоторые советуют ставить сразу. Штука приятная, но на сервер я бы ее не тащил. Выигрыш небольшой: тут Вы либо сидите в tmux с одним процессом, либо выполняете отдельные команды, а не живете в терминале. А главное - люди путаются и начинают писать #!/bin/zsh в скриптах, после чего те не запускаются на машине без zsh.
Если zsh все-таки хочется - ставьте его себе, а root не трогайте никогда: сломается zsh или не окажется его в аварийном режиме, и заходить будет нечем. На своей рабочей машине - что угодно, там это окупается.
И правило на всю статью: скрипты пишем с #!/bin/bash. Не /bin/sh, потому что это dash, и не /bin/zsh, потому что его на сервере может не быть.
Машина готова. В следующей части закроем главную дверь - вход по SSH.
>>> Часть 2: Ключи вместо паролей (тык)
Последнее редактирование: