Сказ о локальной сети, homelab и надежности цифровой жизни. linux.. linux. nginx.. linux. nginx. интернет.. linux. nginx. интернет. свобода.

Кто я и зачем вам это нужно?

Привет, меня зовут Камиль, мне 23, я из Москвы и работаю аналитиком/инженером данных в банке. И не смотря на душную итшную работу, у меня есть еще более душное увлечение: homelabbing. Это хобби, когда люди создают у себя дома небольшие (кто-то и большие) серверные лобаратории и переносят часть личных задач, которые обычные люди решают сторонними сервисами, туда.

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

Почему я вообще про это рассказываю? Все мы видим, что сейчас происходит с интернетом и политиками распространения ПО, блокировками (подписки, зависимость от чужих серверов даже там, где это вообще не нужно и тд). Меня это пугает и поэтому последний +- пол года-год я занимался тем, что по сути растил собственную сеть и инфраструктуру сервисов для себя самого.

С чего все началось

Года 2 назад я купил себе первый Raspberry pi 5, зная от мира Linux только базу из разряда (ls, pwd, mkdir, echo и тд), даже струтуру директорий не знал. И сделал свою первую smb шару на 1ТБ ssd. Я был счастлив, у меня есть личное файловое хранилище и мой интерес начал расти, я стал пробовал разный ноывй софт, погружаться в linux и особенно в сети. Вот как-то так это выглядело.

Сказ о локальной сети, homelab и надежности цифровой жизни - 1

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

Сказ о локальной сети, homelab и надежности цифровой жизни - 2

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

Корпус в разборе

Корпус в разборе
Сказ о локальной сети, homelab и надежности цифровой жизни - 4

Когда мои аппетиты подросли, я стал сталкиваться с ограничениями rpi5: 4K HEVC потоковое транскодирование он не тянет (для этого даже пришлось выучить как устроены видеокодеки и перекодировать некоторые фильмы в Handbrake), minecraft сервер тоже, памяти впритык, разворасивать базы данных на sd карте – тоже идея очень плохая и я подошел к решению проблемы резко и кардинально.

Новый опыт

Мои хотелки росли, познания в Linux тоже, личная база знаний в Obsidian тоже и я решил, что готов замахнуться на что-то крупнее и конце концов заказал железо для полноценного домашнего ПК (сервера) на Intel Core i7 13700 (эта зверюга точно потянет мои задачи ПОКА что).

Сказ о локальной сети, homelab и надежности цифровой жизни - 5
Сказ о локальной сети, homelab и надежности цифровой жизни - 6
Сказ о локальной сети, homelab и надежности цифровой жизни - 7

Список тут такой:

  • Процессор 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 сертификатами

Немного скринов для красоты)

Jellyfin: фильмы и сериалы

Jellyfin: фильмы и сериалы
immich - фото и видео

immich – фото и видео
filebrowser-quantum - файловый менеджер

filebrowser-quantum – файловый менеджер
vaultwarden - менеджер паролей

vaultwarden – менеджер паролей
home assistant - управление умным домом (сюда я только погружаюсь)

home assistant – управление умным домом (сюда я только погружаюсь)

Сеть и как все устроено

Следом, чтобы это все работало нормально, надо было погрузиться в сети.

Немного общих слов о том как все работает. У меня есть домен, арендованный на 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

Источник

Rambler's Top100