这篇按实际操作顺序,把 Uptime Kuma 从本地容器部署到外网可访问:先启动服务,再添加 HTTP 监控和通知,最后用 cpolar 把本地端口映射出去。
适用环境是一台能运行 Docker 的 Linux 机器。Kuma 和 cpolar 安装在同一台宿主机;没有公网 IP 也可以按隧道路线操作。
本文使用 5702 → 3001 端口关系;镜像和启动命令更新为官方当前文档的写法。
一、检查环境,写好 Compose 配置
先确认 Docker 和 Compose 插件可用:
docker --version
docker compose version
docker run --rm hello-world
前两条确认命令是否存在,第三条检查镜像拉取和容器启动。若拉取失败,先处理 Docker 网络或镜像源;此时还没有进入 Kuma 配置阶段。
新建工作目录:
mkdir -p ~/services/uptime-kuma
cd ~/services/uptime-kuma
在目录内创建 compose.yaml:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
ports:
- "127.0.0.1:5702:3001"
volumes:
- ./data:/app/data
这里有三处需要弄清楚:
| 配置 |
含义 |
:2 |
使用 2 系列镜像,大版本标签可能更新 |
5702:3001 |
宿主机 5702 转到容器内 3001 |
./data:/app/data |
数据保存在当前目录的 data 文件夹 |
原文把 5702 暴露给局域网;这里先绑定 127.0.0.1,供同机浏览器和隧道客户端访问。不要把挂载目录放在 NFS 上,官方部署说明不支持这种文件系统。
启动前检查 YAML,再启动服务:
docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 uptime-kuma
config 用于检查配置能否解析,ps 看容器状态,logs 看启动过程。容器存在但反复重启时,优先读日志,不要连续重复安装。
二、打开页面,创建管理员账号
在这台机器上打开 http://127.0.0.1:5702,按页面提示设置管理员账号。
如果是无桌面的远程 Linux,在自己电脑执行以下命令,保持 SSH 连接,再打开相同地址:
ssh -L 5702:127.0.0.1:5702 用户名@Linux地址

历史账号初始化界面;实际以安装版本为准。
先完成账号设置,再开放外部入口。要确认本机端口确实有响应,也可以执行:
curl -I http://127.0.0.1:5702
有 HTTP 响应只能说明入口可连接,最终还要用浏览器完成初始化并登录。
三、新增 HTTP 监控,配置通知
进入仪表盘,点击“添加监控项”。第一次先监控一个自己维护的网页,关键字段如下:
| 字段 |
初次练习的填法 |
| 监控类型 |
HTTP(s) |
| 显示名称 |
能识别用途的名称,如“博客首页” |
| URL |
目标网页的完整地址 |
| 心跳间隔 |
可先设为 60 秒 |

图中 URL 是示例,操作时换成自己的目标。
点击“设置通知”,选择实际使用的渠道。邮件通知通常需要 SMTP 地址、端口、加密方式、发件人和认证信息;Webhook 类渠道则按对应平台要求填写。
不要把邮箱登录密码与 SMTP 授权码混用。完成后先发送测试通知,再确认该通知配置已经关联到当前监控项,最后保存监控。

根据当前版本和渠道要求填写,图中选择不代表必须使用该渠道。
这里还要避免一个误区:HTTP 状态正常,不一定意味着业务正常。如果错误页也返回 200,可以用关键字检查进一步识别预期内容;登录、下单这类完整流程,则需要更有针对性的探测。
四、安装 cpolar,映射本地 5702 端口
接下来保持 Kuma 的本地配置不变,把外网流量经隧道转发到 127.0.0.1:5702。
先到 cpolar 官网注册账号,并按官方 Linux 文档安装客户端。采用官方脚本时,可先下载到文件,查看内容后再执行:
curl -fL -o install-cpolar.sh https://www.cpolar.com/static/downloads/install-release-cpolar.sh
less install-cpolar.sh
sudo bash install-cpolar.sh
sudo systemctl enable --now cpolar
sudo systemctl status cpolar --no-pager
这里的服务命令适用于使用 systemd 的 Linux。若客户端安装方式不同,以对应安装文档为准。
打开 http://127.0.0.1:9200,使用 cpolar 账号登录管理界面。远程机器可再增加一条 SSH 转发:
ssh -L 9200:127.0.0.1:9200 用户名@Linux地址
在“隧道管理 → 创建隧道”中填写:
| 项目 |
填写内容 |
| 隧道名称 |
自定义,不与已有名称重复 |
| 协议 |
HTTP |
| 本地地址 |
5702 |
| 域名类型 |
先选随机域名进行验证 |
| 地区 |
选择账号可用的地区 |

注意本地地址为 5702,与本文宿主机端口一致;地区选项可能变化。
这里填 5702,不是容器里的 3001,也不是 cpolar 管理界面的 9200。 隧道客户端运行在宿主机,它要连接的是宿主机上实际可访问的服务端口。
创建后打开“状态 → 在线隧道列表”,找到这个隧道的 HTTPS 地址。用手机关闭 Wi-Fi、切换到移动网络,再访问该地址,检查是否能进入 Kuma 登录页面。
若本地可以打开、外网不行,按顺序检查隧道是否在线、转发端口是否正确,以及客户端到隧道服务的网络连接。不要直接把问题归到 Kuma 上。
五、需要固定地址时,再调整域名
随机地址适合临时验证,不适合作为长期收藏入口。固定二级子域名需要账号支持相应套餐;当前官方文档写明基础套餐或以上支持,购买前以官网现行规则为准。
配置顺序是:在官网后台预留二级子域名,记录名称与地区;回到本地隧道编辑页,把域名类型切换为二级子域名,填入预留值并保存;最后回到在线列表,确认新的 HTTPS 地址。
本地端口仍然保持 5702。域名改变的是外部入口,不需要为此重建 Kuma 容器。
六、用故障与恢复各验证一次
选择自己可控的测试目标,暂停它,等待异常通知;恢复目标,再检查恢复通知。测试通知只是确认通知渠道可用,这一步才把监控配置和实际探测一起验证。
| 现象 |
先检查哪里 |
| 本地页面打不开 |
容器日志、端口绑定与访问机器 |
| 隧道在线但页面失败 |
是否误填 3001 或 9200 |
| 页面打开后一直重连 |
隧道连接及 WebSocket 转发 |
| 状态异常却没有消息 |
通知测试、监控关联、重试设置 |
| 重建后配置消失 |
是否换了 data 路径或清空了数据 |
最后保留 compose.yaml 和数据备份。单机小规模使用可以停服务后复制 data 目录,再重新启动,避免直接复制正在写入的数据库。
资料与出处
- Uptime Kuma 文档入口:
github.com/louislam/uptime-kuma
- cpolar 操作文档:
cpolar.com/docs
- 本文参考 CSDN《开源运维监控工具 Uptime Kuma 本地部署并结合内网穿透实现公网访问》,原作者账号已注销,保留出处:
blog.csdn.net/2401_86401473/article/details/142154407。
本篇更新了 Compose 写法、镜像标签和本地端口绑定,补充了排错与验证步骤。