非官方
本頁目錄
  1. 01安裝套件
  2. 02設定管理員密碼
  3. 03啟用模組
  4. 04新增帳戶
  5. 05複製儲存庫
  6. 06開啟編輯器
  7. 07建置應用程式
  8. 08執行、下載或匯出應用程式
  9. 09NAS 上的 App Center 儲存庫

我的第一個 Linux 建置:在 QNAP 上安裝 Bucket & Code 開發環境

Bucket & Code Server IDE 把 Git(Forgejo)、Subversion、具版本控制的 WebDAV 儲存桶、瀏覽器中的 VS Code 與 App Builder 放到您的 NAS 上,全部由同一個面板管理,面板有自己的帳戶。本指南從 App Center 的全新安裝開始,一路帶到一個用配方建置、在 NAS 上執行的應用程式。

  1. 安裝在 App Center 中新增一個儲存庫
  2. 密碼60 分鐘內,從區域網路設定
  3. 模組Git、CI、SVN、編輯器
  4. 帳戶每人一個
  5. 第一個應用程式建置後啟用

截圖取自面板,每個欄位都照本指南填寫。圖中的位址屬於一台 IP 為 192.168.1.20、使用預設連接埠的 NAS。

01安裝套件

需要一台執行 QTS 6.0 或 QuTS hero 6.0 以上版本的 x86_64 NAS。App Center 會以預設設定安裝此套件。

  1. App Center → ⚙ 設定 → App 儲存庫 → 新增。名稱填入 QNAP Utilities,貼上 https://www.qnaputilities.com/repo.xml,然後按 新增。
  2. 在左側欄開啟 QNAP Utilities,並安裝 Bucket & Code Server IDE。
  3. 資料會存放在套件所在磁碟區的 BucketVS 資料夾,例如 /share/CACHEDEV1_DATA/BucketVS。之後可在 儲存空間 頁面將資料移到其他磁碟區。
  4. App Center 中的 開啟 按鈕會帶您進入面板:https://<NAS address>:9951,或 http://<NAS address>:9950。HTTPS 位址一開始使用自我簽署憑證,因此瀏覽器會發出警告,直到您的裝置信任該憑證為止。

02設定管理員密碼

全新安裝時還沒有任何帳戶,面板會開啟帳戶 administrator 的 設定管理員密碼 畫面。請輸入兩次至少 10 個字元的密碼,然後按 設定密碼並登入。

帳戶 administrator 的管理員密碼:已填入「新密碼」與「再次輸入新密碼」,已勾選「至少 10 個字元」與「兩次輸入相符」,以及「設定密碼並登入」按鈕
  • 套件啟動後 60 分鐘內,此畫面可設定密碼。之後,在 App Center 中重新啟動套件,即可再取得 60 分鐘。
  • 只有區域網路中的瀏覽器可以設定,且必須直接連線,不能透過 Proxy。畫面等待期間,QTS 系統記錄會顯示要開啟的位址。
  • QTS 帳戶無法登入此面板,面板有自己的帳戶。

03啟用模組

Git、CI、SVN & Bucket 以及編輯器在新安裝時為關閉狀態。在 總覽 頁面上,每個模組都有一張卡片,說明它提供什麼功能,並附上按鈕:開啟 Git、開啟 編輯器 等等。按鈕會執行一項工作,準備並啟動模組;模組就緒後,卡片會顯示 執行中。CI 需要 Git:Git 關閉時,CI 的按鈕會顯示 開啟 Git 和 CI。

總覽上 Git 關閉時的 Git 卡片:Forgejo 15.0.9、關閉、Git 提供的功能,以及「開啟 Git」按鈕

04新增帳戶

一個帳號可用相同的名稱與密碼登入面板、Git、SVN 與 Bucket。在 使用者頁面按下 新帳號。

  1. 使用者名稱:使用小寫字母,例如 ola。它同時也是 Forgejo 的使用者名稱。
  2. 角色:viewer可讀取,developer還可開啟編輯器並建置應用程式,admin可執行所有操作。
  3. 密碼:至少 10 個字元,或按下 產生。保留勾選 首次登入時必須設定自己的密碼,然後按下 建立帳號。
新增帳號對話框:使用者名稱 ola、角色 developer 及其關於 root shell 的警告、一組密碼、已勾選「首次登入時必須設定自己的密碼」,以及建立帳號按鈕

編輯器的終端機是 NAS 上的 root shell,開發者排定的工作也會以 root 身分執行。請只把開發者角色交給您放心告知 NAS 管理員密碼的人。

05複製儲存庫

Git 頁面上的 開啟 Forgejo 按鈕會開啟 Forgejo,您可以在那裡建立、匯入及鏡像儲存庫。頁面 在 Forgejo 中 卡片裡的 新增儲存庫 會開啟 Forgejo 的新儲存庫表單。Forgejo 會用您的面板工作階段自動登入。同一頁面的 複製儲存庫 會顯示指定擁有者與儲存庫的複製指令。

