Synology NAS 上安裝 Portainer 與 IT-Tools

更新 2026.09.21

從零開始:先用「工作排程器」一次裝好 Portainer,再透過 Portainer 的 Stack 功能部署 IT-Tools。整合自兩篇 Marius Hosting 教學,每個步驟都附上原因說明與操作截圖,全程不需要開 SSH。

整個流程分三個階段:

  1. 第一階段:安裝 Portainer:準備環境、建立排程任務、取得 setup_token
  2. 第二階段:Portainer 初始設定:建立管理員、設定 Public IP、加入 Registries
  3. 第三階段:部署 IT-Tools:新增 Stack、貼上 Compose、開啟服務

開始前的準備

  • 一台支援 Docker 的 Synology NAS
  • DSM 7.2 以上使用 Container Manager;更舊的版本則叫 Docker。
  • 具有管理員權限的 DSM 帳號(後面會被要求再輸入一次密碼)。
  • 你的 NAS 區域網路 IP 與電腦上可用的記事本。
  • NAS 能連上網路,因為安裝時需要下載 Docker 映像檔。

關於文中的示範值: 本文以 192.168.1.131 作為 NAS 區網 IP,以 volume1 作為儲存空間名稱。請依你的實際環境替換。如果你的 docker 資料夾在 volume2,指令中的 volume1 也要一併改成 volume2,否則資料會寫到錯的位置。


第一階段:安裝 Portainer

Portainer 是 Docker 的網頁管理介面,可以管理容器、映像檔、Stack、磁碟區與網路。IT-Tools 要透過它來部署,所以先裝好它。

步驟 1:安裝 Container Manager

開啟 DSM 的「套件中心」(Package Center),搜尋並安裝 Container Manager。若你的 DSM 低於 7.2,請改搜尋 Docker。

為什麼: Container Manager 提供 Docker 引擎。後面排程任務執行的 docker run 指令,以及 Portainer 管理的對象,都依賴它。安裝完成後,File Station 裡通常會出現名為 docker 的共用資料夾,下一步會用到。

在套件中心安裝 Container Manager

在套件中心搜尋並安裝 Container Manager

步驟 2:在 docker 資料夾內建立 portainer 資料夾

開啟 File Station,進入 docker 資料夾,新增一個資料夾,名稱為 portainer。

注意: 一律使用小寫,不要用大寫字母。路徑大小寫不符,後面掛載會找不到資料夾。

為什麼: 這個資料夾會掛載到容器內的 /data。Portainer 的帳號、設定、Stack 定義都存在這裡,即使之後刪除並重建容器,資料也還在。

在 File Station 建立 portainer 資料夾

File Station → docker → 新增資料夾 portainer(圖內有操作標示)

步驟 3:建立排程任務:使用者定義的指令碼

前往 控制台(Control Panel)→ 工作排程器(Task Scheduler)→ 新增(Create)→ 排定的任務(Scheduled Task)→ 使用者定義的指令碼(User-defined script)。

為什麼用工作排程器: 它能以 root 身分執行一段指令,效果等同於在終端機輸入 docker 指令,但你不必啟用 SSH,也不用自己登入終端機。

DSM 介面語言不同時,選單的中文名稱可能略有差異,請以英文名稱對照。

工作排程器新增使用者定義的指令碼

Task Scheduler → Create → Scheduled Task → User-defined script

步驟 4:填寫任務內容

點選後會開啟設定視窗,依序填寫三個分頁:

  1. General(一般):Task(任務名稱)輸入 Install Portainer;取消勾選 Enabled(已啟用);User(使用者)選 root。
  2. Schedule(排程):選「Run on the following date(在下列日期執行)」,再選「Do not repeat(不重複)」。
  3. Task Settings(任務設定):勾選「Send run details by email(以電子郵件傳送執行詳細資料)」並填入你的信箱,接著把下方指令貼到「Run command(執行指令)」欄位,最後按 OK。

