NetBird VPN inventory + cleanup report 13.03.2026

- Full peer inventory (44 active peers)
- Groups mapping
- Deleted 12 stale peers (6+ months offline)
- Also staged pending NIIKN and video surveillance docs
This commit is contained in:
Максимка
2026-03-13 22:46:15 +03:00
parent 288ae0b5f3
commit a3eb7bf079
6 changed files with 990 additions and 7 deletions

View File

@@ -0,0 +1,169 @@
# NetBird VPN — Инвентаризация
**Дата:** 2026-03-13 19:46 UTC
**Всего пиров:** 44
**Онлайн:** 23
**Оффлайн:** 21
## Онлайн пиры
| Имя | IP | ОС | Город | Версия |
|-----|----|----|-------|--------|
| 89-111-140-86.swtest.ru | 100.70.93.36 | Ubuntu 24.04 | Moscow | 0.65.1 |
| Cloud-NIIKN New niikn.com | 100.70.117.21 | Ubuntu 24.04 | | 0.65.3 |
| DESKTOP-2IOQS54 | 100.70.82.83 | Windows 10 | Saransk | 0.50.3 |
| DESKTOP-AGBMLPN | 100.70.0.106 | Windows 11 | Helsinki | 0.66.2 |
| DESKTOP-HL0BB05 | 100.70.235.80 | Windows 11 | Lipetsk | 0.59.7 |
| Kripto-ARM | 100.70.145.223 | Windows 11 | | 0.54.0 |
| MacBook-Pro | 100.70.242.212 | Darwin 26.3.1 | Istra | 0.65.3 |
| OpenWrt 1 | 100.70.239.211 | OpenWrt 24.10.3 | Moscow | 0.50.2 |
| OpenWrt Benilux | 100.70.207.97 | OpenWrt 24.10.3 | Istra | 0.59.13 |
| OpenWrt Вишневый сад ( Константин ) | 100.70.152.137 | OpenWrt 24.10.3 | Moscow | 0.59.12 |
| OpenWrt_4 | 100.70.235.2 | OpenWrt 24.10.3 | Moscow | 0.50.2 |
| OpenWrt_Lipki | 100.70.35.234 | OpenWrt 24.10.3 | Istra | 0.59.13 |
| OpenWrt_Sergey | 100.70.110.164 | OpenWrt 24.10.3 | Odintsovo | 0.59.12 |
| OpenWrt_Znamenskoe_Home | 100.70.54.204 | OpenWrt 24.10.3 | Moscow | 0.50.2 |
| OpenWrt_ohothozyistvo | 100.70.63.67 | OpenWrt 21.02.1 | Istra | 0.36.5 |
| clawdbot-1 | 100.70.200.150 | Debian GNU/Linux 12 | Istra | 0.65.2 |
| cloud | 100.70.152.70 | Ubuntu 24.04 | | 0.66.3 |
| code-server | 100.70.92.138 | Ubuntu 24.04 | Istra | 0.66.0 |
| finland5870.com | 100.70.0.15 | Ubuntu 22.04 | Helsinki | 0.62.3 |
| netbird-29-HP | 100.70.137.181 | Ubuntu 24.04 | Moscow | 0.64.5 |
| pve LionART | 100.70.128.49 | Debian GNU/Linux 12 | Istra | 0.59.6 |
| pve ded_mozay | 100.70.121.235 | Debian GNU/Linux 13 | Istra | 0.28.6 |
| rustdeskserver | 100.70.191.161 | Debian GNU/Linux 12 | Istra | 0.66.0 |
## Оффлайн пиры
| Имя | IP | ОС | Последний раз онлайн | Город |
|-----|----|----|---------------------|-------|
| MacBook-Pro-Vera.local | 100.70.252.228 | Darwin 26.3.1 | 2026-03-13 | St Petersburg |
| LAPTOP-3IR5EA9J | 100.70.149.179 | Windows 11 | 2026-03-13 | Mérida |
| iPhone-netbird | 100.70.18.13 | iOS 26.3.1 | 2026-03-13 | |
| Znamenskoe | 100.70.100.155 | Debian GNU/Linux 11 | 2026-03-13 | Helsinki |
| clawdbot | 100.70.219.93 | Debian GNU/Linux 12 | 2026-03-13 | Istra |
| pve-niikn | 100.70.120.229 | Debian GNU/Linux 12 | 2026-03-13 | Istra |
| WIN-BC0OTBOBBCH | 100.70.181.152 | Windows Server 2025 | 2026-03-13 | Moscow |
| DESKTOP-LBD73OR | 100.70.78.170 | Windows 11 | 2026-03-13 | Astana |
| Kolyadenko | 100.70.146.58 | Windows 10 | 2026-03-10 | |
| KOMPUTER | 100.70.83.120 | Windows 11 | 2026-03-10 | St Petersburg |
| iPhone-batlaew | 100.70.57.167 | iOS 26.3.1 | 2026-03-10 | Istra |
| Work Server dttb | 100.70.12.3 | Windows Server 2025 | 2026-03-09 | Istra |
| Денис Тихая | 100.70.155.107 | Windows 10 | 2026-02-28 | |
| iPad-batlaew | 100.70.211.159 | iPadOS 18.6.2 | 2026-02-25 | Istra |
| DESKTOP-IC5A0K2 M.Maul | 100.70.178.190 | Windows 10 | 2026-02-24 | |
| kasm | 100.70.121.49 | Ubuntu 24.04 | 2026-02-23 | |
| DESKTOP-5RGAUUG | 100.70.221.26 | Windows 11 | 2026-02-18 | Istra |
| pdm | 100.70.128.10 | Debian GNU/Linux 13 | 2026-02-10 | Istra |
| Cups-Server | 100.70.100.82 | Ubuntu 22.04 | 2025-12-22 | |
| MastaNotebook | 100.70.116.166 | Windows 11 | 2025-10-24 | Moscow |
| DESKTOP-9VJ949T скоморохова | 100.70.44.183 | Windows 10 | 2025-09-23 | St Petersburg |
## Группы
### All (44 пиров)
- 89-111-140-86.swtest.ru
- Cloud-NIIKN New niikn.com
- Cups-Server
- DESKTOP-2IOQS54
- DESKTOP-5RGAUUG
- DESKTOP-9VJ949T скоморохова
- DESKTOP-AGBMLPN
- DESKTOP-HL0BB05
- DESKTOP-IC5A0K2 M.Maul
- DESKTOP-LBD73OR
- KOMPUTER
- Kolyadenko
- Kripto-ARM
- LAPTOP-3IR5EA9J
- MacBook-Pro
- MacBook-Pro-Vera.local
- MastaNotebook
- OpenWrt 1
- OpenWrt Benilux
- OpenWrt Вишневый сад ( Константин )
- OpenWrt_4
- OpenWrt_Lipki
- OpenWrt_Sergey
- OpenWrt_Znamenskoe_Home
- OpenWrt_ohothozyistvo
- WIN-BC0OTBOBBCH
- Work Server dttb
- Znamenskoe
- clawdbot
- clawdbot-1
- cloud
- code-server
- finland5870.com
- iPad-batlaew
- iPhone-batlaew
- iPhone-netbird
- kasm
- netbird-29-HP
- pdm
- pve LionART
- pve ded_mozay
- pve-niikn
- rustdeskserver
- Денис Тихая
### Lion ART (4 пиров)
- DESKTOP-5RGAUUG
- DESKTOP-HL0BB05
- KOMPUTER
- Денис Тихая
### NIIKN (14 пиров)
- Cloud-NIIKN New niikn.com
- DESKTOP-2IOQS54
- DESKTOP-9VJ949T скоморохова
- DESKTOP-AGBMLPN
- DESKTOP-IC5A0K2 M.Maul
- DESKTOP-LBD73OR
- Kolyadenko
- Kripto-ARM
- LAPTOP-3IR5EA9J
- MacBook-Pro-Vera.local
- MastaNotebook
- cloud
- iPhone-netbird
- pve-niikn
### OpenWRT VPN (3 пиров)
- OpenWrt 1
- OpenWrt_4
- OpenWrt_Lipki
### Trance (4 пиров)
- Cloud-NIIKN New niikn.com
- MacBook-Pro
- cloud
- finland5870.com
### Москва (5 пиров)
- DESKTOP-9VJ949T скоморохова
- DESKTOP-LBD73OR
- LAPTOP-3IR5EA9J
- MacBook-Pro-Vera.local
- MastaNotebook
### Эстония (3 пиров)
- DESKTOP-5RGAUUG
- DESKTOP-LBD73OR
- pve ded_mozay
## Удалённые пиры (13.03.2026)
Удалено 12 устройств, оффлайн более 6 месяцев:
- **DESKTOP-V81SJVM** (Win 11) — оффлайн 331 дн.
- **Argo** (Win 11) — оффлайн 309 дн.
- **cloud TEST** (Ubuntu 24.04) — оффлайн 272 дн.
- **DESKTOP-D6NU2ET** (Win 10) — оффлайн 252 дн.
- **iPhone-netbird (iOS 18.5)** (iOS) — оффлайн 252 дн.
- **iPhone-batlaew (iOS 18.5)** (iOS) — оффлайн 246 дн.
- **n8n** (Debian 12) — оффлайн 230 дн.
- **DESKTOP-6R986PD** (Win 10) — оффлайн 227 дн.
- **pve HP** (Debian 12) — оффлайн 214 дн.
- **DESKTOP-1P2TPIM** (Win 11) — оффлайн 211 дн.
- **iPhone-batlaew (iOS 18.6)** (iOS) — оффлайн 211 дн.
- **DESKTOP-80JEBOL** (Win 10) — оффлайн 186 дн.

