在LattePanda 3 Delta上部署Uptime Kuma:打造家庭自托管监控中心
2026/8/20 1:41:44 网站建设 项目流程

1. 项目缘起:为什么要在LattePanda上折腾Uptime Kuma?

最近几年,无论是个人项目还是小型团队协作,服务监控都成了一个绕不开的话题。你可能和我一样,手头攒了几个VPS,跑着博客、数据库、Nextcloud或者一些自研的API服务。这些服务平时都好好的,但偶尔会因为网络波动、内存泄漏、或者单纯的配置错误而挂掉。问题在于,你往往不是第一个发现服务挂掉的人,而是等到自己要用的时候才“惊喜”地发现。传统的解决方案是上云监控,但要么功能太复杂,要么收费不菲,要么数据隐私让你心里打鼓。

于是,像Uptime Kuma这样的自托管监控方案就火了起来。它轻量、开源、界面友好,能通过HTTP、TCP、Ping等多种方式检查服务状态,支持丰富的通知渠道(Telegram、Discord、邮件、Webhook等),还能生成漂亮的状态页面。可以说,它完美契合了技术爱好者和小型团队“既要功能全,又要掌控感”的需求。

那么,监控工具本身跑在哪里呢?放云服务器上?那监控服务器本身挂了怎么办?而且对于监控国内服务,海外VPS的延迟和可用性也是个问题。放家里的旧电脑或树莓派上?24小时开机电费和噪音又是顾虑。

这时,LattePanda 3 Delta这块板子进入了我的视野。它是一台x86架构的迷你电脑,性能足以媲美低功耗笔记本,功耗却极低。让它7x24小时运行,作为家庭网络的“监控与自动化中枢”,再合适不过了。这个项目的核心,就是把Uptime Kuma这套出色的监控系统,部署到LattePanda 3 Delta这块低功耗、高性能的硬件上,打造一个完全属于自己、稳定可靠、且能灵活扩展的监控中心。接下来,我就把从硬件准备到软件部署、从基础监控到高阶优化的完整过程,以及我踩过的坑和总结的经验,毫无保留地分享出来。

2. LattePanda 3 Delta:硬件选型、系统准备与性能基线

在开始部署软件之前,我们需要先充分了解我们的硬件平台,并为其打好坚实的基础。盲目安装往往会导致后续各种诡异问题。

2.1 为什么是LattePanda 3 Delta?

市面上类似的板子不少,比如树莓派、Orange Pi等ARM开发板,也有Intel NUC等迷你主机。我选择LattePanda 3 Delta主要基于以下几点考量:

  1. x86架构,兼容性无忧:Uptime Kuma官方推荐使用Docker部署,而Docker在x86平台上的生态是最完善的。虽然ARM版Docker也很成熟,但某些镜像或依赖库可能仍存在兼容性问题。选择x86,意味着在软件层面几乎不会遇到“这个镜像没有ARM版”的尴尬。
  2. 性能与功耗的平衡:LattePanda 3 Delta搭载了Intel Celeron N5100处理器(4核4线程,睿频2.8GHz)和8GB LPDDR4内存。这个配置运行一个Docker化的Uptime Kuma(其本身基于Node.js),可以说是“杀鸡用牛刀”。但富裕的性能意味着我们可以同时在这块板子上运行更多服务,比如内网穿透客户端、下载工具、智能家居网关等,而功耗满载时也不过10瓦左右,待机时更低。
  3. 丰富的接口与扩展性:它自带M.2 NVMe插槽(支持2242/2280规格)、一个全尺寸的HDMI接口、多个USB端口(包括USB 3.0)、千兆网口,甚至还有GPIO针脚。这意味着存储可以非常快速(NVMe SSD),连接显示器调试方便,网络吞吐有保障,未来想接个传感器玩点硬件监控也有可能性。
  4. 完整的Windows/Linux支持:它预装Windows 10 Pro,但完美支持各种Linux发行版。这给了我们极大的操作系统选择自由。

2.2 操作系统选型与安装

虽然LattePanda预装了Windows,但对于7x24小时运行的服务端场景,Linux是更专业、更稳定、资源占用更低的选择。我强烈推荐使用Ubuntu Server LTS版本。

