feat: OMEMO по умолчанию, admin_web+BOSH, MUC-модули (vcard_muc, muc_moderation), модули из apt в modules/, scripts/omemo_check.py, backup.sh на Яндекс.Диск

- index.html: omemo_default=true (XEP-0384, встроен в Converse v14)
- prosody.cfg.lua: admin_web + bosh (глобальные), MUC: vcard_muc (XEP-0153) + muc_moderation (XEP-0425)
- modules/: mod_admin_web (+www_files), mod_http_upload_external, mod_muc_moderation, mod_vcard_muc — из prosody-modules (apt)
- scripts/omemo_check.py — проверка OMEMO-бандлов
- backup.sh — ежедневный бэкап проекта (data/config/certs/modules/webchat/доки) на /mnt/yandex-disk, ротация 7/30 дней
- STATUS/WALKTHROUGH: OMEMO, admin_web, HTTP Upload итоги
This commit is contained in:
2026-08-29 07:33:14 +00:00
parent 0695ddef75
commit 527584281d
19 changed files with 1878 additions and 5 deletions
Executable
+53
View File
@@ -0,0 +1,53 @@
#!/bin/bash
# Скрипт резервного копирования ICQ XMPP (Prosody + webchat) с отправкой на Яндекс.Диск
# По образцу /opt/netbox/backup.sh
PROJECT_DIR="/opt/icq"
BACKUP_DIR="${PROJECT_DIR}/backups"
YADISK_MOUNT="/mnt/yandex-disk"
YADISK_TARGET="${YADISK_MOUNT}/backup/icq-backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Папки/файлы проекта, которые бэкапим (из /opt/icq)
INCLUDE="data config certs modules webchat docker-compose.yml .env README.md STATUS.md PRD.md MIGRATION.md WALKTHROUGH.md"
mkdir -p ${BACKUP_DIR}
echo "🔄 [$(date)] Начинаем резервное копирование ICQ XMPP..."
# Проверяем, примонтирован ли Яндекс.Диск
if ! mountpoint -q ${YADISK_MOUNT}; then
echo " ❌ ОШИБКА: Яндекс.Диск не примонтирован!"
exit 1
fi
# Создаём папку для бэкапов на Яндекс.Диске (если её нет)
mkdir -p ${YADISK_TARGET} 2>/dev/null
# 1. Бэкап проекта одним архивом (данные Prosody + конфиги + серты + модули + веб-клиент + доки)
ARCHIVE="${BACKUP_DIR}/icq_${DATE}.tar.gz"
echo " → Архив проекта..."
tar czf ${ARCHIVE} -C ${PROJECT_DIR} ${INCLUDE} 2>/dev/null
if [ -s "${ARCHIVE}" ]; then
echo " ✅ Архив: $(du -h ${ARCHIVE} | cut -f1)"
echo " ☁️ Копирование на Яндекс.Диск..."
cp ${ARCHIVE} ${YADISK_TARGET}/
echo " ✅ скопирован на ЯД (${YADISK_TARGET}/)"
else
echo " ❌ Ошибка создания архива!"
fi
# 2. Очистка старых бэкапов
# Локально: оставляем 7 дней
find ${BACKUP_DIR} -type f -name "icq_*" -mtime +7 -delete 2>/dev/null
# На Яндекс.Диске: оставляем 30 дней
find ${YADISK_TARGET} -type f -name "icq_*" -mtime +30 -delete 2>/dev/null
echo "✅ [$(date)] Резервное копирование завершено!"
# Показываем список созданных бэкапов
echo ""
echo "📊 Созданные бэкапы:"
ls -lh ${BACKUP_DIR}/icq_${DATE}.* 2>/dev/null || echo " (нет файлов)"