插件系统
Web.Casa 采用模块化插件架构。每个主要功能都是一个插件,在启动时注册,可独立启用、禁用、安装或卸载。
Web.Casa 内置 12 个插件:
| 插件 | 说明 |
|---|---|
| Docker | 容器、镜像、网络和卷管理 |
| Deploy | 基于 Git 的项目部署和构建流水线 |
| AI | LLM 集成和聊天助手 |
| Database | MySQL、PostgreSQL、Redis 管理 |
| Monitoring | 实时 CPU、内存、磁盘、网络指标和告警 |
| Backup | 基于 Kopia 的备份与恢复 |
| App Store | 从目录一键安装 Docker 应用 |
| File Manager | Web 文件浏览、编辑和管理 |
| Firewall | Firewalld 区域、端口、服务和富规则管理 |
| PHP | PHP-FPM 和 FrankenPHP 运行时管理 |
| MCP Server | Model Context Protocol 服务器,用于 AI 工具集成 |
| Cron Job | 定时任务管理 |
启用和禁用插件
Section titled “启用和禁用插件”在插件设置页面:
- 查看所有可用插件及其当前状态
- 启用插件以激活其功能
- 禁用插件以停用功能但不删除数据
注意: 部分更改需要重启 Web.Casa 才能生效。界面会在需要重启时提示。
- 安装 — 下载并注册插件
- 卸载 — 移除插件及其关联数据
插件之间可能存在依赖关系。例如:
- App Store 插件依赖 Docker
- AI 插件可能依赖 Docker 和 Deploy 以实现完整功能
Web.Casa 自动管理依赖:
- 无法禁用其他已启用插件所依赖的插件
- 启用有依赖的插件时会提示先启用所需插件
每个插件可以独立于启用/禁用状态,单独控制是否在侧边栏导航中显示或隐藏。这让你可以在后台保持插件活跃而不使侧边栏过于拥挤。
Plugin 接口
Section titled “Plugin 接口”所有插件实现包含生命周期方法的标准接口:
| 方法 | 用途 |
|---|---|
Metadata() | 返回元数据:名称、版本、描述、依赖 |
Init() | 启动时注册路由、事件处理器和数据库表 |
Start() | 启动后台进程(采集器、调度器、监视器) |
Stop() | 应用停止时清理关闭 |
事件总线是插件间通信的核心:
- 插件发布事件(如
container.started、host.created、backup.completed) - 插件订阅其他插件或核心系统的事件
- 插件间无直接依赖 — 通信完全解耦
示例流程:
- 监控插件订阅 Docker 事件以跟踪容器生命周期
- 通知插件订阅告警事件以发送 Discord/Telegram 消息
- AI 插件订阅部署事件以提供诊断建议
ConfigStore
Section titled “ConfigStore”每个插件拥有独立的配置存储(ConfigStore):
- 读写设置不会与其他插件冲突
- 设置可通过 Web.Casa 设置界面管理
- 简洁的键值接口 — 无需直接访问数据库
CoreAPI
Section titled “CoreAPI”插件通过 CoreAPI 访问共享系统服务:
- 数据库连接和迁移工具
- 认证中间件
- WebSocket 管理器用于实时推送
- 事件总线用于发布和订阅
- 日志记录器用于结构化日志