Nginx Proxy Manager (NPM) is a free, open-source reverse proxy tool with a powerful web interface. It lets you expose your self-hosted services to the internet with free automatic SSL certificates — without needing to know Nginx configuration syntax.
In this guide, I’ll walk you through installing Nginx Proxy Manager on your Synology NAS using Docker.
🧰 What You’ll Need
- A Synology NAS running DSM 7.2+ (or Docker for older DSM versions)
- Container Manager installed (from Package Center)
- SSH access to your NAS
- A domain pointed to your home IP (via Cloudflare or similar)
⚠️ Important: Nginx Proxy Manager requires ports 80 and 443. If you have Web Station or DSM’s built-in web services using these ports, uninstall them first.
⚙️ Step 1: Install Container Manager
- Open Package Center on your Synology NAS
- Search for Container Manager (or Docker for DSM versions below 7.2)
- Install the package and wait for it to complete
⚙️ Step 2: Create Folder Structure
- Open File Station
- Navigate to
/volume1/docker/ - Create a new folder named
npm(lowercase) - Inside the
npmfolder, create two subfolders:dataletsencrypt
Your structure should look like:
/volume1/docker/npm/
├── data/
├── letsencrypt/
⚙️ Step 3: Create the Docker Container
We’ll use Synology’s Task Scheduler to run the Docker container.
- Go to Control Panel → Task Scheduler
- Click Create → Scheduled Task → User-defined script
- Configure the task:
General Settings
| Setting | Value |
|---|---|
| Task Name | Install NPM |
| Enabled | Unchecked |
| User | root |
Schedule
| Setting | Value |
|---|---|
| Run on the following date | Do not repeat |
Task Settings
In the Run command area, paste this Docker command:
docker run -d \
--name=nginx_proxy_manager \
-p 8341:80 \
-p 81:81 \
-p 8766:443 \
-e TZ=Asia/Singapore \
-v /volume1/docker/npm/data:/data \
-v /volume1/docker/npm/letsencrypt:/etc/letsencrypt \
--restart always \
jc21/nginx-proxy-manager
💡 Replace
Asia/Singaporewith your actual timezone. Find your timezone here. Note: The container automatically creates the SQLite database in/data— no config.json needed.
- Click OK
- Enter your DSM password when prompted
- Select the task and click Run
⚙️ Step 4: Access Nginx Proxy Manager
- Open your browser
- Navigate to:
http://YOUR_NAS_IP:81 - Log in with the default credentials:
| Setting | Value |
|---|---|
| admin@example.com | |
| Password | changeme |
⚙️ Step 5: Change Default Credentials
Upon first login, you’ll be prompted to:
- Update your full name, nickname, and email
- Change your password from
changemeto something secure
⚙️ Step 6: Configure Port Forwarding
To access your proxied services from the internet, forward these ports in your router:
| Port | Service |
|---|---|
| 80 | HTTP |
| 443 | HTTPS |
| 81 | NPM Admin (optional) |
| 8341 | HTTP Alternate |
| 8766 | HTTPS Alternate |
⚠️ If ports 80/443 are already in use by another service, use the alternate ports (8341/8766) and configure port forwarding accordingly.
🔐 How to Create a Proxy Host
Now that NPM is running, here’s how to expose a service:
- In NPM admin panel, go to Hosts → Proxy Hosts
- Click Add Proxy Host
- Fill in the details:
| Field | Value |
|---|---|
| Domain Names | yourdomain.com |
| Scheme | http |
| Forward Hostname / IP | container_ip |
| Forward Port | container_port |
| Cache Assets | Optional |
| Block Common Exploits | Recommended |
- Enable SSL tab:
- Request a new SSL certificate
- Force SSL
- HTTP/2 Support
✅ Wrap Up
Nginx Proxy Manager is now running on your Synology NAS. You can now:
- Expose multiple services through a single domain
- Get free automatic SSL certificates via Let’s Encrypt
- Password-protect your services
- Block common exploits
For more advanced configurations, check the official Nginx Proxy Manager documentation.
If this guide helped you set up NPM, consider buying me a coffee:
Every tip helps me keep testing, writing, and sharing guides like this. Appreciate the support!