Zum Hauptinhalt springen

Reverse-Proxy-Konfiguration

In diesem Abschnitt wird beschrieben, wie Sie Sync-in in einen vorhandenen Reverse-Proxy integrieren.

Info

Mit der empfohlenen Docker-Installation ist der Server bereits mit dem Nginx-Reverse-Proxy konfiguriert.
Daher gilt diese Dokumentation nicht für diesen Anwendungsfall.


Sync-in-Serverkonfiguration​

In der Konfigurationsdatei environment.yaml können Sie optional publicUrl mit der genauen URL definieren, die vom Reverse-Proxy bereitgestellt wird, einschließlich des Schemas und aller nicht standardmäßigen Ports. Wenn die Option konfiguriert ist, verwendet Sync-in diesen Wert, um Benachrichtigungslinks und Editor-URLs zu generieren.

server:
# Derzeit optional; in der nächsten Hauptversion erforderlich
publicUrl: 'https://sync-in.domain.com'
trustProxy: true # Standardwert, falls nicht angegeben

Wenn publicUrl konfiguriert ist, muss die URL über die Browser der Benutzer und für Office-Editoren, die mit Sync-in kommunizieren, über ihre Dienste oder Container erreichbar sein. Verwenden Sie in diesem Fall nicht localhost oder 127.0.0.1.

publicUrl bleibt bis zur nächsten Hauptversion optional. Wenn die Option weggelassen wird, haben Benachrichtigungs-E-Mails keine Aktionslinks und Editor-URLs verwenden den vom Proxy weitergeleiteten Anforderungsursprung als Kompatibilitäts-Fallback. Aus Sicherheitsgründen wird publicUrl in der nächsten Hauptversion erforderlich sein, sodass Editor-Endpunkte aus einem vertrauenswürdigen Ursprung erstellt werden, der vom Administrator kontrolliert wird, und nicht aus Anforderungsheadern.

Die Option trustProxy teilt dem Server mit, inwieweit er Proxys (z. B. Nginx, Traefik) vertrauen soll, um die tatsächliche IP-Adresse des Clients zu ermitteln. Der Standardwert true wird aus Kompatibilitätsgründen mit vorhandenen Installationen beibehalten.

Mögliche Werte​

WertVerhalten
falseIgnoriert Proxy-Header und verwendet nur die direkte Verbindungs-IP
trueVertraut weitergeleiteten Headern von jeder Verbindungsadresse
IP, CIDRVertraut nur den angegebenen Proxys
Zahl (veraltet)>= 1 wird zu true; < 1 wird zu false
Warnung

Seit Version 2.6.0 wählen numerische Werte nicht mehr den n-ten Hop aus und werden in der nächsten Hauptversion entfernt. Ein vorhandener trustProxy: 1 wird als true behandelt. Der Standardwert true ist vorübergehend und soll in einer zukünftigen Hauptversion zu false werden. Bis dahin können Client-IPs gefälscht werden, wenn das Backend direkt erreichbar ist oder ein Proxy vom Client bereitgestellte Weiterleitungsheader behält, wie dies bei $proxy_add_x_forwarded_for der Fall ist. Beschränken Sie den direkten Zugriff auf Sync-in und bevorzugen Sie nach Möglichkeit eine vertrauenswürdige Proxy-IP/CIDR.

Nginx-Konfiguration​

Es können mehrere Reverse-Proxys verwendet werden. In dieser Dokumentation wird die Konfiguration mit Nginx beschrieben, da es sich um die gebräuchlichste und am besten unterstützte Lösung handelt.

Diese Konfigurationsdatei ist die empfohlene Referenz, um den optimalen Betrieb der Sync-in-Serverfunktionen sicherzustellen.

⚠️ Die Direktiven server_name, ssl_certificate, ssl_certificate_key sowie die Serveradresse sync_in:8080 müssen an Ihre Umgebung angepasst werden.

Die Variable $http_host ist beabsichtigt: Im Gegensatz zu $host behält sie bei der Weiterleitung der Host-Header einen nicht standardmäßigen Port aus der Client-Anfrage bei.

# SYNC-IN-NGINX-VHOST

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

upstream sync_in_server {
server sync_in:8080;
keepalive 32;
}

