From c74705b55ae3864953098648bed33c369ac971be Mon Sep 17 00:00:00 2001 From: code-server Date: Mon, 29 Jun 2026 17:20:02 +0000 Subject: [PATCH] code-server auto-sync 2026-06-29T17:20:02+00:00 --- projects/benilux/umny-server-concept.md | 191 ++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 projects/benilux/umny-server-concept.md diff --git a/projects/benilux/umny-server-concept.md b/projects/benilux/umny-server-concept.md new file mode 100644 index 0000000..b84f711 --- /dev/null +++ b/projects/benilux/umny-server-concept.md @@ -0,0 +1,191 @@ +--- +date: 2026-06-29 +type: project +status: concept +tags: [alexandr, umnybot, concept, cosmos, self-service, ai-services, media, nextcloud] +aliases: ["концепция умного сервера Александра", "umnybot concept", "сервис-каталог Александра"] +--- + +# 🧠 Концепция «Умного сервера» Александра — единый ИИ-сервис с самообслуживанием + +> Развитие пилота [[../dttb/ai-assistant-pilot/architecture|umnybot]] в законченный продукт: «умный сервер с ИИ-сервисами», который продали клиенту. Цель — удобный личный кабинет, где Александр сам ставит и настраивает сервисы, всё за одним входом. Секреты — в [[../dttb/ai-assistant-pilot/credentials|credentials пилота]] и [[credentials|сеть Бенелюкса]]. + +## TL;DR (что решили) + +- **Витрина и автодеплой** — **Cosmos Cloud** на хосте: один контейнер = реверс-прокси + авто-HTTPS + SSO/логин + App Store + защита (SmartShield) + мониторинг. Это «магазин сервисов», где Александр сам ставит приложения в один клик. +- **Железо** — работаем в рамках (i3-2100, 2 ядра, **15 ГБ ОЗУ, уже ~⅔ занято**). Лёгкие версии сервисов, без одновременной тяжёлой нагрузки, приоритизация. Честно: всё включить «на полную» эта коробка не потянет — концепция это учитывает. +- **Что работает сейчас:** боты Алекс + Hermes, SwarmClaw, Homepage, Open WebUI, Nextcloud, Plex, торрент — с интеграцией «скачал → видно в облаке и медиа». +- **Бюджет ОЗУ — главный лимит**, не диск и не CPU. См. [#бюджет-ресурсов](#бюджет-ресурсов). + +--- + +## 1. Что уже есть на коробке (инвентарь) + +Сервер физически у Александра (КП Бенелюкс), Proxmox `pve` `192.168.1.247`. Публичный вход — домены `*.umnybot.ru` через статичный VPS-шлюз `158.255.0.139` по NetBird (WAN Александра динамический, DNS на него вешать нельзя). + +| LXC | Сервис | RAM (выдано) | Статус | +|---|---|---|---| +| 101 | NPM (внутр. реверс-прокси коробки) | 512 МБ | 🟢 работает | +| 102 | **бот Алекс** (openclaw `@alex_umny_bot`) + OmniRoute + Postgres | ~4 ГБ | 🟢 работает | +| 103 | **SwarmClaw** (`umnybot.ru`, публично) | ~4 ГБ | 🟢 работает | +| 104 | Gitea | ~1 ГБ | 🟢 работает | +| 105 | Homepage + filebrowser (Docker) | ~1 ГБ | 🟢 работает | +| ~~VM100~~ | ~~ZimaOS~~ | — | ❌ удалена (VT-x слетел) | + +**Свободно ОЗУ:** ориентировочно 3–5 ГБ (нужно замерить `free -m` перед стартом — см. шаг 0). Диск: SSD 111 ГБ (система) + **HDD 1.8 ТБ** под медиа/торренты/облако — места достаточно. + +### Чего по ТЗ ещё нет +Nextcloud, медиасервер (Plex/«Flex»), торрент-клиент, Open WebUI, второй бот (Hermes на GLM 5.2), и **сама платформа самообслуживания** — её и делаем сердцем продукта. + +--- + +## 2. Целевая архитектура + +``` +Интернет → *.umnybot.ru → VPS-шлюз 158.255.0.139 (NetBird) + │ + ┌─────────────┴─────────────┐ + ▼ ▼ + umnybot.ru (SwarmClaw) app.umnybot.ru (Cosmos UI) + │ ← ЕДИНЫЙ ВХОД клиента + ┌────────────────────────────┼────────────────────────────┐ + ▼ ▼ ▼ ▼ ▼ + Nextcloud Plex qBittorrent Open WebUI бот Hermes + cloud.* media.* dl.* chat.* (TG + web) + │ + скачал торрент → /mnt/Work/media (HDD 1.8 ТБ) + │ + ├─→ Plex видит библиотеку (media volume) + └─→ Nextcloud External Storage (тот же путь) → видно в облаке +``` + +### Почему Cosmos Cloud (а не CasaOS/Runtipi/Portainer) +Выбран как «магазин сервисов» по ключевому критерию ТЗ — **самостоятельная установка + безопасный публичный доступ**: + +- **Всё-в-одном:** встроенный реверс-прокси + автоматический Let's Encrypt + страница логина/2FA (свой SSO) + App Store + контейнерный мониторинг — одним сервисом. Не нужно собирать NPM+authentik+Portainer+Homepage по кусочкам. +- **Безопасен для паблика:** SmartShield (анти-брутфорс, гео/rate-limit, изоляция приложений) — у CasaOS этого нет, его в интернет голым выставлять нельзя. +- **Один клик для клиента:** Александр заходит в `app.umnybot.ru`, видит каталог, жмёт «Install» — Cosmos сам поднимает контейнер, выдаёт поддомен и HTTPS. +- **Сосуществует с текущим NPM:** Cosmos берёт на себя новые сервисы, существующие (SwarmClaw, pve) остаются за NPM коробки. Мигрируем постепенно, ничего не ломая. + +> Лёгкий по ресурсам (сам Cosmos ~150–250 МБ ОЗУ) — критично для этой коробки. + +--- + +## 3. Сервисы — что и как + +### 3.1 Боты (ИИ-ядро, уже частично есть) + +| Бот | Движок | Канал | Ключ/модель | Статус | +|---|---|---|---|---| +| **Алекс** | openclaw (LXC102) | Telegram `@alex_umny_bot` + веб | OmniRoute (Codex/Max) | 🟢 есть | +| **Hermes (новый)** | Hermes Agent | Telegram + веб-дашборд | **GLM 5.2 на ключе Олега** | 🔜 поставить | + +**Hermes для Александра** — по образцу German (LXC141, см. [[../../decisions/2026-06-18-german-hermes-agent-deploy]]): +- Отдельный LXC (или контейнер в Cosmos), Hermes Agent + gateway Telegram + dashboard `hermes.umnybot.ru`. +- Модель — **GLM 5.2** напрямую (ключ Олега) или через OmniRoute-провайдер `glm/*`. ⚠️ В KB у `glm/glm-5.1` был баланс 0 — **проверить баланс ключа GLM 5.2 перед стартом** (см. [#открытые-вопросы](#открытые-вопросы)). +- ОЗУ: ~1–1.5 ГБ. Это самый заметный новый потребитель после медиа — ставить, когда подтвердим бюджет. + +**SwarmClaw для клиента** — сейчас это админский оркестратор Олега (`umnybot.ru`). Приспособить можно так: +- Завести **отдельный read-only/ограниченный аккаунт** Александру (доступ к чату с агентами, без управления узлами/креденшалами). +- ⚠️ База `swarmclaw.db` хранит API-ключи всех клиентов — **не давать Александру админ-доступ**, только пользовательский профиль. Если нужна полная изоляция — отдельный инстанс SwarmClaw для него (но это +4 ГБ ОЗУ, коробка не потянет вместе с медиа). **Рекомендация: ограниченный аккаунт в текущем инстансе.** + +### 3.2 Homepage — информационный портал +- Уже есть на LXC105. Доработать: плитки на ВСЕ ресурсы Александра (боты, облако, медиа, торрент, Open WebUI, Cosmos), живые виджеты (Proxmox, Nextcloud, qBittorrent). +- Сделать **стартовой страницей** `home.umnybot.ru` — первое, что видит клиент. Можно вынести как «дашборд» внутри Cosmos. +- Образец конфига — [[../../decisions/2026-06-27-homepage-dashboard-lxc145]]. + +### 3.3 Nextcloud — личное облако +- **Лёгкая установка, НЕ AIO** (AIO тянет 10+ контейнеров и 10 ГБ ОЗУ — коробка не вытянет). Ставим `nextcloud:apache` + отдельный MariaDB, или официальный образ через Cosmos App Store. +- Данные — на HDD `/mnt/pve/Work` (1.8 ТБ). +- **Интеграция с торрентом:** External Storage → локальная папка `/mnt/Work/media` (куда качает qBittorrent). Скачанное сразу видно в облаке. +- Домен `cloud.umnybot.ru`. ОЗУ ~1–1.5 ГБ. + +### 3.4 Plex — мультимедиа («Flex») +- Plex Media Server (выбран клиентом), библиотека на HDD `/mnt/Work/media`. +- ⚠️ **Честное ограничение:** i3-2100 (2011, без рабочего QuickSync) **не тянет транскодинг**, особенно 4K. Работает только **Direct Play** — файл должен подходить устройству напрямую (формат/кодек/битрейт). Для ТВ/телефона в большинстве случаев ок; 4K HEVC на старый ТВ — будет тормозить. Это нужно проговорить с клиентом. +- **Интеграция:** та же папка `/mnt/Work/media`, что у торрента и Nextcloud → скачал → появилось в Plex. Домен `media.umnybot.ru`. ОЗУ ~1 ГБ (без транскода). + +### 3.5 Торрент — qBittorrent +- `qbittorrent` (linuxserver), WebUI `dl.umnybot.ru`, загрузки в `/mnt/Work/media` (общая папка с Plex и Nextcloud — ключ всей интеграции). +- Лёгкий, ~256–512 МБ ОЗУ. +- **Прямой доступ из Nextcloud и Plex** реализуется именно через общий путь загрузок — отдельные «коннекторы» не нужны, всё через одну директорию на HDD. + +### 3.6 Open WebUI — чат с ИИ через браузер +- `open-webui`, бэкенд — OmniRoute (`http://:20128/v1`), как на LXC142 ([[../../decisions/2026-06-22-open-webui-deploy]]). +- Домен `chat.umnybot.ru`. Клиенту — красивый веб-чат со всеми моделями без Telegram. +- ОЗУ ~1 ГБ (embedding-модель грузится с HF при первом старте — учесть медленную загрузку из РФ). + +### 3.7 Что ещё полезного предложить Александру +- **Vaultwarden** — менеджер паролей (на дом/семью), ~128 МБ. Дёшево и очень полезно. +- **Immich** — фото-бэкап с телефонов (замена Google Photos). ⚠️ Тяжёлый (ML-распознавание лиц) — **только если добавить ОЗУ** или отключить ML. +- **Uptime Kuma** — мониторинг доступности всех сервисов, ~128 МБ, плитка в Homepage. +- **AdGuard Home** — блокировка рекламы/трекеров на весь дом (DNS), ~128 МБ. Хорошо ложится на тему «обхода РКН» которая у клиента уже есть. +- **Paperless-ngx** — архив документов с распознаванием (для домовладельца удобно). Тяжеловат, опционально. + +> Всё это — карточки в Cosmos App Store, клиент ставит сам когда захочет. Мы лишь готовим каталог и проверяем, что лёгкие. + +--- + +## 4. Бюджет ресурсов + +**Главный лимит — ОЗУ (15 ГБ), а не диск/CPU.** Нельзя поднять всё сразу. Грубая раскладка «реалистичного» набора: + +| Сервис | ОЗУ | Приоритет | +|---|---|---| +| Текущее (Алекс+OmniRoute, SwarmClaw, Gitea, NPM, Homepage) | ~10 ГБ | уже работает | +| Cosmos Cloud (платформа) | ~0.25 ГБ | **P0** | +| qBittorrent | ~0.4 ГБ | **P1** | +| Plex (Direct Play) | ~1 ГБ | **P1** | +| Nextcloud (light) | ~1.5 ГБ | **P1** | +| Open WebUI | ~1 ГБ | P2 | +| Hermes (GLM 5.2) | ~1.5 ГБ | P2 | +| Vaultwarden / Uptime Kuma / AdGuard | ~0.4 ГБ | P3 | + +Сумма P0+P1 уже подводит к потолку. **Варианты разруливания (для обсуждения с клиентом):** +1. **Поджать текущее** — SwarmClaw/Gitea Александру не критичны; SwarmClaw можно ужать или вынести на инфру Олега, освободив ~4 ГБ. +2. **Апгрейд ОЗУ** — плата ZOTAC H61 держит до 16–32 ГБ DDR3 (2 слота). Докупить планки = весь стек комфортно. Дешёвый DDR3 б/у. **Самое разумное вложение, если клиент хочет «всё».** +3. **Тяжёлое — на инфру Олега** — Open WebUI/Hermes держать у Олега, отдавать через `*.umnybot.ru`. Разгружает коробку, но появляется зависимость от Олега (против идеи автономности). + +> **Рекомендация:** стартуем P0+P1 в рамках текущего железа (поджав SwarmClaw), параллельно предлагаем клиенту апгрейд ОЗУ до 32 ГБ под полный набор. + +--- + +## 5. План внедрения (по шагам, с проверками) + +**Шаг 0 — замер.** `free -m`, `df -h /mnt/pve/Work`, `pct list` + RAM каждого LXC. Зафиксировать реальный свободный объём ОЗУ. ✅ если свободно ≥3 ГБ — продолжаем; если нет — сначала поджать SwarmClaw/обсудить апгрейд. + +**Шаг 1 — Cosmos Cloud.** Поставить на хост (или в LXC с nesting). Подключить домен `app.umnybot.ru` через VPS-шлюз. Настроить SSO/2FA. ✅ клиент логинится, видит пустой App Store и текущие контейнеры. + +**Шаг 2 — общая медиа-папка + торрент.** Создать `/mnt/pve/Work/media`. Поставить qBittorrent (volume = эта папка). ✅ тестовая закачка появляется в папке. + +**Шаг 3 — Plex.** Библиотека на `/mnt/Work/media`. ✅ тестовый файл играет Direct Play на ТВ/телефоне клиента. + +**Шаг 4 — Nextcloud (light).** External Storage → `/mnt/Work/media`. ✅ скачанный торрент виден и в облаке, и в Plex (проверка сквозной интеграции — ядро ТЗ). + +**Шаг 5 — Open WebUI.** Бэкенд OmniRoute. ✅ чат отвечает в браузере. + +**Шаг 6 — Hermes (GLM 5.2).** Сначала проверить баланс ключа GLM. Поставить, Telegram + `hermes.umnybot.ru`. ✅ бот отвечает. + +**Шаг 7 — Homepage как портал.** Плитки на всё, живые виджеты. Сделать стартовой. ✅ клиент с одной страницы попадает в любой сервис. + +**Шаг 8 — каталог App Store + инструкция.** Подготовить карточки лёгких приложений (Vaultwarden, Uptime Kuma, AdGuard) + короткая памятка клиенту «как поставить сервис самому». ✅ клиент ставит что-то сам в один клик. + +--- + +## 6. Открытые вопросы (уточнить у Олега/клиента) + +- [ ] **Баланс ключа GLM 5.2** — в KB `glm/glm-5.1` был «баланс 0». Hermes на нём не заведётся. Проверить/пополнить. +- [ ] **Апгрейд ОЗУ** до 32 ГБ DDR3 — готов ли клиент на железо? Определяет, P1 или полный набор. +- [ ] **Plex и транскод** — проговорить ограничение Direct Play (4K на старом ТВ будет тормозить). Возможно, клиенту хватит — но ожидания выровнять заранее. +- [ ] **SwarmClaw для клиента** — ограниченный аккаунт в текущем инстансе (рекомендация) или поджать/вынести? Влияет на бюджет ОЗУ. +- [ ] **Cosmos vs текущий NPM** — Cosmos на новые сервисы, NPM коробки остаётся на SwarmClaw/pve; или со временем всё на Cosmos? (постепенная миграция). +- [ ] **NetBird на сам хост** — давно висящий TODO ([[../dttb/proxmox-pve-147]]); упростит управление, стоит закрыть в ходе работ. + +--- + +## Связанное +- [[../dttb/ai-assistant-pilot/architecture]] — текущая архитектура коробки +- [[../dttb/proxmox-pve-147]] — железо хоста +- [[../dttb/ai-assistant-pilot/credentials]] — доступы/секреты +- [[README]] — объект Бенелюкс (сеть, роутер) +- [[../../decisions/2026-06-22-open-webui-deploy]], [[../../decisions/2026-06-27-homepage-dashboard-lxc145]], [[../../decisions/2026-06-18-german-hermes-agent-deploy]] — образцы деплоя