Operations are scattered across a dozen entry points
Metrics in one tool, logs over SSH, Nginx config for websites, another panel for certificates — every troubleshooting session hops between systems and loses context.
NodeXA is an intelligent infrastructure manager that runs on your Linux host: monitor resources, ship apps and websites, harden security — and let AI clients join through controlled MCP tools.
Product
An intelligent infrastructure manager that runs on your Linux host。NodeXA packs host monitoring, a web terminal, app and website management, security hardening, backup/restore and AI automation into a self-hosted single-binary workspace. Core data stays on your host — there is no external control plane.
Metrics in one tool, logs over SSH, Nginx config for websites, another panel for certificates — every troubleshooting session hops between systems and loses context.
Restarting services, editing firewall rules or dropping databases is often protected by nothing more than a sudo password — no second confirmation, no transaction rollback, no audit trail.
LLMs can chat, but there is no controlled way for them to read host state, logs and metrics — and no explicit tool boundary to prevent mistakes.
NodeXA currently focuses on a single host. It is not a Kubernetes replacement or a multi-tenant cloud console. Public exposure, OS updates, master-key protection and offline backups remain your responsibility.
Manage a Linux box at home or in the closet: watch resources, run Docker apps, publish a personal site.
Manage services, processes, logs and database instances on a dev machine; run cron jobs with the task engine.
One web entry point for internal hosts: firewall, SSH hardening, audit and backup in a closed loop.
Let Claude Desktop, Cursor or other MCP clients read state, inspect logs and create alerts safely.
Features
Every feature below maps to a real implementation and documentation page in this repository — from metrics collection and the web terminal to firewall transactions and MCP tool boundaries. No abstract adjectives, only concrete capabilities.
CPU, memory, disk and network metrics are recorded at a fixed interval and kept for 7 days; processes, ports, systemd services and Docker containers sit on the same investigation path.
Read the docsThe web terminal runs as a dedicated system user with short-lived tickets and audited sessions; file access is limited to admin-registered workspace roots, and path escapes are rejected outright.
Read the docsManaged runtimes (Node.js/Bun/Python/PHP-FPM) combine with Caddy sites, reverse proxies and version rollback; TLS certificates cover Let's Encrypt, Cloudflare DNS-01 and uploaded renewals.
Read the docsDocker/Compose detection with registry mirrors; install, start/stop, encrypted credentials and backup/restore for software instances like MySQL, Redis, PostgreSQL and MinIO.
Read the docsA local task engine runs cron commands and keeps run records; a log source allowlist plus structured journald queries; alert rules evaluate metrics continuously and push notifications.
Read the docsHost security scoring with daily scans, UFW firewall transactions, SSH config drift detection and fail2ban integration; changes can be confirmed and rolled back, and every sensitive action is audited.
Read the docsThe platform's own config, database and software inventory can be backed up in one click; restores land as drafts first. Trusted upgrades carry SHA-256 verification, health checks and automatic rollback on failure.
Read the docs/api/mcp offers a Streamable HTTP endpoint with 24 rov_ tools: read-only diagnostics, low-risk write actions and diagnostic combos. API Token only; high-risk operations return human guidance instead of executing.
Read the docsHow it works
From binary to daily operations, every step has a matching CLI subcommand, documentation, and can be audited and rolled back.
Get the NodeXA executable matching your architecture and verify its SHA-256 checksum.
sudo ./rovia install detects systemd or SysV, writes the unit and enables start-on-boot by default.
Open http://127.0.0.1:8080 for the first-run page: create the admin account and bind TOTP MFA.
Enable Docker, the website runtime, log source allowlist, firewall and SSH hardening as needed.
Run daily operations in the workspace; issue an API Token when you want AI clients to help via MCP.
Architecture
Browsers talk to NodeXA over the Web and REST API; a controlled service layer connects to the local system. The core management path has no external control plane, and AI joins through a separate MCP channel that only accepts API Tokens.
Humans use Cookie + CSRF + optional MFA; machines use Bearer API Tokens.
One binary embeds the frontend; data lands in local SQLite with 0600 file permissions.
The service layer calls hardened implementations: unit-name validation, path allowlists, transaction rollback and command-injection protection.
MCP shares the API Token channel with REST; long-lived interactive sessions are explicitly not exposed over MCP.
Quick start
You need Linux (systemd or SysV) and root privileges; the default listen address is 127.0.0.1:8080. Obtain the release binary, verify its SHA-256 checksum, and install it as a system service.
$ chmod +x rovia
$ sudo ./rovia install
$ sudo ./rovia status
● rovia.service — active (running)Documentation
Documentation is currently written in Chinese. The workspace below still works as a reference: use the sidebar, search, and your browser translator as needed.
了解 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
For more questions and step-by-step troubleshooting, see the Maintenance → Troubleshooting pages.
A Linux host with systemd or SysV service management and root privileges for installation; the default listen address is 127.0.0.1:8080. Core features do not require Docker; website runtimes, container apps and some software instances need Docker Engine with Compose v2.
Read the docsOpening http://127.0.0.1:8080 the first time shows a setup page where you create the admin account and password yourself. Do not rely on default credentials from any historical docs or examples; right after setup, bind TOTP MFA and store the recovery codes.
Read the docsNo. The admin UI can operate the host. Put an HTTPS reverse proxy in front, open only the required ports, configure trusted proxies correctly, and finish first-run setup from a trusted network.
Read the docsCore data lives in a local SQLite database inside the working directory, and credentials are encrypted with AES-GCM under a protected master key. NodeXA has no external control plane — public exposure, OS updates and offline backups are your responsibility.
Read the docsIt is the master key for credential encryption. Without it some encrypted values fall back to a temporary key and become unreadable after a restart; in production, configure it in config.yaml and back it up safely.
Read the docsCreate an API Token (readonly or write) on the settings page, start with --enable-mcp, and point Claude Desktop, Cursor or other MCP clients at /api/mcp to use 24 clearly scoped tools. High-risk operations are never executed by AI — they return guidance for humans.
Read the docsUse the rovia upgrade subcommand: stop the service, verify the new binary's SHA-256, replace and restart, with optional health-check-based automatic rollback. Forward-only migrations are built in, and business data stays on your host.
Read the docsCheck the service state (rovia status) and startup logs (journalctl -u rovia), then follow the troubleshooting pages: startup failures, port conflicts, config errors and permission problems each have concrete steps.
Read the docs