server {
listen 80;
# listen 443 ssl;
# http2 on;
# server_name domain.com www.domain.com;
# ssl_certificate /etc/ssl/certs/fullchain.pem;
# ssl_certificate_key /etc/ssl/certs/privkey.pem;
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 1h;
# ssl_prefer_server_ciphers on;
# ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
# ssl_ecdh_curve X25519:prime256v1;

# Allgemeine Einstellungen
charset UTF-8;
server_tokens off;
access_log off;
include mime.types;

# Optimierter Dateiversand
sendfile on;
tcp_nodelay on;
tcp_nopush on;

# Pufferung der an Node weitergeleiteten Anfragen
proxy_http_version 1.1;
chunked_transfer_encoding on;
proxy_set_header Host $http_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-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;

# Einstellungen der Proxy-Pufferung
proxy_buffering off; # Nginx -> Node
proxy_buffers 8 512k;
proxy_buffer_size 512k; # highWaterMark von Node

# Großzügige Zeitüberschreitungen für lange Übertragungen oder WebSockets
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
keepalive_timeout 180 90s;

# Client-Einstellungen
proxy_request_buffering off; # Client -> Nginx
large_client_header_buffers 4 16k;
client_max_body_size 0;
client_body_buffer_size 25M;

location / {
proxy_pass http://sync_in_server;
}

location ~* .(ico|jpg|png|gif|jpeg|swf|woff|svg)$ {
# Nginx verwendet in seinen internen Routingregeln immer die genaueste Regel
proxy_pass http://sync_in_server;
gzip_static on;
gzip_comp_level 5;
expires 1d;
add_header Cache-Control public;
}

# HINWEIS: Nur erforderlich, wenn der Docker-Container von Collabora Online lokal ausgeführt wird
# und Sie keine externe URL verwenden.
# Entfernen Sie zum Aktivieren das Kommentarzeichen der folgenden Zeile:
# include collabora.conf;

# HINWEIS: Nur erforderlich, wenn der Docker-Container von OnlyOffice lokal ausgeführt wird
# und Sie keine externe URL verwenden.
# Entfernen Sie zum Aktivieren das Kommentarzeichen der folgenden Zeile:
# include onlyoffice.conf;

# HINWEIS: Nur erforderlich, wenn der Docker-Container von Euro-Office lokal ausgeführt wird
# und Sie keine externe URL verwenden.
# Entfernen Sie zum Aktivieren das Kommentarzeichen der folgenden Zeile:
# include eurooffice.conf;

# HINWEIS: Nur erforderlich, wenn der Docker-Container von draw.io lokal ausgeführt wird
# und Sie keine externe URL verwenden.
# Entfernen Sie zum Aktivieren das Kommentarzeichen der folgenden Zeile:
# include drawio.conf;
}

Collabora Online-Konfiguration​

In beiden Modi muss die Collabora Online-Integration in der Konfigurationsdatei environment.yaml aktiviert werden:

applications:
files:
editors:
collabora:
enabled: true

⚠️ Wenn Sie Collabora Online mit Docker bereitgestellt haben und Nginx mit HTTPS ausführen, stellen Sie sicher, dass die SSL-Terminierung aktiviert ist.

Proxy-Modus​

Entfernen Sie in der Nginx-Konfiguration das Kommentarzeichen für die Direktive include collabora.conf;, um die Konfiguration von Collabora Online zu laden.
In diesem Modus ist es nicht erforderlich, den Server von Collabora Online direkt dem Internet zugänglich zu machen, er muss jedoch weiterhin vom Sync-in-Server aus zugänglich sein.

Erstellen Sie dann die Datei /etc/nginx/collabora.conf und fügen Sie den Inhalt unten ein.

⚠️ Der Wert von proxy_pass muss entsprechend der Adresse Ihres Collabora-Online-Servers angepasst werden.

# Statische Dateien
location ^~ /browser/ {
proxy_pass http://collabora:9980;
proxy_set_header Host $http_host;
}

# WOPI-Erkennungs-URL und -Funktionen
location ^~ /hosting/ {
proxy_pass http://collabora:9980;
proxy_set_header Host $http_host;
}

