Initial commit: EifelDC - Discord-like Matrix chat platform
Some checks failed
CI / Rust Check (push) Has been cancelled
CI / Rust Tests (push) Has been cancelled
CI / Frontend Check (push) Has been cancelled
CI / Build Tauri (macOS) (push) Has been cancelled
CI / Build Tauri (macOS Intel) (push) Has been cancelled
CI / Build Tauri (Linux) (push) Has been cancelled

Includes server (Rust/Axum API proxy with voice management),
Tauri desktop client with Svelte UI, bot-sdk, Docker infra
(Synapse, PostgreSQL, Coturn, Nginx), and CI/CD pipeline.
This commit is contained in:
root
2026-04-28 08:23:23 +02:00
commit 0978d0c2e9
82 changed files with 12417 additions and 0 deletions

59
infra/scripts/backup.sh Executable file
View File

@@ -0,0 +1,59 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INFRA_DIR="$(dirname "$SCRIPT_DIR")"
BACKUP_DIR="${INFRA_DIR}/backups"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_PATH="${BACKUP_DIR}/${TIMESTAMP}"
mkdir -p "${BACKUP_PATH}"
echo "=== EifelDC Backup ==="
echo "Backup directory: ${BACKUP_PATH}"
echo ""
if command -v docker &>/dev/null && docker compose -f "${INFRA_DIR}/docker-compose.yml" ps &>/dev/null 2>&1; then
echo "[Docker Mode]"
echo "[1/4] Backing up PostgreSQL..."
docker compose -f "${INFRA_DIR}/docker-compose.yml" exec -T postgres \
pg_dump -U synapse synapse > "${BACKUP_PATH}/synapse_db.sql"
echo "[2/4] Backing up Synapse media..."
docker cp eifeldc-synapse:/data/media_store "${BACKUP_PATH}/media_store" 2>/dev/null || true
echo "[3/4] Backing up Synapse config..."
docker cp eifeldc-synapse:/data/homeserver.yaml "${BACKUP_PATH}/homeserver.yaml" 2>/dev/null || true
docker cp eifeldc-synapse:/data/signing.key "${BACKUP_PATH}/signing.key" 2>/dev/null || true
echo "[4/4] Backing up environment config..."
cp "${INFRA_DIR}/.env" "${BACKUP_PATH}/.env" 2>/dev/null || true
else
echo "[Native Mode]"
echo "[1/3] Backing up PostgreSQL..."
sudo -u postgres pg_dump synapse > "${BACKUP_PATH}/synapse_db.sql" 2>/dev/null || echo "Warning: Could not dump database"
echo "[2/3] Backing up Synapse data..."
SYNAPSE_DIR="${SYNAPSE_DIR:-/opt/eifeldc/synapse-data}"
cp -r "${SYNAPSE_DIR}/homeserver.yaml" "${BACKUP_PATH}/" 2>/dev/null || true
cp -r "${SYNAPSE_DIR}/signing.key" "${BACKUP_PATH}/" 2>/dev/null || true
cp -r "${SYNAPSE_DIR}/media_store" "${BACKUP_PATH}/" 2>/dev/null || true
echo "[3/3] Backing up environment config..."
cp "${INFRA_DIR}/.env" "${BACKUP_PATH}/.env" 2>/dev/null || true
fi
COMPRESSED="${BACKUP_DIR}/eifeldc_backup_${TIMESTAMP}.tar.gz"
tar -czf "${COMPRESSED}" -C "${BACKUP_DIR}" "${TIMESTAMP}"
rm -rf "${BACKUP_PATH}"
echo ""
echo "Backup saved: ${COMPRESSED}"
echo ""
KEEP_COUNT=7
ls -t "${BACKUP_DIR}"/eifeldc_backup_*.tar.gz 2>/dev/null | tail -n +$((KEEP_COUNT + 1)) | xargs -r rm --
echo "Old backups cleaned (keeping latest ${KEEP_COUNT})"
echo "Done!"