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

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

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

Hardware и OS

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

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

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

<a href="https://www.cpubenchmark.net/singleThread.html" 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

1919 показов
6.2K6.2K открытий
13 комментариев

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

Ответить

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

Ответить

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

Ответить

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

Ответить

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

Ответить

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

Ответить

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

Ответить