[Docker] Uptime Kuma on Synology
![[Docker] Uptime Kuma on Synology](/content/images/size/w1200/2025/09/uptimekuma.png)
Once upon a time I watched servers the old-fashioned way: open a tab, hit refresh, hope for green. Then I met Uptime Kuma—a self-hosted uptime monitor and status page that pings your services (HTTP/S, TCP, Ping, DNS, Docker targets, and more) and notifies you when something’s off (Discord, Slack, Telegram, email, etc.). It’s simple, pretty, and perfect for a home lab or a small stack running on a Synology NAS.
This guide shows how to run Uptime Kuma on Synology DSM using Docker / Container Manager. We’ll keep it UI-first (Projects in DSM), with the terminal as an optional extra at the end.
What you’ll get
- A clean Uptime Kuma instance on your NAS
- Persistent data stored on your volumes
- Optional reverse proxy so you can use a friendly hostname like
https://kuma.yourdomain.com
- WebSocket live updates working through DSM’s reverse proxy
Folder layout (create these first)
Use File Station in DSM (or SSH) to create the data directory.
Adjust the base path to your taste; below is just an example.
/volume1/docker/uptime-kuma/ ← choose your own base folder
└─ data/ ← Uptime Kuma data (persistent)
docker-compose.yml
Important: Edit the mount path and host port to match your NAS. Look for the comments marked “EDIT”.
# docker-compose.yml
# ============================================================
# 📡 Uptime Kuma on Synology NAS (Container Manager / Projects)
#
# 1) Create the data folder on your NAS first:
# /volume1/docker/uptime-kuma/data # <<< EDIT THIS PATH
#
# 2) If you use Synology Reverse Proxy:
# - You may remove the "ports" line below
# - Forward HTTPS → http://<NAS-LAN-IP>:<HOST_PORT>
#
# 3) Change the host port (left side of "18081:3001") if it conflicts.
# ============================================================
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
environment:
- TZ=Asia/Seoul # Set timezone
ports:
- "18081:3001" # <<< EDIT HOST PORT or remove if using Reverse Proxy
volumes:
- /volume1/docker/uptime-kuma/data:/app/data # <<< EDIT MOUNT PATH (must be writable)
networks:
- kuma-net
networks:
kuma-net:
driver: bridge
Launching via DSM → Container Manager → Projects (no terminal)
- Open Container Manager → Projects → Create.
- Project name: e.g.,
uptime-kuma
. - Path: select the folder containing your
docker-compose.yml
. - DSM will parse the compose file; click Next → Create.
- Wait for the container to show Running.
First access: open http://<NAS-IP>:18081
(or the host port you chose).
You’ll be greeted by the setup screen—create your admin account, then add your first monitors.
Reverse proxy (pretty URL + HTTPS)
- Source:
https://kuma.yourdomain.com
→ Destination:http://<NAS-LAN-IP>:18081
- Make sure your certificate covers the hostname.
- If you rely only on reverse proxy, you may remove
ports:
from the compose file.
WebSocket support
Uptime Kuma’s dashboard uses WebSocket for instant, real-time updates. If you’re accessing Kuma directly by port (e.g., http://NAS-IP:18081
), no action is needed—WebSocket works out of the box.
If you publish Kuma behind Synology DSM’s reverse proxy, enable WebSocket via the Custom Header menu:
- Go to Control Panel → Login Portal → Advanced → Reverse Proxy.
- Open the Custom Header tab.
- Click Create → WebSocket (DSM inserts the required headers automatically).
- Save.
Troubleshooting quick hits
- Port already in use: change the left side of
18081:3001
. - Data not saving: verify the mapped data/ path exists, is writable, and the mount path is correct.
- Dashboard not live-updating behind reverse proxy: make sure Enable WebSocket is checked on your DSM reverse proxy rule and your browser cache/HSTS isn’t interfering.
That’s it—Uptime Kuma on Synology, the simple way. Add a few monitors, wire up notifications, and enjoy the peace of mind that comes from a tidy dashboard telling you when things are happy (and when they’re not).