运维动作散落在十几个入口
查指标用监控工具、看日志要登 SSH、发网站要配 Nginx、管证书再开一个面板——一次排查需要在多个系统之间切换,上下文不断丢失。
Product · 产品
一个运行在 Linux 主机上的智能基础设施管理软件。NodeXA(节点侠)把主机监控、Web 终端、应用与网站管理、安全加固、备份恢复和 AI 自动化,装进一个自主托管的单二进制工作台。核心数据保存在你的主机上,不依赖外部控制平面。
查指标用监控工具、看日志要登 SSH、发网站要配 Nginx、管证书再开一个面板——一次排查需要在多个系统之间切换,上下文不断丢失。
重启服务、改防火墙、删数据库,这些高风险操作往往只靠一句 sudo 密码保护,缺少二次确认、事务回滚和完整的操作审计。
大模型可以对话,但没有受控的方式读取主机状态、日志和指标,更没有明确的工具边界防止误操作。
NodeXA 当前聚焦单台主机。它不是 Kubernetes 替代品,也不是多租户云控制平台。公网暴露方式、操作系统更新、主密钥保护和离线备份仍由你负责。
管理家里或机房里的一台 Linux 主机:监控资源、跑 Docker 应用、发布个人网站。
在开发机上管理服务、进程、日志与数据库实例,用任务引擎跑定时脚本。
给内部主机一个统一的 Web 运维入口:防火墙、SSH 加固、审计与备份闭环。
让 Claude Desktop、Cursor 等 AI 客户端通过 MCP 安全地读状态、查日志、建告警。
Features · 功能
每个功能都对应仓库中的真实实现与文档:从指标采集、Web 终端到防火墙事务和 MCP 工具边界,这里不罗列抽象形容词,只说明具体做什么。
按采集间隔记录 CPU、内存、磁盘、网络指标并保留 7 天;进程、端口、systemd 服务与 Docker 容器在同一条排查路径里。
查看相关文档Web 终端以专用系统用户运行、票据短时效、会话可审计;文件读写限定在管理员登记的工作区根内,路径越界直接拒绝。
查看相关文档受控运行环境(Node.js/Bun/Python/PHP-FPM)配合 Caddy 站点、反向代理与版本回滚;TLS 证书支持 Let's Encrypt、Cloudflare DNS-01 与上传续期。
查看相关文档Docker/Compose 检测与镜像加速,MySQL、Redis、PostgreSQL、MinIO 等软件实例的安装、启停、凭据加密存储与备份恢复。
查看相关文档本地任务引擎按 cron 执行命令并保留运行记录;日志来源白名单 + journald 结构化查询;告警规则持续评估指标并推送通知。
查看相关文档主机安全评分与每日扫描、UFW 防火墙事务、SSH 配置漂移检测、fail2ban 联动;变更可确认、可回滚,敏感操作全部审计。
查看相关文档平台自身的配置、数据库与软件清单可一键备份;恢复先落草稿再确认。可信升级带 SHA-256 校验、健康检查与失败自动回滚。
查看相关文档/api/mcp 提供 Streamable HTTP 端点与 24 个 rov_ 工具:只读诊断 + 低风险写操作 + 诊断组合工具;仅接受 API Token,高危操作只返回人工指引。
查看相关文档How it works
从二进制到日常运维,每一步都有对应的 CLI 子命令与文档说明,且可以被审计与回退。
取得与架构匹配的 NodeXA 可执行文件,校验 SHA-256 后放到主机上。
sudo ./rovia install 自动探测 systemd 或 SysV,写入服务定义并默认开机自启。
首次访问 http://127.0.0.1:8080 进入初始化页,创建管理员、绑定 TOTP MFA。
按需开启 Docker、网站运行时、日志来源白名单、防火墙与 SSH 加固。
在工作台完成日常运维;需要时签发 API Token,让 AI 客户端经 MCP 协作。
Architecture · 架构
浏览器通过 Web 与 REST API 访问 NodeXA,再由受控的服务层连接本机系统。核心管理路径不依赖外部控制平面,AI 经独立的 MCP 通道接入并只接受 API Token 认证。
人走 Cookie + CSRF + 可选 MFA;机器走 Bearer API Token。
单一二进制内嵌前端资源;数据落在本机 SQLite,最小文件权限 0600。
服务层直接调用受控实现:unit 名校验、路径白名单、事务回滚、命令注入防护。
MCP 与 REST 共用 API Token 通道;长连接交互类能力明确不做 MCP 适配。
Documentation · 文档
左侧目录切换内容,地址栏使用 hash 定位(如 #docs/getting-started/installation/), 也可以随时按 ⌘K 全文搜索。
了解 NodeXA 的定位、能力边界和适用场景
NodeXA 是运行在 Linux 主机上的现代化运维与应用管理平台。它把资源、应用、运维、安全和自动化能力放进一个多页面工作区,让一次排查或发布可以保留完整上下文。
NodeXA 当前聚焦单台主机。它不是 Kubernetes 替代品,也不是多租户云控制平台。核心数据保存在你的主机上,公网暴露方式、操作系统更新、主密钥保护和离线备份仍由你负责。
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux |
| 服务管理 | systemd 或 SysV |
| 安装权限 | root |
| 默认监听 | 127.0.0.1:8080 |
| 浏览器 | 当前主流 Chromium、Firefox 或 Safari |
| 时间 | 主机时间和时区应正确 |
NodeXA 的基础功能不要求 Docker。网站运行时、容器应用以及部分软件实例需要 Docker Engine 与 Compose v2;Docker 页面可以对受支持发行版提供安装协助。
具体资源取决于容器、日志和指标保留量。仅运行 NodeXA 时建议至少预留:
默认情况下,浏览器只能从主机本地访问 http://127.0.0.1:8080。远程使用推荐:
uname -a
id
command -v systemctl || command -v service
ss -lnt | grep ':8080'
确认端口未被占用后继续阅读安装。
sudo。在下载目录执行:
chmod +x rovia
sudo ./rovia install
sudo ./rovia status
install 会探测 systemd 或 SysV,写入服务定义并默认启用开机自启。需要覆盖默认路径时先查看帮助:
./rovia help
可选参数包括二进制路径、配置路径、工作目录、运行用户及 --no-enable。
状态输出应表明服务已经安装、正在运行并按预期启用。然后在主机本地执行:
curl -I http://127.0.0.1:8080
收到 HTTP 响应后,进入首次初始化。
sudo ./rovia status 查看服务状态。journalctl -u rovia --no-pager -n 100 查看启动日志。sudo ./rovia restart。尚未写入业务数据时可执行:
sudo ./rovia uninstall
卸载服务不会自动代表业务数据已经安全删除。处理工作目录前先确认是否需要保留配置、数据库和备份。
NodeXA 默认监听 127.0.0.1:8080。在主机本地打开:
http://127.0.0.1:8080
远程主机可先建立 SSH 端口转发:
ssh -L 8080:127.0.0.1:8080 user@host
然后在本机浏览器打开同一地址。
首次启动进入初始化页,而不是普通登录页。按照页面要求:
退出并重新登录一次,确认账号和密码正常;随后打开工作台、主机、服务和日志页面,确保基础采集没有错误。
无法进入初始化页时,参考故障排查。
sudo rovia start
sudo rovia stop
sudo rovia restart
sudo rovia status
如果二进制不在 PATH,使用安装时的绝对路径。
排查启动问题时可暂时停止系统服务,并在工作目录前台运行:
rovia run
前台运行会占用当前终端。验证完成后使用 Ctrl+C 停止,再恢复系统服务。
sudo rovia uninstall
卸载会停止、禁用并删除服务定义。它不会替你判断哪些数据库、配置、备份和应用数据可以删除。
执行 status 并结合系统服务工具检查状态:
systemctl status rovia --no-pager
SysV 主机使用对应的 service 命令。
NodeXA 使用 YAML 配置。安装为系统服务后,配置文件路径由服务定义和安装参数决定,不应只根据当前 Shell 目录猜测。
rovia status 确认服务与工作目录。修改配置后重启:
sudo rovia restart
sudo rovia status
再检查日志和健康接口。若启动失败,立即恢复备份配置并再次重启。
默认 127.0.0.1:8080 是安全基线。修改为全网卡监听会扩大攻击面;在公网场景优先保留回环监听,并通过受控反向代理提供 HTTPS。
在设置中管理当前管理员凭据。修改密码后,使用新的独立浏览器会话验证登录,再退出旧会话。
会话页展示当前和其他登录设备。发现不认识的会话时:
绑定流程会显示二维码和恢复码:
高风险操作会要求重新验证身份。Step-up 是短时授权,不代表后续所有操作永久放行。常见触发点包括:
若频繁验证失败,检查主机时间、认证器时间和会话是否已经过期。
NodeXA 使用 Secret Store 保存数据库密码、DNS 提供商 Token 等敏感值。Secret 使用 AES-GCM 加密,主密钥不应存入同一业务数据库。
轮换前:
轮换后验证网站证书提供商、数据库实例和所有使用 Secret 的任务。发生错误时不要删除旧密钥,先停止写入并按恢复文档回退。
Secret 页面不应回显完整明文。创建、更新和删除动作应进入审计记录,但审计字段同样不能包含 Secret 内容。
主机页面聚合操作系统、CPU、内存、磁盘和网络信息。工作台摘要和趋势图来自本机采集,不代表公网可用性。
发现异常时建议按上下文继续:
不要直接删除不认识的目录。先确认增长来源,检查日志轮转、备份保留和容器数据,再在维护窗口清理。
文件页面是本机文件系统管理器:打开后直接从系统根目录 / 浏览,登录后即可读写(上传、新建、编辑、移动、删除),无需再手动添加工作区根目录,也不再要求 Step-up 二次认证。
文本编辑器支持:
.bak符号链接在目标仍位于系统根下时可以进入;设备文件、FIFO、套接字等非常规入口会被跳过或拒绝。路径会经过规范化以阻止 .. 逃逸。实际能否读写仍受 NodeXA 进程操作系统权限限制。
普通删除优先进入回收站。永久清理前确认:
NodeXA 服务以何种用户运行,就对应何种文件系统权限。若某目录列出为空或写入失败,优先检查进程用户对该路径的读写权限,而不是放宽整盘权限。
Web 终端通过 WebSocket 提供交互式 Shell。安装流程会准备专用的 rovia-terminal 用户,避免默认以 root 打开浏览器终端。
whoami
pwd
id
网络切换、反向代理超时或 Session 失效可能导致断线。先确认页面状态,不要在不确定上一条命令是否完成时立即重复执行变更命令。
完成工作后退出 Shell 并关闭终端页签。不要只关闭浏览器窗口而长期保留高权限子进程。
进程页面用于观察运行状态,服务页面用于管理 systemd 单元和由软件模块托管的应用服务。
可按名称、PID、用户或资源占用查找进程,并结合监听端口判断服务入口。终止进程前先确认它是否由 systemd、Docker 或其他监督器管理,否则进程可能立即被重新拉起。
支持的生命周期操作包括:
启用状态变更可恢复原状态;配置导致服务失败时,应恢复配置备份后再重启,而不是连续点击重启。
Docker 页面展示本机安装状态、版本、容器和镜像。NodeXA 也可根据操作系统发行版与版本提供 Docker 安装协助。
NodeXA 提供容器启动、停止和重启入口。删除容器、镜像或卷前检查:
docker version
docker compose version
docker info
在页面中确认版本、守护进程状态和容器列表与 CLI 一致。
安装失败时保留安装日志,检查发行版代号、软件源、代理、DNS 和包管理锁。不要在失败后混用多个来源重复安装。
网站模块把站点、Caddy 运行时、证书、日志、健康和备份统一归口。NodeXA 管理结构化配置并生成 Caddy 配置,而不是鼓励直接编辑 Caddyfile。
网站相关文件统一位于 NodeXA 工作目录下的 website 根目录:
v0.2.4 起网站由 Caddy 承载:
创建向导包含:
| 模式 | 说明 |
|---|---|
| 自动 HTTPS(默认) | Caddy 自动申请和续期证书 |
| 手动证书 | 使用 NodeXA 证书库中的证书和私钥 |
| 仅 HTTP | 不启用 TLS |
提交后配置先处于草稿或待应用状态。应用时 NodeXA:
caddy validate 验证完整配置(能发现跨站点域名冲突等错误)。任一步失败时恢复最后一个确认可用的配置,不把无效配置标记为生效。两个站点并发发布会被串行化,不会互相覆盖。
应用后 NodeXA 会从本机探测站点;若域名解析指向其他主机,本机探测失败不代表站点未发布,可先用客户端 Hosts / DNS 验证。
若在 NodeXA 外部修改受管文件,页面可能提示配置漂移。先比较当前配置和最后成功发布版本,再选择重新应用或接受外部变更,不要盲目覆盖。
站点恢复默认只生成草稿,需人工检查后重新应用。
应用运行环境使用受控容器部署应用,并可作为网站反向代理上游。
实际镜像、版本和命令以创建向导支持矩阵为准。
应用健康后可由网站模块选择为反向代理上游。健康失败时应先修复应用,不要通过绕过健康检查把错误实例直接发布。
备份范围需区分源码、声明式配置、环境变量引用和持久化数据。容器本身不是备份。恢复后先验证草稿和数据路径,再发布网站。
NodeXA 提供多种证书方案协助。选择方案前先判断域名解析位置、是否经过 Cloudflare 代理、是否需要通配符和浏览器直接信任。
| 方案 | 验证方式 | 浏览器直接信任 | 适合 |
|---|---|---|---|
| Let’s Encrypt HTTP-01 | 公网 HTTP | 是 | 单域名且 80 端口可达 |
| Let’s Encrypt DNS-01 | DNS API | 是 | 通配符或无法开放 80 |
| Cloudflare DNS-01 | Cloudflare API Token | 是 | DNS 托管在 Cloudflare |
| Cloudflare Origin CA | Cloudflare 签发 | 否,需经过 Cloudflare | CDN 到源站链路 |
| 上传已有证书 | 外部完成 | 取决于签发者 | 已有证书体系 |
创建最小权限 API Token,只授权目标 Zone 的 DNS 编辑。Token 存入 Secret Store,不在日志和页面中完整回显。
DNS 传播存在延迟。签发失败时先检查权威 DNS 记录,不要短时间高频重试触发 CA 限流。
一个网站同一时间只有一个活动证书。替换前检查域名覆盖和有效期,应用后使用浏览器或 TLS 工具验证证书链。
吊销前确认证书确实泄露、域名不再使用或 CA 要求吊销。一般替换或停用不需要立即吊销。
自动 HTTPS 模式下,证书由 Caddy 自动申请和续期,无需人工干预。手动证书路径下,续期任务应在到期前运行,成功后原子替换并重新加载,让 Caddy 加载新证书。连续失败需要产生告警;到期前不要删除仍在使用的旧证书。
软件模块提供目录、环境预检、安装和实例生命周期。数据库、中间件和应用页面是按用途聚合的视图,底层实例仍由软件模块统一管理。
安装前预检会根据来源检查可执行文件、端口、目录、Docker 和 Compose。
支持启动、停止、重启和卸载。卸载前需要确认:
安装、启停、重启和卸载均属于关键操作,应记录实例、来源、结果和操作者。
任务模块用于管理本机定时或手动任务,并保存运行状态与历史。
Shell 任务必须明确 run_as 和 Shell 策略。旧任务若缺少这些字段会被标记为待确认,不应在未检查内容的情况下直接恢复调度。
查看:
任务失败时先修复原因,再手动运行验证,不要通过缩短间隔反复重试。
对有副作用的任务准备反向操作或备份。禁用任务不会撤销已经完成的变更。
日志用于解释事件,监控用于发现趋势。两者需要结合服务、进程、容器和网站健康状态使用。
选择允许的 systemd 单元,按时间、级别和关键词查询。查询范围过大时先缩短时间窗口,再定位错误上下文。
NodeXA 只允许读取配置白名单中的文件路径,并进行真实路径检查。新增来源前确认:
主机指标包括 CPU、内存、磁盘和网络趋势。指标采集数据用于本机运维,不是外部可用性 SLA。
备份只有在能够恢复时才有价值。NodeXA 支持平台数据、MySQL 逻辑备份以及网站相关备份,不同类型的覆盖范围不同。
网站配置恢复先进入草稿,不自动写入生效 Caddy 配置。检查域名、路径、上游、证书引用后再应用。
网站备份包含站点配置、静态内容、手动证书与 Caddy 数据(自动证书与 TLS 私钥);包含 Caddy 数据时备份会标注敏感警告。恢复时注意私钥保护与备份版本一致性。
MySQL 使用逻辑备份时,确认目标实例、字符集、权限和可用空间。先在隔离环境试恢复,验证表数量和关键数据,再计划生产恢复。
完整灾难恢复见安全恢复。
告警用于把状态变化发送到明确的通知渠道,巡检聚合安全扫描和风险发现。
创建告警时明确:
先使用测试通知验证渠道,不要在生产事故发生时才检查 Token 和网络。
巡检页聚合安全评分、最近扫描和风险发现。发现项需要结合主机用途判断,不建议对所有建议自动执行修复。
部分高级告警联动仍会随版本完善。页面显示的实际能力和状态是当前依据,不要根据路线规划配置不存在的自动化。
安全页面展示主机安全状态、最近扫描、风险发现和事件。安全评分用于排序处理,不是安全证明。
主机安全扫描由配置开关控制。未启用时页面会明确提示,不会生成虚构分数。
优先处理:
每项发现应包含证据、影响和建议。执行变更后重新扫描,并检查服务、网络和登录方式仍然正常。
漏洞聚合仍处于预览阶段。当前安全评分不等于完整的 CVE、依赖和供应链扫描结果。
防火墙页面读取 UFW 状态和规则,并对启用、停用与规则变更提供受控操作。
高风险变更会生成待确认事务:
全局出现回滚失败告警时停止继续变更,使用已有安全会话检查 ufw status verbose 和规则编号,确认当前网络状态后人工恢复。
SSH 页面展示 sshd 状态、有效配置、登录事件、暴力破解线索和 fail2ban。
NodeXA 使用受管 drop-in 应用结构化配置,并在 reload 前检查语法。变更进入待确认事务;必须从新会话完成登录后再确认。
登录事件用于识别成功、失败和暴力尝试。fail2ban 状态需要结合 jail、封禁来源和日志使用;它不能替代强认证和网络限制。
若新连接失败,在事务超时前不要确认。等待自动回滚或从安全控制台恢复原配置和 UFW 规则。
审计记录用于回答“谁在什么时间对哪个对象执行了什么操作,结果如何”。
按时间、操作者、动作、对象和结果过滤。排查跨页面操作时可结合请求 ID 与应用日志。
审计应该记录对象标识和结果,不记录密码、Token、证书私钥、恢复码或完整环境变量。
Agent 面向本机运维任务,通过明确注册的工具读取状态或执行受控操作。
涉及服务重启、文件写入、网络、SSH、证书或恢复时,先确认目标、影响、验证方法和回退路径。
Agent 发起的关键变更应能区分工具、参数摘要、操作者和结果,但不得记录 Secret 明文。
工作流和 AI 助手当前为预览入口。页面用于表达后续方向,不应展示伪造数据或让用户误以为已经能够执行完整自动化。
计划用于编排可复用的触发器、条件、工具步骤和人工确认点。正式开放前需要具备:
计划基于只读主机上下文回答运维与安全问题,并将任何变更转换为可检查、可确认的结构化操作。
NodeXA 的可信升级只接受内置可信公钥验证通过的发布清单,并在下载后核对 SHA-256。
设置中的更新页面会检查签名发布清单。应用更新需要 Step-up;配置允许时会先创建备份,再由独立 updater 原子替换二进制并重启。
使用手动包时仍需核对签名与校验值。可以使用服务 CLI 的升级或受控替换方式,避免在运行中直接覆盖二进制。
rovia version 显示目标版本。健康检查失败时自动回滚依赖配置和环境。人工回滚前保存错误日志,恢复上一二进制和兼容数据备份,再验证服务。
排查时先保留证据,再实施最小变更。记录问题时间、NodeXA 版本、页面路径、请求 ID 和最近变更。
sudo rovia status
journalctl -u rovia --no-pager -n 150
ss -lntp | grep ':8080'
检查配置语法、工作目录权限、主密钥、数据库迁移和端口冲突。
/api/v1/health 判断后端是否正常。分享日志前删除 Token、Cookie、证书私钥、主密钥、真实公网地址和业务数据。只提供复现所需的最小片段。
安全恢复的目标是先控制影响,再恢复可验证的服务。不要在证据尚未保存时反复修改系统。
若怀疑账号或主机失陷:
根据实际问题选择:
轮换密码、Token、证书和必要密钥,修补根因,更新恢复文档,并把离线备份恢复演练纳入周期任务。
| 命令 | 用途 |
|---|---|
rovia run | 前台启动 HTTP 服务,也是无子命令时的默认行为 |
rovia version | 显示版本信息 |
rovia install | 安装 systemd 或 SysV 服务 |
rovia uninstall | 停止并卸载系统服务 |
rovia start | 启动服务 |
rovia stop | 停止服务 |
rovia restart | 重启服务 |
rovia status | 查询安装、运行和开机启动状态 |
rovia help | 查看帮助 |
部分版本还提供用户或升级相关子命令,以当前二进制帮助输出为准。
安装命令可覆盖:
sudo rovia install --no-enable
rovia help
rovia version
文档与命令输出不一致时,以当前二进制输出和对应版本发布说明为准。
NodeXA 控制台使用 /api/v1 下的 HTTP API。除明确公开的健康与认证端点外,业务接口需要有效会话或对应认证。
成功响应使用统一结构:
{
"code": "OK",
"message": "success",
"data": {}
}
错误包含稳定错误码、用户可理解消息和可选细节。客户端不应只根据中文消息判断错误类型。
{
"code": "VALIDATION_ERROR",
"message": "参数不合法",
"detail": "..."
}
响应包含 X-Request-Id。排查失败时记录请求 ID,并结合 NodeXA 日志和审计查找同一操作。
FAQ · 常见问题
更多问题与故障处理步骤,见文档「维护 → 故障排查」。
Linux 主机,需要 systemd 或 SysV 管理服务、root 权限安装,默认监听 127.0.0.1:8080。基础功能不要求 Docker;网站运行时、容器应用与部分软件实例需要 Docker Engine 与 Compose v2。
查看相关文档首次访问 http://127.0.0.1:8080 会进入初始化页,由你创建管理员账号和密码。不要依赖任何历史文档或示例中的默认账号口令;初始化后建议立即绑定 TOTP MFA 并保存恢复码。
查看相关文档不要。管理界面具有主机操作能力,应在前置 HTTPS 反向代理后访问,只开放必要端口,正确配置可信代理,并在可信网络完成首次初始化。
查看相关文档核心数据保存在主机本地的 SQLite 数据库中(默认工作目录内),凭据类机密经 AES-GCM 加密存储并受主密钥保护。NodeXA 不依赖外部控制平面,公网暴露方式、系统更新与离线备份由你负责。
查看相关文档它是凭据加密的主密钥。不配置时部分加密能力退化为临时密钥,重启后已保存的机密将无法解密;生产使用应在 config.yaml 中配置并妥善备份该密钥。
查看相关文档在设置页创建 API Token(只读或读写),以 --enable-mcp 启动后,Claude Desktop、Cursor 等客户端即可通过 /api/mcp 调用 24 个边界明确的工具。高危操作不会被 AI 执行,只返回人工操作指引。
查看相关文档使用 rovia upgrade 子命令:停止服务、校验新二进制 SHA-256、替换并重启,可选健康检查失败自动回滚到上一版本。平台内置前向迁移,业务数据保留在主机上。
查看相关文档先看服务状态(rovia status)与启动日志(journalctl -u rovia),再对照故障排查文档:服务无法启动、端口占用、配置错误、权限问题都有对应处理步骤。
查看相关文档