master
- Worker resets running/cancelling jobs to idle on startup to fix jobs stuck after Docker restart - Frontend saves current page to localStorage so reload returns to last visited page instead of always dashboard Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
# 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
# DB sichern
cp data/imapsync.db data/imapsync.db.bak
# Komplettes Backup
tar -czf imapsync-backup-$(date +%Y%m%d).tar.gz data/
Description