8.0 KiB
Архитектура и подключение
Краткое описание домашнего контура: сеть, доступ, гипервизор и ключевые контейнеры.
Сеть и доступ
- Внешний 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 <ID> -- 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). Шлюз ниже — типичный для домашней сети; при необходимости замени на свой.
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, Homepage, AdGuard, Wallos | 192.168.1.100 | 1 core, 2 GB | home.katykhin.ru, wallos.katykhin.ru, adguard.local. → Контейнер 100 (подробно) |
| 101 | Nextcloud | 192.168.1.101 | 2 core, 3 GB | cloud.katykhin.ru. → Контейнер 101 (подробно) |
| 103 | Gitea, CouchDB (Obsidian), Vaultwarden | 192.168.1.103 | 1 core, 2 GB | obsidian.katykhin.ru, vault.katykhin.ru → Контейнер 103 (подробно) |
| 104 | Paperless | 192.168.1.104 | 1 core, 2 GB | docs.katykhin.ru → Контейнер 104 (подробно) |
| 105 | RAG-service | 192.168.1.105 | 1 core, 1 GB | mini-lm.katykhin.ru → Контейнер 105 (подробно) |
| 107 | Invidious (misc) | 192.168.1.107 | 1 core, 2 GB | video.katykhin.ru → Контейнер 107 (подробно) |
| 108 | Galene | 192.168.1.108 | 1 core, 256 MB | call.katykhin.ru → Контейнер 108 (подробно) |
| 109 | WireGuard VPN (local-vpn) | 192.168.1.109 | 1 core, 256 MB | Доступ по VPN (10.10.99.0/24); клиенты получают доступ к vault.katykhin.ru и LAN → Контейнер 109 (подробно) |
| 200 | Immich, immich-pt и др. | 192.168.1.200 | 3 core, 10 GB | immich.katykhin.ru → ВМ 200 (подробно) |
100–109 — LXC-контейнеры (pct), 200 — KVM-ВМ (qm). Схема ID = последний октет IP соблюдена. Домены api, git, share и др. в NPM при необходимости добавить позже.
Поток запросов (упрощённо)
- Запрос из интернета:
https://video.katykhin.ru→ роутер (порты 80/443 на 185.35.193.144) → проброс на 192.168.1.100. - NPM (контейнер 100) принимает HTTPS, проверяет Host, смотрит proxy_host → upstream (например 192.168.1.107:3000 для video.katykhin.ru, 192.168.1.200:2283 для immich.katykhin.ru).
- Бэкенд-сервис (например Invidious в контейнере 107) отдаёт страницу; при «без прокси» видео стримится напрямую с YouTube в браузер.
SSL-сертификаты
- Let's Encrypt: certbot на контейнере 100; для доменов без доступа по HTTP-01 используется DNS-01 (Beget API). После выпуска/продления сертификаты подкладываются в NPM (custom_ssl) и перезагружается nginx.
→ Полная инструкция: Выпуск сертификата Let's Encrypt (DNS-01). - Самоподписные: при необходимости добавляются вручную в NPM (БД + файлы в custom_ssl).
Дополнительно
- Схема сети и зависимости: полная топология (роутер, Proxmox, контейнеры, VPS), таблица IP/доменов, маршруты NPM, кто от кого зависит, единые точки отказа (SPOF). → Схема сети и зависимости.
- Homepage: на контейнере 100, конфиг сервисов в
/opt/docker/homepage/config/services.yaml(ссылки на NPM, Invidious, AdGuard, Immich, Galene, Vaultwarden и т.д.). - VPN (VPS): отдельный сервер 185.103.253.99, AmneziaWG для обхода блокировок. → VPN-сервер (VPS, AmneziaWG).
- Роутер: Netcraze Speedster, два WireGuard/AmneziaWG (Германия / США), маршрутизация части трафика через VPN. → Роутер Netcraze Speedster.
- VPS Миран (СПБ): боты (telegram-helper-bot, anonBot), prod-инфраструктура, STUN/TURN для Galene. → VPS Миран: боты и STUN/TURN.
- Подробнее по контейнерам и сервисам — в отдельных статьях (по мере появления).