为什么是Ubuntu Server?

  • 长期支持:LTS版本提供5年的安全更新,省心。
  • 庞大的社区:遇到问题几乎一定能找到解决方案。
  • 对Docker友好:官方文档完善,安装配置简单。
  • 无图形界面:节省大量内存和CPU资源,全部用于服务。

安装步骤与关键配置:

  1. 制作启动盘:从Ubuntu官网下载最新的Server LTS镜像(如22.04 LTS),使用Rufus或balenaEtcher工具将其写入一个至少8GB的U盘。
  2. LattePanda设置:将U盘插入LattePanda,开机按F7(具体按键可能因版本略有不同,通常是F7Del)进入BIOS/UEFI设置。确保启动顺序中U盘优先,并关闭Secure Boot(某些Linux版本驱动可能需要)。保存并重启。
  3. 安装Ubuntu Server:跟随安装向导。有几个关键点:
    • 网络配置:建议在安装时就配置好静态IP地址。这样你的LattePanda在家庭网络中就有一个固定的地址,方便后续访问。记录下IP,例如192.168.1.200
    • 磁盘分区:对于NVMe SSD,选择“使用整个磁盘”并设置LVM通常是最简单的。如果有多块磁盘,可以规划一下。
    • SSH服务:在安装软件选择环节,务必勾选“OpenSSH server”。这样安装完成后,你就可以通过其他电脑的终端远程连接它,无需接显示器键盘。
    • 用户创建:设置一个强密码的普通用户,例如lpadmin。安装程序会自动将其加入sudo组。
  4. 首次启动与更新:安装完成后重启,用你创建的用户通过SSH登录(ssh lpadmin@192.168.1.200)。第一件事就是更新系统:
    sudo apt update && sudo apt upgrade -y
    更新后建议重启一次。

2.3 建立性能与健康度基线

在部署核心服务前,我们先记录一下系统的“健康状态”,方便日后对比和排查问题。

  • 查看硬件信息

    # 查看CPU型号和核心数 lscpu # 查看内存总量和使用情况 free -h # 查看磁盘空间和类型(确认是NVMe) lsblk -f df -h # 查看网卡信息 ip addr show
  • 安装并运行基础监控工具

    sudo apt install htop iotop iftop -y
    • htop:动态查看CPU、内存、进程情况。刚装好的纯净系统,内存占用应在300MB左右,CPU空闲率接近100%。
    • iotop:监控磁盘IO。
    • iftop:监控网络流量。

运行htop,记下初始的CPU和内存占用。这个状态就是我们后续判断“服务是否异常”的基准。

注意:LattePanda的BIOS中可能有功耗相关的设置。如果追求极致低功耗,可以研究一下BIOS中的C-State、P-State等电源管理选项,但默认设置对于我们的场景已经非常均衡。

3. Docker与Docker Compose:容器化部署的基石

Uptime Kuma官方极力推荐使用Docker部署,这能解决环境依赖、版本冲突、隔离性等一系列问题。我们的部署也将基于Docker Compose,用声明式的方式管理服务。

3.1 安装Docker Engine

不要使用Ubuntu仓库里版本可能较旧的Docker,我们使用Docker官方提供的安装脚本。

# 1. 卸载旧版本(如果是全新系统,可跳过) sudo apt remove docker docker-engine docker.io containerd runc -y # 2. 安装依赖工具 sudo apt update sudo apt install ca-certificates curl gnupg lsb-release -y # 3. 添加Docker官方GPG密钥和仓库 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gosu tee /etc/apt/keyrings/docker.asc > /dev/null echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 4. 安装Docker Engine sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y # 5. 验证安装 sudo docker run hello-world

如果看到“Hello from Docker!”的输出,说明安装成功。

3.2 配置Docker(非root用户运行与镜像加速)

默认情况下,运行Docker命令需要sudo权限,这很不方便也不安全。我们需要将当前用户加入docker组。

# 将当前用户加入docker组 sudo usermod -aG docker $USER