為什麼這樣設: 這個任務只需要手動執行一次,所以取消 Enabled,避免它依排程重複執行;使用 root 是因為 docker 指令需要管理權限;寄送執行詳細資料方便你事後查看是否有錯誤(需要 DSM 已設定郵件通知,沒設定也不影響安裝本身)。

docker run -d --name=portainer \
-p 8000:8000 \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
--restart=always \
portainer/portainer-ce

各參數的作用:

參數 作用
-d --name=portainer 在背景執行,並把容器命名為 portainer。
-p 9000:9000 Portainer 的網頁介面連接埠,之後用 http://NAS-IP:9000 登入。
-p 8000:8000 Portainer 供 Edge Agent 使用的連接埠。只管理這台 NAS 時用不到,保留即可。
-v /var/run/docker.sock:... 把 Docker 的控制通道交給 Portainer,它才能管理這台 NAS 上的容器。
-v /volume1/docker/portainer:/data 把步驟 2 建立的資料夾掛載為資料目錄,讓設定永久保存。
--restart=always NAS 重開機或容器意外停止時自動重新啟動。
portainer/portainer-ce 使用的映像檔;CE 是 Community Edition(社群版)。
任務設定視窗

三個分頁的填寫位置(圖內有操作標示)

步驟 5:確認警告並輸入 DSM 密碼

按下 OK 後會跳出一個警告視窗,直接再按 OK。接著輸入你的 DSM 管理員密碼,按 Submit(送出)。

為什麼: 以 root 身分執行自訂指令屬於高權限操作,DSM 會要求你確認身分。

使用者定義指令碼的警告視窗

警告視窗:按 OK

輸入 DSM 密碼確認

輸入 DSM 密碼後按 Submit

步驟 6:手動執行任務

回到工作排程器清單,選取 Install Portainer 這個任務,點上方的 Run(執行),在確認視窗按 OK。

指令會下載 Portainer 映像檔並啟動容器,耗時取決於你的網路速度,通常是幾秒到幾分鐘。

選取任務並按 Run

選取 Install Portainer → Run → OK

步驟 7:開啟 portainer 容器的日誌

開啟 Container Manager,左側選 Container(容器),選取 portainer,再點 Details(詳細資料)。

Container Manager 中的 portainer 容器詳細資料

Container → 選取 portainer → Details

切換到 Log(日誌) 分頁,找到含有 admin initialization and backup 的那一行,點一下該行,按 Ctrl + C 複製。

日誌分頁中的管理員初始化那一行

Log 分頁:點選 admin initialization 那一行並複製

為什麼: 新版 Portainer 第一次建立管理員時,需要一組 setup_token 來證明「你是這台主機的管理者」。這組 token 會印在容器日誌裡。

步驟 8:取出 setup_token

在電腦上開啟記事本(或任何筆記軟體),按 Ctrl + V 貼上剛才複製的那一行。找到 setup_token=,只複製等號後面的那串字元,下一步要用。

從貼上的日誌文字中取出 setup_token

只複製 = 之後的 token


第二階段:Portainer 初始設定

容器跑起來之後,用瀏覽器完成第一次登入與基本設定。

步驟 9:建立管理員帳號

在瀏覽器輸入 http://192.168.1.131:9000(換成你的 NAS IP)。輸入你要用的使用者名稱與高強度密碼,再輸入一次確認,並把步驟 8 複製的 setup_token 貼進去,按 Create user(建立使用者)。

若頁面還打不開,代表容器可能仍在下載或啟動,等一兩分鐘再重新整理。

Portainer 建立管理員畫面

填入帳號、密碼與 setup_token

步驟 10:跳過額外提示,進入本機環境

先按 Skip(跳過),再按 Get Started(開始使用)。這代表使用 Portainer 所在的本機 Docker 環境,也就是你的 NAS。

按下 Skip

按 Skip

按下 Get Started

按 Get Started

