Организация домашнего сервера

Организация домашнего сервера
Photo by Florian Krumm / Unsplash

Идея развернуть домашний сервер, на правах бреда, приходила ко мне в голову уже не единожды. То закончилось бесплатное место на Google Drive и не хотелось переходить на платную подсписку, то невозможность подключиться к компьютерам у родителей дома в Казахстане наталкивали на мысль организовать VPN, то просто из хулиганских побуждений вроде тех что звучат навроде фразы - "а почему бы и нет". Обычно успехом такое не заканчивается: фото с Google Drive я временно перенес в Яндекс, помощь с компьютером родителей в Казахстане нужна не каждый день, а фраза "почему бы и нет" не всегда хорошая мотивация, но в этот раз, я таки решил реализовать эту идею практически.

Поскольку я не рассчитывал потратить много средств на оборудование, свой бюджет на эту историю я ограничил верхней планкой в 10 000 р. Разумеется приобрести что ли бы данной ценовой категории возможно только на вторичном рынке. Таким образом я начал изучать представленные сборки на Avito.

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

Выбор пал на сборку за 9000 р. со следующим содержимым:

  • CPU: Intel Core i5-4440
  • RAM: 12 Gb DDR3
    • Micron 16JTF1G64AZ-1G6E1 на 8 Gb
    • Samsung M378B5273CH0-CH9 на 4 Gb
  • Nvidia GForce GTX 1060 - на 6 Gb VRAM
  • Хранение данных:
    • SSD - 120 Gb - неизвестного бренда
    • SSD - 256 Gb - от Gigabyte
  • Материнская плата: Asus H81 BTC
  • Блок питания: Dexp 450w

Продавец оказался весьма общительным и после беседы не вызвал недоверия, поэтому на месте я лишь базово проверил что сборка соответствует описанию, немного погонял FurMark, расплатился и отправился поскорее устанавливать все мне необходимое.

Тестирование сборки

После покупки, в уже в более спокойной обстановке я провел более детальные тесты для оборудования:

  • FurMark - 74°, со средним FPS в 156 кадров на разрешении 1280x720 🎉
  • Около часа выполнялись тесты RAM - ошибок не обнаружилось 🎉
  • При тестировании CPU выявились проблемы - стандартный маленький кулер Intel E97379-003 с этим процессором в нагрузке не справился. Процессор нагрелся за 95°⚠️

Судя по информации из CrystalDiskInfo:

  • SSD диск на 120 Gb оказался фактически новым.🎉
  • SSD Gigabyte на 256 судя по всему использовался куда активнее, тем не менее тоже в хорошем состоянии ✅

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

Установка ОС

Выбор ОС для серверных задач весьма очевиден, Linux - другого не дано. Изобретать что-то в плане дистрибутива я не стал и скачал Ubuntu Server 24.04.2 LTS. Определенный опыт в работе с Debian подобными дистрибутивами у меня уже был. Несколько лет назад в течении продолжительного времени я активно использовал Linux Mint. Но несмотря на это, переустанавливал систему я несколько раз.

Первой моей ошибкой стал выбор русского языка при установке системы. Я рассчитывал установить графическое окружение и RDP сервер. За последние годы активного использования Windows в качестве рабочей системы, я очень привык к наличию GUI, поэтому мысль о том что придется настраивать все через SSH терминал меня не вдохновляла. Установив XFCE я был разочарован - интерфейс не погружался полностью, работать в таком режиме было просто невозможно. Я заподозрил что дело в русском языке, что стало поводом переустановить систему.

Вторая попытка оказалась чуть более успешной. Мне удалось поставить окружение, оно оказалось рабочим... почти. Во-первых, запуск графической сессии стал автоматическим чего я не планировал. Во-вторых, по какой-то причине экран входа намертво зависал, однако подключение по RDP работало. Ну ладно, разберусь с этим позже, — подумал я, и решил установить Docker Desktop. И именно это стало последней каплей в чашу проблем, после чего с грустью я решил отказаться от идеи работать с GUI, и переустановить систему снова.

Установка ПО и первичная настройка

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

  • Файловый менджер Midnight Commander
  • Редактор текста - Micro
  • Отслеживание ресурсов GPU - nvtop
  • Просмотр .md файлов - glow
  • NGinx - в качестве Proxy сервера
  • Ncdu - для анализа занятого пространства
  • fail2ban - для защиты сервера от непрошеных гостей

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

Я сразу отключил вход по паролю для SSH подключений, сгенерировал ключи для входа для большей безопасности. С помощью ufw настроил правила для портов, выдал устройству статический IP адрес внутри сети и пробросил порты для внешних подключений на своем маршрутизаторе. Приобрел у своего провайдера статический IP и доменное имя на Reg.ru. Связав все воедино домашний сервер оказался готов к дальнейшей эксплуатации и развертыванию на нем сервисов. На все про все ушло у меня без малого несколько выходных, тем не менее я немало нового узнал об администрировании, программном обеспечении для Linux, а так же получил достаточно производительную платформу для экспериментов с серверным ПО, о чем планирую рассказать в следующих статьях.

Я благодарю за ваше внимание и до встречи в следующих записях!

Домашний сервер - непримечательный системный блок на полке