imengying 2e1d2dd464 README 增加界面预览截图
- docs/frontend.png:公开看板 demo(?demo 模式,浅色主题,1920×1000)
- 补提交已放置的 docs/backend.png(管理后台),README 中两图配套展示
2026-09-12 12:27:22 +08:00
2026-09-12 10:44:35 +08:00
2026-09-12 10:44:35 +08:00
2026-09-12 10:44:35 +08:00
2026-09-12 12:27:22 +08:00
2026-09-12 10:44:35 +08:00
2026-09-12 10:44:35 +08:00
2026-09-09 00:11:03 +08:00
2026-09-12 10:44:35 +08:00
2026-09-12 02:34:48 +08:00
2026-08-11 13:02:14 +08:00
2026-09-08 18:05:31 +08:00
2026-09-12 12:27:22 +08:00

NodeFlare

NodeFlare 是一款轻量级、可自托管的服务器监控面板:通过 Web 界面查看服务器状态,由轻量 Agent 采集数据并主动上报。支持实时监控、TCP/ICMP 拨测、Telegram 告警、远程执行、TOTP 两步验证、主题定制,以及 SQLite / PostgreSQL 的备份恢复与在线迁移。

English: docs/README.en.md

界面预览

公开看板

管理后台

特性

监控与展示

  • CPU、内存、网速每秒采样,默认每 3 秒压缩批量上传;磁盘、GPU、连接数等慢指标单独缓存
  • 延迟拨测:TCP 与 ICMP 任务按节点分配,支持电信 / 移动 / 联通分线展示
  • 公开看板双语(简体中文 / English),站点名称、公告、Logo、背景图与显示项均可配置
  • 主题商店:内置主题、仓库主题一键安装、本地 ZIP 上传、主题参数自定义

告警

  • 资源阈值告警:CPU / 内存 / 磁盘 / 上行 / 下行,可选均值或持续超限,并可设置持续时长
  • 离线、到期、流量告警;Telegram 推送,消息模板可自定义

管理

  • 节点分组、标签、地区、计费周期、价格、到期时间、流量额度与重置日
  • 远程执行命令:需启用 TOTP;单条命令最长执行 10 分钟,离开页面不会中断
  • 每日汇率快照,用于多币种价格折算

安全

  • TOTP 两步验证;Cloudflare Turnstile 人机验证(可分别保护管理员登录与公开看板)
  • 登录限速、会话管理(查看登录设备并踢下线)、会话有效期可配置
  • 默认只监听 127.0.0.1;Agent 为出站连接,无需开放入站端口;Agent Token 支持文件或环境变量传递

数据

  • SQLite 与 PostgreSQL 双支持,两种数据库之间可在线迁移
  • 一键备份 / 恢复(ZIP)、空间回收、历史数据按保留天数自动清理

平台支持

角色 平台 架构
服务端 Linux x64 / ARM64
服务端 Windows x64
服务端 macOS ARM64
服务端 FreeBSD 13+ x64 / ARM64
Agent Linux / Windows / macOS / FreeBSD 同上(macOS 仅 Apple Silicon)

安装脚本会自动检测系统服务管理器(systemd / OpenRC / launchd / FreeBSD rc / Windows 计划任务)并注册为开机自启。

安装服务端

安装脚本自动下载最新 Release 并注册系统服务。

Linux / macOS:

curl -fsSL https://raw.githubusercontent.com/elysia62/NodeFlare/main/install.sh | sudo sh

FreeBSD:

fetch -qo - https://raw.githubusercontent.com/elysia62/NodeFlare/main/install.sh | sudo sh

Windows PowerShell(管理员):

Invoke-WebRequest -UseBasicParsing https://raw.githubusercontent.com/elysia62/NodeFlare/main/install.ps1 -OutFile "$env:TEMP\nodeflare-install.ps1"
Unblock-File "$env:TEMP\nodeflare-install.ps1"
& "$env:TEMP\nodeflare-install.ps1"

首次安装会询问管理员用户名、密码、监听端口(默认 2206)和数据库地址(默认 SQLite)。服务端默认监听 127.0.0.1:2206,本机访问 http://127.0.0.1:2206/admin/login;对外使用需经 HTTPS 反向代理,见反向代理。

