适合谁:手里有多台云服务器、轻量小鸡、本地 NAS 或软路由,想要一个超高颜值、极度轻量、能将全网机器的 CPU、内存、流量与延迟收进同一个实时大盘的极客运维。

支持系统:面板端支持任意 Linux VPS(Docker 部署);被控端(Agent)覆盖 x86_64、ARM64、OpenWRT、树莓派等全平台。

耗时预期:约 15 ~ 20 分钟(主控 + 被控节点一次打通)。

做完你将得到:一个仅占用几十兆内存的现代化极轻探针大盘;学会主控面板一键部署、被控节点单向主动心跳连接(被控机零公网 IP 要求)、Nginx 域名反代与实时告警!

⚠️ 全程唯一保命铁律:
反向代理 Komari 面板时,Nginx 必须完整配置 WebSocket 升级支持! 探针所有实时指标均依赖长连接传输,缺少 WebSocket 支持会导致所有被控节点在面板中显示为灰色“离线”。


🧭 架构解密:为什么 Komari 如此受自建玩家青睐?

传统监控工具(如 Zabbix、Prometheus)动辄吃掉几百兆甚至几 GB 内存,而 Komari(基于 Go 语言单二进制开发) 展现了极具诱惑力的架构优势:

TEXT
┌─────────────────────────────────────────────────────────────┐
│ 🖥️ 主控面板 (Master):Docker 极简运行                        │
│    - 单二进制引擎 + 内置 SQLite 数据库,内存仅占 ~50MB;     │
│    - 聚合展示全网所有机器的实时水位、网络延迟与在线状态。     │
├─────────────────────────────────────────────────────────────┤
│ 📡 被控端 (Agent):主动出站心跳(被控机 0 门槛)              │
│    - 占用内存仅 ~10MB,编译为单个二进制文件;                │
│    - 🔑 核心特性:被控机完全不需要公网 IP、不需要开任何入站端口!│
│    - 哪怕是家里的内网软路由、动态 IP 小鸡,只要能联网,     │
│    - 就能主动顺着 WebSocket 向上汇报数据,安全又稳定!       │
└─────────────────────────────────────────────────────────────┘

📋 开始前的准备清单(缺一项都别往下走)

  • 一台做主控的 VPS:安装了 Docker 与 Nginx 反代环境;
  • 一个二级域名:例如将 server.example.com 解析到主控服务器 IP;
  • 若干台待监控的机器:可以是你手里的任意 Linux 服务器、树莓派或软路由。

第 1 步:在主控服务器一键启动 Komari 面板容器

我们将数据持久化在宿主机目录中,保证数据永不丢失。

💻 【你本地的电脑】 打开终端连入主控服务器,进入 🖥️ 【主控窗口】。

整段粘贴执行以下自包含 Compose 部署脚本(绝不需要手动碰 vim):

BASH
# 1. 创建 Komari 专属数据目录
mkdir -p /opt/komari && cd /opt/komari

# 2. 写入干净纯净的 Docker Compose 编排清单
cat << 'EOF' > /opt/komari/docker-compose.yaml
version: "3"
services:
  komari:
    image: ghcr.io/komari-monitoring/komari:latest
    container_name: komari
    restart: unless-stopped
    volumes:
      # 数据持久化挂载
      - /opt/komari/data:/app/data
    ports:
      # 绑定本地 25774 端口,准备供 Nginx 反代接入
      - "127.0.0.1:25774:25774"
EOF

# 3. 后台静默启动面板
docker compose up -d
docker compose ps
  • ✅ 成功标志:终端显示 komari 容器状态为 Up,成功绑定 127.0.0.1:25774。

第 2 步:配置 Nginx 反向代理与 WebSocket 黄金隧道

Komari 的节点心跳和前端实时波形图全部走 WebSocket,Nginx 配置必须注入长连接支持。

🖥️ 【主控窗口】 先定义你的监控域名变量:

BASH
MONITOR_DOMAIN="server.example.com"

接着,整段执行自包含网关反代脚本:

