Files

123 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
date: 2026-06-17
type: reference
tags: [ai-assistant, alexandr, umnybot, architecture, topology, netbird, proxmox]
aliases: [архитектура коробки Александра, umnybot architecture, топология умного сервера]
---
# 🏗️ Архитектура «Умного сервера» Александра (umnybot)
> Авторитетная карта коробки после переезда к Александру (2026-06-17). Секреты — в [[credentials]]. Пилот/контекст — память `project_alexandr_assistant`, [[../../benilux/credentials|сеть Бенелюкса]].
## Кратко
«Консьерж в коробке» — Proxmox-нода у Александра (КП Бенелюкс), переехала из LAN Олега `10.0.0.0/24` в сеть Александра `192.168.1.0/24` (2026-06-17). Интерфейс клиента — **бот Алекс в Telegram** + **SwarmClaw на `https://umnybot.ru`**. Публичный доступ — через статичный VPS-шлюз по NetBird (WAN Александра динамический, на него вешать DNS нельзя).
## Топология
```mermaid
flowchart TB
user([Интернет]) -->|"https://umnybot.ru"| dns["DNS *.umnybot.ru → 158.255.0.139"]
user -->|"https://pve.umnybot.ru<br/>(Basic Auth oleg)"| dns
dns --> vps
subgraph VPSGW ["VPS-шлюз · vm-nano · 158.255.0.139 (статичный) · NetBird 100.70.127.23"]
vps["jc21 NPM :443 · LE-серты<br/>Basic Auth для pve"]
end
vps ==>|"NetBird → 100.70.90.103:80"| boxnpm
subgraph BOX ["Коробка Александра · Proxmox pve-147 (192.168.1.247) · LAN 192.168.1.0/24"]
boxnpm["LXC101 «npm» · 192.168.1.221<br/>NetBird 100.70.90.103 (alex-npm)"]
boxnpm ==>|"Host umnybot.ru"| swarm["LXC103 SwarmClaw<br/>192.168.1.71:3456"]
boxnpm ==>|"Host pve.umnybot.ru"| host["Proxmox UI<br/>host:8006"]
boxnpm -.->|"omni (internal)"| omni["LXC102 OmniRoute :20128<br/>NetBird 100.70.186.192"]
boxnpm -.->|"cloud (internal)"| fb["LXC105 filebrowser :8082"]
boxnpm -.->|"alex (internal)"| hp["LXC105 Homepage :3001"]
boxnpm -.->|"git (internal)"| git["LXC104 Gitea :3000"]
bot["LXC102 openclaw «Алекс»<br/>→ Telegram @alex_umny_bot"]
zima["VM100 ZimaOS — STOPPED<br/>(не используется)"]
end
oleg([Олег / админ]) -.->|"NetBird"| omni
classDef pub fill:#1f6f43,stroke:#0a3,color:#fff
classDef int fill:#333,stroke:#888,color:#ddd
classDef off fill:#5a1a1a,stroke:#a33,color:#fcc
class vps,boxnpm,swarm,host pub
class omni,fb,hp,git,bot int
class zima off
```
Сплошные стрелки (`==>`) — **публичный** путь (`umnybot.ru`; `pve.umnybot.ru` — за Basic Auth). Пунктир (`-.->`) — только **внутри** по NetBird.
## Хосты и сеть
| Узел | Адрес | NetBird | Роль |
|---|---|---|---|
| **Proxmox pve-147** (хост) | `192.168.1.247` static (+резерв Cudy), gw `.1` | нет (джамп через LXC102) | гипервизор, Web UI `:8006` |
| Cudy TR3000 (роутер Александра) | LAN `192.168.1.1`, WAN **`45.143.21.60` динамич. (dhcp)** | `100.70.207.97` | шлюз сети Александра |
| **VPS-шлюз vm-nano** | `158.255.0.139` (статичный, Ubuntu 22.04) | `100.70.127.23` | публичный фронт, jc21 NPM + LE |
## Контейнеры / VM
| ID | Имя | IP (LAN) | NetBird | Сервис | Порт |
|---|---|---|---|---|---|
| LXC 101 | npm | `192.168.1.221` | **`100.70.90.103`** (alex-npm) | jc21 NPM (внутр. роутер коробки) | 80/81/443 |
| LXC 102 | assistant | `192.168.1.154` | `100.70.186.192` (alex-assistant) | openclaw «Алекс» + OmniRoute + Postgres | TG, 20128, 5432 |
| LXC 103 | swarmclaw | `192.168.1.71` | — | **SwarmClaw** (UI на umnybot.ru) | 3456 |
| LXC 104 | gitea | `192.168.1.96` | — | Gitea | 3000 |
| LXC 105 | alex-apps | `192.168.1.14` (резерв) | — | Docker: filebrowser (облако) + Homepage (дашборд) | 8082, 3001 |
| VM 100 | Zima | — | — | ZimaOS — **stopped, не используется** (KVM/VT-x слетел, заменён Docker-апками на 105) | — |
Все контейнеры — `ip=dhcp` (резервации MAC→IP на Cudy для хоста .247 и apps .14). NetBird-агенты на 101/102 — autostart enabled.
## Домены и доступ
| Домен | Доступ | Бэкенд | Через |
|---|---|---|---|
| **`umnybot.ru`** | 🌐 ПУБЛИЧНО | SwarmClaw (103:3456) | VPS NPM → NetBird → NPM коробки (id9) |
| `omni.umnybot.ru` | 🔒 internal | OmniRoute (102:20128) | NetBird (напрямую `100.70.186.192:20128`) |
| `cloud.umnybot.ru` | 🔒 internal | filebrowser (105:8082) | NetBird → NPM коробки |
| `alex.umnybot.ru` | 🔒 internal | Homepage (105:3001) | NetBird → NPM коробки |
| `git.umnybot.ru` | 🔒 internal | Gitea (104:3000) | NetBird → NPM коробки |
| **`pve.umnybot.ru`** | 🌐 ПУБЛИЧНО + **Basic Auth** (`oleg`) | Proxmox UI (host:8006) | VPS NPM (LE id18, access-list `pve-basic-auth`) → NetBird → NPM коробки → Proxmox. ⚠️ root-пароль Proxmox слабый — сменить/2FA |
| ~~zima/tg/rustdesk/plex/ha/oc/qbit/term~~ | удалены | были апки ZimaOS | VM100 не используется |
| `ai.umnybot.ru` | — | домашний openclaw Олега (`10.0.0.239`) | не относится к коробке |
> На VPS NPM публично сейчас — **`umnybot.ru`** (SwarmClaw) и **`pve.umnybot.ru`** (Proxmox за Basic Auth). Остальные домены сняты с VPS; их бэкенды доступны по NetBird/LAN.
## Доступ для управления
```bash
# Хост Proxmox (нет своего NetBird → джамп через LXC102):
ssh -i ~/.ssh/id_ed25519 root@100.70.186.192 # LXC102 assistant (NetBird)
sshpass -p '1qaz!QAZ' ssh root@192.168.1.247 # → хост pve
# pct exec <id> -- ... для любого контейнера
# NPM коробки (внутр. роутер): http://192.168.1.221:81 или http://100.70.90.103:81
# VPS-шлюз: ssh root@158.255.0.139 ; NPM http://158.255.0.139:81
# OmniRoute (internal): http://100.70.186.192:20128
# Web UI Proxmox: ssh -L 8006:192.168.1.247:8006 root@100.70.186.192
```
Креды (root-пароли, NPM-логины, токены) — [[credentials]].
## Ключевые факты / грабли
- **WAN Александра динамический** (`dhcp`, аренда 24ч) → DNS на него вешать нельзя. Поэтому публичный доступ только через статичный VPS-шлюз. DDNS не нужен.
- **Хост без NetBird** → управление джампом через LXC102. Стоящий TODO: поставить NetBird на сам хост.
- **NetBird на NPM коробки (LXC101) = `100.70.90.103`** — единственная точка, куда бьёт VPS; NPM коробки роутит по Host-заголовку на внутренние бэкенды.
- **ZimaOS (VM100) убран** — заменён Docker-апками (filebrowser+Homepage) на LXC105; виртуализация (VT-x) больше не нужна.
- Сторож Антошки (LXC137) ходит к коробке по NetBird → LXC102 (см. [[credentials]]).
- Бэкап старого netconfig хоста: `/root/interfaces.bak-alexmove` на pve.
## История изменений (2026-06-17)
1. Переезд хоста `10.0.0.147``192.168.1.247`; контейнеры на DHCP сами переехали на `192.168.1.x`.
2. ZimaOS (VM100) выведен из работы; подняты filebrowser+Homepage на новом LXC105.
3. Публичный доступ переведён с прямого проброса Cudy (откатан) на VPS-шлюз `158.255.0.139` по NetBird.
4. NetBird добавлен на NPM коробки (LXC101 = `100.70.90.103`).
5. `umnybot.ru` → SwarmClaw публично; остальное (omni/cloud/alex/git) — internal; 8 ZimaOS-доменов + `ai` удалены с VPS.
6. `pve.umnybot.ru` → Proxmox UI публично **за Basic Auth** (`oleg`, access-list `pve-basic-auth`) + LE-серт id18. Креды — в [[credentials]].