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:
parent
9a6aa7aadc
commit
ec3d4866e0
11
.env.example
11
.env.example
|
|
@ -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=
|
||||
|
|
|
|||
43
README.md
43
README.md
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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', '')
|
||||
|
|
|
|||
Loading…
Reference in New Issue