# Haupt-WebSocket und Dokumentverwaltung
location ^~ /cool/ {
proxy_pass http://collabora:9980;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}

Externer Modus​

Der Server von Collabora Online muss sowohl vom Sync-in-Server als auch vom Browser aus erreichbar sein (Domänenname oder IP-Adresse).
Konfigurieren Sie die Direktive externalServer in environment.yaml:

applications:
files:
editors:
collabora:
enabled: true
externalServer: 'https://collabora.my-domain.com'

OnlyOffice-Konfiguration​

In beiden Modi muss die OnlyOffice-Funktion in der Konfigurationsdatei environment.yaml aktiviert sein:

applications:
files:
editors:
onlyoffice:
enabled: true
secret: 'REPLACE_WITH_LONG_RANDOM_ONLYOFFICE_SECRET'
Info

Erweiterte OnlyOffice-Parameter werden im Abschnitt Serverparameter detailliert beschrieben.

Generieren Sie einen sicheren Wert und verwenden Sie dasselbe Geheimnis auf dem OnlyOffice-Server.

Proxy-Modus​

Entfernen Sie in der Nginx-Konfiguration das Kommentarzeichen für die Direktive include onlyoffice.conf;, um die OnlyOffice-Konfiguration zu laden.
In diesem Modus ist es nicht erforderlich, den OnlyOffice-Server direkt dem Internet zugänglich zu machen, er muss jedoch weiterhin vom Sync-in-Server aus zugänglich sein.

Erstellen Sie dann die Datei /etc/nginx/onlyoffice.conf und fügen Sie den Inhalt unten ein.

⚠️ Der Wert von proxy_pass muss entsprechend der Adresse Ihres OnlyOffice-Servers angepasst werden.

location ^~ /onlyoffice/ {
proxy_pass http://onlyoffice:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host/onlyoffice;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_no_cache 1;
proxy_cache_bypass 1;
}

Externer Modus​

Der OnlyOffice-Server muss sowohl vom Sync-in-Server als auch vom Browser aus erreichbar sein (Domänenname oder IP-Adresse).
Konfigurieren Sie die Direktive externalServer in environment.yaml:

applications:
files:
editors:
onlyoffice:
enabled: true
secret: 'REPLACE_WITH_LONG_RANDOM_ONLYOFFICE_SECRET'
externalServer: 'https://onlyoffice.my-domain.com'

Euro-Office-Konfiguration​

Euro-Office wird von Sync-in als OnlyOffice-kompatibler Editor verwaltet.

In beiden Modi muss die Euro-Office-Funktion in der Konfigurationsdatei environment.yaml aktiviert werden:

applications:
files:
editors:
eurooffice:
enabled: true
secret: 'REPLACE_WITH_LONG_RANDOM_EUROOFFICE_SECRET'

Generieren Sie einen sicheren Wert und verwenden Sie dasselbe Geheimnis auf dem Euro-Office-Server.

Warnung

Aktivieren Sie onlyoffice und eurooffice nicht gleichzeitig, es sei denn, dies ist beabsichtigt.

Wenn beide aktiviert sind, gibt Sync-in onlyoffice Priorität.

Proxy-Modus​

Entfernen Sie in der Nginx-Konfiguration das Kommentarzeichen für die Direktive include eurooffice.conf;, um die Euro-Office-Konfiguration zu laden.
In diesem Modus ist es nicht notwendig, den Euro-Office-Server direkt dem Internet zugänglich zu machen, er muss aber dennoch vom Sync-in-Server aus erreichbar sein.

Erstellen Sie dann die Datei /etc/nginx/eurooffice.conf und fügen Sie den Inhalt unten ein.

⚠️ Der Wert von proxy_pass muss entsprechend der Adresse Ihres Euro-Office-Servers angepasst werden.

location ^~ /onlyoffice/ {
proxy_pass http://eurooffice:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host/onlyoffice;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_no_cache 1;
proxy_cache_bypass 1;
}

location ^~ /sdkjs/ {
proxy_pass http://eurooffice:80/sdkjs/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host/onlyoffice;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
}

Externer Modus​

Der Euro-Office-Server muss sowohl vom Sync-in-Server als auch vom Browser aus erreichbar sein (Domänenname oder IP-Adresse).
Konfigurieren Sie die externalServer-Direktive in environment.yaml:

applications:
files:
editors:
eurooffice:
enabled: true
secret: 'REPLACE_WITH_LONG_RANDOM_EUROOFFICE_SECRET'
externalServer: 'https://eurooffice.my-domain.com'

draw.io-Konfiguration​

In beiden Modi muss die Funktion draw.io in der Konfigurationsdatei environment.yaml aktiviert sein:

applications:
files:
editors:
drawio:
enabled: true

Im Gegensatz zu den Office-Editoren erfordert draw.io kein gemeinsames Geheimnis und keinen serverseitigen Callback.

Proxy-Modus​

Entfernen Sie in der Nginx-Konfiguration das Kommentarzeichen für die Direktive include drawio.conf;, um die draw.io-Konfiguration zu laden. In diesem Modus bleibt der draw.io-Container im Docker- oder internen Netzwerk privat und wird unter /drawio/ am Sync-in-Ursprung verfügbar gemacht.

Erstellen Sie dann die Datei /etc/nginx/drawio.conf und fügen Sie den Inhalt unten ein.

⚠️ Passen Sie proxy_pass an die Adresse Ihres draw.io-Servers an. Der CORS-Header ist erforderlich, da Sync-in den lokalen Editor in einen Sandbox-Iframe mit undurchsichtigem Ursprung lädt.

location ^~ /drawio/ {
add_header Access-Control-Allow-Origin "*" always;
proxy_pass http://drawio:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}

Externer Modus​

Der draw.io-Server muss über die Browser der Benutzer zugänglich sein. Konfigurieren Sie seine URL mit der Option externalServer und verwenden Sie einen dedizierten Ursprung, um den Editor von Sync-in zu isolieren:

applications:
files:
editors:
drawio:
enabled: true
externalServer: 'https://drawio.my-domain.com'