Создание своего сервера

Лирический рассказ о создании своего сервера с заметками для тех, кто впервые хочет попробовать себя в деле администратора. Надеюсь, кому-то статья сможет помочь.

И все же шейдеры это круто.

Hardware и OS

Что такое сервера вообще? В общем виде это те же самые компьютеры, но зачастую с несколько другими набором "железа" и формфактором.

Это сервер. Он хранит и обрабатывает.
Это сервер. Он хранит и обрабатывает.

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

<a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fwww.cpubenchmark.net%2FsingleThread.html&postId=1175705" rel="nofollow noreferrer noopener" target="_blank">PassMark Single Thread Performance</a>. Чем выше — тем лучше. Жаль, что денег хватает только на Pentium 3.
PassMark Single Thread Performance. Чем выше — тем лучше. Жаль, что денег хватает только на Pentium 3.

Потому часто можно увидеть в объявлениях об аренде серверов наименования вроде "Core i7" или высокочастотные "Ryzen 5". Они зачастую в разы дешевле, чем Xeon и Epyc. "Но у меня есть Core i9-9900k!" — скажете вы. А я отвечу: это очень крутой вариант для сервера. И вот тут нам надо сделать выбор: использовать свое железо или арендовать у кого-то.

При использовании своего железа существует много нюансов, к которым надо подготовиться: это и аренда "белого" IP у провайдера, и вопрос о работе такой машины 24/7, и обслуживание с администрированием, оплата электричества (мой сервер "съедает" около 500 рублей в месяц точно, может быть и больше), и т.д. и т.п. При аренде сервера обо всем будет заботится хостер, у которого вы будете арендовать машину или часть машины. Я поставил сервер дома. Не то, чтобы я мог прям позволить, тем более в отсутствии донатов, но… Арендовать точно не хочется. Да и помимо игрового сервера есть еще пара вещей, которые хостятся периодически на этой машине. У нас сейчас конфиг такой: i5-3470, 16Gb RAM, 120Gb SSD + 250Gb HDD. В будущем разбогатею и обязательно приобрету для сервера i7-11700 и 128Гб RAM c 3Tb SSD.

Фото не мое, я просто разместил объяву!
Фото не мое, я просто разместил объяву!

Про хостинги рассказывать не буду, потому что я так ими и не пользовался. А вот история нашего сервера, Flamegarth, началась с настольного процессора Core2Quad Q6600. В один прекрасный день для друзей на операционной системе Windows 7 был поднят сервер, чтобы можно было поиграть вместе. Один из самых важных моментов, который тогда был не учтен: удаленный доступ. Сервер часто крашился, а перезапускать можно было только вручную. И еще: не забудьте, что если у вас есть роутер, то вам надо будет заняться «пробросом» портов.

Про проброс на сайте распространенных роутеров D-Link: клик.

Настроить удаленный доступ к серверу на Windows можно несколькими способами. Один из самых популярных: программы вроде TeamViewer или "RMS удаленный доступ".

Позже пришло осознание, что сервер на Windows — не самое удобное решение, и я установил Ubuntu. Тоже вариант так себе, насколько я заметил, чаще используют CentOS, она меньше и "шустрее", но громкое имя меня приманило, и так я на Убунту и остался. Для доступа к линуксам нужно побольше манипуляций: знание работы в консоли и с протоколом ssh. В целом не очень трудно, но придется много документации читать и запоминать команды в первое время.

Один из вариантов ПО для удаленного доступа по протоколу ssh.
Один из вариантов ПО для удаленного доступа по протоколу ssh.

Про настройку ssh: клик.

Ядро и плагины/моды

После того, как железо собрано, а операционные системы настроены, пора выбрать "ядро" вашего сервера.

Выбор на сегодняшний день велик. Хотите ванильный сервер для себя и нескольких друзей? Берите официальное "ядро". Нужно защитить сервер от гриферов и использовать плагины — Bukkit/Spigot или их многочисленные форки. Нужны моды? Ваш выбор — Forge.

Можно назвать Bukkit древним API?
Можно назвать Bukkit древним API?

Скачать все это великолепие вы можете с их официальных сайтов. Гуглятся по названию, нужно будет помочь со скачиванием — пишите. Также можно попробовать использовать готовые сборки, однако, стоит помнить, что недоброжелатели могли подсунуть туда backdoor или какую другую заразу.

Установка ядра Spigot для Windows и Linux.
Мануал на сайте самого Spigot.
На нашем же сервере стоит Purpur. Сложно сказать, насколько он быстрее обычного ядра Spigot, но при среднем онлайне в 0 игроков никто не жалуется; просто некому.

А "сверху приправлено" некоторым количеством плагинов. Пожалуй, самыми важными стоит назвать WorldGuard, WorldEdit и CoreProtect. WG и CP для того, чтобы защитить мир от гриферов, а WE для редактирования мира и вставки схематиков (хотя последним после вайпа я так и не пользовался, все, что сейчас есть, строил просто из креатива). Остальное добавляется "по вкусу".

Основной поставщик плагинов: сайт SpigotMC.
Платные в основном на MC-Market.
И я крайне не советую использовать "ломанные" плагины, так как в них порой встраивают код для взлома серверов.

Опять же, если вы ищете "ваниль", то большего вам точно не надо. А, может, не надо и того, о чем я написал. Просто внимательно смотрите на возможности плагинов и на свои "хотелки". Помните: некоторые плагины могут конфликтовать друг с другом, а потому, если что-то не работает, удаляйте один плагин, перезагружайте сервер, смотрите, все ли в порядке, а затем удаляйте следующий, и снова, и снова.

Некоторые даже настраивать особо не надо. Поставил, изменил одну строку в конфиге, и пользуйся.
Некоторые даже настраивать особо не надо. Поставил, изменил одну строку в конфиге, и пользуйся.

