НИИКН: восстановление AIO, план миграции Groupfolders, запуск rsync
- NC AIO контейнеры восстановлены, Talk signaling работает - Исправлена ссылка AIO auto-login (192.168.1.200:8080) - Бот переименован в "НИИКН помощник", SSH доступ настроен - Очищена корзина admin (2.2 TB), расширен диск ncdata до 4.4 TB - Запущен rsync groupfolders VM100→VM108 (~2.8 TB, ~4ч) - Добавлен полный план миграции с правами и ACL Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -311,15 +311,77 @@ VM 192.168.1.200 также добавлен cloud-init диск (ide0: local-lv
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-03 — Восстановление NC AIO и подготовка миграции Groupfolders
|
||||
|
||||
### NC AIO — восстановление контейнеров
|
||||
- Все контейнеры были остановлены при диагностике Talk HPB
|
||||
- Запущены через AIO API (POST /api/docker/start с CSRF-токеном)
|
||||
- Все 13 контейнеров healthy, NC доступен по https://niikn.com
|
||||
|
||||
### NC Talk — signaling восстановлен автоматически
|
||||
- AIO при старте прописал signaling_servers:
|
||||
- `https://new.niikn.com/standalone-signaling/`
|
||||
- `https://niikn.com/standalone-signaling/`
|
||||
- secret: `eba8b0547b0285a475157911300720f99886fe1202a3ca98`
|
||||
|
||||
### AIO auto-login из NC → исправлена ссылка
|
||||
- Проблема: кнопка "Open AIO Interface" в NC admin вела на `localhost:8080` (нерабочая)
|
||||
- Причина: mastercontainer ставит AIO_URL из Host заголовка при API-вызове /api/docker/start
|
||||
- Исправление: патч `Admin.php` в контейнере nextcloud-aio-nextcloud — захардкожен `192.168.1.200:8080`
|
||||
- Файл: `/var/www/html/apps/nextcloud-aio/lib/Settings/Admin.php`
|
||||
- AIO_TOKEN: `4046205930d1fe250a29c6a50919083fcd61a9fe5feefec9`
|
||||
- AIO пароль: `exemplary spender jolly rascal tipper crestless goes greasily`
|
||||
- **Примечание:** патч сбросится при обновлении AIO контейнеров
|
||||
|
||||
### Бот НИИКН — переименование и SSH
|
||||
- Telegram бот переименован: "Максимка" → "НИИКН помощник" (@maximka_assistant_bot)
|
||||
- Обновлены IDENTITY.md и SOUL.md на LXC 133
|
||||
- Добавлено правило: бот спрашивает подтверждение перед изменениями инфраструктуры
|
||||
- SSH ключ `niikn-helper@clawdbot-1` добавлен на:
|
||||
- Proxmox НИИКН (192.168.1.201) ✅
|
||||
- NC AIO VM (192.168.1.200) ✅
|
||||
- Старый NC VM 100 (192.168.1.245) ✅
|
||||
|
||||
### Корзина admin — очистка 2.2 TB
|
||||
- Обнаружено: admin/files_trashbin содержал 2.2 TB удалённых 23.02 данных:
|
||||
- `__groupfolders` (2.2 TB) — старая копия групповых папок
|
||||
- `bitrix` (32 GB) — бэкап Битрикс
|
||||
- Очищено через `occ trashbin:cleanup admin`
|
||||
- Свободное место ncdata: 626 GB → **3.3 TB**
|
||||
|
||||
### Диск ncdata (VM 108) — расширение
|
||||
- Пользователь увеличил виртуальный диск sdb до 4.4 TB
|
||||
- `growpart /dev/sdb 1` + `resize2fs /dev/sdb1`
|
||||
- Результат: 4.4 TB, свободно 3.3 TB
|
||||
|
||||
### Миграция Groupfolders — запущено копирование
|
||||
- Источник: VM 100 (192.168.1.245), `/mnt/nc-data/__groupfolders/`
|
||||
- Приёмник: VM 108 (192.168.1.200), `/mnt/ncdata/__groupfolders/`
|
||||
- SSH ключ VM 108 → VM 100 настроен
|
||||
- Запущен `rsync -avP --partial` через nohup (не прервётся при разрыве SSH)
|
||||
- Скорость: ~195 MB/s, ожидаемое время: ~4 часа
|
||||
- Лог: `/root/rsync-groupfolders.log` на VM 108
|
||||
- Данные: 2.8 TB (1.5 TB Общий ресурс + 1.2 TB ГИКЭ_ВОКН_Москва + versions/trash)
|
||||
- План миграции с правами: `projects/niikn/groupfolders-migration.md`
|
||||
|
||||
### Права Groupfolders — выгружены из старого NC
|
||||
- Полный дамп таблиц: oc_group_folders, oc_group_folders_groups, oc_group_folders_manage, oc_group_folders_acl
|
||||
- ACL привязаны к fileid → маппинг путей задокументирован
|
||||
- Все группы (НИИКН, admin, Редактирование, Фотофиюксация ВОКН Москва, ДКН, test) уже существуют на новом NC
|
||||
|
||||
---
|
||||
|
||||
## Что ещё нужно сделать
|
||||
|
||||
- [x] ~~Перезапустить AIO контейнеры Talk → восстановить signaling_servers~~
|
||||
- [x] ~~Настроить Groupfolders как полноценное приложение~~ (в процессе — rsync идёт)
|
||||
- [ ] **После rsync:** создать Groupfolders, назначить права, scan (см. groupfolders-migration.md)
|
||||
- [ ] **После rsync:** удалить External Storage ID 4 и 5 (SMB пока не удалять)
|
||||
- [ ] Настроить 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)
|
||||
- [ ] Перезапустить AIO контейнеры Talk → восстановить signaling_servers
|
||||
- [ ] Проверить SSH бота к NC AIO после перезагрузки VM
|
||||
- [ ] Удалить cloud-init диск ide0 с VM 108 (если не нужен)
|
||||
- [ ] Установить и настроить Matrix на Proxmox НИИКН (VM 107 уже есть)
|
||||
|
||||
215
projects/niikn/groupfolders-migration.md
Normal file
215
projects/niikn/groupfolders-migration.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# Миграция Groupfolders: VM 100 → VM 108
|
||||
|
||||
> **Дата:** 03.03.2026
|
||||
> **Статус:** Подготовлено, ожидает увеличения диска
|
||||
|
||||
---
|
||||
|
||||
## Источник: VM 100 (Cloud-NIIKN, старый NC)
|
||||
|
||||
- IP: 192.168.1.245
|
||||
- NC data: `/mnt/nc-data/` (4.1 TB диск sdb, занято 3.7 TB)
|
||||
- SSH: root, ключ niikn-helper@clawdbot-1 (добавлен 03.03.2026)
|
||||
- Groupfolders path: `/mnt/nc-data/__groupfolders/`
|
||||
|
||||
### Данные
|
||||
|
||||
| ID | Путь | Название | Размер |
|
||||
|----|------|----------|--------|
|
||||
| 1 | `__groupfolders/1/` | Общий ресурс | 1.5 TB |
|
||||
| 2 | `__groupfolders/2/` | ГИКЭ_ВОКН_Москва | 1.2 TB |
|
||||
| — | `__groupfolders/versions/` | Версии файлов | 84 GB |
|
||||
| — | `__groupfolders/trash/` | Корзина | 7.6 GB |
|
||||
| — | `__groupfolders/onlyoffice/` | OnlyOffice locks | 213 MB |
|
||||
| **Итого** | | | **~2.8 TB** |
|
||||
|
||||
### Права (oc_group_folders_groups)
|
||||
|
||||
| Папка | Группа | Permissions | Расшифровка |
|
||||
|-------|--------|-------------|-------------|
|
||||
| 1 (Общий ресурс) | НИИКН | 23 | read, write, share |
|
||||
| 1 (Общий ресурс) | admin | 31 | read, write, share, delete |
|
||||
| 1 (Общий ресурс) | Редактирование | 31 | read, write, share, delete |
|
||||
| 2 (ГИКЭ_ВОКН_Москва) | Фотофиюксация ВОКН Москва | 23 | read, write, share |
|
||||
| 2 (ГИКЭ_ВОКН_Москва) | admin | 31 | read, write, share, delete |
|
||||
| 2 (ГИКЭ_ВОКН_Москва) | test | 23 | read, write, share |
|
||||
| 2 (ГИКЭ_ВОКН_Москва) | ДКН | 23 | read, write, share |
|
||||
|
||||
### Управление (oc_group_folders_manage)
|
||||
|
||||
| Папка | Тип | Управляющий |
|
||||
|-------|-----|-------------|
|
||||
| 1 | group | admin |
|
||||
| 2 | group | admin |
|
||||
|
||||
### ACL (oc_group_folders_acl) — Advanced Permissions
|
||||
|
||||
| Папка/FileID | Тип | Пользователь | Mask | Permissions |
|
||||
|--------------|-----|-------------|------|-------------|
|
||||
| 523107 | user | ulyanova140@gmail.com | 31 | 31 (full) |
|
||||
| 2171076 | user | maksimmaul@gmail.com | 0 | 0 (deny) |
|
||||
| 3381694 | user | admin | 0 | 0 (deny) |
|
||||
| 1227009 | user | ccpupt@mail.ru | 15 | 15 |
|
||||
| 3684395 | user | aan@labexp.ru | 13 | 13 |
|
||||
| 1345540 | user | op.shishova@yandex.ru | 31 | 31 (full) |
|
||||
| 1345540 | user | 19761113@mail.ru | 31 | 31 (full) |
|
||||
| 1345628 | user | 19761113@mail.ru | 31 | 31 (full) |
|
||||
| 1345628 | user | op.shishova@yandex.ru | 31 | 31 (full) |
|
||||
| 1345628 | user | admin | 31 | 31 (full) |
|
||||
|
||||
> **Примечание:** ACL привязаны к fileid, которые на новом NC будут другими. ACL нужно будет переназначить после `files:scan` по путям файлов.
|
||||
|
||||
### Настройки папок (oc_group_folders)
|
||||
|
||||
| folder_id | mount_point | quota | acl |
|
||||
|-----------|-------------|-------|-----|
|
||||
| 1 | Общий ресурс | -3 (unlimited) | 1 (enabled) |
|
||||
| 2 | ГИКЭ_ВОКН_Москва | -4 (unlimited) | 1 (enabled) |
|
||||
|
||||
---
|
||||
|
||||
## Приёмник: VM 108 (Nextclaud-AIO, новый NC)
|
||||
|
||||
- IP: 192.168.1.200
|
||||
- NC data: `/mnt/ncdata/` (sdb1, 3.9 TB, занято 3.1 TB, **свободно 626 GB**)
|
||||
- Groupfolders app: **установлен** (v20.1.12)
|
||||
- Группы: НИИКН, admin, Редактирование, Фотофиюксация ВОКН Москва, ДКН, test — **все есть**
|
||||
- Текущие External Storage (ID 4, 5) нужно удалить перед миграцией
|
||||
|
||||
---
|
||||
|
||||
## План миграции
|
||||
|
||||
### Шаг 0: Увеличить диск
|
||||
- Пользователь увеличивает `/mnt/ncdata` (sdb1) минимум на 3 TB
|
||||
- После увеличения: `resize2fs /dev/sdb1`
|
||||
|
||||
### Шаг 1: Копирование данных (10-15 часов)
|
||||
```bash
|
||||
# На VM 108:
|
||||
rsync -avP --info=progress2 \
|
||||
root@192.168.1.245:/mnt/nc-data/__groupfolders/ \
|
||||
/mnt/ncdata/data/__groupfolders/
|
||||
|
||||
# Исправить владельца
|
||||
chown -R www-data:www-data /mnt/ncdata/data/__groupfolders/
|
||||
```
|
||||
|
||||
### Шаг 2: Удалить External Storage
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:delete 4
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ files_external:delete 5
|
||||
```
|
||||
|
||||
### Шаг 3: Создать Groupfolders
|
||||
```bash
|
||||
# Создать папки (ID будут 1 и 2 если первые)
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:create "Общий ресурс"
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:create "ГИКЭ_ВОКН_Москва"
|
||||
|
||||
# Назначить группы с правами
|
||||
# Папка 1 — Общий ресурс
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 1 НИИКН write share
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 1 admin write share delete
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 1 Редактирование write share delete
|
||||
|
||||
# Папка 2 — ГИКЭ_ВОКН_Москва
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 "Фотофиюксация ВОКН Москва" write share
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 admin write share delete
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 test write share
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:group 2 ДКН write share
|
||||
|
||||
# Включить ACL
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:acl 1 true
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:acl 2 true
|
||||
|
||||
# Управление — admin
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:manage 1 group admin
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:manage 2 group admin
|
||||
|
||||
# Квоты unlimited
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:quota 1 unlimited
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:quota 2 unlimited
|
||||
```
|
||||
|
||||
### Шаг 4: Сканирование файлов
|
||||
```bash
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:scan 1
|
||||
docker exec -u www-data nextcloud-aio-nextcloud php occ groupfolders:scan 2
|
||||
```
|
||||
|
||||
### Шаг 5: Восстановить ACL по путям
|
||||
|
||||
ACL привязаны к fileid. После scan fileid будут другие. Ниже — маппинг путей для восстановления.
|
||||
|
||||
**Папка 1 (Общий ресурс):**
|
||||
|
||||
| Путь внутри папки | Пользователь | Mask | Permissions | Смысл |
|
||||
|-------------------|-------------|------|-------------|-------|
|
||||
| `Казань/ТОМ 2 УТВЕРЖДАЕМАЯ ЧАСТЬ ВЫВОДЫ` | maksimmaul@gmail.com | 0 | 0 | запрет |
|
||||
| `.stfolder` | admin | 0 | 0 | запрет |
|
||||
| `2024/Вологда_2024/Дополнительная фотофиксация (Интерьер)/12) 31. Ледник И.П,Дружининского из деревни Окуловской` | ccpupt@mail.ru | 15 | 15 | r/w/delete (no share) |
|
||||
| `2025/Иркутск_2025/Выписки ЕГРН` | aan@labexp.ru | 13 | 13 | r/delete (no write/share) |
|
||||
|
||||
**Папка 2 (ГИКЭ_ВОКН_Москва):**
|
||||
|
||||
| Путь внутри папки | Пользователь | Mask | Permissions | Смысл |
|
||||
|-------------------|-------------|------|-------------|-------|
|
||||
| `Образцы актов` | op.shishova@yandex.ru | 31 | 31 | полный доступ |
|
||||
| `Образцы актов` | 19761113@mail.ru | 31 | 31 | полный доступ |
|
||||
| `/` (корень папки) | 19761113@mail.ru | 31 | 31 | полный доступ |
|
||||
| `/` (корень папки) | op.shishova@yandex.ru | 31 | 31 | полный доступ |
|
||||
| `/` (корень папки) | admin | 31 | 31 | полный доступ |
|
||||
|
||||
**Скрипт восстановления ACL** (выполнить после scan):
|
||||
```bash
|
||||
# Получить новые fileid по путям и вставить ACL
|
||||
docker exec nextcloud-aio-database psql -U oc_nextcloud -d nextcloud_database -c "
|
||||
-- ACL для папки 1 (Общий ресурс)
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', 'maksimmaul@gmail.com', 0, 0
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/1/Казань/ТОМ 2 УТВЕРЖДАЕМАЯ ЧАСТЬ ВЫВОДЫ';
|
||||
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', 'ccpupt@mail.ru', 15, 15
|
||||
FROM oc_filecache fc WHERE fc.path LIKE '__groupfolders/1/2024/Вологда_2024/Дополнительная фотофиксация%Ледник%';
|
||||
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', 'aan@labexp.ru', 13, 13
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/1/2025/Иркутск_2025/Выписки ЕГРН';
|
||||
|
||||
-- ACL для папки 2 (ГИКЭ_ВОКН_Москва) — корень
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', '19761113@mail.ru', 31, 31
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2';
|
||||
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', 'op.shishova@yandex.ru', 31, 31
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2';
|
||||
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', 'admin', 31, 31
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2';
|
||||
|
||||
-- ACL для папки 2 — Образцы актов
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', 'op.shishova@yandex.ru', 31, 31
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2/Образцы актов';
|
||||
|
||||
INSERT INTO oc_group_folders_acl (fileid, mapping_type, mapping_id, mask, permissions)
|
||||
SELECT fc.fileid, 'user', '19761113@mail.ru', 31, 31
|
||||
FROM oc_filecache fc WHERE fc.path = '__groupfolders/2/Образцы актов';
|
||||
"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Оценки
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Объём данных | ~2.8 TB |
|
||||
| Нужно свободного места | ≥3 TB на ncdata |
|
||||
| Время rsync | 10-15 часов |
|
||||
| Время настройки | ~30 мин |
|
||||
| Downtime NC | 0 (NC работает во время копирования) |
|
||||
Reference in New Issue
Block a user