View File

@@ -19,21 +19,26 @@ AI-бот в Nextcloud Talk с доступом к базе знаний. Отв
## Быстрый старт
### Запуск бота
### Запуск бота (systemd)
```bash
# На LXC 129 (clawdbot, 10.0.0.206)
nohup python3 -u /root/clawd/scripts/nextcloud-talk-bot.py > /tmp/talk-bot.log 2>&1 &
systemctl start nextcloud-talk-bot
```
### Проверка
```bash
cat /tmp/talk-bot.log | tail -20
pgrep -f nextcloud-talk-bot
systemctl status nextcloud-talk-bot
tail -20 /tmp/talk-bot.log
```
### Остановка
```bash
pkill -f nextcloud-talk-bot
systemctl stop nextcloud-talk-bot
```
### Ручной запуск (без systemd)
```bash
nohup python3 -u /root/clawd/scripts/nextcloud-talk-bot.py > /tmp/talk-bot.log 2>&1 &
```
### Обновить базу знаний (из чата Talk)
@@ -205,7 +210,13 @@ Nextcloud Talk Bot API поддерживает webhooks, но в AIO (Docker) s
Причина: cliproxy не передаёт system prompt. Решение: KB как первое user/assistant сообщение.
### Бот не запускается после перезагрузки
Нужен systemd сервис (TODO).
**Решено:** Создан systemd сервис `nextcloud-talk-bot.service` с `Restart=always`.
```bash
systemctl enable nextcloud-talk-bot # автозапуск при старте
systemctl start nextcloud-talk-bot # запуск
systemctl status nextcloud-talk-bot # проверка
```
Файл сервиса: `/etc/systemd/system/nextcloud-talk-bot.service`
---
@@ -238,9 +249,26 @@ $EXEC php occ talk:bot:uninstall {BOT_ID}
---
## Changelog
### 2026-02-27
- ✅ Создан systemd сервис `nextcloud-talk-bot.service` — автозапуск, restart при падении
- ✅ Бот работает стабильно через polling
### 2026-02-26 / 2026-02-27 (ночь)
- ✅ Первоначальная разработка и запуск
- ✅ Зарегистрирован бот "Максимка" в Nextcloud Talk
- ✅ Webhook не работает в AIO Docker → переход на polling
- ✅ Создан пользователь `maximka` для отправки ответов
- ✅ Подключена база знаний (knowledge-base) через git
- ✅ Claude Sonnet через cliproxy (localhost:8317)
- ✅ Команда `/reload` для обновления KB
- ✅ История контекста (10 пар сообщений)
- ✅ Фильтрация своих сообщений и ботов
## TODO
- [ ] Systemd сервис для автозапуска
- [ ] Поддержка нескольких чатов
- [ ] Аватар для пользователя maximka
- [ ] Интеграция с основным Clawdbot (через hooks или sessions)
- [ ] Возможность выполнять команды (не только отвечать)
- [ ] Persistent history (сохранение истории между перезапусками)