步驟 11:設定環境的 Public IP

  1. 在右側 Environments 區塊,點小鉛筆圖示。
  2. 在新開的頁面找到 Public IP 欄位,填入你的 NAS 區網 IP(例如 192.168.1.131),按 Update environment。
  3. 右上角出現 Environment updated 就完成了,接著會看到儀表板。

為什麼: Portainer 會用這個 IP 產生容器連接埠的連結。沒設定的話,點連結可能會指向錯誤的位址(例如 0.0.0.0)。

點選環境的鉛筆圖示

Environments 區塊的小鉛筆圖示

填寫 Public IP 並更新環境

Public IP 填入 NAS 區網 IP → Update environment

Environment updated 訊息

出現 Environment updated

Portainer 儀表板

設定完成後的儀表板

步驟 12:新增三個 Registries

左側選單點 Registries,按 + Add registry,選擇 Custom registry,然後依下表各新增一筆,每筆填完都按 Add registry 儲存。

Name Registry URL 用途
Github ghcr.io 更新由 GitHub 容器登錄庫提供的映像檔
CODEBERG codeberg.org 更新由 Codeberg 提供的映像檔
Quay.io quay.io 更新由 Quay.io 提供的映像檔

為什麼: 原作者的說明是,如果你之後想透過 Portainer 更新來自這些登錄庫的容器,就必須先把它們加進來。本篇的 IT-Tools 來自 Docker Hub,不受影響,但先加好可以省去日後麻煩。

Registries 頁面按 Add registry

Registries → + Add registry

新增 Github registry

Name 填 Github,URL 填 ghcr.io

新增 CODEBERG registry

Name 填 CODEBERG,URL 填 codeberg.org

新增 Quay.io registry

Name 填 Quay.io,URL 填 quay.io

全部完成後,Registries 清單應該像下圖:

完成後的 Registries 清單

三個 registry 都已加入

步驟 13:隱藏藍色「Upgrade to Business Edition」按鈕(選用)

社群版介面上有一顆醒目的藍色升級按鈕。這一步純粹是外觀調整,不做也不影響任何功能,可以直接跳到步驟 14。原作者的做法是用瀏覽器的廣告攔截擴充功能把它隱藏:

  1. 安裝 Chrome 的 AdBlock 擴充功能:按 Add to Chrome,再按 Add extension。
  2. 回到 Portainer,在藍色按鈕上按右鍵,選 AdBlock → Block this ad。
  3. 依序按 Looks good 與 Confirm。
Portainer 上的藍色升級按鈕

要隱藏的 Upgrade to Business Edition 按鈕

Chrome 商店的 AdBlock

Add to Chrome

確認新增擴充功能

Add extension

右鍵選擇 Block this ad

右鍵 → AdBlock → Block this ad

按下 Looks good

按 Looks good

按下 Confirm

按 Confirm

按鈕隱藏後的 Portainer

完成後的畫面

這個設定只存在於安裝擴充功能的那個瀏覽器,換一台電腦或瀏覽器,按鈕還是會出現。


第三階段:透過 Portainer 部署 IT-Tools

IT-Tools 整合了超過 50 種開發與 IT 常用的小工具。它不需要額外設定,也不需要保存資料的磁碟區,部署完就能直接使用。

步驟 14:登入 Portainer,進入 local 環境

用剛建立的帳號密碼登入 Portainer。左側選單點 Home,再點中間名為 local 的方框。

Portainer Home 頁面點選 local

Home → 點 local

步驟 15:新增 Stack

左側選單點 Stacks,再按 + Add stack。

為什麼用 Stack: Stack 就是用 Docker Compose 的格式描述服務。設定寫成文字,之後要修改、備份或重建都很清楚,也不需要在終端機手打長串指令。

Stacks 頁面按 Add stack

Stacks → + Add stack

步驟 16:命名 Stack 並貼上 Compose 內容

在 Name 欄位輸入 it-tools,然後把下面的內容貼到 Web editor。

