如果你在 Synology NAS 上跑了不少 Docker 服務,大概對 Container Manager 又愛又恨——基本操作還可以,但一旦容器多起來,要追蹤每個服務的設定、Log、網路關係,就會發現它的介面開始捉襟見肘。Portainer 是社群最廣泛使用的 Docker 管理 UI,它不取代 Docker,而是架在 Docker 上方提供更完整的視覺化操作,包含 Stacks(等同 docker-compose)管理、即時 Log、容器 Terminal,以及 Network、Volume 的全局視圖。
這篇文章帶你在 Synology NAS 上安裝 Portainer CE(Community Edition),包含 docker-compose 設定、首次 admin 帳號設定,以及主要功能的實際使用說明。
為什麼要用 Portainer?Container Manager 的不足
Synology Container Manager(舊名 Docker 套件)的問題主要有幾個:
無法管理 Stacks:Container Manager 可以匯入 docker-compose.yml,但一旦匯入後,修改設定必須整個刪除重建,沒辦法像真正的 Compose 那樣做版本化管理。Portainer 的 Stacks 功能可以直接在介面上編輯 docker-compose.yml 並重新部署,方便許多。
Log 查看受限:Container Manager 的 Log 視窗無法持續串流,也不能依時間篩選。Portainer 提供即時 streaming log,Debug 時省很多時間。
無容器 Terminal:想進入容器執行指令,Container Manager 完全沒有這個功能,只能 SSH 進 NAS 後再 docker exec。Portainer 內建 Web Terminal,點一下就能進容器。
網路視圖缺乏:多個服務共用自訂 bridge network 時,Container Manager 很難看清楚哪個容器在哪個網路。Portainer 有完整的 Network 視圖。
如果你目前用 Container Manager 完整教學 建立了基礎,Portainer 是很自然的下一步升級。
架構說明
Portainer 由兩個元件組成:
Portainer Server:提供 Web UI,你透過瀏覽器連接這個容器(port 9443),所有管理操作都在這裡完成。
Portainer Agent:跑在被管理的 Docker 主機上,監聽 Docker Socket,讓 Server 能取得容器、映像、Volume 等資訊。在單機(NAS 自己管自己)的情境下,兩者都裝在同一台 NAS 上。
這個架構的好處是:未來如果你有第二台 NAS 或其他 Linux 主機,只要在上面裝 Portainer Agent,同一個 Portainer Server 就能統一管理多台主機。
安裝前準備
- 確認 NAS 已安裝 Container Manager(DSM 套件中心搜尋「Container Manager」)
- 準備一個存放設定的目錄。建議在
/volume1/docker/portainer/下建立data/子目錄供 Portainer 儲存設定
mkdir -p /volume1/docker/portainer/data
安裝 Portainer CE
在 Container Manager → Project → 建立新專案,或直接使用 SSH 建立以下 docker-compose.yml:
# /volume1/docker/portainer/docker-compose.yml
version: "3.8"
services:
portainer-agent:
image: portainer/agent:latest
container_name: portainer_agent
restart: always
ports:
- "9001:9001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9443:9443"
- "8000:8000"
volumes:
- /volume1/docker/portainer/data:/data
depends_on:
- portainer-agent
Port 說明: -
9443:HTTPS 管理介面(建議只開這個) -8000:Edge Agent 使用(管理遠端主機用,單機可不開) -9001:Portainer Agent 通訊 port
啟動後,等待 30 秒讓容器完全啟動。
首次設定 Admin 帳號
開啟瀏覽器,進入 https://NAS-IP:9443(因為是自簽憑證,瀏覽器會出現安全性警告,點「繼續前往」即可)。
第一次進入需要在 5 分鐘內設定管理員帳號,超過時間會自動鎖定,需要重啟容器。
設定步驟:
1. 輸入管理員用戶名(預設 admin)和密碼(至少 12 字元,建議用密碼管理器產生強密碼)
2. 點「Create user」

