Repository: orobardet/dsm-reverse-proxy-websocket
Branch: master
Commit: 0988e0839c83
Files: 3
Total size: 4.9 KB
Directory structure:
gitextract_wdftdiec/
├── Portal.mustache
├── Portal.mustache.dist
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: Portal.mustache
================================================
{{#ReverseProxy}}
server {
listen {{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqdn}} default_server{{/fqdn}};
listen [::]:{{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqdn}} default_server{{/fqdn}};
{{#resolver}}
resolver {{resolver}};
set $backend "{{backend}}";
{{/resolver}}
server_name {{#fqdn}}{{fqdn}}{{/fqdn}}{{^fqdn}}_{{/fqdn}};
{{#https.certificate}}
ssl_certificate {{https.certificate}};
{{/https.certificate}}
{{#https.key}}
ssl_certificate_key {{https.key}};
{{/https.key}}
{{#https.hsts}}
{{> /usr/syno/share/nginx/HSTS}}
{{/https.hsts}}
location / {
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-Proto $scheme;
proxy_intercept_errors on;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
{{#resolver}}
proxy_pass $backend;
{{/resolver}}
{{^resolver}}
proxy_pass {{backend}};
{{/resolver}}
}
{{#letsencrypt}}
{{> /usr/syno/share/nginx/LetsEncrypt}}
{{/letsencrypt}}
}
{{/ReverseProxy}}
================================================
FILE: Portal.mustache.dist
================================================
{{#ReverseProxy}}
server {
listen {{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqdn}} d efault_server{{/fqdn}};
listen [::]:{{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqd n}} default_server{{/fqdn}};
{{#resolver}}
resolver {{resolver}};
set $backend "{{backend}}";
{{/resolver}}
server_name {{#fqdn}}{{fqdn}}{{/fqdn}}{{^fqdn}}_{{/fqdn}};
{{#https.certificate}}
ssl_certificate {{https.certificate}};
{{/https.certificate}}
{{#https.key}}
ssl_certificate_key {{https.key}};
{{/https.key}}
{{#https.hsts}}
{{> /usr/syno/share/nginx/HSTS}}
{{/https.hsts}}
location / {
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-Proto $scheme;
proxy_intercept_errors on;
proxy_http_version 1.1;
{{#resolver}}
proxy_pass $backend;
{{/resolver}}
{{^resolver}}
proxy_pass {{backend}};
{{/resolver}}
}
{{#letsencrypt}}
{{> /usr/syno/share/nginx/LetsEncrypt}}
{{/letsencrypt}}
}
{{/ReverseProxy}}
================================================
FILE: README.md
================================================
# dsm-reverse-proxy-websocket
Configuration fix for Synology DSM 6 reverse proxy to handle websocket
**Starting from DSM 6.2.1, this modification is no longer required, as Application Portail has an option to handle websocket.
It's even not recommended to modify your `Portal.mustache` file, as it will cause error when adding or edition reverse proxy entries in Application Portal.**
In DSM 6.2.1+, when editing a reverse proxy entry in Application Portal, go to "custom headers" tab and click the arrow on the "Create" button, then "Websocket". This will add the required headers for websocket to this reverse proxy.
**BACKUP YOUR `portal.mustache` BEFORE MODIFYING IT!**
You need to edit the file `/usr/syno/share/nginx/Portal.mustache` to add the followings in the `location` section:
```
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
```
Then restart the httpd with:
```
sudo synoservicecfg --restart nginx
```
*This will restart ALL http service running, not only reverse proxy, as a single instance of NGinX runs everything.*
A modified `Portal.mustache` is provided in this repo (warning: based on DSM 6.1.6-15266).
# Known DSM upgrade impacts on the `Portal.mustache` file
> In **bold** versions overwriting the `Portal.mustache`
- **6.2.1-23824** : overwrites the `Portal.mustache` with a completly new template. **Starting from this version, hacking files are not required anymore as Application Portail reverse proxy feature now has an option to handle websocker.**
- **6.2-23739** : overwrites the `Portal.mustache`
- **6.1.7-15284** : overwrites the `Portal.mustache`
- 6.1.6-15266-1 : leaves the `Portal.mustache` file unchange
- **6.1.6-15266** : overwrites the `Portal.mustache`
- 6.1.3-15152-1 : leaves the `Portal.mustache` file unchange
- **6.1.3-15152** : overwrites the `Portal.mustache`
- **6.1.2-15132** : overwrites the `Portal.mustache`
- 6.1.1-15101-4 : leaves the `Portal.mustache` file unchange
- **6.1.1-15101** : overwrites the `Portal.mustache`
gitextract_wdftdiec/ ├── Portal.mustache ├── Portal.mustache.dist └── README.md
Condensed preview — 3 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5K chars).
[
{
"path": "Portal.mustache",
"chars": 1573,
"preview": "{{#ReverseProxy}}\nserver {\n listen {{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport"
},
{
"path": "Portal.mustache.dist",
"chars": 1385,
"preview": "{{#ReverseProxy}}\nserver {\n listen {{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport"
},
{
"path": "README.md",
"chars": 2053,
"preview": "# dsm-reverse-proxy-websocket\nConfiguration fix for Synology DSM 6 reverse proxy to handle websocket\n\n**Starting from D"
}
]
About this extraction
This page contains the full source code of the orobardet/dsm-reverse-proxy-websocket GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3 files (4.9 KB), approximately 1.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.