View File

@@ -0,0 +1,291 @@
# Система видеонаблюдения — Полный отчёт
> Дата: 16 февраля 2026
> Статус: Все 3 локации подключены
---
## Общая архитектура
Три удалённые локации объединены через VPN-туннели WireGuard к единому VPS-серверу со статическим IP.
VPS выступает точкой агрегации: принимает внешние подключения из интернета и пробрасывает их через DNAT к камерам и регистраторам в локальных сетях.
```
┌──────────────────────────────┐
│ VPS 89.111.140.86 │
│ WireGuard: 10.5.0.1 │
│ NetBird: 100.70.93.36 │
│ Ubuntu 24.04.3 LTS │
└───┬──────────┬──────────┬────┘
│ │ │
10.5.0.2 10.5.0.3 10.5.0.4
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────────┐
Знаменск29│ │Охотхоз-во│ │Знаменск Home │
│Mikrotik │ │Mikrotik │ │ONT→OpenWrt→WG│
│1 камера │ │NVR+6 кам │ │UDM Pro → NVR │
└──────────┘ └──────────┘ └──────────────┘
```
---
## VPS-сервер
| Параметр | Значение |
|----------|----------|
| IP-адрес | 89.111.140.86 |
| ОС | Ubuntu 24.04.3 LTS, ядро 6.17.0-14-generic |
| SSH | Ключ /Users/ai/Downloads/id_rsa |
| WireGuard | wg0, порт 51820/UDP, IP 10.5.0.1/24 |
| Публичный ключ WG | v95Qiu4diw2EBghyQK4obptxnJ7EhAAUXxNflMS0DTw= |
| NetBird | 100.70.93.36 |
| Конфиг WG | /etc/wireguard/wg0.conf |
| Правила iptables | /etc/iptables/rules.v4 |
---
## Локация 1: Знаменское 29
### Оборудование
| Устройство | IP-адрес | Логин / Пароль |
|-----------|----------|----------------|
| Камера HiWatch (1 шт.) | 192.168.88.42 | admin / 1qaz!QAZ |
| Mikrotik | 192.168.88.1 | admin / admin01 |
### Подключение к VPS
| Параметр | Значение |
|----------|----------|
| WireGuard IP | 10.5.0.2 |
| Публичный ключ | 5ZFvQNSCyJwRn3IdLrxFzFh+BEFeejA8VzUoV5a++jY= |
| Локальная подсеть | 192.168.88.0/24 |
### Схема
Простейшая из трёх локаций. Mikrotik поднимает WireGuard-туннель напрямую к VPS.
Один роутер, одна камера.
```
Интернет → VPS (89.111.140.86)
│ DNAT
WireGuard туннель
Mikrotik (192.168.88.1)
Камера HiWatch (192.168.88.42)
```
### Внешний доступ
| Сервис | Адрес | Проброс на |
|--------|-------|-----------|
| Веб-интерфейс | http://89.111.140.86:8080 | 192.168.88.42:80 |
| SDK (iVMS-4200) | 89.111.140.86:8082 | 192.168.88.42:8000 |
| RTSP-поток | 89.111.140.86:8554 | 192.168.88.42:554 |
RTSP-ссылка: `rtsp://admin:1qaz!QAZ@89.111.140.86:8554/Streaming/Channels/101`
---
## Локация 2: Охотхозяйство
### Оборудование
| Устройство | IP-адрес | Логин / Пароль |
|-----------|----------|----------------|
| NVR HiWatch DS-N316(D) | 192.168.8.247 | admin / 1qaz!QAZ |
| Mikrotik | 192.168.8.1 | admin / 1qaz!QAZ |
| OpenWrt (NetBird хост) | 192.168.8.108 | root / 1qaz!QAZ |
| Камера 1 | 192.168.8.2 | — |
| Камера 2 | 192.168.8.3 | — |
| Камера 3 | 192.168.8.102 | — |
| Камера 4 | 192.168.8.110 | — |
| Камера 5 | 192.168.8.113 | — |
| Камера 6 | 192.168.8.120 | — |
### Подключение к VPS
| Параметр | Значение |
|----------|----------|
| WireGuard IP | 10.5.0.3 |
| Публичный ключ | zZ4UoWNwTxBODr8xZmoCREBL2zXJcmdcxKIPGp/xBC8= |
| Локальная подсеть | 192.168.8.0/24 |
### Схема
Mikrotik поднимает WireGuard-туннель к VPS. OpenWrt обеспечивает NetBird-доступ для удалённого управления.
На VPS DNAT пробрасывает порты как NVR, так и каждой камеры индивидуально.
```
Интернет → VPS (89.111.140.86)
│ DNAT
WireGuard туннель
Mikrotik (192.168.8.1)
┌─────┼──────────────────────┐
│ │ │
▼ ▼ ▼
NVR Камеры 1-6 OpenWrt (NetBird)
(.247) (.2,.3,.102,.110, (.108)
.113,.120)
```
### Внешний доступ к NVR
| Сервис | Адрес | Проброс на |
|--------|-------|-----------|
| Веб-интерфейс | http://89.111.140.86:8180 | 192.168.8.247:80 |
| SDK (iVMS-4200) | 89.111.140.86:8100 | 192.168.8.247:8000 |
| RTSP-поток | 89.111.140.86:8555 | 192.168.8.247:554 |
RTSP NVR (каналы 1-6):
- `rtsp://admin:1qaz!QAZ@89.111.140.86:8555/Streaming/Channels/101`
- `rtsp://admin:1qaz!QAZ@89.111.140.86:8555/Streaming/Channels/201`
- `rtsp://admin:1qaz!QAZ@89.111.140.86:8555/Streaming/Channels/301`
- `rtsp://admin:1qaz!QAZ@89.111.140.86:8555/Streaming/Channels/401`
- `rtsp://admin:1qaz!QAZ@89.111.140.86:8555/Streaming/Channels/501`
- `rtsp://admin:1qaz!QAZ@89.111.140.86:8555/Streaming/Channels/601`
### Внешний доступ к камерам напрямую
| Камера | IP | RTSP-порт VPS | SDK-порт VPS |
|--------|-----|--------------|-------------|
| 1 | 192.168.8.2 | 8561 | 8201 |
| 2 | 192.168.8.3 | 8562 | 8202 |
| 3 | 192.168.8.102 | 8563 | 8203 |
| 4 | 192.168.8.110 | 8564 | 8204 |
| 5 | 192.168.8.113 | 8565 | 8205 |
| 6 | 192.168.8.120 | 8566 | 8206 |
---
## Локация 3: Знаменское Home
### Оборудование
| Устройство | IP-адрес | Логин / Пароль |
|-----------|----------|----------------|
| NVR HiWatch DS-N316(D) | 192.168.1.123 | admin / 1qaz!QAZ |
| Huawei HG8245H (ONT) | 192.168.100.1 | root / admin |
| OpenWrt_3 (WAN) | 192.168.100.3 | root / 1qaz!QAZ |
| OpenWrt_3 (LAN) | 10.3.0.1 | — |
| OpenWrt_3 (NetBird) | 100.70.54.204 | — |
| UDM Pro (Ubiquiti) | 10.3.0.175 | SSH: k9gLi2C / xdjM0eQkIeZfmCFBYo9DP |
| Параметр NVR | Значение |
|-------------|----------|
| Серийный номер | DS-N316(D)1620250625CCRRGC0949997WCVU |
| Прошивка | V4.76.015 (build 250210) |
### Подключение к VPS
| Параметр | Значение |
|----------|----------|
| WireGuard IP | 10.5.0.4 |
| Публичный ключ | HRsAUPwDOh+36EoHrXVYY5t6YVdb612N+E+3I+o6RTw= |
| Приватный ключ | 4C9B6iHRRARQfFGBoXimIeznJKj8NX7QmUBW3O+pklE= |
| Локальные подсети | 192.168.1.0/24, 192.168.100.0/24 |
### Топология
Самая сложная из трёх локаций. Провайдерский GPON-терминал Huawei раздаёт интернет.
За ним OpenWrt_3 поднимает WireGuard-туннель к VPS. На LAN-стороне OpenWrt_3 стоит
Ubiquiti UDM Pro, за которым NVR на подсети 192.168.1.0/24.
```
Интернет
Huawei HG8245H ONT (192.168.100.1)
│ Провайдерский GPON-терминал
│ LAN: 192.168.100.0/24
OpenWrt_3
│ WAN: 192.168.100.3
│ LAN: 10.3.0.1
│ WireGuard wg0 → VPS (10.5.0.4 ↔ 10.5.0.1)
│ AmneziaWG awg0 (10.8.1.7)
│ NetBird wt0 (100.70.54.204)
│ Podkop + sing-box (обход блокировок)
│ LAN: 10.3.0.0/24
UDM Pro (10.3.0.175)
│ MAC: 9c:05:d6:ac:98:b8
│ LAN: 192.168.1.0/24
NVR HiWatch DS-N316(D) (192.168.1.123)
```
### Цепочка трафика
`Интернет → VPS (DNAT) → WireGuard → OpenWrt_3 → UDM Pro → NVR`
### Ключевые настройки
| Элемент | Настройка |
|---------|-----------|
| Маршрут на OpenWrt_3 | 192.168.1.0/24 via 10.3.0.175 (UCI persistent) |
| Файрвол OpenWrt_3 | Зона wg: masq=1, форвардинг wg↔lan, wg↔wan |
| VPS AllowedIPs | 10.5.0.4/32, 192.168.1.0/24, 192.168.100.0/24 |
| VPS маршруты | 192.168.1.0/24 via 10.5.0.4, 192.168.100.0/24 via 10.5.0.4 |
### Внешний доступ к NVR
| Сервис | Адрес | Проброс на |
|--------|-------|-----------|
| Веб-интерфейс | http://89.111.140.86:8280 | 192.168.1.123:80 |
| SDK (iVMS-4200) | 89.111.140.86:8282 | 192.168.1.123:8000 |
| RTSP-поток | 89.111.140.86:8284 | 192.168.1.123:554 |
RTSP-ссылка: `rtsp://admin:1qaz!QAZ@89.111.140.86:8284/Streaming/Channels/101`
---
## Сводная таблица портов VPS
Все внешние порты доступны по адресу 89.111.140.86:
| Порт | Протокол | Назначение | Локация |
|------|----------|-----------|---------|
| 51820 | UDP | WireGuard | Служебный |
| | | | |
| 8080 | TCP | Веб камеры | Знаменское 29 |
| 8082 | TCP+UDP | SDK камеры | Знаменское 29 |
| 8554 | TCP | RTSP камеры | Знаменское 29 |
| | | | |
| 8180 | TCP | Веб NVR | Охотхозяйство |
| 8100 | TCP | SDK NVR | Охотхозяйство |
| 8555 | TCP | RTSP NVR | Охотхозяйство |
| 82018206 | TCP | SDK камер 16 | Охотхозяйство |
| 85618566 | TCP | RTSP камер 16 | Охотхозяйство |
| | | | |
| 8280 | TCP | Веб NVR | Знаменское Home |
| 8282 | TCP | SDK NVR | Знаменское Home |
| 8284 | TCP | RTSP NVR | Знаменское Home |
---
## WireGuard-пиры VPS
| Локация | WG IP | Публичный ключ | AllowedIPs |
|---------|-------|---------------|------------|
| Знаменское 29 | 10.5.0.2 | 5ZFvQNSCyJwRn3Id... | 10.5.0.2/32, 192.168.88.0/24 |
| Охотхозяйство | 10.5.0.3 | zZ4UoWNwTxBODr8x... | 10.5.0.3/32, 192.168.8.0/24 |
| Знаменское Home | 10.5.0.4 | HRsAUPwDOh+36EoH... | 10.5.0.4/32, 192.168.1.0/24, 192.168.100.0/24 |
---
## Известные особенности
- **UDM Pro (Знаменское Home):** SSH-логин работает, но Network Application не запускается — веб-интерфейс управления Ubiquiti недоступен
- **Podkop/sing-box на OpenWrt_3:** TPROXY может мешать исходящему TCP. При диагностике проблем со связью рекомендуется временно останавливать: `service podkop stop; service sing-box stop`
- **NetBird на OpenWrt_3:** Маршрут NIIKN для 192.168.1.0/24 был деселектирован, чтобы не конфликтовать с WireGuard-маршрутом
- **Huawei ONT (192.168.100.1):** Иногда показывает "Waiting..." — перезагрузка решает проблему

