centos7 下,使用docker 部署IOT 调试平台,ThingsBoard 并完美启动
界面正常加载左侧菜单栏、设备统计9个非活动设备、告警面板等都显示无误这说明 ThingsBoard 不仅启动成功而且底层 PostgreSQL 数据库连接正常内部服务也已经完全就绪。为了方便你以后回顾或者帮助接手的新人快速上手我为你整理了一份《ThingsBoard 本地 Docker 部署与运维指导手册》。你可以直接复制到内部的 Wiki、语雀或 Markdown 文档中留存。ThingsBoard 本地部署与运维指导手册 (Docker版) 一、 环境说明与架构概览部署方式Docker 容器化部署使用内置 PostgreSQL 的单机版镜像thingsboard/tb-postgres服务器 IP192.168.21.16默认访问端口9090(Web UI/HTTP API)、1883(MQTT)、7070(Edge RPC)、5683-5688/udp(CoAP/LwM2M)数据持久化目录~/.thingsboard-data(数据)、~/.thingsboard-logs(日志)依赖Docker 服务必须处于运行状态 二、 安装与首次部署步骤1. 启动 Docker 服务systemctl startdockersystemctlenabledocker2. 初始化目录与权限关键步骤ThingsBoard 容器内的用户UID 799需要写入宿主机目录必须提前设置权限否则会报Permission denied错误。mkdir-p~/.thingsboard-data ~/.thingsboard-logschmod-R777~/.thingsboard-data ~/.thingsboard-logs# 或者使用 chown -R 799:799 ~/.thingsboard-data ~/.thingsboard-logs3. 运行 ThingsBoard 容器使用以下完整的docker run命令启动容器已包含解决 Git 同步报错的环境变量使用开源的不使用私有仓库可以避免输入gitee的账号、密码dockerrun-d\-p9090:9090-p1883:1883-p7070:7070\-p5683-5688:5683-5688/udp\-eTB_GATEWAY_DASHBOARD_SYNC_REPOSITORY_URLhttps://gitee.com/hbxxx/ateway-management-extensions-dist.git\-v~/.thingsboard-data:/data\-v~/.thingsboard-logs:/var/log/thingsboard\--namemytb--restartalways\thingsboard/tb-postgres4. 验证启动# 查看容器状态dockerps# 跟踪启动日志首次初始化约需 1-3 分钟看到 Started ThingsBoard 即成功dockerlogs-fmytb⚠️ 三、 核心配置与踩坑记录1. 解决 GitHub 拉取超时报错 (Gateways Dashboard Sync)问题现象启动日志报错Failed to initialize repository ... github.com导致启动缓慢或报错。原因ThingsBoard 内置了从 GitHub 同步官方仪表盘的功能国内网络无法直接访问。解决已在启动命令中通过环境变量TB_GATEWAY_DASHBOARD_SYNC_REPOSITORY_URL将其替换为 Gitee 的公开镜像仓库。注意如果后续 Gitee 仓库无法访问只需删除容器并重新执行上面的docker run命令替换该环境变量即可。Gitee 仓库地址https://gitee.com/hblt_1/gateway-management-extensions-dist.git分支为release/4.0.0。2. 内存与资源要求ThingsBoard 对内存有一定要求建议服务器至少分配2GB - 4GB内存。如果容器启动后莫名其妙被 Killed请检查服务器内存free -h。 四、 日常操作指南1. 登录系统访问地址http://192.168.21.16:9090系统管理员账号sysadminthingsboard.org/sysadmin(超级管理员用于管理租户)租户管理员账号tenantthingsboard.org/tenant(用于管理设备、仪表盘等业务)⚠️ 安全建议首次登录后请务必在【设置】中修改默认密码2. Docker 常用运维命令操作命令查看容器状态docker ps查看实时日志docker logs -f mytb重启 ThingsBoarddocker restart mytb停止 ThingsBoarddocker stop mytb进入容器内部docker exec -it mytb bash删除容器危险数据在宿主机目录不会丢失docker rm -f mytb3. 数据备份与恢复备份直接打包宿主机的~/.thingsboard-data目录即可。建议每日定时备份。恢复停止并删除当前容器将备份的数据恢复到~/.thingsboard-data再重新执行docker run命令。 五、 与 EMP 项目集成 (Spring Boot)在 EMP 项目的application-local.yml中配置连接iot:hub:host:http://192.168.21.16:9090username:tenantthingsboard.orgpassword:tenant 避坑提示如果 EMP 项目运行在本地 Windows而 ThingsBoard 运行在 Linux 服务器host必须填服务器的实际 IP192.168.21.16不能填localhost。确保服务器的9090端口在防火墙中是放行的如果是内网建议直接关闭 firewalld 或配置 IP 白名单。如果报Connection timed out请先在本地电脑浏览器访问http://192.168.21.16:9090确认网络连通性。❓ 六、 常见问题排查 (FAQ)Q1浏览器打不开 9090 端口A检查服务器防火墙firewall-cmd --list-ports检查容器是否在运行docker ps检查 ThingsBoard 日志是否有报错。Q2日志一直报Connecting to Postgres...A说明内置的 PostgreSQL 没有初始化成功通常是挂载目录的权限问题。执行chmod -R 777 ~/.thingsboard-data后重启容器。Q3容器启动后自动退出A可能是内存不足导致被系统 Kill或者挂载目录权限错误。使用docker logs mytb查看退出前的报错。文档创建时间2026-10-09维护人[你的名字]下一步建议ThingsBoard 已就绪赶紧回到 IDEA 中把 EMP 项目的iot.hub.host改为http://192.168.21.16:9090重新启动你的 Spring Boot 项目。之前那个restClient连接超时的错误一定已经消失了如果启动还有别的问题随时发日志给我。