Unofficial

Bucket & Code Server IDE

您的 NAS 已經 保管著您的檔案。 現在它還能 建置您的軟體。

QNAP 伺服器的工坊。

Bucket & Code Server IDE 是您 QNAP NAS 上的開發工坊:搭配 Forgejo 的 Git、CI、有版本控管的 Bucket、瀏覽器中的 VS Code,以及把配方編譯成 QPKG 的 App Builder。和其他應用程式一樣,從 App Center 安裝。

它能做什麼

在您已有的 NAS 上

Bucket & Code Server IDE 會在您已經擁有的 QNAP NAS 上安裝完整的開發環境,自帶網頁伺服器、帳號與工具,並把所有東西保存在您磁碟區上的單一資料資料夾中。在瀏覽器中寫程式碼、推送到 Forgejo、讓 NAS 上的 runner 建置,再發佈到您自己的 App Center 儲存庫。操控這一切的面板用起來就像程式碼編輯器,並支援九種語言。

01 · 工作台

像您的編輯器一樣運作的面板

活動列、側邊欄、分頁、命令選擇區、底部面板與狀態列。如果您平常都在 VS Code 裡工作,馬上就能上手。每個頁面都在分頁中開啟,Ctrl+Shift+P 可找到您的角色能執行的每一個指令,狀態列則告訴您模組正在做什麼、磁碟區還剩多少空間,以及憑證的狀況。

  • 活動列、側邊欄中的樹狀結構、預覽分頁,以及兩個頁面並排
  • 底部面板(Ctrl+J)中的工作、問題與輸出,並即時顯示進度
  • 深色與淺色主題、手機版面配置與鍵盤快速鍵
  • 英文、波蘭文、德文、法文、義大利文、荷蘭文、瑞典文、日文與繁體中文,使用者指南也提供同樣的九種語言
  • admin、developer 與 viewer 角色、兩步驟驗證與 API 權杖

02 · 新專案

一個步驟建立新專案

選擇範本、取個名稱,然後按下建立專案。一項工作就會建立 Forgejo 儲存庫、提交附帶 CI workflow 的範本、推送出去,並在您的編輯器開啟的資料夾中留下一份副本。開啟 CI 後,下一次推送就會在 NAS 上建置。

  • C、使用 CMake 的 C++、Go、Rust、Node、Python 與 Java
  • 核心模組、ch341 USB 序列驅動程式、QPKG 套件,或 App Builder 應用程式
  • 第一個提交是您的,位於 main 上;除非您選擇公開,否則為私人
  • 若缺少任何東西,就不會建立任何內容,對話方塊會告訴您該怎麼做

03 · Git

Git 與 Forgejo

Forgejo 提供儲存庫、議題、拉取請求、版本發佈、Wiki、LFS、鏡像與 Webhook,全部託管在您自己的磁碟上。每個面板帳號都是 Forgejo 帳號,所以不需要同步第二份使用者清單;透過 HTTPS 使用 git 時接受面板密碼,開啟兩步驟驗證後則接受存取權杖。

  • 透過 HTTPS 或 SSH 複製;Git 頁面會為您寫好兩種指令
  • Forgejo 的登入就是面板的登入,兩步驟驗證碼也包含在內
  • 從您自己的網路鏡像與匯入,預設即允許
  • 開啟公開瀏覽,即可讓沒有帳號的人看到公開儲存庫

04 · CI

在程式碼所在之處執行的 CI

推送 workflow 後,NAS 上的 Forgejo Actions runner 就會接手。工作直接在 NAS 上執行,套件的工具與您的建置環境都隨手可用。

  • runs-on: bucketvs,或標籤 qnap-x86_64、qnap-aarch64 與 self-hosted
  • bvs env run 可從任何工作在您的某個環境中建置
  • 需要更多機器時,可從 CI 頁面註冊外部 Linux runner(x86_64 或 aarch64)
  • 工作以 admin 身分執行,而不是在容器中,CI 頁面也會這樣說明:只讓它執行您信任的 workflow

05 · 編輯器

瀏覽器中的 VS Code,搭配您的 AI 助理

