diff --git a/claude-memory/MEMORY.md b/claude-memory/MEMORY.md new file mode 100644 index 0000000..c3dd2fb --- /dev/null +++ b/claude-memory/MEMORY.md @@ -0,0 +1,227 @@ +# Server: Proxmox HP Z800 (10.0.0.250) +- root / 1qaz!QAZ (API: works, SSH: fail2ban blocks after attempts) +- Proxmox API: POST https://10.0.0.250:8006/api2/json/access/ticket (password URL-encoded: 1qaz%21QAZ) +- Node name: pve +- Use Python urllib for Proxmox API (curl has cookie issues in this env) + +## Key LXC/VM containers +| VMID | Name | IP | Notes | +|------|------|----|-------| +| 107 | Mailcow | 10.0.0.107 | Mailcow для dttb.ru, 4 cores, 8GB RAM | +| 131 | agentdvr | 10.0.0.232 | Agent DVR, 8 cores, 6GB RAM, port 8090 | +| 129 | clawdbot | 10.0.0.206 | Clawdbot AI bot (основной, claude-opus-4-6, @maxim_dttb_bot) | +| 133 | clawdbot-1 | 10.0.0.237 | Бот НИИКН (cliproxy/claude-sonnet-4-6, @maximka_assistant_bot) | +| 134 | clawdbot-2 | 10.0.0.238 | Знам — бот ЧОП видеоархив (@ZnamSecurityBot, haiku) | +| 111 | WinServer2025 | - | RTX 3060 LHR passed through | +| 117 | motioneye | - | Old camera software | +| 124 | Matrix | 10.0.0.224 | Matrix Synapse + Element Web, Ubuntu 24.04 | +| 127 | HomeAssistant | 10.0.0.155 | HAOS 17.0, port 8123, home.dttb.ru | +| 128 | amnezia-vpn | - | AmneziaVPN | +| 250 | Nextcloud-AIO | 10.0.0.230 | Nextcloud AIO dttb.ru, NC 32.0.6 | + +## Agent DVR (LXC 131) — домашний +- Install dir: /opt/AgentDVR/, binary: Agent +- Recordings: /opt/AgentDVR/Media/WebServerRoot/Media/video/ (rootfs, NOT on work storage) +- Service: agentdvr.service, Web UI: http://10.0.0.232:8090 +- 20+ камер, Decoder=NONE + +## Agent DVR (VM 104) — Знаменское (ЧОП) +- IP: 10.0.0.227, SSH: agentdvr / 1qaz!QAZ (key auth настроен) +- AgentDVR v7.0.0.0, Web UI: http://10.0.0.227:8090 +- 14 камер (ZnamHome-Cam01..13 + Znam29-Cam1), все записывают +- Recordings: /mnt/storage/agentdvr-media/video/, формат MP4, 2TB диск (269GB используется) +- HTTP file server: http://10.0.0.227:8091 (python3 http.server, nohup + @reboot cron) +- 8 vCPU, 8GB RAM (критически мало — 99% использовано) + +## Clawdbot (LXC 129) — основной бот +- Real config: ~/.clawdbot/clawdbot.json (NOT /opt/clawdbot/config.yaml) +- ANTHROPIC_API_KEY=sk-clawdbot-proxy in /etc/systemd/system/clawdbot.service +- Telegram bot: @maxim_dttb_bot +- Model: anthropic/claude-opus-4-6 (через CLIProxy localhost:8317) +- CLIProxy: порт 8317 (cliproxy.service), проксирует Anthropic API для всех ботов (129, 133, 134) +- CLIProxy auth: batlaew@gmail.com, auto-refresh токен (единственный инстанс с refresh) +- Gateway: порт 18789, token: changeme123 +- SSH: ключ claude-code (id_ed25519 с LXC 132) + +## Nextcloud dttb.ru (VM 250) → см. nextcloud-dttb.md +- URL: https://dttb.ru, admin / 1qaz!QAZ, NC 32.0.6, AIO v12.6.1 +- VM 250 IP: 10.0.0.230, SSH: cloud / 1qaz!QAZ (sudo pipe) +- AIO: https://10.0.0.230:8080, passphrase: raider baguette muster... +- NPM proxy #1: dttb.ru -> 10.0.0.230:11001 +- WebDAV: https://dttb.ru/remote.php/dav/files/admin/ + +## Clawdbot-1 / НИИКН (LXC 133) +- IP: 10.0.0.237, Netbird: 100.70.200.150 (clawdbot-1.netbird.cloud) +- Telegram: @maximka_assistant_bot (token: 8279417986:AAEjmdnOSO4izFHZJZYPbjcqKzqLARqPnow) +- Model: cliproxy/claude-sonnet-4-6 (через CLIProxy на 129 — http://10.0.0.206:8317) +- CLIProxy: свой остановлен и отключен (cliproxy.service disabled), ходит через 129 +- ZAI_API_KEY=5c83707827ef... в /etc/systemd/system/clawdbot.service (не используется) +- Персона: бот для НИИКН (SOUL.md/IDENTITY.md/USER.md в /root/clawd/) +- SMB: нет (клон без mp0) + +## GPU passthrough +- RTX 3060 LHR: IOMMU Group 20, IDs 10de:2504,10de:228e → VM 111 +- Quadro 6000: IOMMU Group 3, IDs 10de:06d8,10de:0be5 → vfio-pci (unused) +- GRUB: intel_iommu=on iommu=pt video=vesafb:off video=efifb:off + +## Clawdbot-2 / Знам (LXC 134) +- IP: 10.0.0.238, Telegram: @ZnamSecurityBot +- Персона: Знам — бот видеоархива ЧОП +- Model: cliproxy/claude-sonnet-4-6 (через CLIProxy на 129:8317) +- Skill: agentdvr (/usr/lib/node_modules/clawdbot/skills/agentdvr/) +- Script: /root/clawd/scripts/find_recordings.py (cameras/snapshot/find/clip/grab) +- Записи: HTTP from 10.0.0.227:8091, видео сжимается ffmpeg 480p crf35 перед отправкой +- groupPolicy: open, requireMention: false (отвечает в группе без @mention) +- Upload интернета ~3-30 KB/s — видео сжимаются до <200 KB для Telegram +- SSH: ключ claude-code (id_ed25519 с LXC 132) + +## Matrix (VM 124, 10.0.0.224) +- Ubuntu 24.04, 8 cores, 16GB RAM, 100GB disk +- SSH: matrix / 1qaz!QAZ (root SSH отключен, fail2ban активен, IP 10.0.0.179 забанен) +- TODO: unban 10.0.0.179, создать user test/1qaz!QAZ, узнать registration_shared_secret +- Synapse v1.145.0 (docker: matrix-synapse, порт 8008) +- Element Web (docker: matrix-element-web, порт 8080) +- Coturn (docker: matrix-coturn, порт 3478 — имеет проблему bind) +- AI Bot (docker: matrix-ai-bot — Timed out, нужен ремонт) +- Mautrix-Telegram (docker: mautrix-telegram, порт 29317) +- Mautrix-WhatsApp (docker: mautrix-whatsapp) +- Nginx на хосте (порт 80) — дефолтный, не проксирует (проксирование через NPM) +- NPM proxy host ID:23 — matrix.dttb.ru → Element:8080, /_matrix→Synapse:8008 +- NPM proxy host ID:12 — bitrix24.dttb.ru (старый, тоже работает) +- SSL: Let's Encrypt cert ID:100 (matrix.dttb.ru) +- Well-known: настроены для matrix.dttb.ru +- Homeserver: bitrix24.dttb.ru (в конфиге Synapse, исторически) +- Docker compose файлы: ~/matrix-ai-bot/, ~/mautrix-telegram/, ~/mautrix-whatsapp/ +- Документация: ~/PROJECT_CONTEXT.md, ~/CURRENT-STATUS.txt, ~/MATRIX-SUCCESS.txt + +## Mailcow HomeLab (VM 107, 10.0.0.107) +- Web UI: https://mail.dttb.ru (через NPM proxy host #25) +- Admin: admin / 1qaz!QAZ +- API key: dttb-mailcow-api-2026 +- Домен: dttb.ru (добавлен), DKIM: selector=dkim, 2048-bit +- Ящики: admin@dttb.ru, noreply@dttb.ru (пароль: 1qaz!QAZ) +- SMTP: 10.0.0.107:587, STARTTLS, LOGIN auth +- Клон с VM 106 НИИКН, MAILCOW_HOSTNAME=mail.dttb.ru +- SSH: root (ключ claude-code ed25519), cloud-init IP static +- Unbound: forward-zone к 8.8.8.8/1.1.1.1 (обязательно, иначе DNS fail) +- SSL: self-signed для mail.dttb.ru, NPM cert ID:106 для HTTPS web +- OpenWrt проброс: 25,465,587,993,995,4190 → 10.0.0.107 +- DNS (Spaceweb): A mail→176.62.183.186, MX→mail.dttb.ru, SPF, DMARC, DKIM настроены + +## NPM HomeLab (CT 103, 10.0.0.195) +- Web UI: http://10.0.0.195:81 +- API auth: it5870@yandex.ru / 1qaz!QAZ (python urllib, curl не работает с !) +- NPM v2.12.2 +- Основные proxy hosts: dttb.ru(1), mail.dttb.ru(25), matrix.dttb.ru(23), bitrix24.dttb.ru(12), home.dttb.ru(16), pve.dttb.ru(6), bot.dttb.ru(18), git.dttb.ru(22), rec.dttb.ru(21) и др. +- DNS *.dttb.ru → 10.0.0.195 (роутер перехватывает DNS порт 53, hairpin) + +## Mailcow НИИКН (VM 106, 192.168.1.128) +- Web UI: https://mail.niikn.com (через NPM proxy host #17) +- Admin: admin / 1qaz!QAZ +- API key: niikn-mailcow-api-2026 +- Домен: niikn.com (добавлен), DKIM: selector=dkim, 2048-bit +- Ящик: noreply@niikn.com, пароль: NiIkN-NoReply-2026! +- SMTP: 192.168.1.128:587, STARTTLS, LOGIN auth — проверено, работает +- MikroTik проброс: 25,465,587,993,995,4190 → 192.168.1.128 +- SSL: Let's Encrypt через NPM (cert ID 50) +- DNS настроены (2026-03-03): MX, SPF, DMARC, DKIM — все через Spaceweb API +- PTR: нужен (текущий: Aquatern.access.comstar.ru → нужен mail.niikn.com) + +## Spaceweb DNS (niikn.com, dttb.ru) +- Панель: vps.sweb.ru, логин: it5870yand / 1qaz!QAZ +- Логин: POST https://mcp.sweb.ru/main/auth_submit/ (поля: login, password, new_panel=1, to, savepref) +- API: POST https://api.sweb.ru/domains/dns, Content-Type: application/json +- Payload: {"jsonrpc":"2.0","id":1,"user":"it5870yand","method":"...","params":{...}} +- editMain params: {domain, action:"add"/"edit", name, type:"A", value, prefix:"", index(edit)} +- editMx params: {domain, subDomain:"", action:"add"/"edit", priority, value:"host.", index(edit)} +- editTxt params: {domain, action:"add"/"edit", subDomain:"@"/..., value, index(edit)} +- Капча после 2-3 запросов подряд — новая сессия сбрасывает + +## OpenWrt Router HomeLab (10.0.0.1:8080) +- LuCI Web UI: http://10.0.0.1:8080/cgi-bin/luci/ +- ubus RPC: POST http://10.0.0.1:8080/ubus/ (root / 1qaz!QAZ) +- SSH: НЕ работает с этим паролем (другой или key-only) +- DNS Hijack: перехватывает порт 53 → 10.0.0.1 (все DNS запросы через роутер) +- Проброс: 80→NPM, 443→NPM, 25/465/587/993/995/4190→Mailcow(10.0.0.107) +- uci apply: нужен rollback=True + confirm, иначе правила теряются + +## Matrix НИИКН (VM 107, 192.168.1.133) — Proxmox НИИКН +- Ubuntu 24.04, 4 cores, 8GB RAM, 100GB disk +- SSH: root / 1qaz!QAZ (matrix user тоже, PermitRootLogin=yes), fail2ban НЕ установлен, UFW неактивен +- Synapse v1.145.0 (MAS ОТКАЧЕН 2026-03-05, см. mas-niikn.md) +- Element Web (docker: matrix-element-web, порт 8080) +- Coturn (docker: matrix-coturn, порт 3478) +- LiveKit (docker: matrix-livekit, порт 7880/7881/50100-50200, v1.9.11) +- lk-jwt-service (docker: matrix-lk-jwt, порт 9090, v0.4.1) +- LiveKit key: matrixrtc, secret: 8TyXGXsuKytM09OqQIzlCzpzlBrY4698HTN7mGxKU3E= +- LiveKit config: /opt/livekit/livekit.yaml +- server_name: matrix.niikn.com +- Admin: @admin:matrix.niikn.com / 1qaz!QAZ +- DB: PostgreSQL synapse/Matrix2026! +- Docker compose: /opt/matrix-synapse-docker/docker-compose.yml +- NPM proxy host ID:18 (matrix.niikn.com), lk.niikn.com proxy host (cert ID:55) +- msc4108_enabled: false, msc3266+msc4222 enabled, max_event_delay_duration: 24h +- well-known: rtc_foci → https://matrix.niikn.com/livekit/jwt/ + +## Proxmox НИИКН (192.168.1.201:8006) +- root / 1qaz!QAZ, Node: pve +- VMs: 100(Cloud-nc-AIO), 101(VPN), 103(Win11), 104(Win2025), 106(Mailcow), 107(Matrix), 108(Nextclaud-AIO), 111(KasmOS), 112(RustDesk) +- CTs: 102(NPM), 105(zabbix), 109(Cups-Server), 110(SMB) +- Доступ: через jump-host clawdbot-1 (10.0.0.237) → sshpass + +## RustDesk Server (VM 112, 192.168.1.112) — Proxmox НИИКН +- Ubuntu 24.04 (cloud-init image, cloud-init disabled after setup) +- SSH: root / 1qaz!QAZ +- Docker 29.3.0, docker-compose: /opt/rustdesk/docker-compose.yml +- RustDesk Server Pro: hbbs + hbbr (network_mode: host) +- Data: /opt/rustdesk/data/ +- Public Key: ev77pauVf4fEs4YafTN9briHXjglfVsadHRletOfcUY= +- Web Console: https://rd.niikn.com (NPM proxy host #20, cert #57) +- Порты: 21114(API), 21115(NAT test), 21116(ID TCP+UDP), 21117(Relay), 21118(WS), 21119(Relay) +- MikroTik NAT: 21114-21119/tcp + 21116/udp → 192.168.1.112 +- DNS: rd.niikn.com → 85.235.181.190 (Spaceweb) +- Лицензия: нужно купить Basic ($19.90/мес) и активировать + +## NPM НИИКН (LXC 102, 192.168.1.22) +- Web UI: http://192.168.1.22:81 +- API auth: it5870@yandex.ru / 1qaz!QAZ +- Proxy hosts: niikn.com(4), mail.niikn.com(17), matrix.niikn.com(18), lk.niikn.com(new,cert55), pve.niikn.com(11), cloud.niikn.com(10), rd.niikn.com(20,cert57) и др. + +## MikroTik НИИКН (192.168.1.1) +- SSH: AI / OL260380eg +- RouterOS 7.20.6, модель hAP ac³ +- WAN IP: 85.235.181.190 +- NAT: 25,465,587,993,995,4190→Mailcow(192.168.1.128); 8448,3478→Matrix(192.168.1.133); 7881/tcp,50100-50200/udp→LiveKit(192.168.1.133); 3479,20000-20100,49152-49252→NC(192.168.1.200); 21114-21119/tcp+21116/udp→RustDesk(192.168.1.112) +- Hairpin NAT: NPM(80,443), TURN(3478→133), Talk TURN(3479→200), RustDesk(21114-21119→112) + +## Nextcloud НИИКН (VM 108, 192.168.1.200) → см. niikn-nextcloud.md +- Домен: niikn.com, AIO порт 11000, Talk+Matterbridge, TURN: niikn.com:3479 +- Netbird VPN: ip rule 172.18.0.0/16 lookup main (обязательно) +- Groupfolders: 2.9TB, 458K файлов. Диск 4.4T (85% занято) + +## Gitea Knowledge Base (LXC 136, 10.0.0.189) +- URL: https://git.dttb.ru/oleg/knowledge-base +- Auth: oleg / OL260380eg +- Git remote: http://oleg:OL260380eg@10.0.0.189:3000/oleg/knowledge-base.git +- Структура: projects/dttb/, projects/niikn/, projects/krasnogorsk/, decisions/, notes/, snippets/ +- Clone: git clone https://git.dttb.ru/oleg/knowledge-base.git + +## Знаменское Home → см. znamenskoe-home.md +- Роутер: Cudy TR3000 v1, OpenWrt 24.10.3, Netbird: 100.70.54.204, LAN: 10.3.0.1/24 +- UniFi Gateway: 10.3.0.175 (WAN) / 192.168.1.1 (LAN), cloud unifi.ui.com, Net 7.4.162 +- TP-Link Deco P9: 3 ноды (.187, .196, .208) +- Windows jump: 100.70.0.106 (SSH claude/1qaz1QAZ), LAN 192.168.1.135 +- ~43 устройства в 192.168.1.0/24 (камеры, IoT) +- TODO: Force Provision UniFi → SSH → полная диагностика + +## Красногорск (Снегири) → см. krasnogorsk.md +- Роутер: Cudy TR3000, OpenWrt 24.10.3, Netbird: 100.70.152.137, LAN: 192.168.2.0/24 + +## Проект: ServiceDesk dttb → см. servicedesk-dttb.md +- Freescout (LXC 135) + clawdbot-3 (LXC 136) + support@dttb.ru + support.dttb.ru +- 3 канала: веб, Telegram (@dttb_support_bot), email +- Межботовая маршрутизация: все боты ↔ Freescout API +- Статус: ПЛАНИРОВАНИЕ + +## Правило: сохранение информации +- MEMORY.md + Gitea knowledge-base (oleg/OL260380eg) + Nextcloud WebDAV infrastructure.md diff --git a/claude-memory/krasnogorsk.md b/claude-memory/krasnogorsk.md new file mode 100644 index 0000000..4994775 --- /dev/null +++ b/claude-memory/krasnogorsk.md @@ -0,0 +1,33 @@ +# Проект Красногорск (Снегири) + +## Топология +- Провайдер → Deco P9 (192.168.68.1) → Cudy TR3000 (192.168.2.1) → устройства + +## Deco P9 (шлюз провайдера) +- Master: MAC 14:EB:B6:DC:DC:36 ("Гараж"), Satellite: 14:EB:B6:DC:D2:10 ("Мой Гараж") +- deco P9(EU) v2.0, FW 1.3.0 +- Web: https://192.168.68.1 (шифрованный API, cloud passthrough не работает) +- TP-Link Cloud: batlaew@yandex.ru / 260380Oleg +- ISP: **PPTP** (провайдер lk-telecom.ru) + - PPTP-сервер: Pptp.lk-telecom.ru, внешний IP: 185.197.35.186 + - Статический IP: 192.168.87.120/24, gw 192.168.87.1 + - DNS: 192.168.100.243, 192.168.100.207 + - Логин/пароль PPTP: TODO — извлечь из Tether + +## Cudy TR3000 (OpenWrt) +- OpenWrt 24.10.3, Hostname: OpenWrt_6 +- LAN: 192.168.2.1/24, WAN: 192.168.68.100 (DHCP), MAC: 80:AF:CA:CC:D1:13 +- Netbird: 100.70.152.137, AmneziaWG: 10.8.1.26 +- LuCI/ubus: http://100.70.152.137 (root / 1qaz!QAZ) +- SSH: key auth настроен (claude-code ed25519), dropbear порт 22 +- WiFi: open (нет шифрования!) — TODO: настроить WPA + +## Задача: замена Deco P9 на MikroTik LTE +- ISP = PPTP (Pptp.lk-telecom.ru) + Static IP 192.168.87.120/24 +- Primary: PPTP → 185.197.35.186, Backup: Мегафон LTE SIM +- TODO: получить PPTP логин/пароль из Tether + +## Документация +- Nextcloud: Документация/Проекты/Красногорск/README.md +- Gitea: projects/krasnogorsk/README.md +- КП: КП/КП по видеонаблюдению Снегири.pdf diff --git a/claude-memory/mas-niikn.md b/claude-memory/mas-niikn.md new file mode 100644 index 0000000..86add3a --- /dev/null +++ b/claude-memory/mas-niikn.md @@ -0,0 +1,96 @@ +# MAS НИИКН — ОТКАЧЕН 2026-03-05 + +## Статус MAS: ОТКАЧЕН (snapshot rollback) +- Proxmox snapshot `pre-mas-deploy` → восстановлен на VM 107 +- msc4108_enabled: изменён на false в homeserver.yaml (без MAS вызывает краш Synapse) +- NPM server_proxy.conf удалён с LXC 102 +- Nextcloud OIDC: восстановлен client "Matrix Synapse" с redirect /_synapse/client/oidc/callback + +## Nextcloud Talk (VM 108, 192.168.1.200) — РАБОТАЕТ +- TURN: niikn.com:3479, secret: ebf6a8ce0fd1629c2da55356169feea7ab118a18368c2550 +- STUN: stun.nextcloud.com:443 + niikn.com:3479 +- Signaling: https://niikn.com/standalone-signaling/ +- eturnal (TURN) внутри NC AIO Docker (172.18.0.4:3479) +- Janus (WebRTC SFU) внутри того же контейнера + +## Исправление: Janus nat_1_1_mapping для внешних звонков +- **Проблема**: Janus рекламировал Docker-внутренние IP (172.18.0.4, fd74:...) как ICE кандидаты +- Внешние клиенты (iPhone по сотовой) не могли установить WebRTC соединение — ICE failed +- **Решение**: `nat_1_1_mapping = "85.235.181.190"` и `rtp_port_range = "20000-20100"` в janus.jcfg +- eturnal: `relay_ipv4_addr: "85.235.181.190"` (вместо контейнерного IP) +- Контейнер read-only rootfs → конфиг копируется в /tmp, Janus перезапускается с /tmp/janus.jcfg +- **Убран `--full-trickle`** — с ним ICE-кандидаты терялись из-за race condition в сигнальном сервере + - С full-trickle: кандидаты отправляются отдельно от SDP → "No MCU subscriber found" → потеряны + - Без full-trickle (half-trickle): кандидаты включены в SDP → доставляются надёжно +- **Автопатч**: `/opt/talk-janus-patch.sh` + systemd `talk-janus-patch.service` (enabled) +- Скрипт: ждёт контейнер → iptables DNAT+MASQUERADE → патчит eturnal.yml → копирует/патчит janus.jcfg → перезапускает Janus без --full-trickle → убивает signaling (supervisord рестартит) + +## Текущее состояние Talk (2026-03-05) — ТРЕБУЕТ ДОРАБОТКИ +- Janus PID 9576: half-trickle, nat_1_1_mapping=85.235.181.190, /tmp/janus.jcfg +- Signaling PID 12313: свежий, подключён к Janus на ws://127.0.0.1:8188 +- Supervisord (PID 7) управляет eturnal, nats, signaling; Janus запущен вручную (supervisord сдался после 3 попыток) +- iptables на VM 200: DNAT+FORWARD+MASQUERADE для UDP 20000:20100 и 49152:49252 → 172.18.0.4 + +### Нерешённые проблемы +1. **DTLS alert/timeout** — subscriber/publisher получают hangup (DTLS alert), вызов переподключается + - tcpdump подтвердил: RTP-пакеты доходят до контейнера, но DTLS handshake не завершается + - Может быть связано с MTU на сотовой сети или фрагментацией DTLS +2. **"The user is not invited to this room"** — после перезапуска signaling старые токены клиентов невалидны + - Решение: обоим участникам нужно перезагрузить страницу (F5) для получения свежего токена + - Нужно проверить работает ли после перезагрузки страниц +3. **Supervisord не управляет нашим Janus** — при краше Janus не перезапустится автоматически + - Supervisord запускает оригинальный Janus с --full-trickle и без nat_1_1_mapping + - Наш Janus запущен через docker exec -d — без автоперезапуска + - Нужно: либо модифицировать supervisord.conf (но rootfs read-only), либо обёртка-watchdog + +### Что нужно сделать при возврате +- [ ] Попросить пользователя перезагрузить страницы обоих клиентов и протестировать звонок +- [ ] Если DTLS всё ещё падает — попробовать `dtls_mtu = 1200` в janus.jcfg +- [ ] Решить проблему автоперезапуска Janus (watchdog или модификация /supervisord.conf в /tmp) +- [ ] Проверить звонки LAN↔LAN, LAN↔сотовая, сотовая↔сотовая +- [ ] Обновить /opt/talk-janus-patch.sh если нужно после тестов + +## Исправление: Netbird VPN ломал внешний доступ к Talk +- **Проблема**: Netbird VPN (wt0) перехватывал весь внешний трафик через таблицу маршрутизации `netbird` +- Пакеты SYN приходили через ens18 (MikroTik), но SYN-ACK уходили через wt0 (Netbird) — асимметричный роутинг +- **Диагностика**: tcpdump на bridge показал что контейнер отвечает SYN-ACK, но они не доходят до ens18 +- `ip route get 194.26.100.165` → показывал `dev wt0 table netbird` вместо `dev ens18` +- **Решение**: `ip rule add from 172.18.0.0/16 lookup main priority 104` +- Постоянный скрипт: `/etc/networkd-dispatcher/routable.d/50-docker-routing.sh` +- После исправления порт 3479 открыт из Канады, Индии, Нидерландов, Турции + +## MikroTik NAT правила (192.168.1.1) — ДЕЙСТВУЮЩИЕ +- Talk-TURN-TCP: dstnat 85.235.181.190:3479 → 192.168.1.200:3479 +- Talk-TURN-UDP: dstnat 85.235.181.190:3479 → 192.168.1.200:3479 +- Janus-RTP-UDP: dstnat 85.235.181.190:20000-20100 → 192.168.1.200 +- TURN-relay-UDP: dstnat 85.235.181.190:49152-49252 → 192.168.1.200 +- Hairpin Talk TURN TCP/UDP: srcnat masquerade 192.168.1.0/24 → 192.168.1.200:3479 +- Matrix TURN TCP/UDP: dstnat 3478 → 192.168.1.133:3478 +- Matrix Federation: dstnat 8448 → 192.168.1.133:8448 +- Hairpin TURN dstnat/srcnat TCP/UDP: для 192.168.1.0/24 → 85.235.181.190:3478 → 192.168.1.133 + +## VM 200 UFW — открытые порты +- 22/tcp, 3479/tcp+udp, 49152:49252/udp, 20000:20100/udp — from Anywhere +- 11000 — from 192.168.1.22 (NPM) +- 80, 8080, 8443, 8000, 9443, 3389, 3390 — LAN only +- Tailscale/Netbird (wt0) — all traffic + +## Element X / Element Call (2026-03-05) +- well-known `/.well-known/matrix/client` обновлён через NPM advanced_config (proxy host #18) +- Добавлено: `"org.matrix.msc4143.rtc_foci": []` — mesh mode (P2P без SFU) +- Для групповых звонков нужен LiveKit SFU (не развёрнут) +- homeserver.yaml НЕ изменён (SSH к VM 107 заблокирован fail2ban) +- Также: `msc4108_enabled: false` — QR-вход отключен (требует MAS) + +## SSH доступ к VM 107 (2026-03-05) — ПРОБЛЕМА +- fail2ban забанил IP 10.0.0.237 (jump host) и 192.168.1.200 (VM 200) +- Порт 22 открыт (SSH banner отдаётся), но пароль отклоняется +- QEMU guest agent не установлен — Proxmox API exec не работает +- sshpass не установлен на Proxmox хосте (192.168.1.201) +- **Решение**: нужно разбанить IP через Proxmox console (noVNC/SPICE) или ждать expiry + +## Данные MAS (для возможного повторного развёртывания) +- DB: mas/MASniikn2026 +- Matrix secret: 60pMasWfQd8XUyxix932yIxsweyCG89x +- Полный конфиг: /root/mas-config.yaml +- syn2mas: 97 пользователей, 2 с паролями, 2 с OAuth diff --git a/claude-memory/nextcloud-dttb.md b/claude-memory/nextcloud-dttb.md new file mode 100644 index 0000000..95bed26 --- /dev/null +++ b/claude-memory/nextcloud-dttb.md @@ -0,0 +1,108 @@ +# Nextcloud AIO dttb.ru (VM 250, 10.0.0.230) + +## Общее +- URL: https://dttb.ru, login: admin / 1qaz!QAZ +- WebDAV: https://dttb.ru/remote.php/dav/files/admin/ +- Nextcloud AIO v12.6.1, Nextcloud 32.0.6 +- VM 250 на Proxmox HomeLab (10.0.0.250) +- 4 sockets x 2 cores = 8 vCPU, 16GB RAM, 100GB disk (65% used) +- Ubuntu, cloud-init, QEMU guest agent НЕ установлен +- SSH: cloud / 1qaz!QAZ (sudo через echo pipe: `echo '1qaz!QAZ' | sudo -S ...`) +- SSH root НЕ работает, ключ НЕ настроен +- Для SSH через sshpass нужно: `-o PreferredAuthentications=password` (иначе fail) + +## AIO Management +- URL: https://10.0.0.230:8080 (HTTPS обязательно) +- Passphrase: raider baguette muster nanometer disallow hypnotism rut dreamless +- AIO_TOKEN: 7e40792bc68c4ce81d0588a89fa883fed1ab2b3347a1781c +- AIO_URL: 10.0.0.230:8080 (исправлено 2026-03-07, было localhost:8080) +- Патч isLoginAllowed(): return true (позволяет логин по IP при работающем NC) + - Файл: /var/www/docker-aio/php/src/Docker/DockerActionManager.php + - ВНИМАНИЕ: патч сбрасывается при обновлении mastercontainer +- Конфиг: /mnt/docker-aio-config/data/configuration.json (внутри mastercontainer) + - Также: /var/lib/docker/volumes/nextcloud_aio_mastercontainer/_data/data/configuration.json (на хосте) + +## NPM proxy +- NPM proxy host ID:1 — dttb.ru -> http://10.0.0.230:11001 + +## Docker контейнеры +- nextcloud-aio-mastercontainer (порты 80, 8080, 8443, 9000) +- nextcloud-aio-apache (порт 11001) +- nextcloud-aio-nextcloud +- nextcloud-aio-database (PostgreSQL) +- nextcloud-aio-redis +- nextcloud-aio-onlyoffice +- nextcloud-aio-imaginary +- nextcloud-aio-whiteboard +- nextcloud-aio-notify-push +- nextcloud-aio-talk (порт 3479) +- nextcloud-aio-talk-recording +- nextcloud-aio-watchtower + +## Конфигурация (из configuration.json) +- domain: dttb.ru +- apache_port: 11001 +- talk_port: 3479 +- nextcloud_datadir: /mnt/ncdata +- nextcloud_mount: /mnt/ +- upload_limit: 16G +- memory_limit: 2048M +- max_time: 3600 +- isOnlyofficeEnabled: true +- isImaginaryEnabled: true +- isWhiteboardEnabled: true +- isTalkEnabled: false (Talk отключен в AIO, но контейнер talk работает — legacy?) +- isCollaboraEnabled: false +- isClamavEnabled: false + +## Секреты +- NEXTCLOUD_PASSWORD: 5752c16a373b465100050053e8c5805d0b40bcc20a28f59d +- ONLYOFFICE_SECRET: 84b288f6182489c3a39d109c39e11c320f610c2c9d9d3da6 +- TURN_SECRET: c86fd98e4db4cba78c8b512d570d91993cc36ee999e59868 +- REDIS_PASSWORD: df04c3de5d838cb263b82489d12864ec146a4389ac43227e +- DATABASE_PASSWORD: 9410ae9648674eff97f37108f770e9e63dc2136964af3f33 +- BORGBACKUP_PASSWORD: 666fbf2cd2fb7633f34369a4736bfdb0b7280aef82648d94 + +## Почта (2026-03-07) +- Системная почта: support@dttb.ru через mail.dttb.ru:587 STARTTLS +- Mail app: аккаунт support@dttb.ru (IMAP mail.dttb.ru:993 SSL, SMTP mail.dttb.ru:587 STARTTLS) +- SSL: LE-сертификат скопирован с NPM (cert ID:106) на Mailcow +- Cron: /opt/sync-le-cert.sh на Mailcow — ежедневно 04:00 синхронизирует LE cert с NPM +- DNS override: mail.dttb.ru → 10.0.0.107 на OpenWrt (dnsmasq domain record) +- app.mail.verify-tls-peer=true (LE cert валидный) + +## Home Assistant интеграция (2026-03-07) +- Приложение: integration_homeassistant v0.0.7 +- HA URL: http://10.0.0.155:8123 (VM 127, haos-17.0) +- HA user: dttb / 1qaz!QAZ +- Long-Lived Access Token (365 дней, имя "Nextcloud Integration"): + eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3OTgyNzZmZGE3OWM0ODgxYWU1ZGJjMWMwYTNhOWM0ZiIsImlhdCI6MTc3Mjg4OTQ4NywiZXhwIjoxODA0NDI1NDg3fQ.c_6wHfui9YJEtUJoJwbHsMnBzHET-pjEPSWqrthcH18 +- Виджет "Умный дом" (Jinja2 template, обновление 60 сек): + погода, присутствие, iPhone батарея/локация, восход/закат, NC статистика (диск/RAM/CPU/онлайн) +- Виджет "Устройства" (YAML, WebSocket real-time): + медиаплееры (Спальня, VLC), камеры PVZ (6 датчиков движения), NC бинарные сенсоры +- 170 сущностей в HA: 70 sensors, 24 cameras, 39 device_trackers, 14 binary_sensors, 2 media_players, 1 weather +- NPM proxy: home.dttb.ru → http://10.0.0.155:8123 (proxy host #16) + +## Troubleshooting (2026-03-07) +- Контейнеры остановились при обновлении, OnlyOffice был удалён +- Nextcloud зависал на "Waiting for OnlyOffice to become available..." +- Решение: через AIO API включить OnlyOffice, затем Stop+Start через AIO +- AIO login блокируется при работающем Apache — патч isLoginAllowed() или docker stop apache +- AIO_URL передаётся как env при создании контейнера — для обновления нужен Stop+Start через AIO +- spreed (Talk) удаляется при перезапуске если isTalkEnabled=false + +## SSH команды (шаблоны) +```bash +# SSH подключение +sshpass -p '1qaz!QAZ' ssh -o StrictHostKeyChecking=no -o PreferredAuthentications=password cloud@10.0.0.230 + +# Docker через sudo +python3 << 'PYEOF' +import subprocess +cmd = ['sshpass', '-p', '1qaz!QAZ', 'ssh', '-o', 'StrictHostKeyChecking=no', '-o', 'PreferredAuthentications=password', 'cloud@10.0.0.230'] +commands = "echo '1qaz!QAZ' | sudo -S docker ps -a --format '{{.Names}} | {{.Status}}' 2>&1 | grep -v 'пароль для'" +result = subprocess.run(cmd + [commands], capture_output=True, text=True, timeout=15) +print(result.stdout) +PYEOF +``` diff --git a/claude-memory/niikn-nextcloud.md b/claude-memory/niikn-nextcloud.md new file mode 100644 index 0000000..8aa2198 --- /dev/null +++ b/claude-memory/niikn-nextcloud.md @@ -0,0 +1,60 @@ +# Nextcloud НИИКН (niikn.com) + +## Инфраструктура +- Proxmox НИИКН: 192.168.1.201, root / 1qaz!QAZ, node: pve +- VM 100: Cloud-nc-AIO (running) +- VM 108: Nextclaud-AIO (running) — основной NC +- VM IP: 192.168.1.200, SSH не работает (пароль не подходит) +- AIO интерфейс: https://192.168.1.200:8080 (login заблокирован пока NC работает) +- Portainer: https://192.168.1.200:9443 (пароль admin/1qaz!QAZ не подходит) +- NC внутренний порт: http://192.168.1.200:11000 +- NC Talk версия: 22.0.9 +- AIO auto-login: через NC → Администрирование → Обзор (IP в ссылке 192.168.1.147, реальный 192.168.1.200) + +## Другие VM на Proxmox НИИКН +| VMID | Name | Status | +|------|------|--------| +| 100 | Cloud-nc-AIO | running | +| 101 | VPN | stopped | +| 103 | Win11 | running | +| 104 | Win2025 | running | +| 106 | Mailcow | running | +| 107 | Matrix | running | +| 108 | Nextclaud-AIO | running | +| 111 | KasmOS | stopped | + +## VPS 89.111.131.105 — HPB (ОТКЛЮЧЕН) +- Использовался для HPB Talk (signaling + janus + coturn + nats) +- Все сервисы остановлены и отключены (signaling, janus, nats, coturn) +- DNS: turn.niikn.com → 89.111.131.105 +- Сертификат LE для turn.niikn.com (certbot) +- coturn secret: ebf6a8ce0fd1629c2da55356169feea7ab118a18368c2550 +- signaling backend secret: eba8b0547b0285a475157911300720f99886fe1202a3ca98 + +## NC Talk — текущее состояние (2026-03-03) +- signalingMode: internal (HPB НЕ настроен) +- signaling_servers: ПУСТО (очищено при откате VPS конфига) +- stun_servers: ["stun.nextcloud.com:443"] +- turn_servers: [] (пусто) +- Встроенный AIO сигнальный сервер РАБОТАЕТ: https://niikn.com/standalone-signaling/ (v2.1.0~docker) +- signaling_token_privkey_es256: есть (JWT v2.0 auth) +- Проблема: signaling_servers не прописан → "Конфигурация Nextcloud Talk не завершена" + +## Что нужно сделать для Talk +1. Через AIO интерфейс (https://192.168.1.200:8080) перезапустить контейнеры Talk +2. AIO автоматически пропишет signaling_servers с правильным shared secret +3. После этого проверить что signalingMode стал "external" и HPB работает + +## История изменений +- 2026-03-03: Попытка настроить HPB на VPS для звонков через сотовую сеть + - Настроен coturn с TLS на порту 443 (turn.niikn.com) + - Отключен HTTP/2 на NPM для совместимости с Talk + - Звонки по сотовой сети так и не заработали (баг iOS Talk — IPv6 ULA, ICE timeout) + - Пользователь решил откатить: VPS не нужен, в AIO всё работало и без него + - Все VPS сервисы остановлены, signaling_servers очищены + - Осталось: перезапустить AIO контейнеры Talk чтобы восстановить встроенный HPB + +## NPM (Nginx Proxy Manager) +- На 192.168.1.22 (НИИКН сеть) +- HTTP/2 отключен для niikn.com (для совместимости с Talk) +- Файл: /data/compose/2/data/nginx/proxy_host/4.conf diff --git a/claude-memory/servicedesk-dttb.md b/claude-memory/servicedesk-dttb.md new file mode 100644 index 0000000..c9ac9d9 --- /dev/null +++ b/claude-memory/servicedesk-dttb.md @@ -0,0 +1,68 @@ +# Проект: ServiceDesk dttb +Статус: ПЛАНИРОВАНИЕ (создан 2026-03-09) + +## Концепция +Единая система приёма и обработки заявок от клиентов через 3 канала: +- Веб-портал (support.dttb.ru) — чат-виджет, форма заявки, FAQ, проверка статуса +- Telegram — новый бот @dttb_support_bot (AI на Claude) +- Email — support@dttb.ru (через Mailcow) + +## Архитектура +- **Freescout** — бэкенд (тикеты, очереди, SLA, отчёты, операторы) +- **Новый Telegram-бот (clawdbot-3)** — AI-фронт для клиентов +- **Существующие боты** — маршрутизация заявок между организациями + +## Компоненты + +| Компонент | Где | VMID | IP | Статус | +|-----------|-----|------|----|--------| +| Freescout + веб-портал | LXC, домашний Proxmox | 135 (план) | TBD | Не создан | +| clawdbot-3 (support bot) | LXC, домашний Proxmox | 136 (план) | TBD | Не создан | +| support@dttb.ru | Mailcow VM 107 | 107 | 10.0.0.107 | Не создан | +| support.dttb.ru | NPM CT 103 | 103 | 10.0.0.195 | Не создан | + +## Очереди Freescout +- **Клиенты (public)** — внешние заявки (веб, Telegram, email) +- **НИИКН** — внутренние заявки НИИКН (от clawdbot-1) +- **ЧОП** — заявки по охране/камерам (от clawdbot-2) + +## Межботовая маршрутизация +- Все боты общаются через Freescout API (единый хаб) +- clawdbot-3 → Freescout → очередь по категории → нужный бот/оператор +- clawdbot-1 (НИИКН) может создать тикет в очередь ЧОП и наоборот +- Webhook из Freescout → бот уведомляет клиента о решении + +## Модули Freescout (платные, разово ~$76) +- Live Chat ($19) — виджет чата на сайте +- Telegram ($15) — интеграция с ботом +- Contact Form ($9) — веб-форма заявки +- Knowledge Base ($19) — FAQ на сайте +- Auto Reply ($5) — «Заявка #N принята» +- Satisfaction ($9) — оценка качества + +## Новый бот (clawdbot-3) +- Telegram: @dttb_support_bot (зарегистрировать в BotFather) +- Модель: cliproxy/claude-sonnet-4-6 (через CLIProxy на 129:8317) +- Персона: вежливый формальный саппорт, без доступа к инфраструктуре +- Skill: helpdesk (работа с Freescout API) +- Не знает паролей/IP, не выполняет команды — только общение + тикеты + +## Веб-портал (support.dttb.ru) +- Чат-виджет (Freescout Live Chat) +- Форма заявки (имя, email, тема, описание) +- FAQ / база знаний +- Проверка статуса заявки по номеру +- Ссылки на Telegram-бот и email + +## План развёртывания +1. [ ] Создать LXC 135 на домашнем Proxmox → Freescout (PHP+MariaDB+Nginx) +2. [ ] Настроить support.dttb.ru в NPM +3. [ ] Создать support@dttb.ru в Mailcow, подключить IMAP к Freescout +4. [ ] Купить и установить модули Freescout (Telegram, Live Chat, KB, etc.) +5. [ ] Зарегистрировать @dttb_support_bot в BotFather +6. [ ] Создать LXC 136 → clawdbot-3 (клон шаблона clawdbot) +7. [ ] Написать skill helpdesk (Freescout API: create/read/update тикеты) +8. [ ] Написать SOUL.md — персона публичного саппорта +9. [ ] Подключить clawdbot-1 и clawdbot-2 к Freescout API +10. [ ] Сверстать веб-портал support.dttb.ru +11. [ ] Тестирование полного цикла: заявка → AI-обработка → эскалация → решение → уведомление diff --git a/claude-memory/videonablyudenie.md b/claude-memory/videonablyudenie.md new file mode 100644 index 0000000..72c2c51 --- /dev/null +++ b/claude-memory/videonablyudenie.md @@ -0,0 +1,39 @@ +# Видеонаблюдение Знаменское — ключевая информация + +## VPS для видеонаблюдения +- IP: 89.111.140.86 (другой VPS, НЕ 89.111.131.105 который для NC Talk) +- SSH: ключ id_rsa +- WireGuard: wg0, 10.5.0.1/24, порт 51820/UDP +- Конфиг WG: /etc/wireguard/wg0.conf +- iptables: /etc/iptables/rules.v4 + +## Локация 1: Знаменское 29 (WG 10.5.0.2) +- 1 камера HiWatch: 192.168.88.42 (admin/1qaz!QAZ) +- Mikrotik: 192.168.88.1 (admin/admin01) +- Внешний доступ: :8080(web) :8082(SDK) :8554(RTSP) + +## Локация 2: Охотхозяйство (WG 10.5.0.3) +- NVR: 192.168.8.247 (admin/1qaz!QAZ) +- Mikrotik: 192.168.8.1 (admin/1qaz!QAZ) +- OpenWrt NetBird: 192.168.8.108 (root/1qaz!QAZ) +- 6 камер: .2, .3, .102, .110, .113, .120 +- Внешний доступ NVR: :8180(web) :8100(SDK) :8555(RTSP) +- Камеры напрямую: RTSP :8561-8566, SDK :8201-8206 + +## Локация 3: Знаменское Home (WG 10.5.0.4) +- NVR: 192.168.1.123 (admin/1qaz!QAZ) +- ONT Huawei: 192.168.100.1 (root/admin) +- OpenWrt_3 WAN: 192.168.100.3 (root/1qaz!QAZ), LAN: 10.3.0.1, NetBird: 100.70.54.204 +- UDM Pro: 10.3.0.175 (SSH: k9gLi2C / xdjM0eQkIeZfmCFBYo9DP) +- WG приватный ключ: 4C9B6iHRRARQfFGBoXimIeznJKj8NX7QmUBW3O+pklE= +- Внешний доступ NVR: :8280(web) :8282(SDK) :8284(RTSP) +- Цепочка: VPS → WG → OpenWrt_3 → UDM Pro → NVR + +## Особенности +- UDM Pro: SSH работает, но веб-интерфейс Ubiquiti не работает +- OpenWrt_3: podkop/sing-box может мешать TCP, при проблемах: service podkop stop; service sing-box stop +- NetBird маршрут NIIKN для 192.168.1.0/24 деселектирован (конфликт с WG) +- Huawei ONT иногда зависает — перезагрузка помогает + +## Документация +- Nextcloud: Документация/Проекты/videonablyudenie-znam.md diff --git a/claude-memory/znamenskoe-home.md b/claude-memory/znamenskoe-home.md new file mode 100644 index 0000000..d6e8bc1 --- /dev/null +++ b/claude-memory/znamenskoe-home.md @@ -0,0 +1,70 @@ +# Знаменское Home — сетевая инфраструктура + +## Статус: ожидание provision UniFi (2026-03-09) +- Нужно: Force Provision UniFi gateway через unifi.ui.com → Devices +- После этого SSH-ключи применятся и можно продолжить + +## Роутер Cudy TR3000 v1 (OpenWrt 24.10.3) +- Netbird: 100.70.54.204, SSH: root / 1qaz!QAZ (ключ установлен) +- WAN: 192.168.100.2 (DHCP от ISP router 192.168.100.1, MAC 38:4c:4f:0e:7f:b8) +- LAN: 10.3.0.1/24 (br-lan, eth1) +- Wi-Fi: ВЫКЛЮЧЕН (radio0 2g + radio1 5g disabled) +- VPN: AmneziaWG (awg0, 10.8.1.7 → 202.71.12.186:37209), WireGuard (wg0, 10.5.0.4 → 89.111.140.86:51821) +- Netbird: wt0, 100.70.54.204 +- Podkop v0.6.2: VLESS-Reality proxy + awg0 VPN, community lists: russia_inside, hodca +- DNS: через podkop (127.0.0.42), bootstrap 77.88.8.8 +- Route: 192.168.1.0/24 via 10.3.0.175 (UniFi) +- Единственный клиент на LAN: 10.3.0.175 (UniFi, MAC 9c:05:d6:ac:98:b8) + +## UniFi Gateway (10.3.0.175 WAN / 192.168.1.1 LAN) +- MAC: 9c:05:d6:ac:98:b8 (Ubiquiti) +- Cloud-managed: unifi.ui.com, Network 7.4.162 +- SSH: admin, пароль установлен 1qaz!QAZ (но не работает — нужен provision) +- SSH-ключи добавлены: claude-code (RSA 4096), windows-claude (RSA 2048) +- Все порты закрыты с WAN (10.3.0.x) стороны — управление только с LAN или cloud +- Firewall rule "Allow SSH WAN" создан (тип "Интернет подключен", TCP 22) +- Шлюз для сети 192.168.1.0/24 + +## TP-Link Deco P9 (3 ноды) +- 192.168.1.187 — HTTPS /webpages/index.html (tpEncrypt.js) +- 192.168.1.196 — HTTPS /webpages/index.html +- 192.168.1.208 — HTTPS /webpages/index.html + +## Устройства в сети 192.168.1.0/24 (из Cudy ping sweep, ~43 хоста) +### HTTP 200 (вероятно камеры): +192.168.1.20, .40, .41, .42, .46, .47, .49, .56, .57, .58, .63, .64, .69, .70, .100, .101, .123 +- 192.168.1.100: NETSurveillance WEB (NVR/DVR) +- 192.168.1.123: web interface (без title) + +### HTTP 307 → HTTPS (TP-Link Deco): +192.168.1.187, .196, .208 + +### SSH open (ssh-rsa,ssh-dss — возможно камеры): +192.168.1.16, .66, .96, .173, .213, .220 + +### Без HTTP/SSH (IoT/прочее): +192.168.1.7, .29, .38, .75, .114, .119, .127, .133, .135, .142, .155, .173, .188, .189, .239, .246, .248, .252 + +## Windows jump host +- Netbird: 100.70.0.106 +- LAN: 192.168.1.135 +- Hostname: DESKTOP-AGBMLPN +- SSH: claude / 1qaz1QAZ (OpenSSH Server установлен) +- Назначение: видеонаблюдение для ЧОП +- Пользователь HP без пароля (основной) + +## Известные проблемы +1. Wi-Fi на Cudy выключен — нормально, раздаёт UniFi/Deco +2. UniFi SSH не применён — нужен Force Provision +3. Cudy RAM 497MB, load ~1.0 — норма +4. dmesg ошибка: RTL8221B-VB-CG 2.5Gbps PHY config_init failed: -110 (возможно не критично) +5. odhcpd: "No default route present, overriding ra_lifetime to 0!" (IPv6 RA issue) + +## TODO после provision UniFi +- SSH на UniFi → получить полную конфигурацию +- Определить модель UniFi (UDM/USG/UDR) +- Получить DHCP leases с UniFi +- Проверить конфигурацию Wi-Fi +- Проверить TP-Link Deco P9 (mesh, каналы, проблемы) +- Составить полную топологию +- Сканировать на проблемы