feat: initial ImapSync Manager setup

This commit is contained in:
Sebastian Serfling
2026-04-21 15:10:35 +02:00
commit f2d749ba3f
8 changed files with 2087 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
# ImapSync Manager
Docker-basiertes System für IMAP-E-Mail-Migrationen mit Web-GUI.
## Features
- **Web-GUI** Dashboard, Job-Verwaltung, Log-Viewer, Statistiken
- **Authentifizierung** MD5-Passwörter in SQLite, JWT-Token
- **Rollensystem** Admin / Operator / Viewer
- **Job-Scheduler** Manuell oder per Cron-Zeitplan
- **Auftragsverwalter (Worker)** Führt imapsync-Jobs sequenziell aus
- **Log-Archiv** Vollständige imapsync-Logs pro Ausführung
## Schnellstart
```bash
# Starten
docker compose up -d
# Logs verfolgen
docker compose logs -f
# Zugriff
http://localhost:8080
```
**Standard-Login:** `admin` / `admin`
→ Passwort sofort nach dem ersten Login ändern!
## Verzeichnisstruktur
```
imapsync-docker/
├── docker-compose.yml
├── backend/ ← FastAPI + Web-GUI
│ ├── Dockerfile
│ ├── main.py
│ ├── requirements.txt
│ └── static/
│ └── index.html
├── worker/ ← imapsync-Ausführung
│ ├── Dockerfile
│ └── worker.py
└── data/ ← Persistente Daten (auto-erstellt)
├── imapsync.db ← SQLite-Datenbank
└── logs/ ← imapsync-Logdateien
```
## Sicherheit
- Passwörter werden als MD5-Hash in SQLite gespeichert
- JWT-Token läuft nach 12h ab
- SECRET_KEY in docker-compose.yml anpassen!
## Cron-Beispiele
| Ausdruck | Bedeutung |
|---------------|-------------------------|
| `0 2 * * *` | Täglich um 02:00 Uhr |
| `0 */6 * * *` | Alle 6 Stunden |
| `0 2 * * 0` | Wöchentlich, So 02:00 |
| `30 1 * * 1-5`| Mo-Fr um 01:30 Uhr |
## Rollen
| Rolle | Benutzer | Jobs | Start/Stop | Logs |
|----------|----------|------|-----------|------|
| admin | ✅ | ✅ | ✅ | ✅ |
| operator | ✗ | ✅ | ✅ | ✅ |
| viewer | ✗ | ✗ | ✗ | ✅ |
## Umgebungsvariablen
### Web-Container
| Variable | Standard | Beschreibung |
|--------------|--------------------|-----------------------|
| DB_PATH | /data/imapsync.db | Pfad zur SQLite-DB |
| LOG_DIR | /data/logs | Log-Verzeichnis |
| SECRET_KEY | (Pflicht ändern!) | JWT-Signaturschlüssel |
### Worker-Container
| Variable | Standard | Beschreibung |
|---------------|----------|------------------------------|
| POLL_INTERVAL | 15 | Sekunden zwischen DB-Abfragen |
## Datensicherung
```bash
# DB sichern
cp data/imapsync.db data/imapsync.db.bak
# Komplettes Backup
tar -czf imapsync-backup-$(date +%Y%m%d).tar.gz data/
```