ThingsBoard 物联网服务器搭建

一:基于 Docker 的单节点部署方案

1.1:注意点:最好选用云服务器2核4G内存及以上

二:环境准备

2.1: 检查系统版本

确认操作系统版本为 Ubuntu 22.04 LTS:

bash 复制代码
cat /etc/os-release

2.2 检查内核版本

Docker 需要 3.10 及以上内核版本:

bash 复制代码
uname  -r

2.3 更新软件包索引

bash 复制代码
sudo apt update

2.4 安装必要工具

bash 复制代码
sudo apt install -y ca-certificates curl software-properties-common

验证方法:执行 uname -r 确认内核版本 ≥ 3.10

三、安装 Docker

3.1 外网环境一键安装(推荐)

使用阿里云镜像脚本安装 Docker

复制代码
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3.2 内网离线安装方案

无法访问外网时,使用系统自带 docker.io

复制代码
sudo apt install -y docker.io

3.3 设置 Docker 开机自启并启动服务

复制代码
sudo systemctl enable docker
sudo systemctl start docker

3.4 验证 Docker 安装

复制代码
sudo docker --version

3.5 安装独立 docker-compose(apt 安装 docker.io 必备)

apt 自带 docker 无内置 compose 插件,需单独安装

复制代码
sudo apt install -y docker-compose

注意:apt 版使用 docker-compose(连字符),不能用 docker compose(空格)

3.6 免 sudo 操作 Docker(当前用户加入 docker 组)

复制代码
sudo usermod -aG docker $USER && newgrp docker

四、配置 Docker 国内镜像加速

国内拉取官方镜像速度缓慢,配置多镜像源加速

4.1 创建镜像加速配置文件

复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://registry.cn-hangzhou.aliyuncs.com"
]
}
EOF

4.2 重载配置并重启 Docker

复制代码
sudo systemctl daemon-reload && sudo systemctl restart docker

4.3 验证镜像加速配置

复制代码
sudo docker info | grep -A5 "Registry Mirrors"

测试拉取镜像:

复制代码
sudo docker pull hello-world

五、拉取 ThingsBoard 镜像

采用内置 PostgreSQL 数据库单节点镜像 thingsboard/tb-postgres

5.1 拉取镜像

复制代码
sudo docker pull thingsboard/tb-postgres

5.2 查看本地镜像列表

复制代码
sudo docker images

六、启动容器

6.1 创建持久化数据、日志目录并修正权限

容器内运行用户 ID 为 799,必须修改目录权限,否则启动报错

复制代码
mkdir -p ~/.mytb-data && sudo chown -R 799:799 ~/.mytb-data
mkdir -p ~/.mytb-logs && sudo chown -R 799:799 ~/.mytb-logs

6.2 编写 docker-compose.yml 配置文件

复制代码
cat > ~/docker-compose.yml << 'EOF'
version: '3.0'
services:
  mytb:
    restart: always
    image: "thingsboard/tb-postgres"
    ports:
      - "8080:9090"    # Web管理后台端口
      - "1883:1883"    # MQTT设备接入端口
      - "7070:7070"    # Edge边缘端口
      - "5683-5688:5683-5688/udp" # CoAP协议端口
    environment:
      TB_QUEUE_TYPE: in-memory
    volumes:
      - ~/.mytb-data:/data
      - ~/.mytb-logs:/var/log/thingsboard
EOF

重要说明:容器内部 Web 服务监听 9090,宿主机映射 8080,切勿写成 8080:8080

6.3 后台启动容器

复制代码
cd ~ && sudo docker-compose up -d

6.4 查看容器运行状态

复制代码
sudo docker-compose ps

七、验证部署

7.1 查看运行中的容器

复制代码
sudo docker ps | grep mytb

7.2 实时查看启动日志

出现 Started ThingsBoard Server 代表初始化完成

复制代码
sudo docker logs -f mytb

7.3 本地检测 Web 服务连通性

复制代码
curl -I http://localhost:8080

注意:使用云服务器公网IP,8080有可能需要备案,返回 HTTP/1.1 200 代表服务正常

7.4 查看宿主机端口监听

复制代码
sudo ss -tlnp | grep 8080

7.5 浏览器访问地址

访问地址:http://xx.xx.82.16:28080(8080备案麻烦临时使用28080)

默认账号密码

  1. 系统管理员:sysadmin@thingsboard.org / sysadmin
  2. 租户管理员:tenant@thingsboard.org / tenant
  3. 客户账号:customer@thingsboard.org / customer