重要:执行此命令后,你需要完全退出当前SSH会话,并重新登录,才能使组权限生效。重新登录后,运行docker ps命令不再需要sudo,说明配置成功。

配置国内镜像加速器(可选但强烈推荐): 由于网络原因,从Docker Hub拉取镜像可能很慢。我们可以配置国内镜像加速器。

# 创建或修改Docker守护进程配置文件 sudo nano /etc/docker/daemon.json

在文件中输入以下内容(以阿里云镜像加速器为例,你需要去阿里云容器镜像服务控制台获取专属加速器地址):

{ "registry-mirrors": ["https://your-mirror.mirror.aliyuncs.com"] }

保存并退出,然后重启Docker服务:

sudo systemctl daemon-reload sudo systemctl restart docker

验证配置:docker info,在输出中查找Registry Mirrors,确认包含你设置的地址。

3.3 安装独立的Docker Compose

虽然Docker现在包含了docker compose插件(作为子命令),但有些人(包括我)还是习惯使用独立的docker-compose命令。我们两种都准备。

# 安装独立版本的docker-compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version # 同时也验证一下插件版本 docker compose version

现在,docker-composedocker compose命令都可以使用了。

4. Uptime Kuma的部署与初始配置

万事俱备,现在可以部署我们的主角了。我们将使用Docker Compose来定义和运行Uptime Kuma服务。

4.1 创建项目目录与Compose文件

为服务创建一个独立的目录,所有相关文件都放在这里,便于管理。

# 在用户家目录下创建一个项目目录 mkdir -p ~/docker/uptime-kuma cd ~/docker/uptime-kuma

创建docker-compose.yml文件:

nano docker-compose.yml

将以下内容粘贴进去。这是最核心的配置文件,我逐段解释:

version: '3.8' # 指定Compose文件格式版本 services: uptime-kuma: image: louislam/uptime-kuma:latest # 使用官方镜像 container_name: uptime-kuma # 指定容器名称,便于管理 restart: unless-stopped # 重启策略:除非手动停止,否则总是重启(应对系统重启或容器意外退出) volumes: # 将容器内的/data目录映射到宿主机的./data目录,用于持久化配置和数据库 - ./data:/data # 映射时区文件,让容器内时间与宿主机(中国时区)一致,对于定时任务和日志时间戳至关重要 - /etc/localtime:/etc/localtime:ro ports: # 将容器内的3001端口映射到宿主机的3001端口。格式:`宿主机端口:容器端口` # 你可以把前面的3001改成其他未被占用的端口,比如8080 - "3001:3001" environment: # 设置环境变量,这里可以配置Uptime Kuma的一些参数,但大部分配置在Web界面完成 # 例如,可以设置数据存储路径(但我们已经通过volumes映射了) # - DATA_DIR=/data # 可选:为容器设置一个自定义的网络,便于未来与其他容器通信(如反向代理) # networks: # - monitor-net # 可选:定义自定义网络 # networks: # monitor-net: # driver: bridge

关键参数解析:

  • restart: unless-stopped:这是服务可靠性的关键。即使LattePanda意外断电重启,Docker服务会随着系统启动,并自动重启这个容器。
  • volumes./data:/data映射是灵魂。所有你的监控配置、通知设置、状态页面数据都保存在宿主机的./data目录下。即使你删除了容器,只要这个目录在,重新启动一个新容器,所有数据都会恢复。
  • /etc/localtime:ro:确保容器内日志和检查计划的时间与你所在时区一致。
  • ports3001是Uptime Kuma默认的Web UI端口。确保你的LattePanda防火墙(如果启用)开放了这个端口。

4.2 启动服务与初次访问

保存docker-compose.yml文件后,在同一个目录下运行:

# 以后台模式启动服务 docker-compose up -d

-d参数代表“detached”,让容器在后台运行。

查看服务状态和日志:

# 查看容器是否运行 docker-compose ps # 应该看到`uptime-kuma`服务状态为`Up` # 查看实时日志(用于调试) docker-compose logs -f uptime-kuma # 按 Ctrl+C 退出日志查看

如果一切正常,日志最后会显示服务器已启动。

