Reverse Proxy Setup
A reverse proxy allows you to “pass” requests through your web server to another site or program. The reverse proxy will make it look like Syncthing’s GUI is a page within your existing site.
This is especially useful if:
You need to access the GUI on port 80 or 443 but you already host a website on the same device.
You want to share SSL certificates with an existing site.
You want to share authentication with an existing setup.
Server Configuration
If you have access to your web server’s configuration use the following examples to pass the location /syncthing
on your web server to Syncthing’s GUI hosted on localhost:8384
.
Apache
First of all, execute the following command to enable the Apache HTTP Proxy module and the headers module: a2enmod proxy_http headers
.
Then, you may add the following to your Apache httpd configuration:
<Location /syncthing/>
ProxyPass http://localhost:8384/
ProxyPassReverse http://localhost:8384/
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
Require all granted
</Location>
Nginx
location /syncthing/ {
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-Proto $scheme;
proxy_pass http://localhost:8384/;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
Caddy
proxy /syncthing localhost:8384 {
transparent
}
timeouts {
read none
write none
header none
}
Caddy v2
handle_path /syncthing/* {
uri strip_prefix /syncthing
reverse_proxy http://localhost:8384 {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
Folder Configuration
If you don’t have access to your web server configuration files you might try the following technique.
Apache
Add the configuration below to a .htaccess
file in the folder of your webroot which should redirect to the WebUI, /syncthing
to produce the same behaviour as above
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteRule ^(.*) http://localhost:8384/$1 [P]
This method also redirects to HTTPS to prevent opening the GUI unencrypted.