本文把 Komari 监控部署到公网,核心就两步:先让它在本机跑起来,再用 Cloudflare Tunnel 发布出去。前置准备是装好 Docker,已经装过的可以直接跳到第一步。
相比给域名开 Cloudflare 的「小黄云」代理,Tunnel 反过来由服务器主动向 Cloudflare 建出站连接,好处很直接:不用公网 IP、不开入站端口、不暴露源站 IP,也省掉 Nginx/Caddy 反代。对 Komari 这类自用面板,docker-compose + Cloudflare Tunnel 大概是最平衡的方案——部署快、依赖少、暴露面小。
前置准备:安装 Docker Engine
本节采用 Docker 官方 Debian 仓库方式安装 Docker Engine,参考官方文档 。
1. 添加仓库并安装
添加官方仓库并安装 Docker 相关组件:
# Add Docker's official GPG key:
apt-get update
apt-get install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
# Install the Docker packages
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. 验证安装
逐条确认 Docker 已就绪:
systemctl is-active docker
systemctl is-enabled docker
docker version
docker compose version
docker run --rm hello-world
第一步:部署 Komari
本节用 Docker Compose 在目标服务器上部署 Komari Server,参考官方文档。
有两处和官方示例不一样,先说清楚:
- 安装目录用
/opt/komari-server,而不是官方示例的/opt/komari。/opt/komari是 Komari Agent 的默认目录,而主控机器自身通常也要被监控、上面也会跑一个 Agent,它的数据默认就存在这个目录里。为了让两边清晰不混淆,把 Server 单独放一个目录,排障和备份时职责更分明。 - 端口只绑定回环地址
127.0.0.1:25774,不暴露到公网。25774是 Komari 的默认监听端口(可用KOMARI_LISTEN环境变量修改),这里只让它监听本机,要从外部访问就走 SSH 隧道或反向代理。
1. 创建安装目录
先建好数据目录并进入:
mkdir -p /opt/komari-server/data
cd /opt/komari-server
2. 编写 docker-compose.yaml
在 /opt/komari-server 目录下编辑 docker-compose.yaml,数据目录 /opt/komari-server/data 会映射到容器内的 /app/data:
services:
komari:
image: ghcr.io/komari-monitor/komari:latest
container_name: komari
restart: unless-stopped
ports:
- "127.0.0.1:25774:25774"
volumes:
- /opt/komari-server/data:/app/data
3. 启动并检查
拉起容器,确认运行状态和日志:
docker compose up -d
docker compose ps
docker logs --tail=80 komari
首次启动的默认管理员账号会打印在容器日志里,从日志读就行;初始密码别写进文档。
4. 验证访问
确认本机能正常响应:
curl -I http://127.0.0.1:25774/admin
因为只监听了本机,浏览器访问需要先开 SSH 隧道,再打开 http://localhost:25774/admin。
第二步:用 Cloudflare Tunnel 发布到公网
本节用 Cloudflare Tunnel 把 Komari Server 发布到公网,参考官方文档。
这样服务器上不用开任何公网端口,也不用额外配 Caddy、Nginx 之类的反向代理——cloudflared 从服务器主动向 Cloudflare 建立一条出站隧道,外部请求经 Cloudflare 回源到本机的 127.0.0.1:25774,正好接上一节「端口只绑回环地址」的配置。
整个过程分两头进行:先在 Cloudflare 面板建隧道、拿到连接命令,再回服务器把 cloudflared 跑起来,最后回面板配置路由。
1. 在面板创建隧道
在 Cloudflare 进入 Zero Trust 后台,依次点 网络 → 连接器 → 创建隧道:
- 隧道类型选
Cloudflared - 隧道命名为
Komari
2. 在服务器上安装 cloudflared
安装页里操作系统选 Debian、架构选 64-bit,先把仓库安装那段贴到服务器执行:
# Add cloudflare gpg key
mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main' | tee /etc/apt/sources.list.d/cloudflared.list
# install cloudflared
apt-get update && apt-get install cloudflared
装好后,再贴面板给出的服务安装命令,把隧道注册成系统服务、开机自启:
cloudflared service install <你的隧道令牌>
令牌从你自己的面板复制,是形如 eyJ... 的一长串,等同于这条隧道的凭据——任何拿到它的人都能把隧道跑起来,所以别贴进博客或提交到仓库。回到面板,等连接器状态变为「已连接」后点下一步。
3. 配置路由
在「路由隧道 → 已发布应用程序」里把隧道指向本机的 Komari:
- 主机名:
komari.example.com(子域名填komari,域选你在 Cloudflare 上托管的域名,这里以example.com为例) - 路径:留空
- 服务类型:
HTTP - URL:
127.0.0.1:25774
保存后 Cloudflare 会自动为这个子域名配好 DNS,稍等生效即可通过 https://komari.example.com 访问 Komari 面板。这里服务类型填 HTTP 而不是 HTTPS 是对的:公网这一段的 TLS 由 Cloudflare 终结,回源到本机的流量走在隧道里,源站只跑明文 HTTP 也不会暴露到公网。
小结
两步走完,Komari 已经跑在 https://komari.example.com 上:第一步用 docker-compose 把服务拉起来、只绑回环地址,第二步用 Cloudflare Tunnel 发布出去,TLS 交给 Cloudflare,服务器一个公网端口都没开。登录用日志里的管理员账号,进面板就能添加节点、下发 Agent,开始监控自己的小🐔咯。后续也可以通过 GitHub 单点登录 / Cloudflare Access 等进一步加固面板。
That'all,祝各位 mjj 玩🐔愉快~ 
@BaizeXS #12
最新 commit 把 Cloudflared + CloudflareAccess(单点登陆)都给删了
我本来也是用的内置的方案,但他的 Cloudflared 不是在后台启动吗
不是和 docker 一起
你说 doc 1.3 移除那个我也有看见,现在文档里有关内容全部都删除了
我现在用最新快照版本,也用上了 metrics 数据库
全部自己写在 docker-compose.yaml 里面启动了
感谢分享
感谢分享
不错不错
@DevinLee #4 哟,你来了
这个用法最佳实践是家里软路由上的docker搭建komari,直接省去了公网IP,申请证书和nginx之类的过程
@MJJYYDS #7 哈哈哈哈当然是OK的,我是有小🐔闲置刚好就拿来部署了。不过有域名的情况下,这种方法确实相对来说搭建速度极快并且较为安全的方法了,后续还可以配合 CF Access 或者 GitHub OAuth 可以进一步加固面板
昨天才搞好了nginx,蒜鸟蒜鸟,下次有机会再试试楼主这个方法
@HelloWorldx #9 哈哈哈哈哈哈这个主要是图快和方便,CF一宕,也会难受应该