Files
minmal-file-cloud-email-pim…/README.md
T
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

173 lines
5.2 KiB
Markdown

# 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
```bash
# 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)
```bash
# .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.