建好帳號後先別急著找服務——Portainer 會跳出一個「環境精靈」,而且多數人會卡在這裡。下一段就是重點。
🔌 連接 Docker 環境(最多人卡關的一步)
建好帳號後,Portainer 會進入「Environment Wizard / Quick Setup」,但你很可能看到這一行字:
We could not connect your local environment to Portainer.

別緊張,這不是壞掉。原因是:上面的 compose 把 docker.sock 掛在 portainer-agent 容器、而不是 Portainer Server 本身,所以 Server 啟動時抓不到本機 Docker,需要你手動把 agent 接上來。跟著做:
1. 點「Add Environments」→ 選「Docker Standalone」

2. 展開「More options」,選「Agent」,填連線資訊
- 上方三個方式(Agent / API / Socket)選 Agent
- Name:
portainer-agent(隨意取) - Environment URL:
portainer-agent:9001← 關鍵,用 compose 裡的容器名稱 + 9001 port - 點 Connect

為什麼 Environment URL 是
portainer-agent:9001而不是 IP?因為 Server 和 Agent 在同一個 compose 網路裡,可以直接用容器名稱互連,最穩、不受 NAS IP 變動影響。
3. 連上了
回到 Home,就會看到 portainer-agent 環境亮綠色 Up,下面顯示容器數、映像數、CPU、RAM。點它進去就能開始管理。

想完全跳過這一步? 如果你只管這一台、不需要 agent,可以把 compose 裡的
portainer-agent整段刪掉,改成在portainerserver 容器直接掛- /var/run/docker.sock:/var/run/docker.sock。這樣本機環境會自動連上、不會出現上面的精靈。本文保留 agent 版,是為了讓你日後能無痛擴充到第二台主機。
🚀 部署第一個 Stack(確認一切正常)
進到環境後,主控台是空的很正常。用一個最小範例跑完整個流程,你就懂 Portainer 的日常循環了。
左側 Stacks → + Add stack:
- Name:
hello-nginx - Web editor:貼上
services:
web:
image: nginx:alpine
container_name: hello-nginx
ports:
- "8888:80"
restart: unless-stopped
拉到最下面點 Deploy the stack,等幾秒。到 Containers 看到 hello-nginx 綠色 running,再用瀏覽器開 http://主機IP:8888 看到 nginx 歡迎頁,就成功了。
練完不想留:回 Stacks 勾選 hello-nginx → Remove,一鍵清乾淨。
這就是 Portainer 的日常循環:Add Stack 貼 compose → Deploy → 在 Containers 看狀態 / Logs / Console → 不要了就 Remove。之後架 Vaultwarden、Immich、Jellyfin 都一樣,只是換掉那段 compose 內容。
主要功能詳解
Stacks:docker-compose 的正確管理方式
Stacks 是 Portainer 最重要的功能。點左側「Stacks」→「Add Stack」,可以直接貼上 docker-compose.yml 的內容,Portainer 會幫你部署並持續追蹤這個 Stack 的狀態。
已部署的 Stack 可以在介面上直接編輯 YAML 並「Update the stack」,不需要進 SSH。每次更新 Stack,Portainer 會自動 pull 最新 image 並重建容器。
建議:把所有服務都改用 Portainer Stacks 管理,包括你原本在 Container Manager 建立的服務。遷移方式是停掉舊容器、刪除,再在 Portainer 建立同名 Stack。

Containers:即時 Log 與 Web Terminal
點選任一容器,可以看到詳細資訊:
- Logs:即時串流日誌,支援關鍵字搜尋、時間戳顯示
- Console:直接在瀏覽器裡進入容器的 Terminal(等同
docker exec -it container bash) - Stats:即時 CPU / RAM / 網路用量圖表
- Inspect:完整的容器設定 JSON(需要閱讀或複製時,可貼到 JSON 格式化工具 整理格式)
這個 Console 功能在 Debug 時非常好用。例如要進 Vaultwarden 容器查設定、或進 Immich 容器執行資料庫遷移,都可以直接在瀏覽器操作,不需要 SSH。

