Go to file
Stefan Hacker 7220a2ef75 feat: Admin kann Email-Konten pro Benutzer verwalten + Benutzersuche
- Admin-Benutzer-Dialog hat jetzt zwei Tabs: Allgemein + E-Mail-Konten
- Im E-Mail-Konten-Tab: Konten fuer jeden Benutzer hinzufuegen,
  bearbeiten und loeschen (ohne sich als Benutzer einloggen zu muessen)
- Benutzersuche in der Benutzerverwaltung (filtert nach Name und Email)
- Backend: /admin/users/<id>/email-accounts GET/POST und
  /admin/email-accounts/<id> PUT/DELETE Endpunkte

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 17:35:51 +02:00
backend feat: Admin kann Email-Konten pro Benutzer verwalten + Benutzersuche 2026-04-11 17:35:51 +02:00
frontend feat: Admin kann Email-Konten pro Benutzer verwalten + Benutzersuche 2026-04-11 17:35:51 +02:00
.env.example docs: add token generation command to .env.example 2026-04-11 14:57:22 +02:00
.gitignore first commit 2026-04-11 14:50:45 +02:00
Dockerfile feat: Mini-Cloud Plattform - komplette Implementierung Phase 0-8 2026-04-11 14:53:28 +02:00
README.md docs: clarify port usage in README (dev vs production) 2026-04-11 15:15:38 +02:00
docker-compose.yml feat: Mini-Cloud Plattform - komplette Implementierung Phase 0-8 2026-04-11 14:53:28 +02:00

README.md

Mini-Cloud

Selbstgehostete Web-Cloud-Plattform mit Dateiverwaltung, Kalender, Kontakte, E-Mail-Webclient, Office-Viewer und Passwort-Manager.

Features

  • Dateiverwaltung - Upload/Download, Ordner, Berechtigungen, Share-Links (Passwort + Ablaufdatum)
  • Kalender - CalDAV-kompatibel (iOS, DAVx5, Thunderbird, Outlook), iCal-Export, Teilen mit Benutzern
  • Kontakte - CardDAV-kompatibel, vCard-Export, Adressbuecher teilen
  • E-Mail-Webclient - IMAP/SMTP-Proxy (kein eigener Mailserver), Multi-Account, Absender-Logik
  • Office-Viewer - DOCX, XLSX, PPTX, PDF direkt im Browser anzeigen
  • Passwort-Manager - AES-256-GCM clientseitig verschluesselt, TOTP, KeePass-Import, Ordner teilen
  • Benutzerverwaltung - Rollen (Admin/User), Speicher-Quotas
  • Sync-API - Delta-Sync fuer Desktop/Mobile-Clients

Tech-Stack

Bereich Technologie
Backend Python / Flask
Frontend Vue 3 / Vite / PrimeVue
Datenbank SQLite (WAL-Modus)
Auth JWT (Web-UI) + HTTP Basic Auth (CalDAV/CardDAV)

Installation

Voraussetzungen

  • Python 3.11+
  • Node.js 18+
  • npm

Entwicklungsumgebung

# Repository klonen
git clone <repo-url>
cd mini-cloud-datei-email-kalender-kontakte

# .env anlegen
cp .env.example .env
# SECRET_KEY und JWT_SECRET_KEY generieren:
python3 -c "import secrets; print(secrets.token_urlsafe(64))"
# Generierte Werte in .env eintragen

# Backend einrichten
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Backend starten
python wsgi.py
# -> laeuft auf http://localhost:5000 (nur API, nicht im Browser oeffnen)

# Frontend einrichten (neues Terminal)
cd frontend
npm install

# Frontend starten
npm run dev
# -> laeuft auf http://localhost:3100

Wichtig - Ports in der Entwicklung:

Port Dienst Im Browser oeffnen?
5000 Backend (Flask API) Nein - nur API, kein Frontend
3100 Frontend (Vite Dev Server) Ja - hier arbeiten!

