Terminus(Olares)系统架构解析:从 Linux Kernel 到系统应用的四层分层设计
云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载本文基于仓库中的 系统架构文档完整拆解 Olares本项目 Terminus 的开源发行版形态的分层体系以 Linux Kernel 为底座自下而上依次为 Infrastructure容器编排、存储、网络、GPU 管理、Platform数据库、消息队列、分布式文件系统等中间件、Application Framework认证、应用治理、网络连通、知识与 AI 服务等最上层为预装系统应用。读完后你将能够理解每一层各组件的选型理由与职责边界并能对照仓库中infrastructure/、platform/、framework/、daemon/、cli/等目录定位到对应实现。Infrastructure 基础设施层基础设施层提供容器编排、存储、网络与集群管理等基础能力。仓库中 infrastructure/README.md 以组件表的形式列出了该层的全部子组件及其职责可作为本节内容的索引。容器编排Olares 根据底层环境选择不同的 Kubernetes 发行版Linux 环境含 WSL、PVE、LXC、树莓派可选装完整 Kubernetes 或轻量级 K3s。K3s 是默认选项因为在本地硬件上性能更好、资源占用更低macOS使用 minikube 在 Linux 虚拟机内部署 Kubernetes保证跨平台体验一致。无论选择哪种发行版用户获得的 Olares 核心能力与体验是一致的。从源码结构看infrastructure/README.md 进一步说明了 K3s 是 Olares 默认安装和运行的发行版而 KubeSphere 则作为 Kubernetes 之上的管理层使用用户管理与监控栈的部分能力基于它。此外Olares 的应用管理框架构建在 Helm 之上Helm 作为 Kubernetes 的包管理器负责应用的生命周期操作。网络网络栈保证容器、节点与服务之间通信顺畅核心组件包括CoreDNS为集群提供 DNS 服务确保高效的名称解析见 infrastructure/coredns/README.mdCalico容器网络接口CNI实现促进容器与虚拟机之间的通信并提供网络策略控制见 infrastructure/calico/README.md。从 infrastructure/README.md 的组件表可以确认Calico 与 CNI、Conntrack、socat 一起共同提供集群网络与 Kubernetes Service 能力其中 Conntrack 用于 Linux 内核的连接跟踪NAT 与防火墙socat 用于网络中继任务Envoy高性能、可扩展的边缘与服务代理。作为服务间通信的中间件处理负载均衡、服务发现、安全通信与可观测性既可独立作为反向代理或 API 网关运行也常用作服务网格的数据面组件。分布式存储Olares 针对单节点与多节点场景提供了灵活的存储方案本地存储默认适合单节点部署读写性能最佳S3云存储选项适合通过 S3 或任意 S3 兼容服务进行云端部署MinIO自托管场景的分布式存储方案。可以通过 Olares 搭建 MinIO 集群也可以挂载已有集群见 infrastructure/minio/README.md。从该组件说明看当 Olares 跨机器分布式部署时MinIO 作为 JuiceFS 的数据存储后端为 Olares 文件系统提供统一视图。分布式键值存储Olares 使用etcd作为分布式键值存储它是 Kubernetes 存储与管理全部集群数据的基石见 infrastructure/etcd/README.md。GPU 管理Olares 通过 CUDA 驱动、NVIDIA device plugin 与 nvShare 的协同来管理和分配 GPU 资源CUDAGPU 硬件与操作系统之间的核心接口。安装时若检测到 NVIDIA GPUCUDA 驱动栈会随 Olares 一并安装见 infrastructure/cuda/README.mdNVIDIA device plugin让 GPU 资源能够被宣告、调度并分配给容器或 PodnvShare允许多个容器或 Pod 共享单块 GPU从而在 Olares 中同时支持共享与独占两种 GPU 使用模式提高 GPU 利用率。需要注意的是当前 Olares 的 GPU 支持仅限于每节点一块 GPU 的部署。从 Olares v1.11 开始支持 CUDA 12.4 及以上版本宿主机环境的 CUDA 配置变化可以通过olares-cli与 Olares 集群保持同步。从源码结构看GPU 能力的具体实现位于 infrastructure/gpu该组件负责在应用之间管理和分配 GPU 资源Olares 在此维护了 HAMi 的分支用于跨应用的 GPU 资源管理同时 platform/hami/README.md 对应平台层的 GPU 共享实现。容器管理Olares 使用轻量级容器运行时containerd执行容器化部署见 infrastructure/containerd/README.md。infrastructure/README.md 的组件表进一步显示其完整运行时链路containerd 由runc按 OCI 规范实际启动容器的 CLI 工具执行具体容器进程并可用cri-tools像 Kubernetes 那样通过 CRI 与 containerd 交互便于调试。安装层面的一个实践约束值得注意根据 installation-overview.md若机器上已安装 containerd例如作为 Docker 的一部分可能与 Olares 使用的 containerd 产生兼容性问题安装前建议先卸载已有 containerd。Olares Controller Panel管控面板Olares 的管控通过两个工具实现olares-cli管理 Olares 集群、应用与硬件节点的命令行工具。仓库 cli/README.md 说明它是一个单静态 Go 二进制覆盖 OS bootstrap、Olares ID、Files、Market、Dashboard、Settings、ControlHub、Router 等能力并内置了供 AI Agent 调用的olares-*技能文档。在 Olares 宿主机上它位于/usr/local/bin/olares-cli随 OS 同步升级olaresd守护进程负责监控硬件与网络变化并管理集群升级、重启等维护操作。从源码看daemon/README.md 给出了olaresd的详细实现事实它是每个 Olares 节点启动的基础进程以 systemd 服务形式安装于/etc/systemd/system/olaresd.service在端口 18088暴露带签名认证的 REST API在 Kubernetes 启动之前即完成硬件抽象、网络编排、存储管理与集群生命周期操作。典型端点包括分组端点示例功能生命周期POST /command/install、POST /command/upgrade、POST /command/reboot安装、升级、重启网络POST /command/connect-wifi、POST /command/change-hostWiFi 接入、IP 绑定变更存储POST /command/mount-samba、POST /command/umount-usbSMB 挂载、USB 卸载含集群级变体系统信息GET /system/status、GET /system/mounted-usb系统状态、挂载查询容器管理GET /containerd/images/、POST /containerd/images/prune镜像列表与清理Platform 平台层平台层服务以容器方式运行提供数据库、消息系统、文件系统、工作流编排、密钥管理与可观测性等中间件。仓库中 platform/README.md 的组件表覆盖本节全部选型。关系数据库Olares 以PostgreSQL 16作为主关系数据库见 platform/postgresql/README.md。所有应用共享同一个 PostgreSQL 实例各应用通过独立账号实现隔离PostgreSQL 同时充当全文搜索引擎与向量数据库。多节点场景下引入Citus做分布式扩展见 platform/postgresql/citus但其生产就绪度仍在评估中。文档还指出未来 PostgreSQL 计划迁移至基础设施层以获得更好的资源管理。键值缓存Olares 集成KVRocks——基于 RocksDB 构建、兼容 Redis 的持久化键值存储。它在内存与磁盘之间做平衡比 Redis 集群更节省资源但性能略慢。对应仓库中的 platform/redis 目录其下的 kvrocks 组件说明 即该选型。消息队列Olares 集成NATS见 platform/nats/README.md一种轻量、高性能的消息中间件在低资源消耗的前提下提供可靠的消息队列能力。分布式文件系统Olares 采用JuiceFS见 platform/juicefs/README.md这一云原生分布式文件系统为应用提供 POSIX 兼容接口。当使用 S3 或 MinIO 作为存储后端时JuiceFS 保证跨节点的无缝文件访问。platform/README.md 中还列出了fs-lib为 JuiceFS 提供通知能力的配套库。工作流管理Olares 使用Argo Workflows见 platform/argo进行工作流编排。这个 Kubernetes 原生工具用于自动化复杂任务例如 Olares 分布式推荐引擎所需的工作流。当前该能力不对第三方应用开放。密钥管理两个密钥管理方案同时集成进 OlaresVault保护账号、密码、助记词等敏感数据通过加密保证即使服务器被攻破数据依然安全。它由 Olares 团队基于 Padloc 开发对应 framework/vaultInfisical用于管理敏感信息、防止 Olares 开发过程中的密钥泄漏对应 framework/infisical。可观测性Prometheus用于系统监控与资源用量跟踪采集 Dashboard、Market 等应用的资源指标见 platform/prometheus/README.md。从源码结构看framework/kube-state-metrics 监听 Kubernetes API Server 并生成集群对象状态指标是该监控栈的组成部分OpenTelemetry基于 eBPF 监控实现 Olares 系统内请求工作流的追踪开发中见 platform/open-telemetry/README.md。其他中间件Olares 应用商店还包含常用中间件如用于可视化的 Grafana、用于文档存储的 MongoDB、用于混沌测试的 Chaos Mesh。此外从源码结构看platform/tapr 是平台层的关键运行时它为 Olares 应用捆绑了一组经过整理的 sidecar 与 Kubernetes operator解决自托管应用普遍需要处理的无聊但关键的管道问题——文件上传、密钥存储、事件流、WebSocket 与开箱即用的数据服务。Application Framework 应用框架层应用框架层为系统应用与第三方应用提供公共功能与接口。仓库中 framework/README.md 以组件表列出了该层全部子组件与下表一一对应。认证与授权LLDAP管理用户账号为应用提供 LDAP轻量目录访问协议服务Authelia见 framework/authelia/README.md提供认证与授权支持包括多因素认证与单点登录SSO。应用治理app-service负责应用生命周期管理与资源分配。从源码与 framework/app-service/README.md 的实现事实看它遵循 Kubernetes Operator 模式Application 本身是一个由 CRD 定义的 Custom Resource用户发起安装时由 Application Controller 自动创建该资源控制器通过 reconcile 循环将集群同步到期望状态system-server管理应用间 API 调用的权限并处理应用与数据库中间件之间的网络路由。该组件提供 system-server/README.md 描述的权限与路由职责并附带Dockerfile、Dockerfile.provider与 examples 目录可作参考image-server与 app-service 配合管理 Olares 应用所需的容器镜像bflBackend For Launcher 服务聚合所有系统服务的后端接口并代理请求包括用户隔离的系统与集群信息。从源码结构看framework/l4-bfl-proxy 为其配套的 Layer 4 网络代理专门增强 BFL 在传输层的数据传输效率与可靠性仓库中还有 framework/app-gateway 承担应用网关职责。网络连通性Olares 通过以下方案提供安全灵活的网络连通性反向代理见 framework/reverse-proxy/README.md可选 Cloudflare Tunnel、Olares Tunnel 或自建 FRPTailscale支持用户从任意位置安全访问系统Headscale见 framework/headscale/README.md自托管的 Tailscale 控制服务器实现。文件服务File server提供基础文件管理服务见 framework/files/README.mdSeafile见 framework/seahub/README.md开源的 Dropbox 替代方案用于文件同步。Olares 深度集成 Seafile让用户将多台设备的文件同步到集中仓库Drive server集成 Google Drive、Dropbox、S3 等外部存储服务Media server基于 ffmpeg 对视频文件进行流媒体播放。知识服务Knowledge存储用户通过浏览器扩展收集或用 LarePass 从手机分享的网页、视频、音频、PDF、EPUB 等内容该仓库同时被去中心化推荐引擎用于存储其结果Download使用 aria2 与 youtube-dlp 下载文件、磁力链接和在线视频Search对 Knowledge 与 Files 中的存储内容提供全文搜索对应 framework/search3/README.mdRSSHub生成 RSS 源以便内容订阅。AI 服务Olares 的 AI 能力规划均为开发中Model serving为应用托管 AI 模型RAG interface为文件、文章、图片与视频提供检索增强生成RAG服务Agent workflow orchestration管理 Agent 与工具工作流。系统服务Notification见 framework/notifications/README.md投递系统级通知Backup见 framework/backup-server/README.md支持目录、应用与集群的备份。从源码结构看基础设施层的 infrastructure/restic/README.md 提供的 restic 备份工具与 platform/velero/README.md 的集群资源/持久卷备份恢复工具分别对应文件数据层与 Kubernetes 资源层的备份实现Upgrade见 framework/upgrade/README.md支持系统自动化升级。System Applications 系统应用系统应用提供文件、知识、密码与系统本身的管理工具全部预装用户还可以安装更多应用通过 Market 应用。应用职责Files文件管理应用跨设备与数据源管理并同步文件支持无缝共享与访问Wise本地优先、AI 原生的现代阅读器收集、阅读并管理来自各平台的信息用户可运行自托管推荐算法筛选和排序在线内容Vault安全的密码管理器跨设备存储与管理敏感信息Market去中心化、无需许可的应用商店用于安装、卸载与更新应用及推荐算法Desktop管理与交互已安装应用的中心支持文件与应用搜索Profile自定义用户资料页的应用Settings系统配置应用Dashboard监控系统资源使用的应用Control HubOlares 的控制台对系统及其环境提供精确且自主的控制从架构图可见系统应用层还包含DevBox应用开发开发中对应仓库中 framework/README.md 所列各系统服务的上层入口。各层在仓库中的目录映射理解本文档后可以在仓库中快速定位各层实现架构层仓库目录基础设施层infrastructure/k3s、calico、etcd、containerd、cuda、gpu、helm 等平台层platform/postgresql、nats、juicefs、argo、tapr 等应用框架层framework/app-service、bfl、system-server、headscale、backup-server 等管控Controller Panelcli/olares-cli与 daemon/olaresd延伸阅读快速上手 Olares参见 Getting Started 指南深入了解 Olares 内部机制参见 Concepts 概念总览涵盖 Olares ID、Account、Application、Network、Data、Secrets 等主题各组件如何被编排部署的完整细节参见 Olares 安装总览。赞分享云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载相关推荐conda 软件架构解析从 C4 系统上下文到代码层的四层视图conda 软件架构解析从 C4 系统上下文到代码层的四层视图 本文基于 conda 仓库中官方开发指南的架构文档 docs/source/dev guid包管理器CLIOpenDesign 设计系统解析从 Starbucks 四层绿色体系到可落地的 Tokens.css 实现OpenDesign 设计系统解析从 Starbucks 四层绿色体系到可落地的 Tokens.css 实现 本文以 OpenDesign 仓库中 desigAI 应用人工智能AI 技能设计系统媒体生成OpenDesign 中的 Intercom 设计系统fixture 证据链、Token 合约与四层架构解析OpenDesign 中的 Intercom 设计系统fixture 证据链、Token 合约与四层架构解析 本文以 OpenDesign 仓库内 desigAI 应用人工智能AI 技能设计系统媒体生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考