主机装面板 + 反代,其他机器只装探针。下文域名一律用 yourdomain.com 占位;下载走 GitHub 官方 Release。
Komari 分两块:
所有镜像 / 二进制请优先从官方仓库获取:
ghcr.io/komari-monitor/komari:latest
(见面板仓库 / GHCR)
Release 资产名固定,版本号随更新变化。可用 latest 跳转:
需要 Docker + Compose。目录可自定,示例用 /opt/komari-panel。
mkdir -p /opt/komari-panel/data
cd /opt/komari-panel
cat > .env <<'EOF'
ADMIN_PASSWORD=CHANGE_ME_STRONG_PASSWORD
EOF
cat > docker-compose.yml <<'EOF'
services:
komari:
image: ghcr.io/komari-monitor/komari:latest
container_name: komari
restart: unless-stopped
ports:
- "127.0.0.1:25774:25774" # 仅本机,公网走反代
environment:
ADMIN_USERNAME: admin
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
volumes:
- ./data:/app/data
# 若与 Caddy 同 Docker 网络,取消下面注释并加入 caddy 网络
# networks:
# - caddy_default
# networks:
# caddy_default:
# external: true
EOF
docker compose up -d
docker compose ps
docker compose logs --tail=50
curl -I http://127.0.0.1:25774
# 期望 HTTP 200 / 3xx
探针与面板通信依赖 WebSocket。反代需转发 Upgrade / Connection,并关闭响应缓冲。
monitor.yourdomain.com {
# 面板在同一 Docker 网络时用服务名:
# reverse_proxy komari:25774 { ... }
# 面板只监听宿主机 127.0.0.1:25774 时用:
reverse_proxy host.docker.internal:25774 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up Connection {http.request.header.Connection}
header_up Upgrade {http.request.header.Upgrade}
flush_interval -1
}
}
若 Caddy 非 Docker、直接装在宿主机:
monitor.yourdomain.com {
reverse_proxy 127.0.0.1:25774 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up Connection {http.request.header.Connection}
header_up Upgrade {http.request.header.Upgrade}
flush_interval -1
}
}
server {
listen 443 ssl http2;
server_name monitor.yourdomain.com;
# ssl_certificate /path/fullchain.pem;
# ssl_certificate_key /path/privkey.pem;
location / {
proxy_pass http://127.0.0.1:25774;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_buffering off;
}
}
# Caddy Docker 示例
docker compose exec -T caddy caddy reload --config /etc/caddy/Caddyfile
# 或宿主机
# systemctl reload caddy
# nginx -t && systemctl reload nginx
浏览器打开 https://monitor.yourdomain.com,用 compose 里的管理员账号登录。
给面板域名加 A 记录,指向主机公网 IP。
monitor.yourdomain.com)探针机只跑 agent。二进制从 GitHub Releases 下载。
https://monitor.yourdomain.com# 1) 选架构下载(示例 amd64)
mkdir -p /opt/komari
curl -fL -o /opt/komari/agent \
"https://github.com/komari-monitor/komari-agent/releases/latest/download/komari-agent-linux-amd64"
# arm64:
# curl -fL -o /opt/komari/agent \
# "https://github.com/komari-monitor/komari-agent/releases/latest/download/komari-agent-linux-arm64"
chmod +x /opt/komari/agent
# 2) 写入服务(替换 YOUR_TOKEN)
cat > /etc/systemd/system/komari-agent.service <<'EOF'
[Unit]
Description=Komari Agent
After=network.target
[Service]
Type=simple
ExecStart=/opt/komari/agent -e https://monitor.yourdomain.com -t YOUR_TOKEN --disable-web-ssh --exclude-nics lo,docker0,br-,veth
WorkingDirectory=/opt/komari
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now komari-agent
systemctl status komari-agent --no-pager
# 若提示 Text file busy:先停旧进程
pkill -f /opt/komari/agent || true
sleep 1
# 前台测试
/opt/komari/agent -e https://monitor.yourdomain.com -t YOUR_TOKEN --disable-web-ssh
# 后台 + 开机(crontab)
nohup /opt/komari/agent -e https://monitor.yourdomain.com -t YOUR_TOKEN --disable-web-ssh \
--exclude-nics lo,docker0,br-,veth \
>/var/log/komari-agent.log 2>&1 &
(crontab -l 2>/dev/null | grep -v 'komari/agent'; \
echo '@reboot sleep 15; /opt/komari/agent -e https://monitor.yourdomain.com -t YOUR_TOKEN --disable-web-ssh --exclude-nics lo,docker0,br-,veth >/var/log/komari-agent.log 2>&1') | crontab -
-e:面板地址,如 https://monitor.yourdomain.com-t:该节点 token(面板生成)--disable-web-ssh:关闭远程终端(推荐)--exclude-nics:排除 lo / docker 网卡,流量统计更干净ExecStart -t ... 后 daemon-reload && restart。YOUR_TOKEN / yourdomain.com 换成你的真实值。nano /etc/systemd/system/komari-agent.service
systemctl daemon-reload
systemctl restart komari-agent
journalctl -u komari-agent -n 30 --no-pager
curl -I https://monitor.yourdomain.comps aux | grep komari 进程是否在跑agent 正在运行无法覆盖。先 pkill -f /opt/komari/agent,下到 agent.new 再 mv。
不用。 面板 + 反代只在主机;探针只上报。