Кто я и зачем вам это нужно?
Привет, меня зовут Камиль, мне 23, я из Москвы и работаю аналитиком/инженером данных в банке. И не смотря на душную итшную работу, у меня есть еще более душное увлечение: homelabbing. Это хобби, когда люди создают у себя дома небольшие (кто-то и большие) серверные лобаратории и переносят часть личных задач, которые обычные люди решают сторонними сервисами, туда.
У меня нет цели доказать кому-то, что надо так упарываться, но для меня это имеет смысл. Почти все критически важные мне данные и сервисы развернуты на моей личной инфраструктуре и я по мере своих знаний обеспечиваю их надежность. Я никого не призываю делать так же, но получаю огромное удовольствие от того, что делаю это сам.
Почему я вообще про это рассказываю? Все мы видим, что сейчас происходит с интернетом и политиками распространения ПО, блокировками (подписки, зависимость от чужих серверов даже там, где это вообще не нужно и тд). Меня это пугает и поэтому последний +- пол года-год я занимался тем, что по сути растил собственную сеть и инфраструктуру сервисов для себя самого.
С чего все началось
Года 2 назад я купил себе первый Raspberry pi 5, зная от мира Linux только базу из разряда (ls, pwd, mkdir, echo и тд), даже струтуру директорий не знал. И сделал свою первую smb шару на 1ТБ ssd. Я был счастлив, у меня есть личное файловое хранилище и мой интерес начал расти, я стал пробовал разный ноывй софт, погружаться в linux и особенно в сети. Вот как-то так это выглядело.

Вскоре эта сборка перетерпела маленькое изменение и к ней добавилась плата-sata коннектор и собственно 4 SATA SSD.

И в целом это меня устраивало, пока не приспичило построить что-то на основе более больших по объему HDD, и тогда был куплен 2 разпберри и собран на 3D принтере корпус для NAS из rpi5.

Когда мои аппетиты подросли, я стал сталкиваться с ограничениями rpi5: 4K HEVC потоковое транскодирование он не тянет (для этого даже пришлось выучить как устроены видеокодеки и перекодировать некоторые фильмы в Handbrake), minecraft сервер тоже, памяти впритык, разворасивать базы данных на sd карте – тоже идея очень плохая и я подошел к решению проблемы резко и кардинально.
Новый опыт
Мои хотелки росли, познания в Linux тоже, личная база знаний в Obsidian тоже и я решил, что готов замахнуться на что-то крупнее и конце концов заказал железо для полноценного домашнего ПК (сервера) на Intel Core i7 13700 (эта зверюга точно потянет мои задачи ПОКА что).



