手里有各种不同系统的 VPS(Debian, Ubuntu, Alpine)?想装个探针监控,但不想针对每个系统去改安装命令?
本文提供一个全自动通用脚本,自动识别操作系统(Systemd/OpenRC)和 CPU 架构(AMD64/ARM64),并且针对小内存 NAT 机器进行了优化。
✨ 脚本特点
1. 全系统兼容:自动识别 Debian / Ubuntu / CentOS / Alpine。
2. 全架构兼容:自动识别 x86_64 / arm64。
3. 进程自动守护:无论是 Systemd 还是 OpenRC,均配置了崩溃自动重启机制。
第一步:在 VPS 上运行通用脚本
- 登录 Cloudflare Zero Trust 面板,获取你的 Tunnel Token。
2. 复制下方代码,务必修改第一行的 CF_TOKEN 为你自己的。
3. 将整段代码粘贴到 SSH 终端中,回车执行。
#!/bin/sh
# ================= 配置区域 =================
export CF_TOKEN="eyJhIjoi..." # <--- 请在这里填入 Tunnel Token
# ===========================================
echo "⏳ 正在开始部署 (日志版)..."
# --- 1. 环境准备 ---
if [ -x "$(command -v apk)" ]; then
apk add --no-cache curl wget
elif [ -x "$(command -v apt-get)" ]; then
apt-get update && apt-get install -y curl wget
elif [ -x "$(command -v yum)" ]; then
yum install -y curl wget
fi
# --- 2. 下载与清理 ---
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
mkdir -p /opt/komari
# 停止旧进程
pkill -f komari
# ⚠️ 关键:删除旧数据,强制重置密码
rm -rf /opt/komari/data
echo "⬇️ 正在下载组件..."
wget -qO /opt/komari/komari "https://github.com/komari-monitor/komari/releases/latest/download/komari-linux-${ARCH}"
chmod +x /opt/komari/komari
wget -qO /usr/local/bin/cloudflared "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-${ARCH}"
chmod +x /usr/local/bin/cloudflared
# --- 3. 配置服务 (开启日志记录) ---
if pidof systemd >/dev/null 2>&1 || [ -d /run/systemd/system ]; then
# Systemd: 使用 sh -c 重定向日志到文件
cat > /etc/systemd/system/komari.service <<EOF
[Unit]
Description=Komari Monitor
After=network.target
[Service]
Type=simple
ExecStart=/bin/sh -c '/opt/komari/komari server > /var/log/komari.log 2>&1'
WorkingDirectory=/opt/komari
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# Cloudflared 不需要看日志,依然静默
cat > /etc/systemd/system/cloudflared.service <<EOF
[Unit]
Description=Cloudflare Tunnel
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/cloudflared tunnel run --token ${CF_TOKEN}
Restart=always
RestartSec=5
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now komari cloudflared
elif [ -f /sbin/openrc-run ]; then
# OpenRC: 原生支持日志文件配置
cat > /etc/init.d/komari <<EOF
#!/sbin/openrc-run
name="komari"
command="/opt/komari/komari"
command_args="server"
command_user="root"
directory="/opt/komari"
pidfile="/run/komari.pid"
command_background="yes"
output_log="/var/log/komari.log"
error_log="/var/log/komari.log"
respawn_delay=5
depend() { need net; }
EOF
cat > /etc/init.d/cloudflared <<EOF
#!/sbin/openrc-run
name="cloudflared"
command="/usr/local/bin/cloudflared"
command_args="tunnel run --token ${CF_TOKEN}"
command_user="root"
pidfile="/run/cloudflared.pid"
command_background="yes"
output_log="/dev/null"
error_log="/dev/null"
respawn_delay=5
depend() { need net; use dns; }
EOF
chmod +x /etc/init.d/komari /etc/init.d/cloudflared
rc-update add komari default
rc-update add cloudflared default
service komari restart
service cloudflared restart
fi
# --- 4. 结果提示 ---
echo "================================================"
echo "✅ 部署已完成!"
echo ""
echo "🔍 查看初始密码,请执行以下命令:"
echo " grep -E 'Password|User' /var/log/komari.log"
echo ""
第二步:配置 Cloudflare 公网映射(必做)
脚本运行成功后,Cloudflare Tunnel 已经打通,但还需要在 CF 后台将流量转发到 Komari 的默认端口 25774。
回到 Cloudflare Zero Trust 面板。
点击左侧菜单 Networks -> Tunnels。
找到状态显示为 Healthy 的 Tunnel,点击右侧的三个点,选择 Configure。
点击上方的 Public Hostname 标签页,点击 Add a public hostname。
填写关键信息(如下图配置):
Subdomain: 输入你想要的前缀(例如 status)。
Domain: 选择你的域名。
Path: 留空。
Service:
Type 选择 HTTP
URL 填写 localhost:25774
点击右下角的 Save hostname 保存。
🎉 完成
现在,打开浏览器访问 http(s):status.你的域名.com,即可看到 Komari 探针面板。
卸载过程也非常简单。为了方便你,我同样准备了一个“全系统通用”的卸载脚本。
它会自动检测你的系统(Systemd 或 OpenRC),停止服务、取消开机自启、并删除相关的文件。
🗑️ 一键卸载脚本
复制下面的代码到 SSH 终端运行即可:
#!/bin/sh
echo "⚠️ 正在开始卸载 Komari 和 Cloudflared..."
# --- 1. 停止服务并清理启动项 ---
if pidof systemd >/dev/null 2>&1 || [ -d /run/systemd/system ]; then
echo "⚙️ 检测到 Systemd,正在停止并移除服务..."
# 忽略错误输出,防止服务本身没运行导致脚本中断
systemctl stop komari cloudflared 2>/dev/null
systemctl disable komari cloudflared 2>/dev/null
rm -f /etc/systemd/system/komari.service
rm -f /etc/systemd/system/cloudflared.service
systemctl daemon-reload
elif [ -f /sbin/openrc-run ]; then
echo "⚙️ 检测到 OpenRC (Alpine),正在停止并移除服务..."
service komari stop 2>/dev/null
service cloudflared stop 2>/dev/null
rc-update del komari default 2>/dev/null
rc-update del cloudflared default 2>/dev/null
rm -f /etc/init.d/komari
rm -f /etc/init.d/cloudflared
fi
# --- 2. 删除文件和目录 ---
echo "🗑️ 正在清理文件..."
# 删除 Komari 主程序和配置目录
rm -rf /opt/komari
# 删除 Cloudflared 二进制文件
# 注意:如果你这台机器上还运行着其他非本次安装的 Tunnel,请注释掉下面这一行
rm -f /usr/local/bin/cloudflared
# 清理 PID 文件
rm -f /run/komari.pid /run/cloudflared.pid
echo "------------------------------------------------"
echo "✅ 卸载完成!所有相关服务和文件已清除。"
echo "------------------------------------------------"
⚠️ 别忘了最后一步:清理 Cloudflare 后台
脚本只能清理你 VPS 上的文件,无法操作你的 Cloudflare 账户。卸载后,建议去 Cloudflare 后台做个收尾:
登录 Cloudflare Zero Trust 面板。
进入 Networks -> Tunnels。
你应该会看到之前的 Tunnel 状态变成了 Down(因为 VPS 上的服务被删了)。
点击右侧三个点,选择 Delete 删除这个不再使用的 Tunnel。
0