docs: .env.example + docker-compose + README komplett aktualisiert
- .env.example: OnlyOffice-Variablen (URL + JWT_SECRET) hinzugefuegt,
FRONTEND_URL auf HTTPS-Beispiel geaendert
- docker-compose.yml: Nutzt env_file statt einzelner Variablen,
alle Secrets kommen aus .env (eine Quelle der Wahrheit)
- README.md komplett ueberarbeitet:
- Alle Features dokumentiert (Papierkorb, Share-Link-Typen,
Drag&Drop, OnlyOffice, SFTP-Backup, Benachrichtigungen etc.)
- Docker + nginx Reverse-Proxy Beispiel mit Let's Encrypt
- OnlyOffice Setup-Anleitung (docker-compose + nginx + .env)
- Alle Verwendungs-Abschnitte aktualisiert
- Administration dokumentiert
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
fca2bc2d47
commit
3185b2d41c
|
|
@ -24,7 +24,13 @@ HOST=0.0.0.0
|
|||
PORT=5000
|
||||
|
||||
# Frontend URL (fuer CORS)
|
||||
FRONTEND_URL=http://localhost:3010
|
||||
FRONTEND_URL=https://cloud.example.com
|
||||
|
||||
# Max Upload-Groesse in MB
|
||||
MAX_UPLOAD_SIZE_MB=500
|
||||
|
||||
# OnlyOffice Document Server (optional)
|
||||
# Oeffentliche HTTPS-URL unter der OnlyOffice im Browser erreichbar ist
|
||||
ONLYOFFICE_URL=
|
||||
# Muss mit JWT_SECRET im OnlyOffice-Container uebereinstimmen
|
||||
ONLYOFFICE_JWT_SECRET=
|
||||
|
|
|
|||
146
README.md
146
README.md
|
|
@ -1,16 +1,18 @@
|
|||
# Mini-Cloud
|
||||
|
||||
Selbstgehostete Web-Cloud-Plattform mit Dateiverwaltung, Kalender, Kontakte, E-Mail-Webclient, Office-Viewer und Passwort-Manager.
|
||||
Selbstgehostete Web-Cloud-Plattform mit Dateiverwaltung, Kalender, Kontakte, E-Mail-Webclient, Office-Editor und Passwort-Manager.
|
||||
|
||||
## Features
|
||||
|
||||
- **Dateiverwaltung** - Upload/Download, Ordner, Berechtigungen, Share-Links (Passwort + Ablaufdatum)
|
||||
- **Dateiverwaltung** - Upload/Download (Drag & Drop + Ordner-Upload), Berechtigungen, Share-Links (Lesen/Schreiben/Nur-Upload, Passwort, Ablaufdatum), Papierkorb, Ordner als ZIP downloaden
|
||||
- **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
|
||||
- **Office-Editor** - DOCX, XLSX, PPTX bearbeiten mit OnlyOffice; PDF, Bilder, Text als Vorschau
|
||||
- **Passwort-Manager** - AES-256-GCM clientseitig verschluesselt, TOTP, Passkeys, KeePass/Firefox/CSV-Import, Ordner teilen
|
||||
- **Benutzerverwaltung** - Rollen (Admin/User), Speicher-Quotas, Einladungslinks, oeffentliche Registrierung an/aus
|
||||
- **Backup** - Lokales ZIP-Backup, SFTP-Backup mit Scheduler + Versionierung, Einzeldatei-Restore
|
||||
- **Benachrichtigungen** - System-Email bei Freigaben, Downloads, neuen Benutzern
|
||||
- **Sync-API** - Delta-Sync fuer Desktop/Mobile-Clients
|
||||
|
||||
## Tech-Stack
|
||||
|
|
@ -21,6 +23,7 @@ Selbstgehostete Web-Cloud-Plattform mit Dateiverwaltung, Kalender, Kontakte, E-M
|
|||
| Frontend | Vue 3 / Vite / PrimeVue |
|
||||
| Datenbank | SQLite (WAL-Modus) |
|
||||
| Auth | JWT (Web-UI) + HTTP Basic Auth (CalDAV/CardDAV) |
|
||||
| Office-Editor | OnlyOffice Document Server (optional) |
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
@ -29,6 +32,7 @@ Selbstgehostete Web-Cloud-Plattform mit Dateiverwaltung, Kalender, Kontakte, E-M
|
|||
- Python 3.11+
|
||||
- Node.js 18+
|
||||
- npm
|
||||
- Docker (fuer Produktion)
|
||||
|
||||
### Entwicklungsumgebung
|
||||
|
||||
|
|
@ -80,22 +84,112 @@ Beim ersten Registrieren wird der Benutzer automatisch zum Admin.
|
|||
```bash
|
||||
# .env anlegen und Secrets eintragen
|
||||
cp .env.example .env
|
||||
# SECRET_KEY und JWT_SECRET_KEY generieren und eintragen:
|
||||
python3 -c "import secrets; print(secrets.token_urlsafe(64))"
|
||||
|
||||
# Starten
|
||||
docker-compose up --build -d
|
||||
# -> laeuft auf http://localhost:5000
|
||||
```
|
||||
|
||||
Die Datenbank und hochgeladene Dateien liegen unter `./data/` (Bind Mount, keine Docker Volumes).
|
||||
|
||||
### Nginx Reverse-Proxy (Beispiel)
|
||||
|
||||
Die Datei `nginx.example.conf` enthaelt eine vollstaendige Beispielkonfiguration:
|
||||
|
||||
```nginx
|
||||
# cloud.example.com -> Mini-Cloud (Port 5000)
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name cloud.example.com;
|
||||
ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem;
|
||||
client_max_body_size 0;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:5000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Let's Encrypt Zertifikat erstellen:
|
||||
```bash
|
||||
certbot --nginx -d cloud.example.com
|
||||
```
|
||||
|
||||
### OnlyOffice Document Server (optional)
|
||||
|
||||
Fuer die Bearbeitung von Word, Excel und PowerPoint Dateien direkt im Browser.
|
||||
|
||||
**1. docker-compose.yml - OnlyOffice-Service aktivieren:**
|
||||
|
||||
```yaml
|
||||
# In docker-compose.yml auskommentieren:
|
||||
onlyoffice:
|
||||
image: onlyoffice/documentserver:latest
|
||||
environment:
|
||||
- JWT_ENABLED=true
|
||||
- JWT_SECRET=${ONLYOFFICE_JWT_SECRET}
|
||||
volumes:
|
||||
- ./data/onlyoffice/logs:/var/log/onlyoffice
|
||||
- ./data/onlyoffice/data:/var/www/onlyoffice/Data
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
**2. .env - OnlyOffice konfigurieren:**
|
||||
|
||||
```bash
|
||||
ONLYOFFICE_URL=https://office.example.com
|
||||
ONLYOFFICE_JWT_SECRET=ein-sicheres-secret-hier
|
||||
```
|
||||
|
||||
**3. Nginx - Eigene Subdomain fuer OnlyOffice:**
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name office.example.com;
|
||||
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8080;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
certbot --nginx -d office.example.com
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
**Ohne OnlyOffice** werden Office-Dateien in einer einfachen Vorschau angezeigt (nur Lesen). **Mit OnlyOffice** erhaelt man einen vollwertigen Editor (wie Google Docs).
|
||||
|
||||
## 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
|
||||
- Ganze Ordner mit Unterordnern hochladen (Drag & Drop oder Ordner-Button)
|
||||
- Ordner erstellen, Dateien verschieben/umbenennen
|
||||
- Ordner als ZIP herunterladen
|
||||
- Geloeschte Dateien landen im Papierkorb (wiederherstellen oder endgueltig loeschen)
|
||||
- Share-Links erstellen mit drei Berechtigungsstufen:
|
||||
- **Nur Lesen** - Download, Ordnerinhalt sehen
|
||||
- **Lesen + Schreiben** - Download, Upload, Loeschen
|
||||
- **Nur Upload** - Hochladen ohne Einblick (Briefkasten-Modus)
|
||||
- Optional: Passwort und Ablaufdatum fuer Share-Links
|
||||
- Dateien/Ordner mit anderen Benutzern teilen (Lesen/Schreiben/Admin)
|
||||
- Gruenes Icon zeigt an welche Dateien bereits Freigaben haben
|
||||
|
||||
### Kalender
|
||||
|
||||
|
|
@ -118,24 +212,46 @@ Die Datenbank und hochgeladene Dateien liegen unter `./data/` (Bind Mount, keine
|
|||
### E-Mail
|
||||
|
||||
- E-Mail-Konten unter Einstellungen hinzufuegen (IMAP/SMTP-Zugangsdaten)
|
||||
- Admin kann E-Mail-Konten fuer andere Benutzer anlegen
|
||||
- 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
|
||||
### Office-Dateien
|
||||
|
||||
- DOCX, XLSX, PPTX und PDF direkt im Browser anzeigen (nur Lesen)
|
||||
- Bilder und Textdateien werden ebenfalls inline dargestellt
|
||||
- Doppelklick oder Auge-Icon oeffnet die Vorschau
|
||||
- **Mit OnlyOffice**: Vollwertiger Editor fuer DOCX, XLSX, PPTX (wie Google Docs)
|
||||
- **Ohne OnlyOffice**: Einfache Vorschau (HTML/Tabelle/Folien), Text-Dateien bearbeitbar
|
||||
- PDF wird inline angezeigt, Bilder mit Vorschau
|
||||
|
||||
### Passwort-Manager
|
||||
|
||||
- Alle Daten clientseitig mit AES-256-GCM verschluesselt (Zero Knowledge)
|
||||
- TOTP-Codes direkt generieren
|
||||
- Passwort-Generator integriert
|
||||
- KeePass-Import (.kdbx) mit Ordnerstruktur
|
||||
- Import aus: KeePass (.kdbx), Firefox (CSV), Chrome/Bitwarden/1Password (CSV)
|
||||
- Ordner/Gruppen wie in KeePass
|
||||
- Einzelne Passwoerter oder ganze Ordner mit anderen Benutzern teilen
|
||||
|
||||
### Backup & Restore
|
||||
|
||||
- **Lokales Backup**: ZIP-Download mit Datenbank + allen Dateien
|
||||
- **SFTP-Backup**: Automatisch auf SFTP-Server sichern
|
||||
- Mehrere Backup-Ziele moeglich
|
||||
- Konfigurierbares Intervall (15 Min. bis woechentlich)
|
||||
- Versionierung mit automatischem Aufraumen
|
||||
- Versionen durchsuchen und Einzeldateien wiederherstellen
|
||||
- **Restore**: ZIP hochladen (Chunked Upload fuer grosse Backups) oder direkt von SFTP
|
||||
|
||||
### Administration
|
||||
|
||||
- Benutzer anlegen, bearbeiten, deaktivieren, loeschen
|
||||
- Benutzersuche
|
||||
- E-Mail-Konten pro Benutzer verwalten
|
||||
- Oeffentliche Registrierung an/aus
|
||||
- Einladungslinks (funktionieren auch bei deaktivierter Registrierung)
|
||||
- System-Email (SMTP) fuer Benachrichtigungen und Einladungen
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```
|
||||
|
|
@ -143,7 +259,7 @@ backend/
|
|||
app/
|
||||
api/ # REST-Endpunkte
|
||||
models/ # SQLAlchemy-Models
|
||||
services/ # Business-Logik (Crypto, etc.)
|
||||
services/ # Business-Logik (Crypto, SFTP, Email, Scheduler)
|
||||
dav/ # CalDAV/CardDAV (Radicale-Vorbereitung)
|
||||
wsgi.py # Einstiegspunkt
|
||||
|
||||
|
|
|
|||
|
|
@ -5,26 +5,20 @@ services:
|
|||
- "5000:5000"
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
environment:
|
||||
- SECRET_KEY=${SECRET_KEY:-change-me-to-a-random-secret-key}
|
||||
- JWT_SECRET_KEY=${JWT_SECRET_KEY:-change-me-to-another-random-secret-key}
|
||||
- DATABASE_PATH=/app/data/minicloud.db
|
||||
- UPLOAD_PATH=/app/data/files
|
||||
- FRONTEND_URL=${FRONTEND_URL:-http://localhost:5000}
|
||||
- MAX_UPLOAD_SIZE_MB=${MAX_UPLOAD_SIZE_MB:-500}
|
||||
- ONLYOFFICE_URL=${ONLYOFFICE_URL:-}
|
||||
env_file:
|
||||
- .env
|
||||
restart: unless-stopped
|
||||
|
||||
# Optional: OnlyOffice Document Server fuer Office-Bearbeitung
|
||||
# Auskommentieren um DOCX/XLSX/PPTX bearbeiten zu koennen
|
||||
# Auskommentieren um DOCX/XLSX/PPTX im Browser bearbeiten zu koennen
|
||||
# Braucht eine eigene Subdomain mit HTTPS (z.B. office.example.com)
|
||||
# Siehe nginx.example.conf und README.md fuer Setup-Anleitung
|
||||
#
|
||||
# onlyoffice:
|
||||
# image: onlyoffice/documentserver:latest
|
||||
# # Kein ports-Mapping noetig! Zugriff nur ueber nginx (HTTPS)
|
||||
# # und intern im Docker-Netzwerk (minicloud -> onlyoffice)
|
||||
# environment:
|
||||
# - JWT_ENABLED=true
|
||||
# - JWT_SECRET=${ONLYOFFICE_JWT_SECRET:-minicloud-onlyoffice-secret}
|
||||
# - JWT_SECRET=${ONLYOFFICE_JWT_SECRET}
|
||||
# volumes:
|
||||
# - ./data/onlyoffice/logs:/var/log/onlyoffice
|
||||
# - ./data/onlyoffice/data:/var/www/onlyoffice/Data
|
||||
|
|
|
|||
Loading…
Reference in New Issue