跳转到内容

架构

Web.Casa 采用分层架构,API、业务逻辑、数据和 UI 层之间有清晰的分离。

┌─────────────────────────────────────────────┐
│ 浏览器(React 19 SPA) │
│ Vite 7 · Radix UI Themes 3 · Zustand 5 │
│ Tailwind CSS v4 │
└──────────────┬──────────────────────────────┘
│ REST API(HTTP)
│ WebSocket(终端、指标、日志)
┌──────────────▼──────────────────────────────┐
│ Go 后端(Gin + GORM) │
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │ Handler │ │ Service │ │ Model │ │
│ │ 层 │→│ 层 │→│ 层 │ │
│ └──────────┘ └──────────┘ └─────────────┘ │
│ ┌──────────────────────────────────────┐ │
│ │ 插件系统(12 个插件) │ │
│ └──────────────────────────────────────┘ │
└──────┬──────────────────────┬───────────────┘
│ │
┌──────▼──────┐ ┌──────────▼──────────┐
│ SQLite │ │ Caddy 子进程 │
│(WAL 模式) │ │ (通过 Admin API │
│ │ │ 管理) │
└─────────────┘ └─────────────────────┘
  • 使用 Go 编写,基于 Gin HTTP 框架
  • 通过 GORM ORM 实现数据持久化,使用 SQLite 的 WAL 模式
  • SQLite 存储所有面板配置、用户账户、主机定义、审计日志和插件状态
  • 数据库位置:/var/lib/webcasa/webcasa.db

关键设计: Caddy 作为托管子进程运行。Web.Casa 通过 Caddy 的 Admin API 动态应用配置变更,无需重启进程。

技术版本用途
React19UI 框架
Vite7构建工具和开发服务器
Radix UI Themes3组件库
Tailwind CSSv4原子化样式
Zustand5状态管理
  • 编译为静态资源,由 Go 二进制文件直接提供服务
  • 前端无需独立的 Web 服务器
  • 单页应用,使用客户端路由

WebSocket 连接处理需要持久双向数据流的功能:

  • 终端 — 通过 xterm.js 的 PTY 会话
  • 监控 — CPU、内存、磁盘和网络指标流
  • 部署 — Git 部署过程中的构建日志流
  • Docker — 容器日志跟踪

Web.Casa 使用插件架构组织功能模块。每个插件实现标准的 Plugin 接口,通过事件总线与核心系统通信。

12 个内置插件:

插件功能
Docker容器和 Compose 管理
数据库MySQL/PostgreSQL/MariaDB/Redis 管理
备份定时和手动备份
监控系统资源指标
文件管理器文件浏览、编辑和 Web 终端
AIAI 助手集成
应用商店一键 Docker 应用目录
MCP 服务器Model Context Protocol 端点
防火墙防火墙规则管理
PHPPHP 版本和站点管理
部署基于 Git 的部署流水线
定时任务定时任务管理
  • 生产环境以 systemd 服务运行
  • 通过 /etc/webcasa/webcasa.env 中的环境变量进行配置
  • Caddy 二进制文件作为子进程管理,提供生命周期控制(启动、停止、重载)