diff --git a/projects/dttb/netbird-inventory.md b/projects/dttb/netbird-inventory.md new file mode 100644 index 0000000..072326d --- /dev/null +++ b/projects/dttb/netbird-inventory.md @@ -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 дн. diff --git a/projects/dttb/nextcloud-talk-bot/README.md b/projects/dttb/nextcloud-talk-bot/README.md index f968607..80a6292 100644 --- a/projects/dttb/nextcloud-talk-bot/README.md +++ b/projects/dttb/nextcloud-talk-bot/README.md @@ -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 (сохранение истории между перезапусками) diff --git a/projects/dttb/video-surveillance-report.md b/projects/dttb/video-surveillance-report.md new file mode 100644 index 0000000..8965a73 --- /dev/null +++ b/projects/dttb/video-surveillance-report.md @@ -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 | Охотхозяйство | +| 8201–8206 | TCP | SDK камер 1–6 | Охотхозяйство | +| 8561–8566 | TCP | RTSP камер 1–6 | Охотхозяйство | +| | | | | +| 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..." — перезагрузка решает проблему diff --git a/projects/niikn/NC-Talk-Setup.md b/projects/niikn/NC-Talk-Setup.md new file mode 100644 index 0000000..84b2337 --- /dev/null +++ b/projects/niikn/NC-Talk-Setup.md @@ -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, ролевая модель diff --git a/projects/niikn/NIIKN-ChangeLog.md b/projects/niikn/NIIKN-ChangeLog.md new file mode 100644 index 0000000..05366a0 --- /dev/null +++ b/projects/niikn/NIIKN-ChangeLog.md @@ -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-24–25 — Миграция пользователей 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 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) diff --git a/projects/niikn/NIIKN-Infrastructure.md b/projects/niikn/NIIKN-Infrastructure.md new file mode 100644 index 0000000..ca92d35 --- /dev/null +++ b/projects/niikn/NIIKN-Infrastructure.md @@ -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** и создать группы.