Files
crm.clientright.ru/crm_extensions/file_storage/PRODUCTION_READY.md
Fedor 269c7ea216 feat: OnlyOffice Standalone integration with S3 direct URLs
 ЧТО СДЕЛАНО:
- Поднят новый standalone OnlyOffice Document Server (порт 8083)
- Настроен Nginx для доступа через office.clientright.ru:9443
- Создан open_file_v3_standalone.php для работы с новым OnlyOffice
- Реализована поддержка прямых S3 URL (bucket публичный)
- Добавлен s3_proxy.php с поддержкой Range requests
- Создан onlyoffice_callback.php для сохранения (базовая версия)
- Файлы успешно открываются и загружаются!

⚠️ TODO (на завтра):
- Доработать onlyoffice_callback.php для сохранения обратно в ОРИГИНАЛЬНЫЙ путь в S3
- Добавить Redis маппинг documentKey → S3 path
- Обновить CRM JS для использования open_file_v3_standalone.php
- Протестировать сохранение файлов
- Удалить тестовые файлы

📊 РЕЗУЛЬТАТ:
- OnlyOffice Standalone РАБОТАЕТ! 
- Файлы открываются напрямую из S3 
- Редактор загружается БЫСТРО 
- Автосохранение настроено  (но нужна доработка callback)
2025-11-01 01:02:03 +03:00

4.8 KiB
Raw Blame History

🎉 PRODUCTION READY - Мониторинг файлов

ЧТО РАБОТАЕТ:

1 Nextcloud Activity Monitor

Скрипт: nextcloud_activity_monitor.js
Запущен: (PID: 2122)
Лог: nextcloud_activity.log

Мониторит:

  • Файлы загруженные через Nextcloud WebUI
  • Файлы созданные/изменённые в Nextcloud

Метод:

  • Nextcloud Activity API (polling каждые 30 сек)
  • Разбивает агрегированные события на отдельные файлы
  • БЕЗ дубликатов!

Формат события:

{
  "type": "file_created",
  "source": "nextcloud_activity",
  "timestamp": "2025-10-30T12:53:40+00:00",
  "file_id": 73460,
  "path": "/experimental_report.xlsx",
  "filename": "experimental_report.xlsx",
  "user": "admin",
  "action": "created"
}

Команды:

# Статус
ps aux | grep nextcloud_activity_monitor

# Логи
tail -f nextcloud_activity.log

# Остановить
pkill -f nextcloud_activity_monitor.js

# Запустить
cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
nohup /usr/bin/nodejs nextcloud_activity_monitor.js > nextcloud_activity.log 2>&1 &

2 S3 Monitor (Docker)

Контейнер: s3-monitor
Запущен: (Up 40 минут)
Скрипт: s3_monitor_docker.js

Мониторит:

  • Файлы загруженные напрямую в S3
  • Через S3 Browser, aws-cli, Cyberduck, скрипты
  • Любые изменения в bucket

Метод:

  • S3 ListObjectsV2 API (polling каждые 30 сек)
  • Pagination - получает ВСЕ файлы (24,522 файла!)
  • Сравнение по ETag

Bucket: f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c

Формат события:

{
  "type": "file_created",
  "source": "s3_monitor",
  "timestamp": "2025-10-30T20:49:31.593Z",
  "path": "crm2/CRM_Active_Files/Documents/file.xlsx",
  "filename": "file.xlsx",
  "size": 8224,
  "etag": "7004954627252c9d0a7e6417f8325d07",
  "last_modified": "2025-10-30T20:49:14.132Z",
  "action": "created"
}

Команды:

# Статус
docker ps | grep s3-monitor

# Логи
docker logs s3-monitor -f

# Остановить
docker stop s3-monitor

# Запустить
docker start s3-monitor

# Перезапустить
docker restart s3-monitor

3 Redis Канал (центральная шина)

Host: 147.45.146.17
Port: 6379
Password: CRM_Redis_Pass_2025_Secure!
Channel: crm:file:events

Подписаться:

redis-cli -h 147.45.146.17 -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
  SUBSCRIBE crm:file:events

🚫 ЧТО ОСТАНОВЛЕНО:

redis_bridge.js

Причина: Давал неполные данные, много дубликатов
Заменён на: Nextcloud Activity Monitor (даёт чистые данные)


📊 СРАВНЕНИЕ ДАННЫХ:

Поле Nextcloud Activity S3 Monitor
type file_created/changed/deleted file_created/modified/deleted
source nextcloud_activity s3_monitor
filename
path (Nextcloud путь) (S3 полный путь)
file_id
user
size
etag
mime_type

Дополняют друг друга! 🎯


🔧 АВТОЗАПУСК ПРИ ПЕРЕЗАГРУЗКЕ СЕРВЕРА:

S3 Monitor:

Уже настроен (--restart unless-stopped)

Nextcloud Activity Monitor:

Создам systemd service:

sudo tee /etc/systemd/system/nextcloud-activity-monitor.service << 'EOF'
[Unit]
Description=Nextcloud Activity Monitor
After=network.target redis.service

[Service]
Type=simple
User=root
WorkingDirectory=/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
ExecStart=/usr/bin/nodejs nextcloud_activity_monitor.js
Restart=always
RestartSec=10
StandardOutput=append:/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_activity.log
StandardError=append:/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_activity.log

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable nextcloud-activity-monitor
sudo systemctl start nextcloud-activity-monitor

🎯 ГОТОВО!

Система полностью работает в production режиме! 🚀

Хочешь чтобы я создал systemd service для автозапуска Nextcloud Activity Monitor? 😊