View File

@@ -0,0 +1,110 @@
# NC Talk — Конфигурация для ГИИКН (niikn.com)
## Архитектура (актуально на 2026-03-03)
Klient (browser/mobile) --> HTTPS niikn.com (85.235.181.190)
MikroTik NAT --> NPM (192.168.1.22:443)
/ --> 192.168.1.200:11000 (Apache AIO, Nextcloud)
/standalone-signaling/ --> 89.111.131.105:8081 (VPS signaling)
Klient --> WSS niikn.com/standalone-signaling/ --> VPS 89.111.131.105:8081
Klient --> STUN 89.111.131.105:3478
Klient --> TURN 89.111.131.105:3478 (UDP+TCP)
## Компоненты
### 1. Nextcloud Talk (Spreed) - v22.0.9
- VM250 (192.168.1.200), NC AIO in Docker
- URL: https://niikn.com/apps/talk
- Docker: nextcloud-aio-nextcloud
- occ: sudo docker exec -u 33 nextcloud-aio-nextcloud php occ
- SSH: cloud@192.168.1.200 (пароль 1qaz!QAZ)
### 2. VPS 89.111.131.105 (SpaceWeb)
- Ubuntu 24.04, SSH: root / 1qaz!QAZ
- Все HPB-компоненты здесь
#### Signaling Server (nextcloud-spreed-signaling)
- /usr/local/bin/nextcloud-spreed-signaling
- Config: /etc/signaling/server.conf
- Systemd: signaling.service
- Port: 8081 (HTTP, проксируется через NPM с SSL)
- Backend URL: https://niikn.com
- Backend secret: eba8b0547b0285a475157911300720f99886fe1202a3ca98
- MCU: ws://127.0.0.1:8188 (Janus)
#### Janus WebRTC Gateway - v1.1.2
- Config: /etc/janus/janus.jcfg
- Transport: /etc/janus/janus.transport.websockets.jcfg
- Systemd: janus.service
- Port: 8188 (WebSocket, localhost only)
- NAT 1:1 mapping: 89.111.131.105
- RTP ports: 20000-20100
- ice_lite: true
#### Coturn (TURN/STUN) - v4.6.1
- Config: /etc/turnserver.conf
- Systemd: coturn.service
- Port: 3478 (TCP+UDP)
- Relay IP: 89.111.131.105
- Relay ports: 49152-49252
- Auth: use-auth-secret
- Static auth secret: ebf6a8ce0fd1629c2da55356169feea7ab118a18368c2550
- Realm: niikn.com
#### NATS - v2.10.24
- Systemd: nats-server
- Port: 4222 (localhost only)
#### Firewall (UFW)
- 22/tcp, 3478/tcp+udp, 8081/tcp, 8188/tcp
- 20000-20100/udp (Janus RTP)
- 49152-49252/udp (Coturn relay)
### 3. NPM (192.168.1.22)
- Docker: npm-app-1
- Proxy host #4: niikn.com -> 192.168.1.200:11000 (SSL, Let's Encrypt)
- Custom config: /data/compose/2/data/nginx/custom/server_proxy.conf
- location /standalone-signaling/ -> http://89.111.131.105:8081/ (WebSocket upgrade, timeout 3600s)
## Настройки NC Talk (spreed)
signaling_servers: server=https://niikn.com/standalone-signaling/, secret=eba8b0547b0285a475157911300720f99886fe1202a3ca98
stun_servers: 89.111.131.105:3478, stun.nextcloud.com:443
turn_servers: server=89.111.131.105:3478, protocols=udp,tcp
## Управление через Некстклауд API
Читать nastroyki:
curl -sk -u "admin:1qaz%21QAZ" "https://niikn.com/ocs/v2.php/apps/spreed/api/v3/signaling/settings" -H "OCS-APIRequest: true"
Обновить signaling:
curl -sk -u "admin:1qaz%21QAZ" -X POST "https://niikn.com/ocs/v2.php/apps/provisioning_api/api/v1/config/apps/spreed/signaling_servers" -H "OCS-APIRequest: true" -H "Content-Type: application/x-www-form-urlencoded" --data-urlencode "value=..."
## Диагностика
Проверка signaling:
curl -sk https://niikn.com/standalone-signaling/api/v1/welcome
Проверка WebSocket:
curl -sk --http1.1 -i -N -H 'Connection: Upgrade' -H 'Upgrade: websocket' -H 'Sec-WebSocket-Version: 13' -H 'Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==' https://niikn.com/standalone-signaling/spreed
Проверка сервисов на VPS:
sshpass -p '1qaz!QAZ' ssh root@89.111.131.105 "systemctl status coturn janus signaling --no-pager"
Логи signaling:
ssh root@89.111.131.105 "journalctl -u signaling -f"
## История изменений
### 2026-03-03
- VPS 89.111.131.105 переустановлен (SpaceWeb reset при добавлении SSH ключа)
- Заново установлены: coturn 4.6.1, Janus 1.1.2, NATS v2.10.24, signaling (из исходников)
- Первоначально signaling URL был http://89.111.131.105:8081 — mixed content, браузер блокировал WS
- Создан NPM custom config для reverse proxy /standalone-signaling/ с WebSocket upgrade
- URL переключен на https://niikn.com/standalone-signaling/
- Исправлен формат TURN URLs (убран дубль turn: prefix)
### 2026-03-02
- Миграция NC AIO на VM250
- Баг: reverse-proxy.config.php перенаправлял на new.niikn.com — исправлено
- NC Talk бот (LXC 133) настроен: webhook, pairing, ролевая модель

