e7170b7cc8
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>
173 lines
5.2 KiB
Markdown
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.
|