Files
homelab-docs/homelab/architecture.md
2026-02-23 16:47:17 +03:00

4.4 KiB
Raw Blame History

Архитектура домашних сервисов (homelab)

Краткое описание по состоянию настройки Invidious и сопутствующих сервисов.


Сеть и доступ

  • Внешний IP: 185.35.193.144
  • Домашний сервер (Proxmox): 192.168.1.150 (LAN), доступ: ssh root@192.168.1.150
  • DNS домена katykhin.ru: Beget.com
  • Reverse proxy и SSL: Nginx Proxy Manager (NPM) на контейнере 100. Домены: video.katykhin.ru, call.katykhin.ru, home.katykhin.ru, wallos.katykhin.ru, cloud.katykhin.ru, docs.katykhin.ru, immich.katykhin.ru.

Гипервизор

  • Proxmox VE. Гости — в основном LXC-контейнеры, одна KVM VM (Immich, ID 200).
  • Управление LXC: pct (например pct exec <ID> -- bash). Управление VM: qm.
  • IP задаётся статически (в конфиге LXC/VM или резерв на роутере). Схема ID = последний октет (100→.100, 101→.101, …, 108→.108, 200→.200).

Ключевые контейнеры и VM

ID Назначение IP Заметки
100 NPM, Homepage, AdGuard, Wallos 192.168.1.100 Docker (NPM, Homepage, AdGuard, Wallos). Данные NPM: /opt/docker/nginx-proxy/data. Certbot для Let's Encrypt (в т.ч. DNS-01 через Beget).
101 Nextcloud 192.168.1.101 cloud.katykhin.ru. Docker Compose: Nextcloud + PostgreSQL + Redis, порт 8080.
103 Gitea + Actions 192.168.1.103 1 core, 2 GB RAM, 15 GB (local-lvm). Gitea + PostgreSQL + act_runner, порты 3000 (HTTP), 2222 (SSH). Только LAN.
104 Paperless-ngx 192.168.1.104 docs.katykhin.ru, порт 8000.
107 Invidious (Misc) 192.168.1.107 video.katykhin.ru. 1 core, 2 GB RAM. Docker Compose: Invidious + Companion + PostgreSQL, порт 3000.
108 Galene (видеозвонки) 192.168.1.108 call.katykhin.ru → 192.168.1.108:8443.
200 Immich (KVM VM) 192.168.1.200 immich.katykhin.ru. Фото, ML на GPU (RTX 4060 Ti). Не LXC.

Поток запросов (упрощённо)

  1. Запрос с интернета: https://video.katykhin.ru → роутер (порты 80/443 на 185.35.193.144) → проброс на 192.168.1.100.
  2. NPM (контейнер 100) принимает HTTPS, проверяет Host, смотрит proxy_host → upstream: например 192.168.1.107:3000 для video.katykhin.ru, 192.168.1.200:2283 для immich.katykhin.ru и т.д.
  3. Invidious (контейнер 107) отдаёт страницу и ссылки на стримы; при «без прокси» видео стримится напрямую с YouTube в браузер.

SSL-сертификаты

  • Let's Encrypt: через certbot на контейнере 100. Для доменов, где HTTP-01 недоступен, используется DNS-01 (плагин certbot-dns-beget-api, учётные данные Beget в /root/.secrets/certbot/beget.ini). После выпуска/продления сертификаты копируются в NPM (custom_ssl) и перезагружается nginx в контейнере NPM.
  • Самоподписные: при необходимости добавляются вручную в NPM (БД + файлы в custom_ssl).

Дополнительно

  • Homepage: на контейнере 100, конфиг сервисов в /opt/docker/homepage/config/services.yaml (ссылки на NPM, Invidious, AdGuard, Immich, Galene и т.д.).
  • VPS 185.103.253.99 (DE): AmneziaWG для обхода блокировок; маршрутизация выбранных сетей через роутер (WireGuard netcraze_amnezia, 10.8.1.2).
  • VPS 147.45.124.117 (US): второй AmneziaWG; на роутере можно добавить второе подключение с тем же адресом 10.8.1.2 и переключать DE/US без смены маршрутов. Подробно: vpn-keenetic-us-second-connection.md.
  • Подробнее по контейнерам и доступу: см. containers-context.md.