View File

@@ -0,0 +1,268 @@
# NIIKN — Журнал изменений
---
## 2026-02-24 — Подготовка VM108 (new.niikn.com) к продакшену
### Исправление Nextcloud AIO
- Контейнер `nextcloud-aio-nextcloud` был **unhealthy** — PHP-FPM не стартовал из-за зависшего процесса FTS-индексации
- Создан флаг `/mnt/ncdata/fts-index.done`, убит блокирующий процесс PID 255
- Контейнер поднялся, сайт `https://new.niikn.com` стал доступен
### Сетевая конфигурация VM108
- Назначен статический IP `192.168.1.200` (было DHCP 192.168.1.147)
- Файл: `/etc/netplan/99-static.yaml`
- На MikroTik (192.168.1.1): добавлена статическая DHCP-аренда, проброс Talk-порта 3479 (TCP/UDP), отключён UPnP
### UFW Firewall
- Установлен и настроен UFW
- Скрипт: `/home/cloud/setup-firewall.sh`
- Правила: SSH (22), Talk TURN (3479), Nextcloud Apache только от NPM (11000), LAN-доступ к admin-портам, Proxmox (192.168.1.201), Tailscale (wt0)
### Исправления конфигурации Nextcloud
- `trusted_proxies`: добавлен IP NPM (192.168.1.22)
- `forwarded_for_headers`: настроен для корректного определения IP клиентов
- `maintenance_window_start`: исправлено с `100` на `1` (1:00 UTC)
### NPM (Nginx Proxy Manager)
- Обновлён вручную пользователем: upstream изменён с 192.168.1.147 на 192.168.1.200
---
## 2026-02-24 — SMB LXC (192.168.1.79, LXC 110)
### Исправление прав файлов
- 104,645 файлов принадлежали root → исправлено: `chown -R admin:admin /srv/samba/share`
- Включена SSH-аутентификация по паролю
- Доступ: `admin / 1qaz!QAZ`
---
## 2026-02-24 — Groupfolders (VM100 → SMB)
### Состояние данных (проверено 2026-02-24)
| Папка | VM100 | SMB | Статус |
|-------|-------|-----|--------|
| Общий ресурс | 1.5 TB, 219,396 файлов | 1.5 TB, 227,960 файлов | ✅ SMB актуальнее |
| ГИКЭ_ВОКН_Москва | 1.2 TB, 238,903 файлов | 1.2 TB, 238,903 файлов | ✅ идентично |
- Данные на SMB уже были актуальны — дополнительное копирование не потребовалось
- SMB содержит более полную копию «Общий ресурс» (227,960 файлов vs 219,396 на VM100 — разница: удалённые пользователями файлы)
---
## 2026-02-2425 — Миграция пользователей VM100 → VM108
### Метод
1. Скопированы хэши паролей из БД VM100 (PostgreSQL) → VM108 одним запросом
2. Файлы перенесены через `rsync -a --rsync-path="sudo rsync"` по SSH
3. После переноса — `occ files:scan` для каждого пользователя
### Перенесённые пользователи (файлы)
| Пользователь | Объём | Время | Статус |
|---|---|---|---|
| op.shishova@yandex.ru (Оксана Шишова) | 734 GB | ~3.5ч | ✅ |
| 15101995ol@gmail.com | 45 MB | <1 мин | ✅ |
| office-msk-exp@mail.ru | 171 MB | <1 мин | ✅ |
| 4sa56621@gmail.com | 2.5 GB | 21 сек | ✅ |
| 19761113@mail.ru (Lentovcky) | 21 GB | 6 мин | ✅ |
| maksimmaul@gmail.com | 5.3 GB | 1.5 мин | ✅ |
| Starodubtseva.t.97@mail.ru | 17 GB | 4 мин | ✅ |
| ulyanova140@gmail.com | 59 GB | 14 мин | ✅ |
| ali6507@yandex.ru | 16 GB | 6 мин | ✅ |
| olga_gorkova_arch@mail.ru | 1.6 GB | 15 сек | ✅ |
| Dyomina Elizaveta | 429 MB | <1 мин | ✅ |
| Zlotya Vladlena | 209 MB | <1 мин | ✅ |
| + ~80 пользователей | ~35-38 MB | <1 мин | ✅ |
### Пропущены (системные / не нужны)
- `admin`, `test`, `test2`, `Guest001`
### Итог миграции
- Старт: 2026-02-24 21:27
- Завершение: 2026-02-25 23:42
- Файлов перенесено: **всего ~120+ GB крупных данных + мелкие**
- Пароли: скопированы для всех ~90 пользователей
- files:scan: выполнен для 24 пользователей с новыми данными
- Ошибок: 0
### Инструменты миграции (хранятся на VM108)
- `/tmp/migrate-users.sh` — основной скрипт миграции
- `/tmp/prox_key` — SSH-ключ для доступа к VM100
- `/tmp/migrate-users.log` — полный лог последнего запуска
---
## 2026-02-25 — Groupfolders как Local External Storage (VM108)
### Архитектурное решение
Выбран **Вариант 2**: SMB смонтирован локально на VM108 и подключён как **Local** External Storage в Nextcloud AIO.
Преимущества перед прямым SMB/CIFS из Nextcloud:
- Скорость: доступ через локальную файловую систему, без overhead SMB-протокола внутри контейнера
- Groupfolders вынесены за периметр AIO Backup — не нагружают резервное копирование 2.7 TB лишними данными
- Хранилище SMB (LXC 110) живёт отдельно и независимо от AIO
### Настройка монтирования SMB на VM108
**Файл учётных данных** `/etc/samba/smb-niikn.creds` (chmod 600):
```
username=admin
password=1qaz!QAZ
```
**Запись в `/etc/fstab`:**
```
//192.168.1.79/share /mnt/ncsmb cifs credentials=/etc/samba/smb-niikn.creds,uid=33,gid=33,file_mode=0770,dir_mode=0770,vers=3.0,_netdev,nofail 0 0
```
- `uid=33,gid=33` — www-data (владелец файлов внутри контейнера Nextcloud)
- `_netdev,nofail` — монтируется только после сети, не блокирует загрузку при отсутствии SMB
**Монтирование:**
```bash
sudo apt install cifs-utils
sudo mount -a
```
### Видимость внутри контейнера Nextcloud AIO
`NEXTCLOUD_MOUNT=/mnt` уже был задан в AIO — весь `/mnt` хоста пробрасывается в контейнер.
Однако propagation=`rprivate`: новые подмонтирования, сделанные **после** старта контейнера, не видны автоматически.
**Решение:** `docker restart nextcloud-aio-nextcloud` после монтирования `/mnt/ncsmb`.
### External Storage в Nextcloud (итоговая конфигурация)
| ID | Путь в NC | Тип | Источник на хосте | Группа |
|----|-----------|-----|-------------------|--------|
| 1 | `/Локально` | Local | `/mnt/ncdata` | admin |
| 4 | `/Общий ресурс` | Local | `/mnt/ncsmb/__groupfolders/Общий ресурс` | НИИКН |
| 5 | `/ГИКЭ_ВОКН_Москва` | Local | `/mnt/ncsmb/__groupfolders/ГИКЭ_ВОКН_Москва` | НИИКН |
Команды создания:
```bash
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:create \
'Общий ресурс' local null::null \
--config=datadir='/mnt/ncsmb/__groupfolders/Общий ресурс'
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:create \
'ГИКЭ_ВОКН_Москва' local null::null \
--config=datadir='/mnt/ncsmb/__groupfolders/ГИКЭ_ВОКН_Москва'
# Назначить группу НИИКН
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:applicable --add-group=НИИКН 4
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:applicable --add-group=НИИКН 5
```
Старый External Storage типа SMB/CIFS (ID=2, `/SMB`) удалён.
---
## 2026-02-25 — Установка Mailcow (VM106, 192.168.1.128)
### Конфигурация VM
| Параметр | Значение |
|----------|----------|
| Proxmox ID | VM106 |
| OS | Ubuntu 24.04.4 LTS Server (cloud image) |
| IP | 192.168.1.128 (статический) |
| CPU | 4 vCPU |
| RAM | 8 GB |
| Диск | 60 GB |
| SSH пользователь | cloud / 1qaz!QAZ |
| Mailcow hostname | mail.niikn.com |
| Timezone | Europe/Moscow |
### Подготовка VM
- Исходная VM106 была с Ubuntu Desktop — переустановлена через Proxmox
- Использован Ubuntu 24.04 Server cloud image (`noble-server-cloudimg-amd64.img`)
- Диск расширен до 60 GB, cloud-init настроен через Proxmox (user=cloud, NOPASSWD sudo, SSH key)
- Статический IP назначен через `/etc/netplan/99-static.yaml`
### Docker (официальный репозиторий)
```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | install -m 0755 /etc/apt/keyrings/docker.asc
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin git curl
```
### Mailcow установка
```bash
git clone https://github.com/mailcow/mailcow-dockerized /opt/mailcow-dockerized
cd /opt/mailcow-dockerized
# Сгенерирован конфиг (MAILCOW_HOSTNAME=mail.niikn.com, TZ=Europe/Moscow)
docker compose pull
docker compose up -d
```
### UFW правила
Открытые порты: 22 (SSH), 25 (SMTP), 80 (HTTP), 443 (HTTPS), 465 (SMTPS), 587 (Submission), 993 (IMAPS), 995 (POP3S), 4190 (Sieve)
### Доступ к веб-интерфейсу
- URL: `https://mail.niikn.com` (внешний) или `http://192.168.1.128` (локальный)
- Логин: `admin` / `moohoo` (сброшен вручную, сменить после входа)
### Важно: формат пароля admin в Mailcow
Mailcow хранит пароли admin в формате **SSHA256** (Dovecot), а не bcrypt.
При ручном сбросе пароля через БД использовать только `doveadm pw`:
```bash
cd /opt/mailcow-dockerized
# Сброс пароля admin через официальный скрипт (интерактивный):
bash helper-scripts/mailcow-reset-admin.sh
# Или вручную через doveadm + MySQL:
HASH=$(docker exec mailcowdockerized-dovecot-mailcow-1 doveadm pw -s SSHA256 -p "НовыйПароль" | tr -d '\r')
docker exec mailcowdockerized-mysql-mailcow-1 mysql -u mailcow -p<DBPASS> mailcow \
-e "UPDATE admin SET password='${HASH}' WHERE username='admin';"
```
DBPASS находится в `/opt/mailcow-dockerized/mailcow.conf` (DBPASS=8VcUSgpKEOoxNojIZBRJx0FzMxzm)
### Статус контейнеров
Все 18 контейнеров запущены: nginx, postfix, dovecot, rspamd, clamd, mysql, redis, unbound, sogo, php-fpm, acme, watchdog и др.
### Что нужно сделать для завершения настройки
1. **DNS записи** для niikn.com (у регистратора):
- `A mail.niikn.com → <белый IP>`
- `MX niikn.com → mail.niikn.com (приоритет 10)`
- `TXT niikn.com → v=spf1 mx ~all`
- `TXT _dmarc.niikn.com → v=DMARC1; p=none; rua=mailto:admin@niikn.com`
- DKIM — получить после входа в Mailcow → Конфигурация → ARC/DKIM
2. **PTR запись (rDNS)** — запросить у провайдера: `<белый IP> → mail.niikn.com`
3. **MikroTik** — проброс портов 25, 80, 443, 465, 587, 993, 995, 4190 → 192.168.1.128
4. **Статическая DHCP-аренда** на MikroTik для MAC `BC:24:11:7E:B7:14` → 192.168.1.128
5. **Let's Encrypt** — автоматически получит SSL после настройки DNS
6. **Сменить пароль admin** в веб-интерфейсе
---
## 2026-02-25 — Проверка установки Nextcloud AIO (VM108)
### Метод установки
- Nextcloud AIO запущен через `docker run` с `--label com.docker.compose.project=nextcloud-aio`**официальный метод**
- Docker Compose файлов на системе нет
- Mastercontainer (`nextcloud-aio-mastercontainer`) сам управляет остальными контейнерами через Docker socket (`:ro`)
- Создан: `2026-02-21T10:09:26` — работает стабильно
### Portainer
- Работает на VM108 как отдельный контейнер (`portainer/portainer-ce:latest`)
- Видит контейнеры AIO как «стек nextcloud-aio» (по label), но **не создавал и не управляет** ими
- Имеет полный доступ к Docker socket — использовать только для мониторинга
### Состояние контейнеров (проверено 2026-02-25)
Все 13 контейнеров AIO — **healthy**, uptime 40+ часов:
`apache`, `nextcloud`, `database`, `redis`, `fulltextsearch`, `onlyoffice`, `imaginary`, `talk`, `talk-recording`, `whiteboard`, `notify-push`, `docker-socket-proxy`, `mastercontainer`
### Важно
- Управление Nextcloud AIO — только через `https://new.niikn.com:8080` или `docker exec -u www-data nextcloud-aio-nextcloud php occ`
- Никогда не перезапускать и не изменять контейнеры AIO через Portainer
---
## Что ещё нужно сделать
- [ ] Настроить AIO Backup на VM108
- [ ] Настроить SMTP для уведомлений Nextcloud (использовать mail.niikn.com после настройки DNS)
- [ ] Настроить Groupfolders как полноценное приложение (сейчас — Local External Storage через /mnt/ncsmb)
- [ ] Проверить работу пользователей на new.niikn.com
- [ ] Решить судьбу Linkwarden и FileBrowser (переносить или нет)
- [ ] Зафиксировать статический IP для VM100 (сейчас DHCP 192.168.1.245)