管理员密码仅首次初始化数据库时需要,初始化完成后会自动从配置文件中清除。

安装脚本参数

命令 说明
sudo sh install.sh 交互菜单
sudo sh install.sh --install 安装或更新
sudo sh install.sh --status 查看服务状态
sudo sh install.sh --restart 重启服务
sudo sh install.sh --uninstall 卸载,保留配置和数据
sudo sh install.sh --uninstall --purge 卸载并删除配置与数据

Windows 对应参数为 -Install / -Status / -Restart / -Uninstall [-Purge]。

更新:重新运行安装脚本即可,配置数据保留。安装与更新都会校验 Release 摘要,失败时自动回滚到上一版本。

安装 Agent

在管理后台「服务器」页面创建节点,执行弹窗中的安装命令。Agent 主动出站连接服务端,无需开放入站端口。

Linux:

curl -fsSL https://raw.githubusercontent.com/elysia62/NodeFlare/main/agent/agent.sh \
  | sudo sh -s -- -e 'https://nodeflare.example.com' -t 'Agent Token'

各平台脚本:

平台 脚本 服务方式
Linux agent/agent.sh systemd / OpenRC
macOS(Apple Silicon) agent/install-macos.sh launchd
FreeBSD agent/install-freebsd.sh rc.d
Windows agent/install.ps1 计划任务

Agent 参数

参数 说明
-e NodeFlare 服务地址(必填)
-t Agent Token(必填)
-i 初始历史保存间隔,15–3600 秒(默认 60)
-m GitHub 下载加速前缀,如 https://ghproxy.net(可选)
--update 更新 Agent,沿用已保存的地址与 Token,校验摘要,失败回滚
--status 查看 Agent 状态
--uninstall 卸载 Agent

Windows 对应 -Endpoint / -Token / -Interval / -Mirror 与 -Update / -Status / -Uninstall。

Linux 使用 systemd 时,安装脚本将 Token 直接写入服务单元的 Environment=NODEFLARE_AGENT_TOKEN=...;--update 从该服务配置读取地址、Token 和历史保存间隔。

监控口径与采样

CPU、内存和网速每秒采样,默认每 3 秒压缩批量上传。服务器卡片每秒显示一个真实采样值,正常连接下有约 2~3 秒的显示延迟;断线重连后跳过积压的旧数据。磁盘容量、GPU 等较慢指标单独缓存,历史数据按节点设置的保存间隔聚合。增大实时上传间隔会降低卡片连续更新的频率。

Linux 内存统计与 Komari 默认口径一致:已用内存为 MemTotal - MemFree - Cached - SReclaimable - Buffers + Shmem,Swap 已用量扣除 SwapCached。文件缓存不计入已用内存,共享内存计入;面板显示的是整机内存,不是 NodeFlare 进程本身的占用。

配置

配置文件位置见默认目录与日志,完整示例见 backend/config.example.toml。

配置项 说明
database_url sqlite://nodeflare.db 或 PostgreSQL 连接串,如 postgres://user:password@127.0.0.1:5432/nodeflare?sslmode=disable
bind_addr 监听地址,默认 127.0.0.1:2206
admin_username 管理员用户名
admin_password 管理员密码(8–128 字符),仅首次初始化数据库需要,成功后自动清空
trusted_proxies 可信反向代理 IP / CIDR 列表;只有来自这些网段的 X-Forwarded-For 才会被信任
turnstile_site_key / turnstile_secret_key Turnstile 密钥,留空则禁用
session_ttl_hours 会话有效期(1–2160 小时),默认 168
frontend_dir / admin_frontend_dir 前端静态资源目录,相对路径按配置文件所在目录解析
theme_dir 主题解压目录,默认配置目录下的 themes

命令行可临时覆盖配置:nodeflare --config <路径> --bind <地址> --database <URL>。使用 --database 启动时,后台的在线迁移功能会被禁用。

默认目录与日志

