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. 輸入管理員用戶名和密碼(至少 12 字元,建議使用密碼管理器產生強密碼) 2. 點「Create user」 3. 選擇環境:選「Get Started」→ 點選本機的 Docker 環境 4. 等候幾秒後,即可進入主控台

進入後,左側選單就是 Portainer 的主要功能區。

主要功能介紹

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

正確的遠端存取方式:

  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 的視覺化升級