diff --git a/backend/app/api/office.py b/backend/app/api/office.py index 6a5e2f3..807c891 100644 --- a/backend/app/api/office.py +++ b/backend/app/api/office.py @@ -330,7 +330,7 @@ def onlyoffice_config(file_id): if err: return err - oo_url = AppSettings.get('onlyoffice_url', os.environ.get('ONLYOFFICE_URL', '')) + oo_url = os.environ.get('ONLYOFFICE_URL', '') if not oo_url: return jsonify({'error': 'OnlyOffice nicht konfiguriert', 'available': False}), 200 @@ -381,7 +381,7 @@ def onlyoffice_config(file_id): } # Sign with JWT if secret is set - jwt_secret = AppSettings.get('onlyoffice_jwt_secret', '') + jwt_secret = os.environ.get('ONLYOFFICE_JWT_SECRET', '') if jwt_secret: import jwt as pyjwt config['config']['token'] = pyjwt.encode(config['config'], jwt_secret, algorithm='HS256') @@ -448,7 +448,7 @@ def onlyoffice_callback(): @token_required def onlyoffice_status(): """Check if OnlyOffice is available.""" - oo_url = AppSettings.get('onlyoffice_url', os.environ.get('ONLYOFFICE_URL', '')) + oo_url = os.environ.get('ONLYOFFICE_URL', '') return jsonify({ 'available': bool(oo_url), 'url': oo_url, diff --git a/backend/app/api/users.py b/backend/app/api/users.py index 81d1f9c..99483b4 100644 --- a/backend/app/api/users.py +++ b/backend/app/api/users.py @@ -153,9 +153,9 @@ def get_settings(): 'system_smtp_username': AppSettings.get('system_smtp_username', ''), 'system_smtp_password_set': bool(AppSettings.get('system_smtp_password', '')), 'system_email_from': AppSettings.get('system_email_from', ''), - 'onlyoffice_url': AppSettings.get('onlyoffice_url', os.environ.get('ONLYOFFICE_URL', '')), - 'onlyoffice_jwt_secret': AppSettings.get('onlyoffice_jwt_secret', ''), - 'onlyoffice_jwt_secret_set': bool(AppSettings.get('onlyoffice_jwt_secret', '')), + 'onlyoffice_url': os.environ.get('ONLYOFFICE_URL', ''), + 'onlyoffice_configured': bool(os.environ.get('ONLYOFFICE_URL', '')), + 'onlyoffice_jwt_set': bool(os.environ.get('ONLYOFFICE_JWT_SECRET', '')), }), 200 @@ -166,13 +166,11 @@ def update_settings(): if 'public_registration' in data: AppSettings.set('public_registration', str(data['public_registration']).lower()) for key in ['system_smtp_host', 'system_smtp_port', 'system_smtp_ssl', - 'system_smtp_username', 'system_email_from', 'onlyoffice_url']: + 'system_smtp_username', 'system_email_from']: if key in data: AppSettings.set(key, str(data[key])) if 'system_smtp_password' in data and data['system_smtp_password']: AppSettings.set('system_smtp_password', data['system_smtp_password']) - if 'onlyoffice_jwt_secret' in data and data['onlyoffice_jwt_secret']: - AppSettings.set('onlyoffice_jwt_secret', data['onlyoffice_jwt_secret']) return jsonify({'message': 'Einstellungen gespeichert'}), 200 diff --git a/frontend/src/views/AdminView.vue b/frontend/src/views/AdminView.vue index 5bf31d9..e751eda 100644 --- a/frontend/src/views/AdminView.vue +++ b/frontend/src/views/AdminView.vue @@ -80,28 +80,37 @@

OnlyOffice Document Server

Fuer die Bearbeitung von Word, Excel und PowerPoint Dateien direkt im Browser. Ohne OnlyOffice werden Dateien in einer einfachen Vorschau angezeigt.

-
-
- - + +
+
+ Status
-
- - -
-
+ +
+
+ URL: + {{ onlyofficeUrl }} +
+
+ JWT Secret: + +
+
+
- Setup: + Konfiguration ueber .env: +
ONLYOFFICE_URL=https://office.deine-domain.de
+ONLYOFFICE_JWT_SECRET=dein-secret-hier
+ Setup-Schritte:
    -
  1. In docker-compose.yml den onlyoffice-Service auskommentieren
  2. -
  3. Nginx-Eintrag fuer OnlyOffice anlegen (z.B. office.deine-domain.de) - siehe nginx.example.conf
  4. -
  5. Let's Encrypt Zertifikat fuer die OnlyOffice-Domain erstellen
  6. -
  7. docker-compose up -d
  8. -
  9. Hier die oeffentliche HTTPS-URL eintragen (z.B. https://office.deine-domain.de)
    - Nicht die interne Docker-URL - der Browser muss OnlyOffice erreichen koennen!
  10. -
  11. JWT Secret muss mit ONLYOFFICE_JWT_SECRET in docker-compose.yml uebereinstimmen
  12. +
  13. In docker-compose.yml den onlyoffice-Service aktivieren
  14. +
  15. ONLYOFFICE_URL und ONLYOFFICE_JWT_SECRET in .env setzen
  16. +
  17. Nginx-Eintrag fuer die OnlyOffice-Domain anlegen (siehe nginx.example.conf)
  18. +
  19. Let's Encrypt: certbot --nginx -d office.deine-domain.de
  20. +
  21. docker-compose up --build -d
@@ -540,6 +549,8 @@ const smtpForm = ref({ system_smtp_username: '', system_smtp_password: '', system_email_from: '', }) const smtpPasswordSet = ref(false) +const onlyofficeConfigured = ref(false) +const onlyofficeUrl = ref('') const onlyofficeJwtSet = ref(false) const smtpTesting = ref(false) @@ -648,8 +659,9 @@ async function loadSettings() { smtpForm.value.system_smtp_username = res.data.system_smtp_username || '' smtpForm.value.system_email_from = res.data.system_email_from || '' smtpPasswordSet.value = res.data.system_smtp_password_set - smtpForm.value.onlyoffice_url = res.data.onlyoffice_url || '' - onlyofficeJwtSet.value = res.data.onlyoffice_jwt_secret_set + onlyofficeConfigured.value = res.data.onlyoffice_configured + onlyofficeUrl.value = res.data.onlyoffice_url || '' + onlyofficeJwtSet.value = res.data.onlyoffice_jwt_set } catch { /* first load, defaults */ } }