複製儲存庫:擁有者 ola、儲存庫 firmware,git clone ssh://git@192.168.1.20:9952/ola/firmware.git 與 git clone http://192.168.1.20:9950/git/ola/firmware.git
  • 透過 HTTP 或 HTTPS 時,git 會使用您的面板使用者名稱與密碼。若已啟用兩步驟驗證,請改用 Forgejo 存取權杖而非密碼(Forgejo 的設定 → 應用程式)。
  • 透過 SSH(連接埠 9952)時,git 會使用您在 Forgejo 的設定 → SSH / GPG 金鑰中新增的金鑰。

06開啟編輯器

在 編輯器設定 頁面按下開啟編輯器。VS Code 會在新分頁中開啟資料目錄下的 projects 資料夾。每個帳號各有自己的執行個體。

編輯器設定頁面及其「開啟編輯器」按鈕
瀏覽器中的 VS Code:projects 資料夾上的檔案總管,以及 code-server 歡迎頁面
編輯器。其終端機內含套件提供的 git、svn、node、npm、rsync 與 curl。執行個體若 30 分鐘沒有瀏覽器流量就會停止,但只要從它啟動的程式仍在執行,就絕不會停止。

07建置應用程式

App Builder 會依配方將程式編譯到同一個資料夾,也就是應用程式的前綴。每個配方都寫明三件事:附校驗和的原始碼來源、它需要的其他配方,以及一項確認成品能執行的檢查。在 應用程式頁面按下新應用程式。

  1. 設定。輸入名稱,例如 mytools;前綴會隨之變成 /usr/app/mytools。在建置環境下選擇環境。全新安裝時還沒有任何建置環境:請按建立 Builder 環境(管理員),它會準備好含建置工具的 Ubuntu 24.04,就緒後自動選用。然後按下選擇配方。名稱與前綴:名稱 mytools,前綴 /usr/app/mytools;環境:建置環境 ubuntu2404-builder、ubuntu-24.04-x86_64、glibc 2.39
  2. 配方。搜尋程式並勾選。它必需的相依項目會依建置順序自動加入:tmux 會帶入 libevent 與 ncurses。按下檢閱。配方:「專案的配方」設為「無:僅配方庫」,搜尋 tmux,已勾選 tmux 3.7c,已選 1 項,建置中有 3 個配方建置順序:tmux 所需的 libevent 與 ncurses,接著是 tmux;Debian 套件 cmake 與 ninja-build;返回與檢閱按鈕
  3. 檢閱並建置。檢查摘要後按下建立並建置。檢閱:名稱 mytools、前綴 /usr/app/mytools、環境 ubuntu2404-builder、建置目標 x86_64、執行於套件可在其上執行的每台 NAS、連結方式 dynamic、3 個配方;建置前:Debian 套件、授權,以及建立並建置按鈕

執行於請保留為套件能執行的每一台 NAS。這樣一來,所有程式都不能需要高於 2.39 的 glibc,因此應用程式也能在其他執行 QTS 6.0、QuTS hero 6.0 或更新版本的 x86_64 NAS 上執行。

08執行、下載或匯出應用程式

應用程式頁面會顯示其流程:建置、QPKG 匯出與發佈。

流程:建置、已建置;匯出為 QPKG;發佈,需要匯出
  • 啟用(管理員)會將前綴設為指向最新成功建置的連結,讓程式以 /usr/app/<name>/bin/… 的形式執行。套件會在每次啟動時重新建立此連結。本機 NAS 上:未啟用、啟用按鈕,以及啟用時會使用的建置日期
  • 下載會提供最新成功建置的 .tar.zst 封存檔。
  • 匯出為 QPKG(管理員)會把建置打包成 QPKG,沒有安裝本套件的其他 NAS 也能用它安裝這個應用程式。匯出需要 QDK:請在 工具鏈 頁面的 QNAP 分頁安裝 QNAP QDK 2.5.0。匯出的套件沒有程式碼簽章,所以照原樣上傳時,套件 頁面上的儲存庫會拒絕它。

09NAS 上的 App Center 儲存庫

「套件」頁面是本 NAS 上的 App Center 儲存庫。若要在您其他的 NAS 裝置上使用,請在 App Center 中前往 ⚙ 設定 → 應用程式儲存庫 → 新增,並填入此位址。

App Center 位址:http://192.168.1.20:9950/repo/repo.xml

開發人員可在此上傳經程式碼簽章的 QPKG,管理員再選擇 App Center 提供的版本。使用指南涵蓋其餘內容,例如備份、發布到網際網路,以及核心工作坊。