BASH
cat << EOF > /etc/nginx/sites-available/${MONITOR_DOMAIN}.conf
server {
    listen 80;
    listen [::]:80;
    server_name ${MONITOR_DOMAIN};

    location / {
        proxy_pass http://127.0.0.1:25774;

        # 核心标头透传
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;

        # 核心必须:启用 WebSocket 动态长连接升级
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection "upgrade";

        # 调优长连接保活超时(防止心跳被 Nginx 提前切断)
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}
EOF

# 激活站点并自检重载
ln -sf /etc/nginx/sites-available/${MONITOR_DOMAIN}.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
  • ✅ 成功标志:终端打印 test is successful,网关平滑生效。
  • 💡 小绿锁建议:执行 certbot --nginx -d ${MONITOR_DOMAIN} 顺手为监控域名配上 HTTPS。

第 3 步:进入面板,添加你的第一个受控节点

💻 【你本地的浏览器】 打开 https://server.example.com:

  1. 首次打开会引导你设置管理员账号与初始密码(务必牢记);
  2. 登录进入极其炫酷清爽的探针大盘;
  3. 点击右上角或设置里的 「添加节点 (Add Server)」:
    • 节点名称:例如 香港生产节点 或 家里软路由;
    • 系统架构:选择 Linux;
  4. 点击生成后,面板会给出该节点的专属接入密钥(UUID / Token)!
  • ✅ 成功标志:节点列表中出现新节点卡片,当前状态显示为黄色的「等待连接 (Waiting)」。

第 4 步:在被控机器上一键安装 Agent 守护进程

现在切换到你想监控的那台机器上(无论是别的 VPS 还是本地的小主机)。

💻 【你本地的电脑】 打开一个新终端连入被控服务器,进入 🖥️ 【被控机器窗口】。

使用官方标准的 Systemd 一键后台守护模式 运行 Agent:

BASH
# 1. 自动探测架构并下载官方最新 Agent 二进制
ARCH=$(uname -m)
case $ARCH in
    x86_64)  FILE="komari-agent-linux-amd64" ;;
    aarch64) FILE="komari-agent-linux-arm64" ;;
    *) echo "未知架构: $ARCH"; exit 1 ;;
esac

mkdir -p /opt/komari-agent && cd /opt/komari-agent
curl -sSL "https://github.com/komari-monitoring/komari-agent/releases/latest/download/${FILE}" -o komari-agent
chmod +x komari-agent

# 2. 定义连接主控的信息(填入你在第 3 步获得的面板域名与节点 Token!)
MASTER_URL="https://server.example.com"
NODE_TOKEN="你的节点专属Token"

# 3. 注册为 systemd 开机自启服务
cat << EOF > /etc/systemd/system/komari-agent.service
[Unit]
Description=Komari Monitoring Agent
After=network.target

[Service]
Type=simple
ExecStart=/opt/komari-agent/komari-agent -e ${MASTER_URL} -t ${NODE_TOKEN}
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

# 4. 启动 Agent 服务
systemctl daemon-reload
systemctl enable --now komari-agent
systemctl is-active komari-agent
  • ✅ 成功标志:最后一行返回 active。

此时回到你的浏览器刷新 Komari 仪表盘:

  • ✅ 大功告成标志:刚才等待连接的卡片瞬间变成充满生机的翠绿色!CPU 动态波动、内存占用条、实时网速曲线一览无余,双向建链成功!🚀🎉

🚑 翻车急救站(新手监控常见翻车速查)

异常现场真实根因对应一秒救命招式
被控端 Agent 已启动,但面板里永远显示“离线”Nginx 反代配置里漏了 WebSocket Upgrade 标头检查第 2 步的反代配置,确认包含 proxy_set_header Upgrade $http_upgrade;,重载生效。
Agent 日志提示 x509: certificate signed by unknown authority主控使用了不被信任的自签证书,或系统缺少 CA 证书1. 确保主控已绑定正式的 Let's Encrypt 证书;
2. 在被控机器执行 apt install -y ca-certificates。
Watchtower 自动更新面板后出现 502 报错镜像升级后,旧数据权限被重置或端口变动敲 docker logs komari 看日志;确保数据卷挂载的是 /opt/komari/data:/app/data 官方标准路径。
家里内网机器重启后 Agent 没连上开机时网络尚未就位,服务提前退出在 systemd 配置里增加 RestartSec=5,Agent 会在网络连通后自动重连自愈。

🎓 毕业全维度自检清单

核对以下 5 项指标,全部通过即代表你的集群监控系统已达工业级生产标准:

  • 主控轻量无负担:主控服务器输入 docker stats komari,内存消耗稳定在几十兆;
  • 反代绿锁长连接:浏览器 HTTPS 访问顺畅,实时波形图秒级刷新无卡顿;
  • 被控节点全绿:受控服务器卡片实时展示 CPU、内存与网络吞吐,在线状态健康;
  • 开机自动自愈:主控配置了 unless-stopped,被控端配置了 systemd,重启均可自动上线;
  • 零侵入网络隔离:被控机器无需暴露任何入站端口,实现 100% 安全单向出站汇报!