每位開發者都有自己在瀏覽器中的 VS Code(code-server)。它的終端機路徑中有 git、svn、node、npm、rsync 與 curl,一個指令就能進入完整的 Linux 環境。從編輯器設定頁面安裝 Claude Code、Gemini CLI 或 Codex CLI,而精靈建立的每個專案都帶有一個技能,教 AI 助理 QNAP NAS 在 shell 中如何運作。

  • 每個帳號一個執行個體;閒置時會停止,但只要終端機中仍有程式在執行就不會停止
  • 來自 Open VSX 的擴充功能
  • 連接埠檢視可連到您剛在 NAS 上啟動的開發伺服器
  • 終端機是 NAS 上的 root shell,因此 developer 角色只適合您願意託付 admin 密碼的人

06 · SVN 與 Bucket

記住每一次儲存的 Bucket

Bucket 是一個網路磁碟機,每個儲存的檔案都會成為一個修訂版本。您可以開啟任何較早的版本、與另一個版本比較,並將它以新的修訂版本放回,因此不會遺失任何東西。Subversion 儲存庫就在 Bucket 旁邊,使用相同的帳號。

  • 支援 macOS Finder、rclone、davfs2、Cyberduck、WinSCP 與 curl
  • 每個儲存庫的權限:對每個帳號分別設定讀寫、唯讀或無
  • Finder 的 ._* 與 .DS_Store 檔案預設不會進入歷史紀錄
  • 可選的唯讀網頁檢視,讓沒有帳號的人看到檔案、歷史紀錄與差異

07 · 工具鏈

在 NAS 上執行真正的 Linux

將 Debian、Ubuntu 或 Alpine 解壓縮到 NAS 上的環境中,像在任何 Linux 機器上一樣工作。在 Debian 與 Ubuntu 中可以使用 apt install,安裝的東西會保留下來。從經過簽署的目錄加入您需要的執行環境與編譯器,每個下載的檔案在使用前都會以其 sha256 驗證。

  • Debian 12 與 13、Ubuntu 22.04 與 24.04、Alpine 3.22
  • Python、Go、Node.js、Zig、Rust、CMake、Ninja 與 Java
  • 適用於 aarch64、x86-64 與 armv7 的 Bootlin 交叉工具鏈(在 x86_64 NAS 上)
  • QNAP 的 QDK 2.5.0,以及 bvs qbuild,可從任何含有 qpkg.cfg 的資料夾建置 QPKG
  • 複製、匯出或刪除環境;從面板在其中開啟 shell

08 · App Builder

App Builder:從配方到 QPKG

從 523 個配方中選擇程式、選擇連結方式,然後建置。App Builder 會把所有內容編譯到環境中的單一資料夾,並在這次建置取代上一次之前檢查每個程式。啟用應用程式後,它的程式就會在 NAS 上執行,您也可以將它匯出為獨立的 QPKG。

  • 函式庫、shell、工具與伺服器:bash、zsh、coreutils、curl、git、jq、rsync、tmux、htop、nginx、redis、openssh、PowerDNS 等
  • 每個配方都以 sha256 固定其原始碼,並以檢查證明其結果
  • 四種連結方式;Bundle 自帶函式庫,只需要 NAS 的 C 函式庫
  • 適用於 aarch64 與 armv7 的交叉建置
  • 建置失敗時,應用程式維持原樣

09 · 相依性

看清每個二進位檔需要什麼

「Library not found」不該成為 NAS 上的意外。相依性分頁會讀取一次建置中的每個 ELF 檔案而不執行它,並顯示每個檔案需要什麼,以及 NAS 的載入器在哪裡找到它。缺少的函式庫、函式庫沒有定義的版本,或指向應用程式之外的 RUNPATH,都會成為附帶修正方法的發現項目。

  • 有按鈕可修正的就一鍵修正:加入配方並建置、切換連結方式、修補 RUNPATH
  • 以圖或樹狀結構呈現每個檔案、應用程式的函式庫與 NAS 的函式庫
  • 可預覽修改前後的修補工具
  • bvs ldd 與 bvs deps 在 shell 中給您相同的答案

10 · 核心

為您執行中的核心準備的核心工坊

