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.