# Архитектура и подключение Краткое описание домашнего контура: сеть, доступ, гипервизор и ключевые контейнеры. --- ## Сеть и доступ - **Внешний IP:** 185.35.193.144 - **Домашний сервер (Proxmox):** 192.168.1.150 (LAN) - Подключение: `ssh root@192.168.1.150` - **DNS домена katykhin.ru:** Beget.com - Учётная запись: логин `amauri7g`, пароль `QgkaKL3RykeI`, ID аккаунта 2536839. Режим API включён. Домен **katykhin.store** в аккаунте есть, но не используется (поддоменов нет). - **Reverse proxy и SSL:** Nginx Proxy Manager (NPM) на контейнере 100. **Поддомены katykhin.ru:** В панели Beget отображаются все перечисленные ниже; через API `getSubdomainList` приходят только часть (в т.ч. служебные `_acme-challenge.*`). Полный список ведём вручную. | Поддомен | Назначение | |----------|------------| | api.katykhin.ru | — | | call.katykhin.ru | Galene (видеозвонки) | | cloud.katykhin.ru | — | | docs.katykhin.ru | — | | git.katykhin.ru | — | | home.katykhin.ru | Homepage | | immich.katykhin.ru | — | | mini-lm.katykhin.ru | — | | obsidian.katykhin.ru | — | | share.katykhin.ru | — | | video.katykhin.ru | Invidious | | vault.katykhin.ru | Vaultwarden (менеджер паролей) | | wallos.katykhin.ru | Wallos | | _acme-challenge.call.katykhin.ru | Служебный (DNS-01 Let's Encrypt) | *Назначение для api, cloud, docs, git, immich, mini-lm, obsidian, share можно заполнить позже при описании контейнеров.* --- ## Гипервизор - **Proxmox VE.** Гости — в основном **LXC-контейнеры**, одна **KVM VM** (Immich, ID 200). - Управление LXC: `pct` (например `pct exec -- bash`). Управление VM: `qm`. - IP контейнера задаётся вручную (статически в LXC или через DHCP-резерв на роутере). Схема: **ID контейнера = последний октет IP** (например контейнер 105 → 192.168.1.105; исключения вносить в таблицу контейнеров). **Создание контейнера через pct (пример):** ВМ с ID 105, 1 ядро, 1 ГБ RAM, IP 192.168.1.105. Шаблон — из local (подставь свой, например `debian-12-standard`). Шлюз ниже — типичный для домашней сети; при необходимости замени на свой. ```bash pct create 105 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \ --hostname ct105 \ --memory 1024 \ --cores 1 \ --net0 name=eth0,bridge=vmbr0,ip=192.168.1.105/24,gw=192.168.1.1,type=veth ``` После создания: `pct start 105`; зайти в консоль: `pct enter 105` или `pct exec 105 -- bash`. --- ## Ключевые контейнеры и ВМ | ID | Назначение | IP | Ресурсы | Домены (через NPM) | |-----|-------------------------------|----------------|------------|---------------------| | 100 | NPM, AdGuard, служебные сервисы (log-dashboard, vpn-route-check) | 192.168.1.100 | 1 core, 2 GB | входная точка для всех доменов katykhin.ru; adguard.local, adguard.katykhin.ru → [Контейнер 100 (подробно)](../containers/container-100.md) | | 101 | Nextcloud | 192.168.1.101 | 2 core, 3 GB | cloud.katykhin.ru. → [Контейнер 101 (подробно)](../containers/container-101.md) | | 103 | Gitea, CouchDB (Obsidian), Vaultwarden, Homepage, Wallos | 192.168.1.103 | 1 core, 2 GB | git.katykhin.ru, obsidian.katykhin.ru, vault.katykhin.ru, home.katykhin.ru, wallos.katykhin.ru → [Контейнер 103 (подробно)](../containers/container-103.md) | | 104 | Paperless | 192.168.1.104 | 1 core, 2 GB | docs.katykhin.ru → [Контейнер 104 (подробно)](../containers/container-104.md) | | 105 | RAG-service | 192.168.1.105 | 1 core, 1 GB | mini-lm.katykhin.ru → [Контейнер 105 (подробно)](../containers/container-105.md) | | 107 | Invidious (misc) | 192.168.1.107 | 1 core, 2 GB | video.katykhin.ru → [Контейнер 107 (подробно)](../containers/container-107.md) | | 108 | Galene | 192.168.1.108 | 1 core, 256 MB | call.katykhin.ru → [Контейнер 108 (подробно)](../containers/container-108.md) | | 109 | WireGuard VPN (local-vpn) | 192.168.1.109 | 1 core, 256 MB | Доступ по VPN (10.10.99.0/24); клиенты получают доступ к vault.katykhin.ru и LAN → [Контейнер 109 (подробно)](../containers/container-109.md) | | 200 | Immich, immich-pt и др. | 192.168.1.200 | 3 core, 10 GB | immich.katykhin.ru → [ВМ 200 (подробно)](../containers/container-200.md) | *100–109 — LXC-контейнеры (pct), 200 — KVM-ВМ (qm). Схема ID = последний октет IP соблюдена.* Домены api, git, share и др. в NPM при необходимости добавить позже. --- ## Поток запросов (упрощённо) 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** (Beget API). После выпуска/продления сертификаты подкладываются в NPM (custom_ssl) и перезагружается nginx. → **Полная инструкция:** [Выпуск сертификата Let's Encrypt (DNS-01)](../network/ssl-letsencrypt-dns01.md). - **Самоподписные:** при необходимости добавляются вручную в NPM (БД + файлы в custom_ssl). --- ## Дополнительно - **Схема сети и зависимости:** полная топология (роутер, Proxmox, контейнеры, VPS), таблица IP/доменов, маршруты NPM, кто от кого зависит, единые точки отказа (SPOF). → [Схема сети и зависимости](../network/network-topology.md). - **Homepage:** на контейнере 103, конфиг сервисов в `/opt/docker/homepage/config/services.yaml` (ссылки на NPM, Invidious, AdGuard, Immich, Galene, Vaultwarden и т.д.). - **VPN (VPS):** отдельный сервер 185.103.253.99, AmneziaWG для обхода блокировок. → [VPN-сервер (VPS, AmneziaWG)](../vps/vpn-vps-amneziawg.md). - **Роутер:** Netcraze Speedster, два WireGuard/AmneziaWG (Германия / США), маршрутизация части трафика через VPN. → [Роутер Netcraze Speedster](../network/router-netcraze-speedster.md). - **VPS Миран (СПБ):** боты (telegram-helper-bot, anonBot), prod-инфраструктура, STUN/TURN для Galene. → [VPS Миран: боты и STUN/TURN](../vps/vps-miran-bots.md). - Подробнее по контейнерам и сервисам — в отдельных статьях (по мере появления).