Всем привет, меня зовут Иван, я программист C++ в области GameDev’а и в момент написания статьи специализируюсь на Unreal Engine.
Тема домашних серверов, конечно, не нова, но у всех есть свои требования и подход к решению этой задачи. Вот и я после успешного запуска подобного чуда, пройдя тернистый путь, захотел поделиться своим опытом. А также хотел показать, что завалявшаяся техника, которой никто не пользуется, имеет право на вторую жизнь.
![Где найти оборудование для создания домашнего сервера для разработки игр? Где найти оборудование для создания домашнего сервера для разработки игр?](https://habrastorage.org/getpro/habr/upload_files/053/1dd/f2e/0531ddf2ea9d145eade75cda2011e2af.png)
В начале осени 2023 года я задумался запустить дома сервер для различных нужд проектов (GitLab с CI/CD) и серверов для игр с друзьями (GameDev всё-таки)). Это моя первая статья из цикла процесса создания своего домашнего сервера, ну и первая статья на хабре.
Сегодня речь пойдёт о железе и OS для домашнего сервера, а точнее о том как я его выбирал и искал. В последующих статьях расскажу об установке софта и более подробном разборе отдельных решений для управления/администрирования
Требования к серверу
Для начала необходимо было определиться с тем, что именно будет запускаться на сервере. В первую очередь это собственный GitLab для проектов, приятным бонусом был бы запуск сервера для игры. Также немаловажен был бюджет, я хотел потратить минимум средств, так как был хоть и работающим но студентом.
Судя по минимальному требованию в возможности запуска GitLab, по мощности могло подойти всё что угодно, начиная с одноплатника под управлением linux и возможностью подключения SSD в качестве основного хранилища и HDD для резервного копирования.
Если же пытаться войти в мир сервера того же Minecraft с модификациями для нескольких друзей, то судя по исследованию просторов интернета нужен был процессор с частотой 3 Гц, с двумя ядрами, а также оперативной памяти больше 4 Гб.
Выбор железа
Тут я не буду перечислять всевозможные решения, это сделал до меня автор подробнейшего обзора. Автору повезло, что для его целей хватало Raspberry Pi и она у него уже была в наличии.
Я же вспомнил как несколькими годами ранее баловался с Raspberry Pi 5 и надеялся увидеть такую за 5 тысяч рублей, однако цены подскочили до 15-20 т. р. в зависимости от конфигурации, плюс ещё SSD и HDD докупать. Такого одноплатника бы хватило бы для GitLab, но за такую цену, я хотел бы чего-то большего. В свою очередь профессиональные готовые сервера были мне не по карману, да и не было надобности в таких махинах. Поэтому выбор встал между ПК и неттопом, что в свою очередь пробудило во мне желание удовлетворить параметры ЦП с 3 Гц и 8 Гб ОЗУ.
Неттоп можно было найти за 7-9 т. р., особенно б/у. Но процессоры в таких устройствах не проходили границу в 3 Гц, да и расширить в случае необходимости практически невозможно. Полноценный же ПК при поиске на Авито мог мне обойтись в 10-15 т. р., а за 20-23 можно было собрать в DNS новенький с самой слабой видеокартой в качестве заглушки. В своё время в общежитии я видел и чуть более дешёвую сборку, но корпус был сделан из картонной коробки.
Но в этот момент мне повезло, в родном городе перестал быть нужен старый компьютер с i5 4го поколения как раз на 3 Гц и 4 ядра, с ddr3 на 8 Гб, нормальной для 2014го видеокартой и двумя HDD, один из которых хрустел с 2006 года. Поэтому, подождав до отпуска и совместив приятную поезду к родственникам с полезным, была получена очень пыльная, но рабочая лошадка, а за 2 т. р. был куплен SSD но 512 Гб взамен хрустящему другу.
![Рыба моей мечты прямиком из 2014го Уже после пылесоса Рыба моей мечты прямиком из 2014го Уже после пылесоса](https://habrastorage.org/getpro/habr/upload_files/7b4/0d5/2d0/7b40d52d092156ddc9fcece9ad66e289.png)
OS и доступ к серверу
В качестве OS я поставил последнюю LTS версию Ubuntu Server 22.04. Очевидно в этом нет ничего сложного об этом есть множество туториалов, например, этот. Главное, что у меня не было возможности одновременного подключения к монитору и интернету (роутер очень далеко от основного рабочего места), поэтому после установки важно было понимать, что ssh сработает без логина на самой машине, о чём не так уж просто найти информацию.
Дело в том, что если вы включили шифрование своей домашней директории, то ssh не сможет найти ключ авторизации без логина в систему, для этого необходимо изменить его конфиг, подробнее об этом написано тут.
И казалось бы, вот тебе счастье, кинь сервер в кладовку к роутеру, подсоедини в LAN и в роутере задай статический локальны IP. Но как работать с этим с Windows и как можно подключиться не из локальной сети?
С первым вопросом всё просто доступ можно обеспечить по вышеупомянутому ssh через всем известный PuTTy, а чтобы иметь доступ к файлам для Windows есть SSHFS-Win Manager, таким образом вы сможете видеть любую папку на сервере, как раздел в проводнике Windows.
Второй вопрос хорошо разобран в статье, в случае если вам нужно будет подключаться с множества устройств, например, при хостинге сайтов. Однако на мой сервер будут подключаться не более 20 устройств (мой домашний и рабочий компьютер, друзья для игр и коллеги по проекту, о котором я обязательно напишу позже), поэтому я использую ZeroTier. Он позволяет создавать бесконечное количество виртуальных сетей и добавлять при бесплатном тарифе до 25 нод (устройств) на все сети суммарно, причём одно устройство подключённое к нескольким сетям всё ещё считается как одна нода. Установка заняла не более минуты, а вы результате, я могу подключиться к сети с любого ПК без страха о том, что кто-то сможет постучаться на сервер без моего ведома.
Заключение
В этой статье я хотел собрать полезные источники для тех, кто собрался создать свой сервер и показать, что старой технике можно придать новую жизнь. Если бы у меня не завалялся дома ПК десятилетней давности я бы искал дальше б/у на Авито.
P.S.
В следующих статьях хотел бы рассказать о некоторых особенностях установки Gitlab и репозитория с проектом Unreal Engine, и о том, как я администрирую сервер при помощи телеграм бота. Также можно написать что0нибудь ближе к профилю UE5, так как документация от Epic Games заставляет желать лучшего.