现在,打开你的浏览器,访问http://你的LattePanda IP:3001。例如http://192.168.1.200:3001

你将看到Uptime Kuma的初始化界面。首先需要创建一个管理员账户。输入用户名、密码和邮箱(邮箱用于接收通知,务必填写真实可用的)。

4.3 基础配置与第一个监控项

登录后,我们先进行几项关键的基础配置:

  1. 设置通知渠道:这是监控系统的“嘴巴”。点击左侧菜单栏的Settings(设置)图标,然后选择Notifications(通知)。

    • 点击Setup Notification
    • 选择你常用的渠道,比如TelegramDiscord。以Telegram为例:
      • 你需要先与@BotFather对话创建一个Bot,获取Bot Token
      • 然后与你的Bot发起对话,并发送一条消息。
      • 访问https://api.telegram.org/bot<YourBOTToken>/getUpdates来获取你的Chat ID
      • 在Uptime Kuma界面填入TokenChat ID,保存。
    • 强烈建议至少配置两个不同原理的通知渠道,比如“Telegram + 邮件”。防止单一渠道失效导致失联。
  2. 添加第一个监控目标:点击左上角的Add New Monitor(添加新监控)。

    • Monitor Type(监控类型):选择HTTP(s)(最常用)。
    • Friendly Name(友好名称):给你的服务起个名,如“个人博客”。
    • URL:填入要监控的地址,如https://yourblog.com
    • Heartbeat Interval(心跳间隔):默认60秒。对于重要服务,可以设为30秒;对于不那么关键的服务,120秒或300秒也行,减少请求压力。
    • Retries(重试次数):默认0。建议设为12。网络偶尔有波动,一次失败就报警可能产生噪音。设置为1,意味着第一次检查失败后,会立即再试一次,如果还是失败才触发报警。
    • Notification:选择你刚设置好的通知渠道。
    • 其他选项如超时时间、请求头等可以保持默认。
    • 点击Save

稍等片刻,你就能在仪表盘上看到这个监控项的状态(通常是绿色的“UP”)。你可以手动停止你的博客服务,测试一下报警通知是否能在设定的时间内正常发出。

5. 进阶配置:可靠性、安全性与状态页

基础监控跑通后,我们需要让它更可靠、更安全、更美观。

5.1 使用反向代理(Nginx Proxy Manager)暴露服务

直接通过IP:3001访问不够优雅,也不安全。我们通常使用域名(如status.yourdomain.com)并通过HTTPS访问。这就需要反向代理。我推荐使用Nginx Proxy Manager (NPM),它提供了友好的Web界面来管理反向代理和SSL证书。

我们同样用Docker Compose来部署NPM。在LattePanda上新建一个目录:

mkdir -p ~/docker/nginx-proxy-manager cd ~/docker/nginx-proxy-manager nano docker-compose.yml

粘贴以下配置:

version: '3.8' services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: nginx-proxy-manager restart: unless-stopped ports: # NPM管理界面端口 - '8181:81' # HTTP和HTTPS代理端口 - '80:80' - '443:443' volumes: # 持久化配置、SSL证书和日志 - ./data:/data - ./letsencrypt:/etc/letsencrypt environment: # 可选:设置数据库驱动,默认使用SQLite,对个人使用足够 - DB_SQLITE_FILE=/data/database.sqlite # 可选:禁用IPv6,如果网络环境不支持 # - DISABLE_IPV6=true

启动NPM:

docker-compose up -d

访问http://你的LattePanda IP:8181初始登录邮箱:admin@example.com,密码:changeme。登录后会强制你修改密码和邮箱。

配置反向代理与SSL证书:

  1. 在NPM界面,点击Hosts->Proxy Hosts->Add Proxy Host
  2. Details标签:
    • Domain Names: 填写你的域名,如status.yourdomain.com
    • Scheme:http
    • Forward Hostname / IP: 填写你的LattePanda的内网IP,如192.168.1.200
    • Forward Port:3001(Uptime Kuma的端口)。
  3. SSL标签:
    • SSL Certificate: 选择Request a new SSL Certificate
    • 勾选Force SSLHTTP/2 Support
    • 勾选I agree to the Let's Encrypt Terms of Service
    • 填写你的邮箱。
    • 点击Save。NPM会自动为你申请并配置Let‘s Encrypt的免费SSL证书。

