Synology NAS 安裝 Portainer:Container Manager 視覺化升級

在 Synology NAS 安裝 Portainer CE,以更完整的介面管理所有 Docker 服務,支援 Stacks、Containers、Volumes、Networks,是 Container Manager 的強力補充。

如果你在 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 上。

Portainer 架構圖

這個架構的好處是:未來如果你有第二台 NAS 或其他 Linux 主機,只要在上面裝 Portainer Agent,同一個 Portainer Server 就能統一管理多台主機。

安裝前準備

  1. 確認 NAS 已安裝 Container Manager(DSM 套件中心搜尋「Container Manager」)
  2. 準備一個存放設定的目錄。建議在 /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 首次設定管理員帳號

建好帳號後先別急著找服務——Portainer 會跳出一個「環境精靈」,而且多數人會卡在這裡。下一段就是重點。


🔌 連接 Docker 環境(最多人卡關的一步)

建好帳號後,Portainer 會進入「Environment Wizard / Quick Setup」,但你很可能看到這一行字:

We could not connect your local environment to Portainer.

Portainer 找不到本機環境

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

1. 點「Add Environments」→ 選「Docker Standalone」

選擇環境類型 Docker Standalone

2. 展開「More options」,選「Agent」,填連線資訊

  • 上方三個方式(Agent / API / Socket)選 Agent
  • Nameportainer-agent(隨意取)
  • Environment URLportainer-agent:9001 ← 關鍵,用 compose 裡的容器名稱 + 9001 port
  • Connect

用 Agent 連接,URL 填 portainer-agent:9001

為什麼 Environment URL 是 portainer-agent:9001 而不是 IP?因為 Server 和 Agent 在同一個 compose 網路裡,可以直接用容器名稱互連,最穩、不受 NAS IP 變動影響。

3. 連上了

回到 Home,就會看到 portainer-agent 環境亮綠色 Up,下面顯示容器數、映像數、CPU、RAM。點它進去就能開始管理。

Home 顯示環境已連線

想完全跳過這一步? 如果你只管這一台、不需要 agent,可以把 compose 裡的 portainer-agent 整段刪掉,改成在 portainer server 容器直接掛 - /var/run/docker.sock:/var/run/docker.sock。這樣本機環境會自動連上、不會出現上面的精靈。本文保留 agent 版,是為了讓你日後能無痛擴充到第二台主機。


🚀 部署第一個 Stack(確認一切正常)

進到環境後,主控台是空的很正常。用一個最小範例跑完整個流程,你就懂 Portainer 的日常循環了。

左側 Stacks → + Add stack

  • Namehello-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-nginxRemove,一鍵清乾淨。

這就是 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。

Portainer Stacks 列表

Containers:即時 Log 與 Web Terminal

點選任一容器,可以看到詳細資訊:

  • Logs:即時串流日誌,支援關鍵字搜尋、時間戳顯示
  • Console:直接在瀏覽器裡進入容器的 Terminal(等同 docker exec -it container bash
  • Stats:即時 CPU / RAM / 網路用量圖表
  • Inspect:完整的容器設定 JSON(需要閱讀或複製時,可貼到 JSON 格式化工具 整理格式)

這個 Console 功能在 Debug 時非常好用。例如要進 Vaultwarden 容器查設定、或進 Immich 容器執行資料庫遷移,都可以直接在瀏覽器操作,不需要 SSH。

Portainer 容器列表

Images:映像管理

顯示所有已下載的 Docker Image,可以直接在這裡: - Pull 新映像(輸入完整的 image tag) - 刪除不再使用的舊版本,釋出磁碟空間 - 查看每個 layer 的大小

建議定期到這裡清理不需要的映像,NAS 磁碟空間有限。

Portainer 映像管理

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 從外部驗證。

正確的遠端存取方式:

  1. 只在區域網路內存取:絕大多數情況這就夠了
  2. 透過 Tailscale / VPN 存取:外出時先連 VPN 再開 Portainer,參考 Tailscale 完整教學
  3. 搭配 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 最新版並重啟。

🔗 延伸閱讀

這篇有幫助嗎? Synology NAS 安裝 Portainer:Container Manager 視覺化升級