开源项目部署环境配置指南:多环境部署方案与生产环境配置实践
2026-04-01 09:15:57作者:丁柯新Fawn
部署方案决策指南:选择最适合你的方式
在开始部署ThingsBoard之前,通过以下决策树快速定位最适合你的部署方案:
开发测试场景 → 选择Docker容器部署(5-10分钟完成,资源占用率低)
生产环境场景 → 选择二进制包部署(稳定性高,维护成本适中)
二次开发场景 → 选择源码编译部署(高度定制化,灵活性强)
硬件资源参考表
| 部署规模 | CPU核心 | 内存 | 存储 | 推荐部署方式 |
|---|---|---|---|---|
| 开发测试 | 2核 | 4GB | 20GB HDD | Docker容器 |
| 小型生产 | 4核 | 8GB | 40GB SSD | 二进制包 |
| 大型生产 | 8核+ | 16GB+ | 100GB+ SSD | 源码编译+集群 |
方案一:Docker容器部署——快速搭建开发测试环境
环境预检清单
- Docker Engine 20.10+ 和 Docker Compose 2.0+
- 至少2GB可用磁盘空间
- 网络连接(用于拉取镜像)
实施步骤
- 安装Docker环境
# Ubuntu系统安装Docker
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update && sudo apt install -y docker-ce docker-compose-plugin
sudo systemctl enable --now docker
- 获取项目代码并初始化
git clone https://gitcode.com/GitHub_Trending/th/thingsboard
cd thingsboard/docker
chmod +x docker-create-log-folders.sh docker-install-tb.sh
./docker-create-log-folders.sh # 创建日志目录结构
- 启动服务集群
# 加载演示数据启动(首次部署推荐)
./docker-install-tb.sh --loadDemo
# 启动所有服务组件
docker compose up -d
验证方法
- 检查服务状态:
docker compose ps,确保所有服务状态为"Up" - 访问Web界面:http://服务器IP:8080
- 使用默认凭据登录:sysadmin@thingsboard.org / sysadmin
⚠️ 注意:Docker部署默认使用嵌入式H2数据库,不适合生产环境长期使用
方案二:二进制包部署——构建生产级稳定环境
环境预检清单
- JDK 11+ 运行环境
- PostgreSQL 12+ 或 Cassandra 3.11+ 数据库
- 系统服务管理工具(systemd或sysvinit)
实施步骤
- 准备数据库环境
# PostgreSQL安装与配置
sudo apt install -y postgresql postgresql-contrib
sudo -u postgres psql -c "CREATE DATABASE thingsboard;"
sudo -u postgres psql -c "CREATE USER thingsboard WITH PASSWORD 'thingsboard';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE thingsboard TO thingsboard;"
- 生成并安装二进制包
git clone https://gitcode.com/GitHub_Trending/th/thingsboard
cd thingsboard/packaging/java/scripts
chmod +x install.sh
sudo ./install.sh # 生成并安装deb包
- 配置数据库连接
# 编辑主配置文件
sudo nano /etc/thingsboard/thingsboard.yml
# 修改数据库连接部分
spring:
datasource:
driverClassName: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/thingsboard
username: thingsboard
password: thingsboard
- 启动服务并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable thingsboard
sudo systemctl start thingsboard
验证方法
- 检查服务状态:
sudo systemctl status thingsboard - 查看应用日志:
tail -f /var/log/thingsboard/thingsboard.log - 访问Web界面:http://服务器IP:8080
💡 提示:生产环境建议配置Nginx作为反向代理,并启用HTTPS加密
方案三:源码编译部署——定制化开发环境搭建
环境预检清单
- JDK 17+ 开发环境
- Maven 3.8+ 构建工具
- Node.js 16+ 和 Yarn 包管理器
- 至少4GB内存(编译过程需要)
实施步骤
- 安装基础依赖
# 安装JDK和Maven
sudo apt install -y openjdk-17-jdk maven
# 安装Node.js和Yarn
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
npm install -g yarn
- 获取代码并编译
git clone https://gitcode.com/GitHub_Trending/th/thingsboard
cd thingsboard
# 编译后端代码
mvn clean install -DskipTests -Dmaven.javadoc.skip=true
# 编译前端UI
cd ui-ngx
yarn install
yarn build
cd ..
- 配置与启动
# 复制配置文件模板
cd application/src/main/resources
cp thingsboard.yml.dist thingsboard.yml
# 编辑数据库配置(同上二进制部署步骤)
# 启动服务
cd ../../../target/bin
./thingsboard.sh start
验证方法
- 检查服务日志:
tail -f logs/thingsboard.log - 验证API可用性:
curl http://localhost:8080/api/v1/health - 访问Web界面:http://服务器IP:8080
部署后必做的5项安全配置
1. 更改默认管理员密码
登录系统后立即修改默认密码:
- 点击右上角用户头像 → "Profile"
- 选择"Change password"
- 设置强密码(至少8位,包含大小写字母、数字和特殊符号)
2. 配置HTTPS加密
# 使用Let's Encrypt获取证书
sudo apt install certbot
sudo certbot certonly --standalone -d your-domain.com
# 配置Nginx反向代理(/etc/nginx/sites-available/thingsboard)
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. 限制数据库访问权限
-- 仅允许应用服务器访问数据库
ALTER ROLE thingsboard WITH CONNECTION LIMIT 10;
REVOKE ALL ON SCHEMA public FROM public;
GRANT USAGE ON SCHEMA public TO thingsboard;
4. 配置防火墙规则
# 只开放必要端口
sudo ufw allow 22/tcp # SSH
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 1883/tcp # MQTT
sudo ufw enable
5. 启用审计日志
编辑配置文件启用详细审计日志:
# /etc/thingsboard/thingsboard.yml
audit:
enabled: true
level: INFO
log_credentials: false
场景化故障排除指南
场景一:服务启动失败,日志显示内存不足
现象:服务启动后立即退出,日志中有"OutOfMemoryError"
原因分析:默认JVM内存配置不适合当前环境
解决方案:
# 编辑环境变量配置
sudo nano /etc/thingsboard/conf/thingsboard.conf
# 修改JVM参数
export JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx2048m"
# 重启服务
sudo systemctl restart thingsboard
场景二:设备无法连接,MQTT端口访问失败
现象:设备连接超时,日志无任何连接记录
原因分析:可能是防火墙阻止或服务未启用MQTT传输
解决方案:
# 检查MQTT服务状态
sudo systemctl status tb-mqtt-transport
# 如未启动,启用并启动服务
sudo systemctl enable tb-mqtt-transport
sudo systemctl start tb-mqtt-transport
# 开放MQTT端口
sudo ufw allow 1883/tcp
场景三:Web界面显示502错误
现象:访问页面显示"502 Bad Gateway"
原因分析:后端服务未运行或Nginx配置错误
解决方案:
# 检查ThingsBoard服务状态
sudo systemctl status thingsboard
# 检查Nginx配置
sudo nginx -t
# 查看应用日志
tail -f /var/log/thingsboard/thingsboard.log
部署自动化脚本示例
以下是一个简化的部署自动化脚本,适用于生产环境二进制部署:
#!/bin/bash
# thingsboard-deploy.sh - 自动化部署脚本
# 1. 安装依赖
sudo apt update && sudo apt install -y openjdk-11-jre postgresql
# 2. 配置数据库
sudo -u postgres psql -c "CREATE DATABASE thingsboard;"
sudo -u postgres psql -c "CREATE USER thingsboard WITH PASSWORD 'secure_password';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE thingsboard TO thingsboard;"
# 3. 下载并安装
wget https://example.com/thingsboard.deb # 替换为实际下载地址
sudo dpkg -i thingsboard.deb
# 4. 配置数据库连接
sudo sed -i 's/username:.*/username: thingsboard/' /etc/thingsboard/thingsboard.yml
sudo sed -i 's/password:.*/password: secure_password/' /etc/thingsboard/thingsboard.yml
# 5. 启动服务
sudo systemctl enable --now thingsboard
# 6. 验证部署
if curl -s http://localhost:8080/api/v1/health | grep -q "UP"; then
echo "部署成功!"
else
echo "部署失败,请检查日志。"
exit 1
fi
使用方法:
chmod +x thingsboard-deploy.sh
sudo ./thingsboard-deploy.sh
部署方案演进路线图
随着业务增长,你的部署架构可能需要如下演进:
- 初始阶段:单节点Docker部署 → 快速验证业务模型
- 成长阶段:二进制包部署 + 独立数据库 → 提升稳定性
- 扩展阶段:多节点集群 + 负载均衡 → 支持高并发
- 成熟阶段:Kubernetes编排 + 自动扩缩容 → 企业级部署
以上告警监控界面展示了ThingsBoard的设备监控能力,通过正确部署和配置,你可以实时掌握设备状态和系统健康情况。选择适合当前阶段的部署方案,并随着业务发展逐步优化,是保障IoT平台稳定运行的关键。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0185
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0112
Step-3.7-FlashStep-3.7-Flash是一个拥有 1980 亿参数的稀疏混合专家(MoE)视觉语言模型,由 1960 亿参数的语言主干网络和 18 亿参数的视觉编码器组合而成,具备原生图像理解能力。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
omega-aiOmega-AI:基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算,GPU支持CUDA,CUDNN。Java03
llm-universe本项目是一个面向小白开发者的大模型应用开发教程,在线阅读地址:https://datawhalechina.github.io/llm-universe/Jupyter Notebook08
项目优选
收起
暂无描述
Dockerfile
759
4.94 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
854
1.91 K
deepin linux kernel
C
32
16
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
674
1.32 K
Ascend Extension for PyTorch
Python
716
866
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.78 K
185
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
454
436
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.07 K
1.09 K
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Python
991
598
暂无简介
Dart
1 K
259