等待几分钟,证书申请成功后,你就可以通过https://status.yourdomain.com安全地访问你的Uptime Kuma了。

重要提示:你需要在你的域名DNS解析商处,将status.yourdomain.com的A记录指向你家的公网IP地址。并且,你家的路由器需要设置端口转发,将WAN口的80和443端口转发到LattePanda的内网IP。由于家庭宽带公网IP通常是动态的,你还需要配置DDNS(动态域名解析)。这部分内容涉及家庭网络配置,超出了本文范围,但它是从外网访问服务的关键一步。

5.2 配置Uptime Kuma的状态页

Uptime Kuma内置了状态页功能,你可以公开或半公开地展示你的服务健康状况。

  1. 在Uptime Kuma左侧菜单,点击Status Pages
  2. 点击Create New Status Page
  3. 设置标题、描述、图标等。
  4. Monitor List中,选择你想展示在状态页上的监控项。你可以选择“公开”或“需要密码”访问。
  5. 保存后,状态页会有独立的访问链接,通常是https://你的域名/status/页面名称。你可以将这个链接分享给需要的人。

5.3 数据备份策略

./data目录就是你的全部配置。定期备份这个目录至关重要。

简单粗暴的本地备份:可以写一个简单的cron定时任务,用tarrsync命令将~/docker/uptime-kuma/data目录压缩并拷贝到另一个硬盘或NAS上。

# 示例:每天凌晨3点备份 crontab -e # 添加一行 0 3 * * * tar -czf /path/to/backup/uptime-kuma-backup-$(date +\%Y\%m\%d).tar.gz -C /home/lpadmin/docker/uptime-kuma data

更优雅的容器化备份(使用resticborg):可以创建另一个Docker容器,专门用于加密备份到云端(如Backblaze B2、阿里云OSS等)。但这属于更进阶的运维范畴。

6. 性能调优、监控自身与故障排查

让监控系统监控别人,那谁又来监控监控系统自己呢?我们需要确保Uptime Kuma和LattePanda本身是健康的。

6.1 监控LattePanda宿主机的健康度