View File

@@ -0,0 +1,117 @@
---
## VM100 — Cloud-nc-AIO (старый Nextcloud, 192.168.1.245)
| Параметр | Значение |
|----------|----------|
| OS | Ubuntu 24.04.4 LTS |
| CPU | 6 cores |
| RAM | 32 GB |
| SSH user | cloud / 1qaz!QAZ |
| Tailscale IP | 100.70.117.21 |
### Nextcloud (старый)
| Параметр | Значение |
|----------|----------|
| Версия | Nextcloud **30.0.10** |
| Домен | https://niikn.com |
| AIO URL | http://192.168.1.245:8080 |
| Пользователей | **102** |
| Данные | /mnt/nc-data (3.7 TB из 4.1 TB, **97% заполнено!**) |
| ОС диск | /dev/sda2 197 GB, 68% заполнено |
### Дополнительные сервисы VM100
| Сервис | Порт | Описание |
|--------|------|----------|
| OnlyOffice | :26614 | Отдельный Document Server |
| Linkwarden | :3000 | Менеджер закладок |
| FileBrowser | :8081 | Веб-файловый менеджер |
| Portainer | — | Управление Docker |
### ⚠️ Важно для миграции
- Диск данных заполнен на **97%** — нужно расширить хранилище на VM108 перед переносом
- Разница версий: VM100 — NC 30.0.10 → VM108 — NC 32.0.6 (нужен поэтапный апгрейд через 31.x)
- На VM100 есть сервисы которых нет на VM108: Linkwarden, FileBrowser
---
## VM100 — Cloud-nc-AIO (старый Nextcloud, 192.168.1.245)
| Параметр | Значение |
|----------|----------|
| OS | Ubuntu 24.04.4 LTS |
| CPU | 6 cores |
| RAM | 32 GB |
| SSH user | cloud / 1qaz!QAZ |
| Tailscale IP | 100.70.117.21 |
### Nextcloud (старый)
| Параметр | Значение |
|----------|----------|
| Версия | Nextcloud **30.0.10** |
| Домен | https://niikn.com |
| AIO URL | http://192.168.1.245:8080 |
| Пользователей | **102** |
| Данные | /mnt/nc-data (3.7 TB из 4.1 TB, **97% заполнено!**) |
| ОС диск | /dev/sda2 197 GB, 68% заполнено |
### Дополнительные сервисы VM100
| Сервис | Порт | Описание |
|--------|------|----------|
| OnlyOffice | :26614 | Отдельный Document Server |
| Linkwarden | :3000 | Менеджер закладок |
| FileBrowser | :8081 | Веб-файловый менеджер |
| Portainer | — | Управление Docker |
### Важно для миграции
- Диск данных заполнен на **97%** — нужно расширить хранилище на VM108 перед переносом
- Разница версий: NC 30.0.10 → NC 32.0.6 (при миграции через AIO backup — апгрейд автоматический)
- На VM100 есть сервисы которых нет на VM108: Linkwarden, FileBrowser — решить: переносить или нет
---
## Миграция Groupfolders (VM100 → SMB → VM108)
### Структура groupfolders на VM100
| ID на диске | Название в Nextcloud | Размер | Файлов |
|-------------|----------------------|--------|--------|
| `/mnt/nc-data/__groupfolders/1/` | **Общий ресурс** | 1.5 TB | 219,396 |
| `/mnt/nc-data/__groupfolders/2/` | **ГИКЭ_ВОКН_Москва** | 1.2 TB | 238,903 |
### Состояние на SMB (192.168.1.79) — проверено 2026-02-24
```
/srv/samba/share/__groupfolders/
Общий ресурс/ — 1.5 TB, 227,960 файлов
ГИКЭ_ВОКН_Москва/ — 1.2 TB, 238,903 файлов
versions/ — 17 GB
```
| Папка | VM100 файлов | SMB файлов | Свежий файл | Статус |
|-------|-------------|------------|-------------|--------|
| Общий ресурс | 219,396 | **227,960** | 2026-02-19 (совпадает) | ⚠️ на SMB больше на 8,564 файла (удалённые с VM100) |
| ГИКЭ_ВОКН_Москва | 238,903 | 238,903 | 2026-01-11 (совпадает) | ✅ идентично |
**Вывод:** SMB содержит более полную копию. Для миграции в VM108 использовать данные с SMB.
### Скрипт rsync для обновления (на VM100)
Файл: `/tmp/rsync-groupfolders.sh`
Запуск синхронизации VM100 → SMB:
```bash
ssh -i /tmp/prox_key cloud@192.168.1.245
bash /tmp/run-sudo.sh "nohup bash /tmp/rsync-groupfolders.sh &"
# Проверка прогресса:
bash /tmp/run-sudo.sh "cat /tmp/rsync-1.log | tr '\r' '\n' | tail -3"
bash /tmp/run-sudo.sh "cat /tmp/rsync-2.log | tr '\r' '\n' | tail -3"
```
> Примечание: rsync без `--delete` — удалённые файлы на VM100 на SMB остаются.
### External Storage в Nextcloud AIO (VM108)
| Mount ID | Путь в NC | Тип | Хост | Доступ |
|----------|-----------|-----|------|--------|
| 1 | `/Локально` | Local | `/mnt/ncdata` | группа admin |
| 2 | `/SMB` | SMB/CIFS | `192.168.1.79/share` | Все пользователи |
Groupfolders доступны в NC как: `/SMB/__groupfolders/Общий ресурс/` и `/SMB/__groupfolders/ГИКЭ_ВОКН_Москва/`
> ⚠️ Это External Storage, не настоящие Groupfolders. При финальной миграции настроить приложение **Groupfolders** и создать группы.