需要 QNAP 沒有提供的驅動程式嗎?核心工坊會讀取執行中的核心對自身的描述,準備相符的核心原始碼樹,並據此建置您的模組。每個模組在載入前都會與執行中的核心比對,未通過檢查的模組絕不會被載入。

  • 設定檔:版本、編譯器、vermagic 與 struct module 的配置
  • QNAP 已發佈 GPL 原始碼樹時使用 QNAP 的,否則使用 kernel.org 的原始碼樹
  • 建置您自己的模組,或核心原始碼樹中的驅動程式,例如 ch341 USB 序列驅動程式
  • 連同其相依的模組一起載入模組;應用程式可以攜帶自己的模組

11 · 套件

您自己的 App Center 儲存庫

將 QPKG 發佈到套件的 App Center 儲存庫,在其他 NAS 的 App Center 中加入它的位址,就能像使用其他儲存庫一樣從中安裝。App Center 看到哪個版本由您決定。

  • 每個版本都保留可供下載;其中一個列為最新版本
  • 從套件頁面、從 CI workflow,或使用 bvs repo publish 上傳

12 · 發佈

不必開啟連接埠也能上網

發佈頁面會把面板、Forgejo 與套件儲存庫放到您自己網域的名稱下,網域的 DNS 位於 Cloudflare。cloudflared 從 NAS 向外連線,因此路由器不需開啟任何連接埠,憑證則由 Cloudflare 保管。每個請求仍會經過套件自己的存取控管,只有您設為公開的內容無需帳號即可開啟。

  • 一切都會先在 Cloudflare 檢查;檢查失敗時什麼都不會變更
  • 供面板與 Forgejo 使用的主要主機名稱,以及供其他 NAS 的 App Center 使用的套件主機名稱
  • 可選的快取預設,適用於套件與面板的檔案
  • 從 Cloudflare 移除會收回它建立的記錄、快取規則與通道

13 · 備份

備份與日常工作

Git、SVN、Bucket、設定與 VS Code 設定的每日備份會保留最近 7 天、4 週與 6 個月的資料。副本可存到 NAS 上的資料夾、透過 rsync 與 SSH 傳送,或送到 rclone 能到達的任何地方,而每一份離開 NAS 的副本都會以 age 加密。

  • 驗證會完整讀回一次執行的內容:每個 sha256、svnadmin verify、git fsck
  • 還原全部,或在模組持續執行時只還原一個儲存庫;任何東西在檢查之前都不會被取代
  • NAS 上或環境中的 cron 工作,支援時區、逾時,並在執行失敗時傳送通知
  • 記錄、通知與支援資料包,全部都在面板中

14 · 範例

內含大型專案

範例庫有 63 個一鍵即可套用的現成範例。其中數個是完整的產品。TurboDNS 從配方建置 PowerDNS Authoritative Server 5.1.4,加上區域面板,並把兩者連同 CI workflow 打包成 QPKG;MailServerPro 則對 Postfix、Dovecot、Rspamd 與 Roundcube 做同樣的事,WebHostPro 則對 nginx、Apache httpd、PHP 與資料庫做同樣的事。

從原始碼建置的郵件伺服器。Postfix 負責 SMTP,Dovecot 搭配 Pigeonhole 負責 IMAP、POP3、Sieve 與 ManageSieve,Rspamd 搭配 Valkey 防垃圾郵件,還有 ClamAV,以及防止密碼猜測的 fail2ban。DKIM 簽署、SPF、DMARC 與 ARC、灰名單、MTA-STS,以及透過自己的驗證解析器實現的 DANE。Roundcube 提供網頁郵件,CalDAV 與 CardDAV 提供行事曆與聯絡人,Z-Push 提供 Exchange ActiveSync。多個網域、有配額的信箱、別名、全收信箱、轉寄與休假自動回覆,全都存放在同一個資料庫中。管理面板可加入網域、信箱與 DKIM 金鑰,列出每個網域需要的 DNS 記錄,顯示佇列與記錄,並備份每個信箱。App Builder 在 NAS 上編譯它的配方;一個 make 目標就能把應用程式變成 QPKG。

  • 九種語言的區域面板,每項變更都先試執行
  • 快照、預設組合、傳播檢查與 DNSSEC
  • 推送到 Cloudflare 與 OVH,附帶試執行與讀回
  • 範例庫中有 18 個應用程式、9 個環境、6 個 CI workflow、5 個 cron 工作與 25 個編輯器專案

