Configuration Reverse Proxy
Cette section décrit l’intégration de Sync-in avec un reverse proxy existant.
Avec l’installation Docker recommandée, le serveur est déjà configuré avec le reverse proxy Nginx.
Cette documentation ne s’applique donc pas à ce cas d’utilisation.
Pourquoi un reverse proxy ?
Un reverse proxy renforce la sécurité et la connectivité de votre déploiement Sync-in (NPM ou Docker).
Il agit comme une barrière entre Internet et le serveur Sync-in, en filtrant le trafic et en masquant l’infrastructure interne.
Il centralise la gestion du chiffrement HTTPS, garantissant que toutes les communications avec Sync-in restent sécurisées.
Enfin, il facilite l’intégration dans l’environnement réseau en contrôlant les flux et en s’interfaçant avec d’autres services existants.
Configuration du Serveur Sync-in
Dans le fichier de configuration environment.yaml
, la section server
définit l’option trustProxy
, qui indique au serveur dans quelle mesure
il doit faire confiance aux proxys (ex. Nginx, Traefik) pour déterminer l’adresse IP réelle du client.
server:
trustProxy: 1 # valeur par défaut si non spécifiée
Valeurs possibles
Valeur | Comportement |
---|---|
false | Ignore les en-têtes de proxy, prend uniquement l’IP de connexion |
true | Fait confiance à toute la chaîne de proxys |
n (ex. 1 ) | Fait confiance au n-ième proxy en amont |
IP, CIDR | Fait confiance uniquement aux proxys spécifiés |
Le paramètre trustProxy: 1
est recommandé dans une installation derrière un proxy inverse (Nginx, Traefik, etc.).
Cela permet de garantir que le serveur Sync-in obtient correctement l’adresse IP du client et fonctionne sans erreurs dans un environnement proxifié.
Configuration Nginx
Plusieurs reverse proxies peuvent être utilisés. Dans cette documentation, la configuration sera décrite avec Nginx, qui reste la solution la plus répandue et la mieux supportée.
Ce fichier de configuration constitue la référence recommandée pour assurer le fonctionnement optimal des fonctionnalités du serveur Sync-in.
⚠️ Les directives server_name
, ssl_certificate
, ssl_certificate_key
ainsi que l’adresse du serveur sync_in:8080
doivent être adaptées à votre
environnement.
# SYNC-IN NGINX VHOST
map $request_uri $xfp {
# This header must be null on webdav uri
# It causes authentication failures with Microsoft-WebDAV-MiniRedir (Windows)
~^/webdav(?:/.*)? "";
default $scheme;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream sync_in_server {
server sync_in:8080;
keepalive 32;
}
server {
listen 443 ssl http2;
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;
# General settings
charset UTF-8;
server_tokens off;
access_log off;
include mime.types;
# Optimized file sending
sendfile on;
tcp_nodelay on;
tcp_nopush on;
# Buffering for requests proxied to Node
proxy_http_version 1.1;
chunked_transfer_encoding on;
proxy_set_header Host $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 $host;
proxy_set_header X-Forwarded-Proto $xfp;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
# Proxy buffering settings
proxy_buffering off; # nginx -> node
proxy_buffers 8 512k;
proxy_buffer_size 512k; # node highWaterMark
# Generous timeouts for long transfers
proxy_read_timeout 900s;
proxy_send_timeout 900s;
keepalive_timeout 180 90s;
# Clients settings
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 always use the most accurate rule in its internal routing policies
proxy_pass http://sync_in_server;
gzip_static on;
gzip_comp_level 5;
expires 1d;
add_header Cache-Control public;
}
# NOTE: This is only needed when the OnlyOffice Docker container is running locally
# and you are not using an external URL.
# Uncomment the line below to enable it:
# include onlyoffice.conf;
}
Configuration OnlyOffice (optionnel)
Dans les deux modes, la fonctionnalité OnlyOffice doit-être activée dans le fichier de configuration environment.yaml
:
applications:
files:
onlyoffice:
enabled: true
Les paramètres avancés d’OnlyOffice sont détaillés dans la section Paramètres du Serveur
Mode externe
Le serveur OnlyOffice doit être accessible depuis le serveur Sync-in et depuis le navigateur (nom de domaine ou adresse IP).
Configurer la directive externalServer
dans environment.yaml
:
onlyoffice:
externalServer: onlyoffice.my-domain.com
Mode proxifié
Dans la configuration Nginx, décommentez la directive include onlyoffice.conf;
pour charger la configuration dédiée à
OnlyOffice. Dans ce mode, il n’est pas nécessaire d’exposer directement le serveur OnlyOffice sur Internet, il doit cependant être accessible par le
serveur Sync-in.
Créez ensuite le fichier /etc/nginx/onlyoffice.conf
et insérez-y le contenu ci-dessous.
⚠️ La valeur de proxy_pass
doit être ajustée en fonction de l'adresse du serveur OnlyOffice.
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 $host/onlyoffice;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_no_cache 1;
proxy_cache_bypass 1;
}