live-dashboard:Docker 部署设备状态看板
本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 13 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。
它是什么
自建的「设备在线状态」看板:客户端上报心跳/窗口标题,服务端展示在线时长、活跃曲线。
前置条件
- 一台 Linux 服务器(1C1G 起步;Java 类应用建议 2C4G 以上);
- 已安装 Docker 与 Compose v2,执行
docker compose version有版本号输出; - 所有示例里的 IP / 域名 / 密码都是占位符,实际部署请替换成自己的。
# 安装 Docker(已安装可跳过)
curl -fsSL https://get.docker.com | sh
# 目录约定:一个服务一个目录,后文的 ./data 均指栈目录内
mkdir -p /srv/docker/active/<stack> && cd /srv/docker/active/<stack>
镜像地址
自建 Node 镜像(build: .),无公开镜像。
部署步骤
services:
dashboard:
build: .
container_name: live_dashboard
restart: unless-stopped
ports:
- "3500:3500"
environment:
- PORT=3500
- STATIC_DIR=/app/public
- DB_PATH=/data/live-dashboard.db
- DEVICE_TOKEN_1=${DEVICE_TOKEN_1}
- DEVICE_TOKEN_2=${DEVICE_TOKEN_2}
- HASH_SECRET=${HASH_SECRET}
- DISPLAY_NAME=${DISPLAY_NAME}
- SITE_TITLE=${SITE_TITLE}
- SITE_DESC=${SITE_DESC}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
volumes:
- dashboard_data:/data
mem_limit: 128m
cpus: 0.5
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
dashboard_data:
注意事项
- 设备 Token 格式通常是
token:device_id:name:platform,泄露等于别人能伪造在线状态; - 窗口标题属于隐私数据,服务端只存哈希,别落下原始明文;
- 这是个人项目,公网部署前至少加 Basic Auth。
备份与升级
# 数据在命名卷 dashboard_data
docker run --rm -v <项目名>_dashboard_data:/src -v "$PWD":/b alpine \
tar czf /b/dashboard-$(date +%F).tar.gz -C /src .
# 升级 = 重新构建
docker compose up -d --build
.env里的设备 Token 与密码也要单独备份;- 看板是只读展示,升级风险较低,仍建议先备份。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果