services:
  it-tools:
    container_name: IT-TOOLS
    image: corentinth/it-tools
    healthcheck:
     test: curl -f http://localhost:80/ || exit 1
    mem_limit: 2g
    cpu_shares: 768
    security_opt:
      - no-new-privileges:true
    ports:
      - 5545:80
    restart: on-failure:5

各設定的說明:

設定 說明
container_name: IT-TOOLS 容器顯示名稱。
image: corentinth/it-tools 使用的映像檔,未指定版本時預設取最新版。
healthcheck 定期用 curl 檢查網頁是否正常回應,失敗時容器會被標示為不健康。
mem_limit: 2g 記憶體用量上限 2 GB,避免容器吃光 NAS 資源。
cpu_shares: 768 CPU 資源競爭時的相對權重(預設為 1024,數字越低優先度越低)。
no-new-privileges:true 禁止容器內的程序取得額外權限,是常見的安全加固設定。
5545:80 NAS 的 5545 埠對應到容器的 80 埠。若 5545 已被占用,改前面的數字即可。
restart: on-failure:5 容器異常結束時最多自動重啟 5 次。
在 Portainer 填入 Stack 名稱並貼上 Compose

Name 填 it-tools,Web editor 貼上 Compose

步驟 17:部署 Stack

頁面往下捲到底,按 Deploy the stack。首次部署要下載映像檔,可能需要幾分鐘,視網速而定。

按下 Deploy the stack

捲到底部按 Deploy the stack

成功時,畫面右上角會出現 Success Stack successfully deployed。

Stack 部署成功訊息

部署成功訊息

步驟 18:開啟 IT-Tools

在瀏覽器輸入 http://192.168.1.131:5545(換成你的 NAS IP),挑選你需要的工具就能使用。

完成! 你現在有一個可以管理所有容器的 Portainer,以及一個開箱即用的 IT-Tools。


疑難排解與進階設定

安全提醒: Portainer 掛載了 docker.sock,等於擁有這台 NAS 上 Docker 的完整控制權,而且 9000 埠是未加密的 HTTP。請只在區域網路內使用,不要直接把 9000 埠對外轉發;要從外部連線時,請走 HTTPS 與反向代理,並設定強密碼。

使用反向代理(自己的網域)時,Portainer 打不開或登入失敗

需要在步驟 4 的指令中加入 TRUSTED_ORIGINS 環境變數,內容是你對外使用的網域名稱:

docker run -d --name=portainer \
-p 8000:8000 \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
-e TRUSTED_ORIGINS=portainer.yourname.synology.me \
--restart=always \
portainer/portainer-ce

把 portainer.yourname.synology.me 換成你自己的網域。修改後需要重建容器,步驟如下:

  1. 開啟 Container Manager,左側選 Container。
  2. 選取 portainer 容器,點 Action(動作)→ Stop(停止)。
  3. 再次選取它,點 Action → Delete(刪除)。
  4. 左側選 Image(映像),選取 portainer/portainer-ce,刪除該映像。
  5. 回到控制台 → 工作排程器,把 Install Portainer 任務的指令換成上面含 TRUSTED_ORIGINS 的版本,再手動執行一次。

警告: 重建時不要刪除 File Station 裡的 portainer 資料夾,否則帳號與所有 Stack 設定都會消失。

我的儲存空間不是 volume1

把指令中 -v /volume1/docker/portainer:/data 的 volume1 換成實際的名稱,例如 volume2。

想用 HTTPS 存取 Portainer 或 IT-Tools

原作者的說明是,透過 HTTPS 執行這兩個容器時,必須同時啟用 WebSocket 相關設定。詳細做法請看原作者的兩篇文章:How to Run Docker Containers Over HTTPS 與 Some Docker Containers Need WebSocket。

連接埠被占用(9000 或 5545)

Portainer 的 9000 埠可以在 docker run 指令中改左邊的數字(例如 -p 9100:9000);IT-Tools 則改 Compose 中的 5545:80 左邊的數字。改完後,瀏覽器網址也要跟著換成新的連接埠。


來源與相關連結