我们可以在Uptime Kuma里添加对LattePanda自身的监控。

  1. Ping监控:添加一个Ping类型的监控,目标地址填LattePanda的内网IP或127.0.0.1。这可以监控板子是否在线、网络是否通畅。
  2. 端口监控:添加一个Port类型的监控,目标地址填LattePanda IP,端口填22(SSH)。确保SSH服务正常。
  3. HTTP监控:监控Uptime Kuma自己的Web界面(https://status.yourdomain.com)和NPM的管理界面(http://你的IP:8181)。
  4. 资源监控(进阶):可以通过安装Node Exporter(Prometheus生态)来暴露系统指标(CPU、内存、磁盘、温度等),然后使用Uptime Kuma的Push监控类型或Heartbeat监控来接收数据。或者,更简单点,写一个脚本定期检查dffree命令的输出,并通过Uptime Kuma的HeartbeatAPI发送状态。

6.2 Uptime Kuma容器资源限制与日志管理

默认情况下,Docker容器可以使用宿主机的所有资源。为了更稳定,我们可以给Uptime Kuma容器加上资源限制。

修改docker-compose.yml,在uptime-kuma服务下添加deployresources部分(取决于Compose版本):

services: uptime-kuma: # ... 其他配置 ... deploy: # 适用于 version: '3.8' 及更高版本,并需要以 `docker stack deploy` 方式运行。对于 `docker-compose up`,使用下面的 `resources`。 resources: limits: cpus: '1.0' # 限制最多使用1个CPU核心 memory: 512M # 限制最多使用512MB内存 reservations: cpus: '0.25' memory: 256M

或者,使用更通用的resources标签(直接在service下):

services: uptime-kuma: # ... 其他配置 ... mem_limit: 512m mem_reservation: 256m cpus: '1.0'

设置后,需要重新部署容器:docker-compose down && docker-compose up -d

日志管理:Docker容器的日志默认会一直增长。我们可以配置日志轮转和大小限制。

services: uptime-kuma: # ... 其他配置 ... logging: driver: "json-file" options: max-size: "10m" # 单个日志文件最大10MB max-file: "3" # 最多保留3个日志文件

6.3 常见问题与排查思路

  • 问题:Uptime Kuma Web界面无法访问。

    • 排查
      1. 检查容器状态:docker-compose ps,确认状态是Up
      2. 查看容器日志:docker-compose logs uptime-kuma,看是否有错误输出。
      3. 检查端口占用:在LattePanda上运行sudo ss -tulpn | grep :3001,看3001端口是否被监听。
      4. 检查防火墙:sudo ufw status,确保3001端口是允许的(如果使用了UFW)。
      5. 检查NPM配置:如果用了反向代理,检查NPM中的代理主机配置是否正确,SSL证书是否有效。
  • 问题:监控报警不触发或延迟。

    • 排查
      1. 检查通知渠道配置:在Uptime Kuma的Settings->Notifications里,测试一下通知是否能正常发送。
      2. 检查监控项配置:确认Retries(重试)和Heartbeat Interval(间隔)设置是否合理。间隔太大会导致发现故障延迟。
      3. 检查LattePanda的系统时间:date,确保时区和时间准确。时间不准会导致定时任务错乱。
      4. 检查网络连通性:从LattePanda上pingcurl一下被监控的目标,看是否通。
  • 问题:LattePanda磁盘空间不足。

    • 排查与解决
      1. df -h查看磁盘使用情况。
      2. 清理Docker无用资源:docker system prune -a(谨慎使用,会删除所有未使用的镜像、容器、网络和卷)。
      3. 检查并清理Uptime Kuma的data目录下的日志文件(如果有的话),或Docker的日志文件(/var/lib/docker/containers/...)。
      4. 考虑将数据目录挂载到更大的外部存储。

7. 扩展玩法:将LattePanda打造成家庭服务中枢

部署好Uptime Kuma后,你的LattePanda 3 Delta只发挥了它一小部分潜力。凭借其x86性能和低功耗,它完全可以成为家庭实验室的“大脑”。这里抛砖引玉,提供几个扩展方向:

  1. 内网穿透客户端:安装frpnps的客户端,配合有公网IP的VPS,实现从外网安全访问家庭内所有服务(包括Uptime Kuma状态页)。
  2. 自动化工具:安装Home AssistantNode-RED,将智能家居设备接入,实现自动化场景。
  3. 媒体服务器:安装JellyfinPlex,搭建家庭影音库。
  4. 下载中心:安装qBittorrentTransmission的Docker版本,作为24小时下载机。
  5. 代码仓库/CI:安装GiteaDrone,搭建私有的Git服务和自动化构建平台。
  6. 网络服务:安装Pi-holeAdGuard Home的Docker版,作为家庭网络的广告过滤和DNS服务器。

所有这些服务都可以通过Docker Compose编排,与Uptime Kuma并存。只需要注意规划好端口号,避免冲突,并通过Nginx Proxy Manager为每个服务配置独立的域名和SSL证书即可。LattePanda 3 Delta的8GB内存和NVMe SSD,足以轻松承载以上多个轻量级服务。

这个项目从构思到实现,最深的体会是“合适”比“强大”更重要。LattePanda 3 Delta对于家庭监控和轻量级服务这个场景,就是那个“恰到好处”的选择。它避免了树莓派可能遇到的ARM兼容性问题,又远比常年开着的一台旧台式机安静省电。而Uptime Kuma的简洁与强大,让服务监控从一项复杂的运维工作,变成了一个可以轻松上手的爱好。当你的手机第一次收到“服务下线”的Telegram通知,并在一分钟后收到“服务恢复”的消息时,那种一切尽在掌握的感觉,就是折腾这一切最好的回报。最后一个小建议,定期检查你的备份是否有效,并考虑给你的LattePanda配一个小的UPS(不间断电源),以应对短暂的停电,让监控真正永不间断。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询