refactor: Build-Upload nutzt SECRET_KEY + Doku klargestellt

- Backend: Upload-Auth prueft SECRET_KEY statt eigenen Token
  (ein Token weniger zu verwalten)
- BUILD_UPLOAD_TOKEN in Entwicklungs-.env = SECRET_KEY vom Server
- .env.example: Klarer Kommentar dass CLOUD_URL + BUILD_UPLOAD_TOKEN
  NUR auf der Entwicklungsmaschine gesetzt werden, nicht auf dem Server
- README: Desktop Sync Client Abschnitt mit Build-Anleitung und
  Auto-Upload-Erklaerung

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan Hacker 2026-04-11 23:41:22 +02:00
parent 9a6aa7aadc
commit ec3d4866e0
3 changed files with 49 additions and 7 deletions

View File

@ -36,9 +36,12 @@ MAX_UPLOAD_SIZE_MB=500
# JWT wird automatisch vom JWT_SECRET_KEY oben verwendet
ONLYOFFICE_URL=
# Client-Downloads (optional)
# Oeffentliche URL der Cloud-Instanz (fuer den Build-Upload)
# =============================================
# Client-Build Upload (NUR auf der Entwicklungsmaschine!)
# Diese Werte gehoeren NICHT auf den Produktionsserver,
# sondern in die .env der Maschine auf der ./build.sh laeuft.
# =============================================
# Oeffentliche URL der Cloud-Instanz wohin die Builds hochgeladen werden
CLOUD_URL=https://cloud.example.com
# Token fuer Build-Upload (gleicher wie SECRET_KEY oder eigener)
# Token generieren: python3 -c "import secrets; print(secrets.token_urlsafe(64))"
# SECRET_KEY des Zielservers (identisch mit SECRET_KEY oben auf dem Server)
BUILD_UPLOAD_TOKEN=

View File

@ -268,10 +268,49 @@ data/ # Laufzeitdaten (gitignored)
files/ # Hochgeladene Dateien
```
## Desktop Sync Client
Der Desktop-Client (`clients/desktop/`) synchronisiert Dateien zwischen der Cloud und einem lokalen Ordner. Gebaut mit Tauri 2 (Rust + Vue).
### Bauen
```bash
# Voraussetzung: Docker
# Linux:
./build.sh linux
# Windows (Cross-Compile):
./build.sh windows
# macOS (nur auf Mac):
./build.sh mac
# Alle Desktop-Plattformen:
./build.sh all-desktop
```
### Auto-Upload auf den Server
Nach dem Build kann der Client automatisch auf den Cloud-Server hochgeladen werden und steht dort zum Download bereit.
**Auf der Entwicklungsmaschine** (nicht auf dem Server!) in die `.env` eintragen:
```bash
# URL der Cloud-Instanz
CLOUD_URL=https://cloud.example.com
# SECRET_KEY des Zielservers (identisch mit SECRET_KEY in der Server-.env)
BUILD_UPLOAD_TOKEN=der-secret-key-vom-server
```
Danach laedt `./build.sh linux` (etc.) den Build automatisch hoch. Auf der Login-Seite erscheint dann "Desktop & Mobile Clients herunterladen".
**Wichtig:** `CLOUD_URL` und `BUILD_UPLOAD_TOKEN` gehoeren NUR in die `.env` der Entwicklungsmaschine, NICHT auf den Produktionsserver!
## Roadmap
- Desktop Sync-Client (Windows, Linux, macOS) mit Full Sync + Virtual Files
- Mobile Sync-Client (iOS, Android) mit On-Demand-Download
- Mobile Sync-Client (iOS, Android) mit On-Demand-Download + File Provider
- Native Passwort-Manager Clients mit Autofill und Biometrie
- Radicale-Integration fuer vollstaendiges CalDAV/CardDAV-Protokoll

View File

@ -26,7 +26,7 @@ def _clients_dir():
def _verify_build_token():
"""Verify the build upload token from header or query param."""
expected = os.environ.get('BUILD_UPLOAD_TOKEN', '')
expected = os.environ.get('SECRET_KEY', '')
if not expected:
return False
token = request.headers.get('X-Build-Token', '') or request.args.get('build_token', '')