Images:映像管理
顯示所有已下載的 Docker Image,可以直接在這裡: - Pull 新映像(輸入完整的 image tag) - 刪除不再使用的舊版本,釋出磁碟空間 - 查看每個 layer 的大小
建議定期到這裡清理不需要的映像,NAS 磁碟空間有限。

Volumes:Volume 視覺化
列出所有 Docker Volume 及其佔用大小、掛載狀態。特別實用的是「不使用中的 Volume」篩選——可以找出容器刪除後遺留的孤兒 Volume 並清理。
如果你把 Docker 移到 NVMe 儲存空間(參考 Docker 移至 NVMe 教學),Volume 的路徑管理在 Portainer 會更清楚。
Networks:網路拓撲管理
顯示所有 Docker 網路(bridge、host、overlay、自訂網路),以及各網路下的容器清單。
建議服務之間的通訊用自訂 bridge network,避免全部丟在預設 bridge 上互相干擾。例如:
networks:
proxy_net:
external: true # 讓 NPM 和各服務共用同一個網路
Container Manager vs Portainer 比較
| 功能 | Container Manager | Portainer CE |
|---|---|---|
| 部署 docker-compose | 支援(匯入後無法在線編輯) | Stacks 完整支援,可線上編輯 |
| 即時 Log | 有限 | 串流 Log,可搜尋 |
| Web Terminal | 無 | ✅ 支援 |
| 容器 Stats | 基本 | 詳細圖表 |
| 多主機管理 | 無 | ✅ 支援(Agent) |
| Volume 孤兒清理 | 無 | ✅ 支援 |
| Network 視圖 | 基本 | 完整拓撲 |
| 介面語言 | 中文 | 英文(無官方中文化) |
| 資源消耗 | 極低 | 低(約 50–100 MB RAM) |
資安注意事項
絕對不要把 port 9443 對外開放。Portainer 擁有對整個 Docker 環境的完全控制權,一旦被入侵,攻擊者可以在你的 NAS 上部署任何容器。如果想確認 port 是否真的沒有對外暴露,可以在 PowerShell 執行 Test-NetConnection -ComputerName 你的WAN IP -Port 9443 從外部驗證。
正確的遠端存取方式:
- 只在區域網路內存取:絕大多數情況這就夠了
- 透過 Tailscale / VPN 存取:外出時先連 VPN 再開 Portainer,參考 Tailscale 完整教學
- 搭配 Nginx Proxy Manager 做反向代理:如果真的需要 HTTPS 域名存取,用 NPM 設定反向代理並加上 IP 白名單或 Basic Auth,參考 Nginx Proxy Manager 教學
另外,定期更新 Portainer 映像:在 Stacks 或 Containers 頁面可以直接 Pull 最新版並重啟。
常見問題
Q:Container Manager 和 Portainer 可以同時用嗎? 可以,兩者都在操作底層同一個 Docker Engine,不會衝突。只是建議選一個主要工具,避免搞混誰管哪個服務。
Q:Portainer CE 和 Business Edition 有什麼差別? CE 版免費,功能對個人和家用已完全足夠。Business Edition 多了 RBAC 角色管理、GitOps 整合、Kubernetes 支援等企業功能,個人 NAS 用不到。
Q:首次設定超過 5 分鐘沒設定 admin,怎麼辦?
重啟 portainer 容器:docker restart portainer,然後在 5 分鐘內設定。
Q:更新 Portainer 版本? 在 Stacks 頁面找到 portainer Stack,點「Pull and redeploy」,它會自動 pull 最新版並重啟。
🔗 延伸閱讀
- Container Manager 完整教學 — 從頭了解 Synology 的 Docker 管理環境
- Nginx Proxy Manager 反向代理設定 — 為 Portainer 設定 HTTPS 域名存取
- Tailscale 完整教學 — 在外出時安全存取 Portainer
- NAS 必裝 Docker 服務清單 — 確認還有哪些服務值得加進去管理