Linux 發行版/系統

StartOS 0.4.0 發布:歷時六年全面重寫,引入 LXC、新網路棧與 S9PK 軟體包

Start9 Labs 正式發布面向個人伺服器和自託管場景的 Linux 發行版 StartOS 0.4.0。這不是一次普通的增量升級,而是項目歷時六年完成的系統級重寫,涉及用戶界面、網路、容器運行時、軟體包、備份、身份驗證和多架構支持等幾乎所有核心組件。

StartOS 是一款基於 Debian Stable 的伺服器操作系統,主要用於在個人硬體上運行自託管服務。它負責應用發現與安裝、網路配置、依賴管理、數據備份和運行狀態監控,並通過瀏覽器提供圖形化管理界面。用戶可以從 Start9 Marketplace 安裝 Bitcoin、Lightning、BTCPay Server、Nextcloud、Vaultwarden、Matrix 和 SimpleX 等服務。

根據官方 GitHub 發布說明StartOS 0.4.0 已結束公開測試階段。穩定版在代碼和功能上與 0.4.0-beta.10 相同,主要變化是將這一代架構正式標記為可供普通用戶使用,並提供完整的遷移說明、安裝鏡像和校驗值。

全新的伺服器管理界面

StartOS 0.4.0 重新設計了 Web 管理界面,在提高操作速度和信息組織能力的同時,針對手機和平板電腦進行了優化。

新界面加入實時系統監控面板,可以顯示伺服器負載、內存、存儲和服務運行情況。服務介面被提升為獨立的導航頁面,系統日誌與內核日誌則移動至系統設置中。備份、軟體安裝和更新過程也改用分階段進度顯示,用戶可以更直觀地判斷當前操作是否仍在進行。

新版前端升級至 Angular 22、TypeScript 6 和 Taiga UI 5.11。後端主要使用 Rust、Tokio 和 Axum 構建,並通過 Start9 自行開發的 Patch-DB 實現響應式狀態同步。Start Technologies 倉庫目前已經成為 StartOS、StartTunnel、StartWRT、Start CLI、Start SDK 和軟體市場等 Start9 產品的統一代碼倉庫。

LXC 取代 Docker 和 Podman 成為服務運行時

0.4.0 的一項核心架構變化,是使用 LXC 取代此前的 Docker/Podman 服務運行方式。

新的容器架構支持:

  • 在服務中運行多個相互協作的容器;
  • GPU 和其他硬體加速設備;
  • 嵌套容器與用戶空間文件系統;
  • 獨立虛擬網路和 WireGuard;
  • 基於 idmapped mount 的文件許可權映射;
  • 對服務容器實施統一的內存隔離。

每個服務容器都會被放入受 systemd-oomd 監控的 services.slice。系統會為主機保留至少 1 GiB 內存,避免同時安裝或啟動多個服務時耗盡全部內存,導致整台伺服器失去響應。

根據 DistroWatch 軟體包清單,StartOS 0.4.0 的部分底層組件如下:

組件 版本
Debian 基礎系統 Debian 13
Linux 內核 7.0.13
systemd 257.13
LXC / LXCFS 6.0.4
NetworkManager 1.52.1
nftables 1.1.3
OpenSSL 3.5.6
OpenSSH 10.0p1
Firefox ESR 140.13
Tor 0.4.9.11

雖然安裝鏡像仍包含部分 Podman 和 Buildah 工具,但 StartOS 服務的主要運行環境已經遷移到 LXC。

重新構建網路系統

StartOS 0.4.0 對網路系統進行了大規模重寫,為每項服務提供更靈活的本地、遠程、私有域名和公網訪問方式。

新網路棧支持:

  • 區域網埠轉發;
  • WireGuard VPN 網關;
  • 私有域名和公網域名;
  • 內置 DNS 服務;
  • Let』s Encrypt TLS 證書;
  • IPv4 與 IPv6 雙棧公網域名;
  • Tor 作為可選服務;
  • StartTunnel 反向隧道。

StartOS 現在可以通過 PCP、NAT-PMP 和 UPnP IGD 自動與路由器協商埠映射,並按照 PCP、NAT-PMP、UPnP 的順序嘗試。系統還能通過 RFC 2136 DNS UPDATE 將私有域名記錄寫入網關的 DNS 服務,減少手動設置埠轉發和區域網 DNS 的需要。

IPv6 全局單播地址可以被設置為「僅本地」或「公開」。當網關具備 IPv6 地址時,公網域名可以同時發布 AAAAA 記錄;對 TLS 服務,StartOS 會根據 SNI 只接受匹配目標域名的連接。

StartTunnel:不暴露家庭公網地址的遠程訪問

新版本加入與網路棧深度整合的 StartTunnel。這是一個自由、開源的 WireGuard 反向隧道和代理服務,可以為位於 CGNAT、動態公網地址或受限網路之後的 StartOS 伺服器提供公網域名和埠轉發。

與傳統第三方隧道服務不同,StartTunnel 也可以由用戶自行部署。它能夠在不直接公開家庭 IP 地址的情況下,將指定服務暴露到互聯網,並與 StartOS 的域名、DNS、TLS 和埠管理功能配合使用。

新的 S9PK 軟體包格式

StartOS 0.4.0 引入重新設計的 S9PK 服務軟體包格式。S9PK 使用簽名和 Merkle 歸檔結構,提供:

  • 軟體包簽名及來源驗證;
  • 內容完整性檢查;
  • 部分下載;
  • 多架構軟體包;
  • 服務依賴和運行許可權聲明;
  • 更可靠的安裝、升級與遷移流程。