外网访问故障说明

本地 curl 访问正常,外网无法打开页面:

  1. 云服务器安全组放行 TCP 8080、1883、7070 端口;
  2. 检查服务器本机防火墙 ufw;
  3. 部分云服务商需额外配置端口转发 DNAT。

八、常见问题排查

问题 1:Docker 启动失败,拉取镜像报错

现象:Error response from daemon 原因:网络无法连接 Docker Hub 官方仓库 解决:

  1. 检查服务器 DNS、外网连通性;

  2. 确认镜像加速配置正常;

  3. 查看 Docker 服务详细日志

    sudo journalctl -xeu docker.service --no-pager | tail -40

问题 2:本地可访问,外网无法访问 Web UI

现象:curl localhost:8080 返回 200,浏览器公网 IP 打不开 解决:

  1. 云平台安全组放行 TCP 8080 端口;
  2. 检查本机防火墙状态 sudo ufw status
  3. 私有云 / IDC 服务器配置端口转发。

问题 3:执行 sudo 提示 unable to resolve host

解决:修改 hosts 绑定主机名

复制代码
echo '127.0.1.1 $(hostname)' | sudo tee -a /etc/hosts

问题 4:docker compose 命令找不到

现象:docker: 'compose' is not a docker command 原因:apt 安装 docker.io 无内置 compose 插件 解决:安装独立 docker-compose,使用 docker-compose 命令操作。

九、日常运维命令

基础启停

复制代码
# 停止服务
cd ~ && sudo docker-compose stop

# 重启服务
cd ~ && sudo docker-compose start

# 重启容器(更新配置使用,保留持久化数据)
cd ~ && sudo docker-compose down && sudo docker-compose up -d

彻底清理(数据全部删除,谨慎执行)

复制代码
sudo docker-compose down -v && sudo rm -rf ~/.mytb-data ~/.mytb-logs

日志查看

复制代码
# 实时滚动日志
sudo docker-compose logs -f mytb

进入容器内部调试

复制代码
sudo docker exec -it mytb bash

查看容器资源占用

复制代码
sudo docker stats mytb

Docker 服务启停

复制代码
# 停止Docker
sudo systemctl stop docker
# 启动Docker
sudo systemctl start docker
# 重启Docker
sudo systemctl restart docker
# 设置开机自启
sudo systemctl enable docker

服务器开机自动恢复平台

复制代码
# 开机启动Docker
sudo systemctl start docker
# 启动ThingsBoard容器
cd ~ && sudo docker-compose up -d

更新 ThingsBoard 镜像版本

复制代码
cd ~ && sudo docker-compose pull && sudo docker-compose up -d

快速操作备忘

复制代码
# 后台启动
cd ~ && sudo docker-compose up -d
# 停止服务
cd ~ && sudo docker-compose stop
# 查看运行状态
sudo docker-compose ps
# 实时日志
sudo docker-compose logs -f mytb
# 重启Docker
sudo systemctl restart docker

十:服务器租用建议

想高性价比使用建议闲鱼找服务商,轻快简单,本人腾讯云、华为云、移动云、电信云、阿里云都尝试过使用体验好但是贵。

相关推荐
Leon-Ning Liu3 小时前
【真实经验分享】OGG抽取进程报错 ORA-07445 [kgherrordmp()+986] ORA-00600 [17114]分析步骤
运维·数据库
CCPC不拿奖不改名3 小时前
Redis 工程化部署深度解析
linux·服务器·数据库·redis·深度学习·缓存·rag
QWEDDRFTG3 小时前
运维长期经验总结:从故障倒推服务器电源线选购标准
运维·服务器
Mr.wangh3 小时前
聊天模型--流式传输
运维·服务器
有颜有货3 小时前
PMC生产排产的4种算法,一次讲清
java·服务器·前端
智恒百亿3 小时前
算力基建深度分析:国内服务器产业高强度迭代下的技术壁垒与全球化优势
服务器·人工智能·算力基建
fei_sun3 小时前
等价负载均衡(等价路由ECMP)
运维·负载均衡
楷哥爱开发4 小时前
降低网络爬虫成本:基础设施优化指南
服务器·开发语言·php
鱼很腾apoc4 小时前
【Linux】第7期 进程间通信 (IPC) 详解:管道 (匿名 / 命名) + System V
linux·服务器·c语言·学习·进程间通信·ipc
zh73144 小时前
docker日志监控dozzle,高性能,性能消耗小
运维·docker·容器