Список тут такой:
-
Процессор Intel Core i7-13700 LGA1700
-
Кулер для процессора Thermalright SI-100 BLACK (SI-100-BL)
-
Материнская плата Asus ROG STRIX B760-I GAMING WIFI (LGA1700, mini-ITX)
-
Оперативная память Kingston DDR5 32Gb (2x16Gb) 5600MHz pc-44800 FURY Beast Black (KF556C40BBK2-32)
-
SSD диск Adata LEGEND 860, 1000GB, M.2 2280, PCIe 4.0 x4
-
Блок питания уже был от старой моей сборки 1STPLAYER SFX, 750W, 80+ Platinum (PS-750SFX)
-
И главное: Корпус Jonsbo N3. NAS корпус, с механикой горячей замены 8 HDD дисков.
Поставил я свою любимую Fedora, вообще без gui. К тому моменту я уже хорошо чувствовал себя в консоли, освоил lazyvim, разные сложные команды, сетевые команды, логику ОС, управление доступами и правами, писал bash скрипты для автоматизации, управлял systemd сервисам и таймерами для разных бэкапов и тд, поставил zsh + omz + pwerlevel10k просто для красоты и я начал игратсья с более мощной игрушкой. Этому серверу уже около 4 месяцев и это была однозначно одна из лучших моих покупок (на все потратил около 100к).
Что я использую и хостю
Я стараюсь заменить как можно больше повседневных утилит и тд на личное selfhosted решение.
Из текущего списка:
-
Jellyfin — стриминговый сервис, аля Netflix
-
Navidrome — аля Spotify
-
filebrowser‑quantum — менеджер файлов, аля Google Drive (у меня диск на 14ТБ, потом хочу еще больше купить)
-
immich — оч красивая шутка аля Google Photo, все мои фотки только у меня
-
mscmanager — панель для управления игровыми серверами (у меня minecraft + terraria)
-
transmission — торрент клиент
-
vaultwarden — менеджер паролей (это одно из моих любимых, и пароли, и генерация, и ssh ключи, и 30-значные коды и тд)
-
dnsmasq — локальный DNS сервер для переопределения моих личных доменов (раньше был pi‑hole, но оказался избыточен)
-
homeassistant — локальное управление умным домом
-
termix — ssh менеджер
-
и в конце концов — portainer — веб панель для управления всеми этими докер контейнерами
-
wireguard — просто для доступа в локальную сеть
-
nginx – reverse proxy, разводит мои поддомены по внутренним портам, но хочу переехать на caddy, и передать ему управление, как реверс прокси, так и ssl сертификатами
Немного скринов для красоты)
Сеть и как все устроено
Следом, чтобы это все работало нормально, надо было погрузиться в сети.
Немного общих слов о том как все работает. У меня есть домен, арендованный на 5 лет у Cloudflare, который указывает на белый статический ip адрес моего домашнего роутера. Роутер с подсетью 192.168.0.1 пробрасывает 443 порт на мой роутер 192.268.2.1, а тот в свою очередь на сервер с адресом 192.168.2.10. Второй роутер (cudy, прошитый на openwrt) нужен, т.к. на нем поднято xray ядро я думаю и так всем понятно зачем, да и просто удобно лично мне. На сервере nginx принимает запрос, в зависимости от subdomain в http header делает reverse proxy в какой-то локальный порт, к примеру: 2283 для immich, локальные порты закрыты фаерволом для всех, кроме localhost. Так я получаю возможность по своему домену подключаться к своим сервисам, где бы я не находился физически, без какого-либо домашнего VPN (хотя такой тоже есть, для ssh или smb, к примеру).
И казалось бы уже круто, но один раз, когда у меня сдох провайдер, я не смог посмотреть фильм со СВОЕГО ЖЕ сервера дома в 0.5 метре от меня только потому что домен резолвится во внешний ip ISP провайдера и я завишу от них. Соотвественно, надо было сделать как-то так, чтобы дома, домен резолвился не во внешний ip, как у Cloudflare, а в локальный. Для этого нужно локально дома поднять DNS сервер, прописать ему нужный мне домен и его ip, а все остальные увести в upstream на классические DNS сервера (типа 1.1.1.1 или 8.8.8.8 или 9.9.9.9 и тд). Почему-то для этого я выбрал pi-hole, который мне было очень трудно настроить, хотя казалось бы он проще терминала и cli, но я уже настолько привык к терминалу и текстовым командам, что “упрощенный UI для обычных людей” был для меня сложнее. Провозившись с pi-hole 2 недели, я плюнул и поднял dnsmasq легковесный чисто DNS сервер, который часто используется за основу на таких проектах как pi-hole. Поднял его через docker (я стараюсь все поднимать докером, так удобно собирать в одном месте все конфиги, базы и кэш), и буквально 1 конфиг файлом за 5 минут все заработало как надо. Ну я еще прописал новый локальный DNS в DHCP роутера, чтобы каждый клиент, подключающийся к сети автоматически получал от роутера корректный DNS. И все замечательно: у меня https + домен, которые работают корректно из глобальной сети, и эти же домены точно так же работают дома, но резолвясь в локальные адреса, что дает мне дома полную независимость от моего провайдера.
Такими темпами я стал осозновать, что мне интересна тема сетей: я стал изучать что такое модель OSI, как работает сеть на уровне железа, как делают VLAN, что такое managed switch и тд и тд. Почему-то меня всегда тянуло к сетям.
Я осознанно не стал делать raid, докучи еще понаписал бэкап скриптов на bash, поставил их на расписание через systemd таймер, и делаю 5 разных копий своих данных в 3 разных места. Оособенно конфигов, скрипты проходятся по всем системным директориям и через rsync бэкапят любые изменения в конфигах даже сделанные на горячую. Осталось разве что вогнать это все в git, ну это в будущем.
Оправдания и исповедания
Я понимаю, что для обычного человека это жуткий перебор, а даже для среднего профи – я уверен допустил много ошибок. Но наверное это первое серьезное в моей жизни хобби и я безумно рад тому осознанию, что некоторые важные для меня вещи полностью зависят только от меня. Я действительно радуюсь как ребенок от осознания, что у меня всегда есть не просто фильмы лучшие и любимые под рукой, в хорошем качестве, озвучке, без рекламы, так еще они и отображены в красивом сервисе – это греет душу.
Интернету сейчас плохо, не только в России, интернет снова становится трудным, бездушным, сегментированным и видимо все то, что я делал последний год – приводило меня к тому, что я создавал себе свою собственный маленький кусочек полезного, удобного и душевного интернета, который всегда будет со мной. Я знаю, что таких людей, как я, понмиающих ламповость такого – много и надеюсь мы сможем вдохновить бОльшее количество людей не относиться так наплевательски к собственной информации.
В следующих статьях, наверное, более детально углублюсь в технические детали, расскажи про конфиги и тд.
Всем доброго и надежного интернета :-)
Автор: ksaypulaev


