Go to file
Stefan Hacker e7170b7cc8 docs: clarify port usage in README (dev vs production)
Port 3100 is the frontend dev server (open in browser), port 5000 is
the backend API only. In Docker production, everything runs on 5000.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 15:15:38 +02:00
backend feat: Mini-Cloud Plattform - komplette Implementierung Phase 0-8 2026-04-11 14:53:28 +02:00
frontend chore: add frontend README from Vite template 2026-04-11 14:54:11 +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.