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:
+7
-4
@@ -36,9 +36,12 @@ MAX_UPLOAD_SIZE_MB=500
|
|||||||
# JWT wird automatisch vom JWT_SECRET_KEY oben verwendet
|
# JWT wird automatisch vom JWT_SECRET_KEY oben verwendet
|
||||||
ONLYOFFICE_URL=
|
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
|
CLOUD_URL=https://cloud.example.com
|
||||||
# Token fuer Build-Upload (gleicher wie SECRET_KEY oder eigener)
|
# SECRET_KEY des Zielservers (identisch mit SECRET_KEY oben auf dem Server)
|
||||||
# Token generieren: python3 -c "import secrets; print(secrets.token_urlsafe(64))"
|
|
||||||
BUILD_UPLOAD_TOKEN=
|
BUILD_UPLOAD_TOKEN=
|
||||||
|
|||||||
@@ -268,10 +268,49 @@ data/ # Laufzeitdaten (gitignored)
|
|||||||
files/ # Hochgeladene Dateien
|
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
|
## Roadmap
|
||||||
|
|
||||||
- Desktop Sync-Client (Windows, Linux, macOS) mit Full Sync + Virtual Files
|
- Mobile Sync-Client (iOS, Android) mit On-Demand-Download + File Provider
|
||||||
- Mobile Sync-Client (iOS, Android) mit On-Demand-Download
|
|
||||||
- Native Passwort-Manager Clients mit Autofill und Biometrie
|
- Native Passwort-Manager Clients mit Autofill und Biometrie
|
||||||
- Radicale-Integration fuer vollstaendiges CalDAV/CardDAV-Protokoll
|
- Radicale-Integration fuer vollstaendiges CalDAV/CardDAV-Protokoll
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ def _clients_dir():
|
|||||||
|
|
||||||
def _verify_build_token():
|
def _verify_build_token():
|
||||||
"""Verify the build upload token from header or query param."""
|
"""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:
|
if not expected:
|
||||||
return False
|
return False
|
||||||
token = request.headers.get('X-Build-Token', '') or request.args.get('build_token', '')
|
token = request.headers.get('X-Build-Token', '') or request.args.get('build_token', '')
|
||||||
|
|||||||
Reference in New Issue
Block a user