Домашний сервер
17 сентября 2021
написал dukzcry
Понадобилось собрать домашний сервер для различных гедонистических целей. Как можно заметить на фото ниже, данный сервер и сопутствующие причиндалы уютно разместились на антресоли:
В качестве компонентов были выбраны следующие железки:
- Платформа ASRock DeskMini X300. Подкупили форм-фактор Mini-STX и возможности расширения: 1 укороченный и 2 полноразмерных слота M.2, а также 2 отсека для 2.5” дисков
- Процессор AMD Ryzen 5 3400G, пока устраивает
- 16 Гб ОЗУ от Kingston, пока хватает
- 256 Гб Samsung PM961 SSD под систему. Вынул из своего ноута, пока работает
- 2 Тб винт от Western Digital под данные, поскольку нет требования к скорости диска. В дальнейшем планируется по необходимости наращивать количество накопителей
Из сопутствующего:
- Трофейный ИБП Ippon Back Power Pro LCD 600, аккумулятор пришлось менять
- Старый принтер Xerox Phaser 3116, он же Samsung ML-1520. Родителям купил новый беспроводной принтер, а себе забрал старичка
Наиболее затруднительным моментом стал подбор Wi-FI адаптеров для работы в режиме точки доступа. Для сети стандарта 802.11n (для поддержки устаревших устройств) выбор пал на дешёвый USB-свисток с Ali на чипе AR9271, поддерживаемый старым добрым драйвером ath9k, граалем всех борцов за свободное ПО. Для более современной сети, просмотрев цены и возможности разных адаптеров, я выбрал QCA6174 формата M.2, поддерживаемый богомерзким драйвером ath10k. Дело, на самом деле, вовсе не в драйвере, а в закрытой прошивке. Данный адаптер за 500р развивает ту же цифру скорости в 500 Мбит/с. К сожалению, стандарт у него лишь 802.11ac, и более высокие скорости ему не снились. Но этого более-менее достаточно для вещания игр и кино на телик и проектор. Я пробовал более современный адаптер 802.11ax MT7921, встроенный в материнку моего настольного компа, но к сожалению, в режиме работы 802.11ac он показал намного меньшие скорости, нежели QCA6174, да и по деньгам он был бы дороже.
Но просто установить адаптер оказалось недостаточным, пришлось ещё обойти некие региональные ограничения для работы адаптера в режиме токи в диапазоне пятигигагерцовых сетей. К счастью, для драйвера ath10k у проекта OpenWRT оказался патч снимающий данные региональные ограничения. Патч так же доступен через опцию networking.wireless.athUserRegulatoryDomain
в дистрибутиве NixOS, который я использую.
Зачем вообще мне понадобилось делать программные точки доступа? Для удобства руления ими через единый конфиг NixOS’а. Ну и просто потому, что собирать свой зюзероутер - добрая традиция линуксоидов.
Небольшой вишенкой на торте стала HDMI-затычка с Ali, эмулирующая присутствие монитора. Что позволяет передавать картинку от графического сервера без использования программных костылей. Пусть лучше будет костыль аппаратный 🙂
Далее перечислены задачи, которые в данный момент решает сервер. Поскольку я использую любимицу девопсов и функциональных программистов NixOS, под некоторыми пунктами буду делиться своими полезными модулями для NUR, реализующими соответствующий функционал:
- Роутер и Wi-Fi точка доступа
hostapd. Модуль позволяет создать N точек доступа на hostapd в дополнение к основной - Обход РКН
rkn. Модуль реализует обход ограничений роскомпозора. Используемое ПО nginx и dnsmasq - Файлопомойка
- Торрент-клиент
- Медиа-сервер
- Виртуализация. Не особо актуально, поскольку на основном компе под это дело памяти и процессорной мощи в разы больше
- Стриминг игр на другие устройства
headless. Модуль реализует «безголовый» графический сервер
sunshine. Модуль для правильной установки ПО Sunshine. На клиент, например телевизор, устанавливаем приложение Moonlight - Мониторинг
- VPN
edgevpn. Модуль, реализующий VPN сервер и клиент. Не требует публичного IP адреса - Git
- Синхронизация файлов
- Веб-панель
cockpit. Редхатовский современный аналог webmin
homer. Пакет с веб-панелью для домашних серверов, отображающей карточки различных сервисов Сборочная ферма. Данный функционал перенёс на основной комп- Принт-сервер
Блокировщик рекламы. По результатам оказалось, что лучше это делать на клиентской стороне