與之配套的 TypeScript Start SDK 2.0 可以幫助開發者將現有應用封裝為 StartOS 服務。SDK 還增加了多容器、連續埠範圍、初始化進度、備份進度和跨軟體包操作等介面。

改進備份與跨伺服器恢復

新版備份系統使用 StartOSBackupsV2 格式,支持差異備份、跨伺服器恢復和基於 FUSE 的跨平台文件系統訪問。第一次完整備份完成後,後續備份只需要保存新增、修改或刪除的內容,從而縮短備份時間。

系統會在選擇備份目標時顯示可用空間,並記錄各軟體包的備份用時及進度。在發現舊版 StartOSBackups 數據後,管理界面可以提示用戶刪除已經不再需要的舊備份,同時只清理當前伺服器對應的數據,不影響同一存儲設備上的其他伺服器備份。

StartOS 0.4.0 還修復了服務尚未完全停止便開始複製數據的問題。系統現在會等待服務徹底停止後才執行備份,降低資料庫等持續寫入型應用產生不一致快照的風險。

使用設備簽名密鑰取代 Cookie 會話

StartOS 0.4.0 將 Web 管理界面和命令行介面的身份驗證機制,從傳統會話 Cookie 改為設備級 Ed25519 簽名密鑰

用戶登錄時,瀏覽器會生成一個不可導出的 WebCrypto 私鑰,並將對應公鑰登記到伺服器。此後的每次 API 請求都會使用該密鑰簽名,而不再攜帶登錄 Cookie。系統允許用戶在「活動會話」頁面查看和撤銷已登記設備,並會自動移除超過30天沒有活動的密鑰。

這一變化可以避免運行在同一伺服器其他埠上的服務設置 Cookie 後,與 StartOS 管理界面發生名稱或作用域衝突。升級完成後,所有舊會話都會失效,用戶需要在每台設備上重新登錄。

從 iptables 遷移到 nftables

0.4.0 將 StartOS 管理的防火牆規則全面遷移至原生 nftables。埠轉發、DNAT、Hairpin NAT、偽裝、容器流量和策略路由規則被集中到專用的 table ip startos 中,並使用穩定的注釋標籤管理規則生命周期。

系統還強化了公網暴露策略:只有使用 TLS 或自身具備安全機制的協議才會被自動開放至互聯網。普通明文服務即使可以在可信區域網中使用,也不會自動暴露到公網。

提供三種體系結構及多個鏡像版本

StartOS 0.4.0 提供 x86_64、AArch64 和 RISC-V RVA23 鏡像,同時為 Raspberry Pi 4 準備了獨立的 microSD 鏡像。x86_64 與 AArch64 版本又分為:

  • Standard:包含專有固件和驅動,兼容更多顯卡、無線網卡及其他硬體;
  • Slim:僅包含自由及開源軟體,適合已確認兼容的硬體;
  • NVIDIA:額外包含 NVIDIA 驅動和容器工具。

DistroWatch 列出的主要鏡像容量如下:

鏡像 容量
x86_64 Standard 2,343 MB
AArch64 Standard 2,272 MB
RISC-V Standard 2,062 MB
Raspberry Pi 鏡像 3,833 MB

全部鏡像及 SHA-256、BLAKE3 校驗值均可在官方 GitHub Release 頁面獲取。普通 x86_64 Standard 鏡像的 SHA-256 校驗值為:

a78f84adbcc942feb2640c613e5bd88e11b33e843e65bc41be252ca9c2747953

從 0.3.5.1 升級前必須完整備份

Start9 特別提醒,0.4.0 與 0.3.x 本質上是兩套不同的操作系統。升級不是普通的軟體包更新,跳過步驟或自行調整遷移流程可能造成數據丟失。

現有用戶在升級前至少需要:

  1. 先將 StartOS 更新到 0.3.5.1;
  2. 將所有已安裝服務更新至兼容的最新版本;
  3. 檢查 Ghost、Synapse、Jam 等需要特殊處理的服務;
  4. 停止所有服務並等待其完全退出;
  5. 創建包含所有服務的完整備份;
  6. 按照官方 0.4.0 升級指南執行遷移;
  7. 升級後再次更新所有服務,並立即創建一份新的 0.4.0 備份。

StartOS 0.3.5.1 與 0.4.0 的備份格式完全不兼容。舊備份不能恢復到 0.4.0,新備份也不能用於恢復 0.3.5.1。因此,升級前的備份只能用於回退舊系統,升級成功後必須重新備份。

Raspberry Pi 不能執行就地 OTA 遷移,需要將 0.4.0 鏡像重新寫入 microSD 卡;當前正式支持的型號僅為 Raspberry Pi 4。

總體而言,StartOS 0.4.0 更接近一次新平台發布,而不是傳統意義上的小版本更新。新的 LXC 運行時、S9PK 軟體包、網路和備份架構,為 Start9 後續擴展自託管應用和硬體平台建立了新的基礎;但系統跨度較大,現有用戶在遷移時也必須比常規升級更加謹慎。

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
bootingman,是「booting」 加上 「man」的一個合成詞。 術語「booting(引導)」是「bootstrapping」的簡寫,描述計算機從零開始啟動的過程,同時也表示一個古老的諺語「通過自力更生而出人頭地「。 「引導」的思想在於一個困難的、複雜的目標可以通過一個小的動作開始,然後以這個小的動作為基礎,一步一步地達到期望目標而完成。這也是我想做和正在做的。

    You may also like

    Comments are closed.