100 lines
7.5 KiB
Markdown
100 lines
7.5 KiB
Markdown
# Архитектура и подключение
|
||
|
||
Краткое описание домашнего контура: сеть, доступ, гипервизор и ключевые контейнеры.
|
||
|
||
---
|
||
|
||
## Сеть и доступ
|
||
|
||
- **Внешний 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 |
|
||
| 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`). Шлюз ниже — типичный для домашней сети; при необходимости замени на свой.
|
||
|
||
```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, Homepage, AdGuard, Wallos | 192.168.1.100 | 1 core, 2 GB | home.katykhin.ru, wallos.katykhin.ru, adguard.local. → [Контейнер 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, сервис Obsidian (5984) | 192.168.1.103 | 1 core, 2 GB | obsidian.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) |
|
||
| 200 | Immich, immich-pt и др. | 192.168.1.200 | 3 core, 10 GB | immich.katykhin.ru → [ВМ 200 (подробно)](../containers/container-200.md) |
|
||
|
||
*100–108 — LXC-контейнеры (pct), 200 — KVM-ВМ (qm).* Домены 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:** на контейнере 100, конфиг сервисов в `/opt/docker/homepage/config/services.yaml` (ссылки на NPM, Invidious, AdGuard, Immich, Galene и т.д.).
|
||
- **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).
|
||
- Подробнее по контейнерам и сервисам — в отдельных статьях (по мере появления).
|