code-server auto-sync 2026-06-29T17:25:01+00:00
This commit is contained in:
@@ -6,16 +6,17 @@ tags: [alexandr, umnybot, concept, cosmos, self-service, ai-services, media, nex
|
||||
aliases: ["концепция умного сервера Александра", "umnybot concept", "сервис-каталог Александра"]
|
||||
---
|
||||
|
||||
# 🧠 Концепция «Умного сервера» Александра — единый ИИ-сервис с самообслуживанием
|
||||
# 🧠 Концепция «Умного сервера» Александра — простой ИИ-сервис, всё через бота
|
||||
|
||||
> Развитие пилота [[../dttb/ai-assistant-pilot/architecture|umnybot]] в законченный продукт: «умный сервер с ИИ-сервисами», который продали клиенту. Цель — удобный личный кабинет, где Александр сам ставит и настраивает сервисы, всё за одним входом. Секреты — в [[../dttb/ai-assistant-pilot/credentials|credentials пилота]] и [[credentials|сеть Бенелюкса]].
|
||||
> Развитие пилота [[../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. См. [#бюджет-ресурсов](#бюджет-ресурсов).
|
||||
- **Лицо сервиса — бот, а не панель.** Клиент НЕ кликает в Cosmos сам. Он пишет боту (Алекс/Hermes в Telegram) или в SwarmClaw: «поставь мне облако» / «хочу смотреть фильмы» → **агент сам разворачивает сервис через Cosmos API**, выдаёт ссылку. Самообслуживание = диалог.
|
||||
- **Cosmos Cloud — движок под капотом**, не витрина. Даёт реверс-прокси + авто-HTTPS + изоляцию + API для автодеплоя. Клиент его обычно не видит; админ-доступ — у Олега и у бота.
|
||||
- **База знаний бота — ТОЛЬКО Бенелюкс.** Изолированная KB по инфраструктуре Александра, без общей базы Олега. Это и автономность, и безопасность.
|
||||
- **Максимальная автономность от Олега:** свой LLM-ключ/баланс, свой публичный вход (Cloudflare Tunnel вместо VPS-шлюза Олега), свой мониторинг. См. [#автономность](#7-автономность-от-инфры-олега).
|
||||
- **Железо** — работаем в рамках (i3-2100, 2 ядра, **15 ГБ ОЗУ, уже ~⅔ занято**). Лёгкие версии сервисов, приоритизация. Всё «на полную» коробка не потянет — концепция это учитывает.
|
||||
|
||||
---
|
||||
|
||||
@@ -39,35 +40,50 @@ Nextcloud, медиасервер (Plex/«Flex»), торрент-клиент,
|
||||
|
||||
---
|
||||
|
||||
## 2. Целевая архитектура
|
||||
## 2. Целевая архитектура — «всё через бота»
|
||||
|
||||
Клиент общается только с ботом. Бот — это «оператор» сервера: понимает запрос на естественном языке, дёргает Cosmos API, отвечает ссылкой. Панель Cosmos — служебная, для Олега.
|
||||
|
||||
```
|
||||
Интернет → *.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 (тот же путь) → видно в облаке
|
||||
КЛИЕНТ КЛИЕНТ (опц., если удобно)
|
||||
Telegram: бот Алекс / Hermes SwarmClaw (веб-чат)
|
||||
│ «поставь облако» │
|
||||
└──────────────┬───────────────────────┘
|
||||
▼
|
||||
АГЕНТ (openclaw/hermes) ── KB: только Бенелюкс
|
||||
│ tool: cosmos-deploy.sh «nextcloud»
|
||||
▼
|
||||
Cosmos Cloud API (движок) ── реверс-прокси + HTTPS + изоляция
|
||||
│ поднимает контейнер, выдаёт поддомен
|
||||
┌────────────────┼────────────────┬───────────────┬───────────────┐
|
||||
▼ ▼ ▼ ▼ ▼
|
||||
Nextcloud Plex qBittorrent Open WebUI (доп. апки)
|
||||
cloud.* media.* dl.* chat.*
|
||||
│
|
||||
скачал торрент → /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 коробки. Мигрируем постепенно, ничего не ломая.
|
||||
| Компонент | Роль | Видит ли клиент |
|
||||
|---|---|---|
|
||||
| **Бот (Алекс/Hermes)** | лицо сервиса, принимает запросы, разворачивает сервисы | ✅ основной интерфейс |
|
||||
| **SwarmClaw** | альт. веб-интерфейс к тем же агентам (если удобнее чата) | ✅ опц., ограниченный аккаунт |
|
||||
| **Cosmos Cloud** | движок: API автодеплоя, прокси, HTTPS, изоляция | ❌ только Олег + бот |
|
||||
| **Homepage** | витрина-портал со ссылками на готовые сервисы | ✅ как «рабочий стол» |
|
||||
|
||||
> Лёгкий по ресурсам (сам Cosmos ~150–250 МБ ОЗУ) — критично для этой коробки.
|
||||
### Почему Cosmos Cloud (как движок, не витрина)
|
||||
Клиент сам кликать в App Store не будет — установку делает **бот через API**. Cosmos выбран потому, что лучше прочих (CasaOS/Runtipi/Portainer) закрывает именно автодеплой-через-API + безопасность:
|
||||
|
||||
- **API + Docker-оркестрация:** бот вызывает Cosmos, тот поднимает контейнер, навешивает поддомен, HTTPS и изоляцию — всё одним движком, без сборки NPM+certbot+Portainer руками.
|
||||
- **Безопасен для паблика:** SmartShield (анти-брутфорс, rate-limit, изоляция приложений) — на случай, если что-то всё же смотрит в интернет.
|
||||
- **Лёгкий:** сам Cosmos ~150–250 МБ ОЗУ — критично для этой коробки.
|
||||
- **Сосуществует с текущим NPM:** новые сервисы — на Cosmos, существующие (SwarmClaw, pve) пока за NPM коробки. Миграция постепенная.
|
||||
|
||||
> **Бот ставит сервисы через скрипт-обёртку** (напр. `cosmos-deploy.sh <app>`), добавленный в инструменты агента — по образцу `alex-*.sh` ([[../dttb/ai-assistant-pilot/architecture]]). Каждый деплой — write-действие, проходит approval-гейт (кнопка в Telegram Олегу), чтобы клиент не наплодил лишнего. Со временем доверенные апки можно вынести в allowlist (без подтверждения).
|
||||
|
||||
---
|
||||
|
||||
@@ -85,9 +101,11 @@ Nextcloud, медиасервер (Plex/«Flex»), торрент-клиент,
|
||||
- Модель — **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 ГБ ОЗУ, коробка не потянет вместе с медиа). **Рекомендация: ограниченный аккаунт в текущем инстансе.**
|
||||
**Инструмент деплоя у агента** — ключ модели «всё через бота». В набор tools агента (рядом с `alex-*.sh`) добавляем `cosmos-deploy.sh <app>`: бот по запросу клиента дёргает Cosmos API, поднимает сервис, отдаёт ссылку. Каталог понятных алиасов: «облако» → nextcloud, «фильмы/кино» → plex, «качалка» → qbittorrent, «чат с ИИ» → open-webui, «пароли» → vaultwarden. Деплой — write-действие через approval-гейт (см. раздел 2).
|
||||
|
||||
**SwarmClaw для клиента (если ему удобнее веб-чата)** — сейчас это админский оркестратор Олега (`umnybot.ru`). Приспособить:
|
||||
- Завести **отдельный ограниченный аккаунт** Александру (чат с агентами, без управления узлами/креденшалами).
|
||||
- ⚠️ База `swarmclaw.db` хранит API-ключи всех клиентов Олега — **не давать админ-доступ**, только пользовательский профиль. Полная изоляция = отдельный инстанс (+4 ГБ ОЗУ, не потянем с медиа). **Рекомендация: ограниченный аккаунт; SwarmClaw — опция, основной канал всё равно Telegram-бот.**
|
||||
|
||||
### 3.2 Homepage — информационный портал
|
||||
- Уже есть на LXC105. Доработать: плитки на ВСЕ ресурсы Александра (боты, облако, медиа, торрент, Open WebUI, Cosmos), живые виджеты (Proxmox, Nextcloud, qBittorrent).
|
||||
@@ -122,11 +140,24 @@ Nextcloud, медиасервер (Plex/«Flex»), торрент-клиент,
|
||||
- **AdGuard Home** — блокировка рекламы/трекеров на весь дом (DNS), ~128 МБ. Хорошо ложится на тему «обхода РКН» которая у клиента уже есть.
|
||||
- **Paperless-ngx** — архив документов с распознаванием (для домовладельца удобно). Тяжеловат, опционально.
|
||||
|
||||
> Всё это — карточки в Cosmos App Store, клиент ставит сам когда захочет. Мы лишь готовим каталог и проверяем, что лёгкие.
|
||||
> Клиент не ищет это в каталоге — он **просит бота** («заведи менеджер паролей»), бот ставит. Мы лишь заранее прописываем алиасы в `cosmos-deploy.sh` и проверяем, что апка лёгкая.
|
||||
|
||||
---
|
||||
|
||||
## 4. Бюджет ресурсов
|
||||
## 4. База знаний бота — только Бенелюкс (изоляция)
|
||||
|
||||
Принципиальное требование: KB агента Александра содержит **только инфраструктуру Бенелюкса**, без общей базы Олега. Это даёт автономность и безопасность — через бота клиента нельзя вытащить данные о НИИКН/dttb/других клиентах.
|
||||
|
||||
- **Отдельный репозиторий/папка KB** для коробки (напр. `kb-benelux`), куда входит: сеть Александра (роутер, UniFi, принтер, камеры), его сервисы (этот документ, architecture, credentials Бенелюкса), инструкции для семьи. **Не входит:** `projects/dttb`, `projects/niikn`, `decisions` Олега, общие snippets.
|
||||
- **Источник синка — не общий vault Олега.** Сейчас агенты тянут общую KB (`kb-pull.sh` с Gitea Олега). Для Александра: либо отдельный репозиторий в его Gitea (LXC104, уже на коробке!), либо локальная папка без внешнего синка. **Рекомендация: держать KB в Gitea Александра (LXC104)** — полностью на его сервере, ноль зависимости от Gitea Олега.
|
||||
- **Память бота (openclaw memory / pgvector)** переиндексируется только из этой папки. Проверить, что в индекс не попали общие записи от предыдущего пилота.
|
||||
- Олег как админ правит KB Бенелюкса через его Gitea; клиент видит результат через ответы бота.
|
||||
|
||||
> ⚠️ Сейчас у пилота KB могла быть общая — **аудит при внедрении:** что именно сейчас в памяти бота Алекс, нет ли там чужой инфры. См. [#открытые-вопросы](#9-открытые-вопросы).
|
||||
|
||||
---
|
||||
|
||||
## 5. Бюджет ресурсов
|
||||
|
||||
**Главный лимит — ОЗУ (15 ГБ), а не диск/CPU.** Нельзя поднять всё сразу. Грубая раскладка «реалистичного» набора:
|
||||
|
||||
@@ -150,7 +181,24 @@ Nextcloud, медиасервер (Plex/«Flex»), торрент-клиент,
|
||||
|
||||
---
|
||||
|
||||
## 5. План внедрения (по шагам, с проверками)
|
||||
## 6. Автономность от инфры Олега
|
||||
|
||||
Цель — коробка должна жить, даже если инфра Олега выключена. Три точки зависимости и как их закрыть:
|
||||
|
||||
| Зависимость сейчас | Проблема | Решение для автономности |
|
||||
|---|---|---|
|
||||
| **Публичный вход** через VPS-шлюз Олега (`158.255.0.139`) | домены `*.umnybot.ru` ходят через сервер Олега | **Cloudflare Tunnel** на коробке: `cloudflared` поднимает исходящий туннель к Cloudflare, тот публикует `*.umnybot.ru`. Не нужен ни статичный IP, ни VPS Олега, ни проброс портов. Работает за динамическим WAN и за CGNAT. **Это и есть ключ к автономности входа.** Домен перевести на Cloudflare DNS. |
|
||||
| **LLM** через OmniRoute на ключах/аккаунтах Олега | боты думают «мозгами» Олега (Max/Codex-аккаунты) | Свой биллинг: **прямой ключ GLM 5.2** (или свой Anthropic/OpenRouter) в OmniRoute коробки. У коробки уже свой OmniRoute (LXC102) — нужен только отдельный оплаченный ключ, а не общий пул Олега. |
|
||||
| **Мониторинг** Антошкой (LXC137 Олега) | сторож живёт у Олега | Локальный сторож на коробке (cron + Uptime Kuma) шлёт алерты в Telegram самому Олегу/клиенту. Внешний догляд Олега оставить как второй контур, но коробка самодостаточна. |
|
||||
| **KB** из общего vault Олега | см. раздел 4 | KB в Gitea Александра (LXC104), на его сервере. |
|
||||
|
||||
**После этих шагов коробка автономна:** свой вход (Cloudflare), свои мозги (свой ключ), своя память (своя KB), свой сторож. Олег — только админ-доступ для поддержки.
|
||||
|
||||
> ⚠️ Cloudflare Tunnel vs текущий VPS-шлюз — это развилка по входу. Cloudflare бесплатен и автономен, но трафик идёт через Cloudflare (для домашнего сервиса ок). Решить при внедрении (раздел 9).
|
||||
|
||||
---
|
||||
|
||||
## 7. План внедрения (по шагам, с проверками)
|
||||
|
||||
**Шаг 0 — замер.** `free -m`, `df -h /mnt/pve/Work`, `pct list` + RAM каждого LXC. Зафиксировать реальный свободный объём ОЗУ. ✅ если свободно ≥3 ГБ — продолжаем; если нет — сначала поджать SwarmClaw/обсудить апгрейд.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user