Администрирование сервера

А что дальше? А дальше работа по администву. На хорошем сервере должны постоянно происходить какие-нибудь ивенты, поддерживаться мини-игры, возможно какие-нибудь лутбоксы, поддержание правил или ролеплей составляющей, постоянные ответы на вопросы от игроков. И здесь адекватного опыта у меня еще меньше, так как администрировал я только свой, на котором в лучшее время было максимум с десяток человек. Так что в этой категории я лишь расскажу о том опыте, какой сам получил за время работы сервера.

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

У меня не хватает времени проводить какие-то масштабные ивенты, да и не для кого. Подозреваю, что второе является следствием первого. Давали рекламу, но кроме потока гриферов на сервер никто адекватный так и не пришел. Так что в итоге играют несколько "моих" ребят, да друзья этих ребят. Но даже с таким раскладом в жизни сервера успели произойти несколько масштабных трагедий. Подробнее о них я уже рассказывал здесь ранее. Забыл только упомянуть, что кто-то также пытался и ДДОСить.

Итак, основных проблем три: читеры, гриферы и ддосеры.

С первыми бороться почти бесполезно по причине отсутствия адекватных античитов. А купить я так и не успел, чтобы попробовать один из вроде бы вменяемых вариантов. Если есть подозрения и античит периодически срабатывает, а на вашем сервере правилами читы запрещены, то единственный вариант — банить по IP. Или просто игнорировать. С гриферами ситуация чуть попроще, хотя порой гриферы оказываются читерами. Если не читеры — проводим беседы или отправляем в тюрьму. Если читеры — действуем все по тому же сценарию с банями. Чтобы банить игроков лучше использовать связку с плагином, не позволяющим подключаться с прокси или VPN. Правда, один из лучших перестал обновляться на версии 1.16 (точнее 1.14, но на 1.16 все еще работал, а с 1.18 я все никак не попробую).

Для борьбы с ДДОСами есть два варианта: использовать прокси или фаерволл.
В качестве прокси можно использовать CloudFlare или что-то подобное.
Инструкция по настройке CloudFlare.
Ну или настраивать iptables и/или ufw (актуально для Debian, в остальных линуксах не в курсе).
Заблокировать ip или целую подсеть в iptables.
Тут с автоматизацией процесса.
Блокировка фаерволом ufw.

Итог

Создание и поддержка своего сервера путь, к сожалению, далеко не легкий. Возможно, стоит просто поискать сервер с наиболее подходящими условиями. Однако, я нахожу в этом какой-то определенный кайф: работа с людьми, работа с данными, немного дизайнерства, немного программирования, немного линукса. Задачи крайне разнообразны. Чтобы развивать сервер придется учиться все новым и новым штукам: кому-то надо будет поднять сайт, разобраться с каким-то API, узнать как работает RCON, а также объединить это все в одну систему с самим сервером; где-то погрузится в перипетии прав и конфигов различных плагинов; научиться делать мемы, чтобы поддерживать интерес и развлекать сообщество.

"Батонятся". Скриншот одного из игроков.
"Батонятся". Скриншот одного из игроков.

На прошлой итерации, например, мне пришлось разобрать плагин (благо java хорошо декомпилируется), его отредактировать и собрать обратно; процесс был увлекательный, а главное, что я получил общее представление о работе плагинов. Теперь думаю по поводу написания своего.

Также предупреждаю, что денег с проекта вы вряд ли получите, если только не вложите в сервер все свои силы и время, а также не вбросите в хорошую рекламу. Я в какой-то момент мечтал о пассивном доходе хотя бы в ~1к рублей (с уже вычтенным электричеством и интернетом), но мечты разбились довольно быстро. Надо было вкладываться в сервер, а уже тогда сил и средств вкладываться особо не было. Сейчас с этим все еще хуже. Возможно, когда дети подрастут, я приведу в порядок себя, а затем и сервер. И он засияет, и будут на нем играть 10 тысяч человек.

Послесловие

Спасибо большое, что дочитали этот пи... Кошмар до конца.
Пожалуй, рискну и вброшу в этот раз ссылку на сервер. Я был бы очень рад, если бы кто-то обрел "дом" в нашем мире.
Сайт: https://flamegarth.ru/
IP: flamegarth.ru
Версия: 1.18.2 (на 26.04.2022)
Сервер создавался... Для того, чтобы играть. Без войн, без драм, без трагедий, без грифа. Выживание с друзьями. Присоединяйтесь!

Не знаю, нужны ли теги, проставлю на всякий: #long #longread #minecraft #server

2727
13 комментариев

Для защиты жепки от гриферов стоит использовать CoreProtect — он хоть и жрёт кучу процессорного времени на логгирование всего, но откатить результат грифа будет проблемой ввода одной команды.

2

Сейчас все создают сервера на хостингах.
Типо Крафтхостинг или Zorotex.

2

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

ты не сталкивался с 4 и 5 причиной. Дюперы и создатели лагомашин. И те и те используют поршни, только первые используют второе для дюпа.

1

Сталкивался. То ещё "веселье". Да, против них тоже надо всяческие плагины ставить. Но и они не защищают на 100%.

А можно ли сделать независимый сервер? Чтобы только для себя и для тех, кто знает к нему доступ? Например, чтобы создать мобильное облако для быстрой передачи данных на него. Разместил в каком-нибудь микробусе, снимаешь что-нибудь на камеру, и данные транслируются сразу на него. Если кто-то или что-то отнимает и разбивает у тебя камеру, данные уже все там.

Ответ — да, можно. Правда, я так и не понял, как такой вопрос оказался в подсайте по Майнкрафту.