Im Entwicklungsmodus immer http://localhost:3100 im Browser oeffnen. Der Vite Dev Server leitet API-Aufrufe automatisch an Port 5000 weiter (Proxy in vite.config.js).

In der Docker-Produktion laeuft alles auf einem einzigen Port (5000) - Backend liefert das gebaute Frontend direkt mit aus.

Beim ersten Registrieren wird der Benutzer automatisch zum Admin.

Docker (Produktion)

# .env anlegen und Secrets eintragen
cp .env.example .env

# Starten
docker-compose up --build -d
# -> laeuft auf http://localhost:5000

Die Datenbank und hochgeladene Dateien liegen unter ./data/ (Bind Mount, keine Docker Volumes).

Verwendung

Dateien

  • Dateien per Drag-and-Drop oder Upload-Button hochladen
  • Ordner erstellen, Dateien verschieben/umbenennen/loeschen
  • Share-Links erstellen: optional mit Passwort und Ablaufdatum
  • Share-Links funktionieren ohne Login fuer externe Empfaenger

Kalender

  • Kalender erstellen, Events anlegen (Monats-/Tagesansicht)
  • Kalender mit anderen Benutzern teilen (Lesen oder Lesen+Schreiben)
  • iCal-Link generieren fuer Read-Only-Import in Google Calendar, Apple Kalender etc.
  • CalDAV-Zugriff fuer native Sync:
    • iOS: Einstellungen > Kalender > Accounts > Anderer > CalDAV
    • Android (DAVx5): Server-URL: https://<deine-domain>/dav/
    • Thunderbird: Neuer Kalender > Im Netzwerk > CalDAV
    • Outlook (CalDAV-Synchronizer): Server-URL: https://<deine-domain>/dav/

Kontakte

  • Adressbuecher anlegen, Kontakte erstellen/bearbeiten
  • Adressbuecher mit anderen Benutzern teilen
  • vCard-Export fuer Backup
  • CardDAV-Zugriff analog zum Kalender

E-Mail

  • E-Mail-Konten unter Einstellungen hinzufuegen (IMAP/SMTP-Zugangsdaten)
  • Kein eigener Mailserver noetig - verbindet sich mit externen Mailservern
  • Bei keinem konfigurierten Konto wird der E-Mail-Bereich ausgeblendet
  • Mehrere Konten: Ordner nach Konten gruppiert, Standard-Absender = aktives Konto
  • Absender-Dropdown nur sichtbar bei mehr als einem Konto

Office-Viewer

  • DOCX, XLSX, PPTX und PDF direkt im Browser anzeigen (nur Lesen)
  • Bilder und Textdateien werden ebenfalls inline dargestellt

Passwort-Manager

  • Alle Daten clientseitig mit AES-256-GCM verschluesselt (Zero Knowledge)
  • TOTP-Codes direkt generieren
  • Passwort-Generator integriert
  • KeePass-Import (.kdbx) mit Ordnerstruktur
  • Einzelne Passwoerter oder ganze Ordner mit anderen Benutzern teilen

Projektstruktur

backend/
  app/
    api/          # REST-Endpunkte
    models/       # SQLAlchemy-Models
    services/     # Business-Logik (Crypto, etc.)
    dav/          # CalDAV/CardDAV (Radicale-Vorbereitung)
  wsgi.py         # Einstiegspunkt

frontend/
  src/
    views/        # Vue-Seiten
    components/   # Wiederverwendbare Komponenten
    stores/       # Pinia State Management
    api/          # Axios API-Client
    router/       # Vue Router

data/             # Laufzeitdaten (gitignored)
  minicloud.db    # SQLite-Datenbank
  files/          # Hochgeladene Dateien

Roadmap

  • Desktop Sync-Client (Windows, Linux, macOS) mit Full Sync + Virtual Files
  • Mobile Sync-Client (iOS, Android) mit On-Demand-Download
  • Native Passwort-Manager Clients mit Autofill und Biometrie
  • Radicale-Integration fuer vollstaendiges CalDAV/CardDAV-Protokoll

Lizenz

Privates Projekt.