---
date: 2026-05-31
type: project
tags: [ai-assistant, alexandr, umnybot, credentials, secrets, openclaw, omniroute]
status: active
---

# 🔐 AI-ассистент «umnybot» — инфра и креды (пилот Александра)

> ⚠️ **КОНФИДЕНЦИАЛЬНО.** Продукт «консьерж в коробке». См. [[PROMPT]] (тех-задание) и память `project_alexandr_assistant`.
> Все секреты также лежат на коробке в `/opt/assistant/.env` (chmod 600).

## Коробка (хост + контейнер)

| Параметр | Значение |
|---|---|
| Хост | Proxmox `pve` (pve-147), **10.0.0.147**, root / `1qaz!QAZ` |
| Контейнер | **LXC 102 «assistant»**, Debian 12, IP **10.0.0.163** |
| root LXC 102 | `j5DS1JSPKewKQw6i7mTK` (уникальный; Mac-ключ `ai@mac-20260112` в authorized_keys) |
| Стек | Docker (overlayfs) + Node 22; openclaw 2026.5.27; OmniRoute 3.8.7; Postgres16/pgvector |
| Доступ | `sshpass -p '1qaz!QAZ' ssh root@10.0.0.147` → `pct exec 102 -- bash` (или `ssh root@10.0.0.163` по Mac-ключу) |

## OmniRoute (LLM-роутер)

| Параметр | Значение |
|---|---|
| Сервис | systemd `omniroute.service`, слушает **0.0.0.0:20128** |
| Дашборд | **https://omni.umnybot.ru** (через NPM, LE) или `http://10.0.0.163:20128` |
| Пароль дашборда | **`A30Y7aan8dCKf9`** (Settings → Security можно сменить) |
| API-ключ (для openclaw) | **`ork_VQo75huaEVGzhdfD4QlrL2XaxTmNKPTD`** |
| Конфиг/секреты | `/root/.omniroute/.env` (STORAGE_ENCRYPTION_KEY + СВЕЖИЕ JWT_SECRET/API_KEY_SECRET — перегенерены перед выходом наружу), `storage.sqlite` |
| Старт сервера | `node /usr/lib/node_modules/omniroute/app/server.js` (PORT=20128, HOSTNAME=0.0.0.0) |
| Провайдеры | **Kiro** подключён (GitHub device-flow, аккаунт `kiro1@umnybot.ru`) — но **новый аккаунт троттлит (429 AWS CodeWhisperer)**. Олег добавляет 2-й провайдер через дашборд-GUI |
| Сброс пароля | `omniroute-reset-password` (интерактивный, нужен `expect` для pipe) |

## openclaw (мозг + каналы)

| Параметр | Значение |
|---|---|
| Версия | 2026.5.27 (глоб. npm), конфиг `/root/.openclaw/openclaw.json` |
| Gateway | systemd **`openclaw-gateway.service`** (`openclaw gateway run`), loopback 127.0.0.1:18789 |
| Канал | Telegram `@alex_umny_bot` (connected, polling) |
| Дефолт-модель | пока `openai/gpt-5.5` (без провайдера) → переключить на `omniroute/<provider>/<model>` |
| Провайдер omniroute | `openclaw models auth paste-api-key` (baseUrl `http://127.0.0.1:20128/v1`, key `ork_VQo…`) |

## Telegram

| Параметр | Значение |
|---|---|
| Бот | **@alex_umny_bot** «Консьерж Бот», id 8601326674 |
| Токен | `8601326674:AAEJwbyXGEgEEiIwmfZVdYbG2SxpyMkmDiA` |
| Audit chat_id | **1292155421** (Олег, @it5870) |

## Postgres + pgvector

`127.0.0.1:5432` (Docker `assistant-postgres`, pgvector/pgvector:pg16) — user `assistant` / `c2e193fb341120471917f720a1c6eeea` / db `assistant`. Compose: `/opt/assistant/docker-compose.yml`.

## Домен umnybot.ru (Spaceweb)

| Параметр | Значение |
|---|---|
| Регистратор/DNS | **Spaceweb**, панель `vps.sweb.ru`, логин `it5870yand` / `1qaz!QAZ` |
| API | `POST https://api.sweb.ru/domains/dns` (методы `editMain`/`editMx`/`editTxt`, `action:add`) |
| ⚠️ Проверка DNS | **только через DoH** (`curl https://1.1.1.1/dns-query?name=...&type=...`) — `dig` из dttb-сети режется домашним :53-перехватом (ложно-пусто). `action:add` РАБОТАЕТ |
| Записи | `omni` A→**176.62.183.186**; `@` MX→`mail.dttb.ru` (10); `@` TXT SPF `v=spf1 ip4:176.62.183.186 ~all`; `dkim._domainkey` (2048); `_dmarc` |
| Поддомены план | `omni.` = дашборд OmniRoute; `alex.` = веб ассистента Александра; `<client>.` на будущих |

## Почта (на Mailcow dttb, VM 107)

| Параметр | Значение |
|---|---|
| Ящик ассистента | **`assistant@umnybot.ru`** / **`KQcZnxkB5sMNiVYo`** |
| Catch-all | `@umnybot.ru` → `assistant@umnybot.ru` (любой адрес, удобно под регистрацию аккаунтов) |
| Вебмейл | **https://mail.dttb.ru** (SOGo) |
| IMAP/SMTP | `mail.dttb.ru:993` / `mail.dttb.ru:587` |
| Mailcow | 10.0.0.107, admin `admin`/`1qaz!QAZ`, API `dttb-mailcow-api-2026` (с 10.0.0.0/24) |
| rspamd whitelist | `github.com`, `sgmail.github.com`, `sendgrid.net` для umnybot.ru (новый домен резался, для приёма GitHub-кодов) |

## Аккаунты провайдеров

| Сервис | Логин | Заметка |
|---|---|---|
| GitHub (для Kiro) | `kiro1@umnybot.ru` | пароль задал Олег — **здесь не записан, спросить у Олега**. Зарегистрирован через catch-all (код пришёл в assistant@) |
| Kiro (AWS) | через GitHub-логин выше | device-flow, профиль `arn:aws:codewhisperer:us-east-1:...`. Новый аккаунт троттлит |

## NPM (reverse proxy)

| Параметр | Значение |
|---|---|
| Текущий | основной NPM **10.0.0.195** (it5870@yandex.ru/`1qaz!QAZ`): proxyhost **id30** `omni.umnybot.ru`→`10.0.0.163:20128`, cert **id115** (LE до 2026-08-29), websocket-upgrade вкл |
| План | перенести на **NPM коробки** (LXC 101 pve-147, 10.0.0.207) для автономности; ограничение — публичный 443 один на дом, при передаче коробки к клиенту его роутер сразу на NPM коробки |

## Статус (2026-05-31)
Этап 1 почти закрыт. Тракт TG→openclaw→OmniRoute→Kiro-роутинг проверен (429 = достучались). Блокер: рабочая модель (новый Kiro троттлит → Олег подключает 2-й провайдер). Дальше: openclaw model=omniroute/* + fallback → тест «привет» в TG.