平台 程序 配置与数据
Linux /opt/nodeflare /etc/nodeflare
Windows %ProgramFiles%\NodeFlare %ProgramData%\NodeFlare\Server
macOS /usr/local/libexec/nodeflare /Library/Application Support/NodeFlare/Server
FreeBSD /usr/local/libexec/nodeflare /var/db/nodeflare/server

Agent(Linux):程序 /opt/nodeflare/agent,配置与状态 /etc/nodeflare/agent。SQLite 文件位于配置目录下。

日志位置:

  • Linux(systemd):journalctl -u nodeflare -f;Agent 为 journalctl -u nodeflare-agent -f
  • Linux(OpenRC):rc-service nodeflare status
  • macOS:/var/log/nodeflare.log
  • Windows:Get-ScheduledTaskInfo -TaskName nodeflare

反向代理

对外访问请使用 HTTPS 反向代理,并把代理地址加入 trusted_proxies,否则所有访客会被算作同一个 IP,且会话 Cookie 不会带上 Secure:

trusted_proxies = ["127.0.0.1/32", "::1/128"]

nginx:

server {
    listen 443 ssl;
    server_name nodeflare.example.com;

    ssl_certificate     /etc/letsencrypt/live/nodeflare.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nodeflare.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:2206;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;   # WebSocket 实时数据
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Caddy:

nodeflare.example.com {
    reverse_proxy 127.0.0.1:2206
}

数据库与备份

后台「数据库」页面支持查看占用、回收空间、导出 / 恢复 ZIP 备份、SQLite ↔ PostgreSQL 迁移。备份包含设置、节点、历史、通知、主题、任务与安全配置,需要 TOTP 或密码验证。限制为 ZIP 512 MiB、解压后 4 GiB、最多 16384 个条目,单个主题文件 32 MiB。迁移会覆盖目标库并自动更新连接串,保留 Agent Token,重启服务后生效。历史数据默认保留 30 天。

开发

git clone https://github.com/elysia62/NodeFlare.git
cd NodeFlare
bun install --frozen-lockfile
cp backend/config.example.toml backend/config.toml
./dev.sh

dev.sh 会构建前端并以 cargo run 启动后端。start.sh 则构建 release 版本,优先使用 /etc/nodeflare/config.toml,也可用 NODEFLARE_CONFIG 指定。

仓库结构:

目录 内容
backend/ 服务端(Rust / Axum / SQLx):src/routes 接口、src/db 数据层、src/websocket 实时通道、migrations/ 建表脚本
agent/ Agent 源码(采集 / 上报 / 远程执行 / 自更新)与各平台安装脚本
shared/ Agent 与服务端共用的遥测协议(序列化 + 压缩)
frontend/ 前端(React + Vite):src/components 组件、src/styles 样式
scripts/ 构建、版本解析与冒烟测试脚本
docs/ 英文 README 与 systemd 服务单元

测试与构建:

bun test --cwd frontend
cargo test --locked --manifest-path backend/Cargo.toml
cargo test --locked --manifest-path agent/Cargo.toml
bun run build

冒烟测试(需先启动面板):

MONITOR_ADMIN_USERNAME=admin MONITOR_ADMIN_PASSWORD='你的密码' bun run test:smoke

排障

  • 服务启动失败:先看日志(见默认目录与日志),多为端口被占用或数据库连接串有误。
  • 不确定监听端口:查看配置文件中的 bind_addr,默认 127.0.0.1:2206。
  • Agent 显示离线:确认 Agent 能出站访问面板地址(curl -I https://你的面板地址),并核对 Token;上报与延迟依赖时钟校准,系统时间偏差过大会有影响。
  • 公开看板看不到节点:确认节点未启用「隐藏」,且站点设置中已开启「公开仪表盘」。
  • 导出备份报超限:先缩短历史保留天数或清理历史数据,再重新导出。

License

MIT

S
Description
NodeFlare 是一款轻量级的自托管服务器监控面板,通过 Web 界面查看服务器状态,并由轻量级 Agent 采集数据上报。
https://elysia62.github.io/NodeFlareWiki/demo
Readme MIT
2 MiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 51.3%
TypeScript 30%
Shell 7.3%
CSS 5.7%
JavaScript 3.1%
Other 2.5%