大型專案,直接看畫面

範例資料

WebHostPro(網頁伺服器)、TurboDNS(DNS 伺服器)與 MailServerPro(郵件伺服器)是範例庫中的編輯器專案,各自封裝成 QPKG,並有自己的面板。

WebHostPro: 網站
WebHostPro網站頁面:每個網站的類型、伺服器、TLS 與狀態,以及網域設定尚未完成的網站的標記。
WebHostPro: 網域精靈
WebHostPro網域精靈的網域註冊商步驟:要在購買網域處填入的名稱伺服器與 Glue 記錄,每一項都附複製按鈕,以及路由器的轉送設定。
WebHostPro: 網域設定
WebHostPro網站概覽中的「完成設定」卡片:送到 TurboDNS 的記錄、要在網域註冊商處填入的值,以及讀取上層區域的名稱伺服器、這台 NAS 的 TurboDNS、三個公用解析器與前端的即時檢查。
WebHostPro: PHP 分頁
WebHostProPHP 網站的 PHP 分頁:版本與時區、限制、錯誤、工作階段、OPcache 與 JIT、APCu、擴充功能、其他 php.ini 行與 PHP 程序,每個欄位都有說明用途的「?」。
WebHostPro: 資料庫
WebHostPro資料庫頁面:MariaDB 與 Percona Server 各有一張資料庫伺服器卡片,含緩衝池、連線數、慢查詢的時間與依伺服器自身選項清單檢查的其他 my.cnf 行;變更是草稿,套用時會重新啟動伺服器。
TurboDNS: 區域
TurboDNS區域:區域清單,以及新增區域的表單,含名稱伺服器與序號模式。
TurboDNS: 區域記錄
TurboDNS區域的記錄:序號與簽署狀態、記錄集,以及新增記錄集的表單。
TurboDNS: 試執行
TurboDNS新記錄集以試執行檢視:在任何東西改變之前,清單會列出將新增、取代或刪除的內容。
MailServerPro: 總覽
MailServerPro總覽:十項服務與其狀態,以及網域、信箱、別名和佇列中郵件的數量。
MailServerPro: 網域
MailServerPro網域:每個網域的狀態、信箱與 catch-all,以及 DNS 記錄、開關與刪除的按鈕。
MailServerPro: 網域的 DNS 記錄
MailServerPro網域要發布的 DNS 記錄:MX、SPF、DKIM、DMARC、MTA-STS、TLS-RPT、autoconfig 與 SRV,每一筆都附上原因。
MailServerPro: 信箱
MailServerPro信箱:位址、名稱、用量與配額、狀態與轉寄,下方是新增信箱的表單。
MailServerPro: 設定
MailServerPro設定:主機名稱、憑證、郵件大小與寄送速率、MTA-STS 與 DANE、垃圾郵件門檻、灰名單、ClamAV、fail2ban 與備份。
1 / 13

面板是真實的,在建置機器的瀏覽器中開啟。其中的資料是虛構的:example.org 與 example.test 之下的名稱、文件專用範圍的位址,以及本機位址。

適合誰

  • 想把程式碼、建置與 CI 放在自己擁有的硬體上的開發者。
  • 為 NAS 建置自己的 QPKG、命令列工具與伺服器的 QNAP 進階使用者。
  • 需要私人 Git、議題與拉取請求,卻不想訂閱雲端服務的小型團隊。
  • 需要 QNAP 沒有提供的核心模組的動手玩家。
  • 想在 Finder、rclone 與 davfs2 都能直接存取的網路磁碟機上保留檔案每個版本的任何人。

系統需求

  • QTS 6.0 或 QuTS hero 6.0 以上版本
  • x86_64 或 ARM 64 位元的 QNAP NAS
  • 每種架構一個套件,從 App Center 安裝

把您的 NAS 變成工坊。

安裝 Bucket & Code Server IDE、登入,然後開啟您需要的模組。

QNAP is a trademark of QNAP Systems, Inc. Bucket & Code Server IDE is made for QNAP NAS; it is not made or endorsed by QNAP.