在 Synology NAS 上架設 n8n:自動化工作流的開源解法
如果你有在用 Zapier 或 Make(前身 Integromat),你知道這類工具的價值:把不同服務串在一起,讓它們自動交換資料、觸發動作。但 Zapier 的免費方案限制嚴,付費方案動輒每月 NT$600 起跳;Make 稍便宜,但一樣有操作次數限制。
n8n 是這個領域的開源替代方案。它的核心功能和 Zapier / Make 相同,但你可以自架在自己的伺服器上,不受操作次數限制,資料不經過第三方,而且完全免費。
這篇帶你把 n8n 裝在 Synology NAS 的 Docker 裡,設定好 HTTPS 對外存取,然後示範幾個實用的自動化場景。
n8n 是什麼
n8n(唸做 "n-eight-n")是一個基於節點(Node)的視覺化工作流自動化工具。你用拖拉的方式連接不同的「節點」,每個節點代表一個服務或操作(收 Gmail、呼叫 API、寫入試算表、發 Telegram 訊息),節點之間傳遞資料,形成自動化工作流。
n8n 的特點:
- 支援 200+ 服務整合(Google Workspace、GitHub、Slack、Discord、Notion、LINE、Telegram 等)
- HTTP Request 節點:可以呼叫任何 REST API,無官方整合也能用
- Webhook 節點:當外部服務觸發時執行工作流
- 排程執行:定時跑任務
- 條件分支、迴圈:支援複雜邏輯
- 本機 AI 節點:可串接 OpenAI、Ollama 做 AI 處理
自架版本(n8n Community)功能完整,沒有操作次數限制。雲端付費版(n8n Cloud)多了一些進階功能,但一般用途自架版已經夠用。
前置需求
- Synology NAS 已安裝 Container Manager(DSM 7.2+)
- 已設定好對外域名(DDNS 或自訂域名)
- 已安裝 Nginx Proxy Manager 或其他反向代理(用於 HTTPS)
還沒設定反向代理?可以先看 Synology Nginx Proxy Manager 完整教學
Docker Compose 設定
建立資料夾
在 NAS 的 File Station 建立以下目錄結構:
/docker/n8n/
docker-compose.yml
透過 Container Manager → 專案 → 新增,貼入以下 Compose:
version: "3.8"
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.yourdomain.com/
- GENERIC_TIMEZONE=Asia/Taipei
- TZ=Asia/Taipei
volumes:
- /docker/n8n:/home/node/.n8n
把
n8n.yourdomain.com換成你實際的域名。
環境變數說明:
| 變數 | 說明 |
|---|---|
N8N_HOST |
n8n 對外的域名 |
N8N_PROTOCOL |
設為 https(透過反向代理) |
WEBHOOK_URL |
Webhook 的完整 URL 前綴,需和對外域名一致 |
GENERIC_TIMEZONE |
工作流排程的時區 |
設定 Nginx Proxy Manager
n8n 預設跑在 Port 5678,用 HTTP。透過 Nginx Proxy Manager 加上 HTTPS:
- 進入 NPM → Proxy Hosts → Add Proxy Host
- Domain Names:填入
n8n.yourdomain.com - Forward Hostname:NAS 的 IP(例如
192.168.1.100) - Forward Port:
5678 - SSL 頁籤:選擇 Let's Encrypt 憑證,勾選 Force SSL
設定完成後,透過 https://n8n.yourdomain.com 就能存取 n8n。
初次設定
- 開啟
https://n8n.yourdomain.com - 建立管理員帳號(Email + 密碼)
- 進入主介面,看到 Workflows 頁面就完成了
建立第一個工作流
範例 1:每天早上發 Telegram 天氣報告
這個工作流每天早上 8 點,呼叫天氣 API,把今日天氣發到你的 Telegram。
節點:
- Schedule Trigger:設定 Cron
0 8 * * *(每天 08:00) - HTTP Request:呼叫 Open-Meteo API(免費,不需 API Key)
- URL:
https://api.open-meteo.com/v1/forecast?latitude=25.04&longitude=121.51¤t_weather=true - Telegram:傳送訊息到你的 Telegram Bot
Telegram 節點設定:
- 先在 Telegram 找 @BotFather 建立 Bot,拿到 Token
- 在 n8n 建立 Telegram Credential(貼上 Token)
- Chat ID 可以透過 @userinfobot 取得
範例 2:GitHub 有新 Issue 時通知 Discord
節點:
- Webhook:建立一個 Webhook URL
- 在 GitHub Repository → Settings → Webhooks,把 URL 貼進去,選 Issues 事件
- Discord:傳送格式化訊息到指定頻道
這樣每次有人開新 Issue,Discord 就會即時收到通知。
範例 3:每週自動整理 Gmail 標籤
節點:
- Schedule Trigger:每週一 09:00
- Gmail:搜尋 7 天前的郵件(
older_than:7d label:inbox) - Gmail:加上
Archived標籤並移出收件匣
設定 Gmail OAuth2 Credential 後,n8n 可以完整操作你的 Gmail。
進階設定
外部資料庫(PostgreSQL)
預設 n8n 用 SQLite 儲存工作流和執行記錄。如果工作流很多、執行頻繁,建議改用 PostgreSQL:
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.yourdomain.com/
- GENERIC_TIMEZONE=Asia/Taipei
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=yourpassword
volumes:
- /docker/n8n:/home/node/.n8n
depends_on:
- postgres
postgres:
image: postgres:15-alpine
container_name: n8n-postgres
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=yourpassword
volumes:
- /docker/n8n-db:/var/lib/postgresql/data
備份
n8n 的工作流設定都在 /home/node/.n8n(對應 NAS 上的 /docker/n8n)。記得把這個目錄加入 Hyper Backup 的備份範圍。
常見問題
Q:n8n 的 Webhook 在內網能用嗎?
可以,內網服務可以直接呼叫內網 IP + Port(http://192.168.1.100:5678/webhook/xxx)。如果需要外部服務觸發(例如 GitHub),就需要對外的 HTTPS 域名。
Q:n8n 更新怎麼做?
docker pull n8nio/n8n:latest
docker-compose down && docker-compose up -d
或在 Container Manager 的專案裡「停止 → 拉取最新映像 → 啟動」。
Q:工作流執行紀錄保留多久? 預設保留所有執行記錄(SQLite 可能變很大)。可以在 n8n 設定 → Executions → 設定自動刪除天數(建議 30 天)。
Q:免費版有限制嗎? 社群版(自架)沒有操作次數限制,工作流數量也沒有限制。限制在於:沒有 n8n Cloud 的 SSO 登入、進階版本控制等企業功能,但一般個人和小團隊用完全夠。
小結
n8n 在 NAS 上跑起來之後,你就有了一個 24 小時在線的自動化引擎,可以替你做各種重複性任務:整理郵件、監控服務、串接 API、發通知、定時備份通知……
和 Zapier/Make 相比,n8n 的上手門檻稍高(需要懂一點 JSON 和 API),但一旦熟悉之後,它的彈性遠超過 SaaS 工具,而且完全不受操作次數限制。
如果你的 NAS 上已經在跑其他 Docker 服務,加一個 n8n 把它們串起來,整體能發揮的效益會大很多。
🔗 延伸閱讀
- Synology Container Manager 完整教學:用 GUI 管理 Docker
- Synology Nginx Proxy Manager 完整教學:反向代理 + HTTPS 一次搞定
- Synology NAS 上最值得安裝的 Docker 服務清單
- Synology Hyper Backup 完整備份教學