ThingsBoard实战部署:从零到一的Ubuntu生产环境搭建指南

ThingsBoard实战部署:从零到一的Ubuntu生产环境搭建指南 1. 项目背景与环境规划第一次接触ThingsBoard时我被它强大的物联网设备管理能力吸引。这次我们要为一个单位部署物联网管理系统管理分散在不同地点的空调、用电设备未来还可能接入消防系统。选择ThingsBoard 3.7版本是因为它稳定且功能完善而Ubuntu 24.04 LTS作为服务器系统长期支持周期和丰富的软件源让我们后续维护更轻松。在硬件规划阶段我建议先评估项目规模。虽然ThingsBoard官方文档说能轻松管理上万设备但我们的项目预计不会超过1000台设备。经过多次测试最终确定虚拟机配置为2个处理器、8个内核和16GB内存。这个配置不仅能流畅运行ThingsBoard核心服务还能支持后续的界面定制开发工作。提示如果项目后期需要扩展建议预留30%的性能余量避免频繁调整虚拟机配置。2. 虚拟机配置详解2.1 计算资源分配CPU和内存配置需要根据实际业务场景决定。我们选择8核CPU主要考虑两点一是ThingsBoard的处理能力二是PostgreSQL数据库的需求。实测发现当设备数在500台左右时系统负载通常在30%以下这说明我们的配置足够应对当前业务量。内存分配16GB是经过仔细计算的PostgreSQL最小需求4GBThingsBoard服务约占用2GB系统和其他服务需要2GB剩余8GB作为缓冲应对突发流量2.2 存储规划磁盘空间是最容易被低估的配置项。根据前期测试300台设备全量数据存储一个月大约需要10GB空间。考虑到日志文件和系统备份我们最终配置了2TB存储空间。这个容量可以支持3年以上的设备数据存储系统日志保留6个月足够的空间进行数据库维护操作# 查看磁盘使用情况的常用命令 df -h # 查看磁盘总空间 du -sh /var/lib/postgresql # 查看数据库目录大小3. Ubuntu Server安装实战3.1 系统安装准备从Ubuntu官网下载24.04 LTS服务器版镜像时建议选择国内镜像站点加速下载。安装时选择英文界面可以减少后续开发中的编码问题这点在实际项目中非常重要。网络配置环节需要特别注意必须使用静态IP避免DHCP导致的地址变化网关和DNS要配置正确否则后续软件安装会失败测试网络连通性后再继续安装我的网络配置示例IP地址: 192.168.1.100 子网掩码: 255.255.255.0 网关: 192.168.1.1 DNS: 114.114.114.1143.2 关键安装选项在软件选择界面务必勾选OpenSSH server。这样安装完成后就能通过SSH远程管理服务器大大提高工作效率。其他服务如LXD、snapd等可以根据实际需求选择我们项目中没有使用这些功能。分区方案对新手来说可能比较复杂我建议使用默认的LVM方案。它提供了良好的扩展性当磁盘空间不足时可以方便地扩容。安装完成后记得移除安装介质否则系统可能会反复进入安装界面。4. 基础环境配置4.1 系统更新与安全加固安装完成后第一件事就是更新系统sudo apt update sudo apt upgrade -y sudo apt autoremove接着配置防火墙规则只开放必要的端口sudo ufw allow 22/tcp # SSH sudo ufw allow 8080/tcp # ThingsBoard默认端口 sudo ufw enable4.2 性能优化设置调整swappiness值可以减少系统使用交换分区的频率提升性能echo vm.swappiness10 | sudo tee -a /etc/sysctl.conf sudo sysctl -p对于数据库服务器还需要调整内核参数echo kernel.shmmax17179869184 | sudo tee -a /etc/sysctl.conf echo kernel.shmall4194304 | sudo tee -a /etc/sysctl.conf sudo sysctl -p5. 数据库选型建议5.1 PostgreSQL基础配置根据ThingsBoard官方文档当消息量小于5000条/秒时PostgreSQL完全够用。我们的项目预计峰值不会超过1000条/秒所以选择PostgreSQL单机部署。安装PostgreSQL时要注意版本兼容性sudo apt install postgresql-16 -y创建数据库用户和数据库sudo -u postgres psql -c CREATE USER thingsboard WITH PASSWORD 你的密码; sudo -u postgres psql -c CREATE DATABASE thingsboard OWNER thingsboard;5.2 性能调优技巧修改PostgreSQL配置文件可以提高性能sudo nano /etc/postgresql/16/main/postgresql.conf关键参数调整shared_buffers 4GB effective_cache_size 12GB work_mem 16MB maintenance_work_mem 1GB6. ThingsBoard安装与配置6.1 安装依赖环境首先安装Java环境sudo apt install openjdk-17-jdk -y验证Java版本java -version接着安装ThingsBoard的deb包wget https://github.com/thingsboard/thingsboard/releases/download/v3.7/thingsboard-3.7.deb sudo dpkg -i thingsboard-3.7.deb6.2 数据库连接配置修改ThingsBoard配置文件sudo nano /etc/thingsboard/conf/thingsboard.yml更新数据库连接部分spring: datasource: url: jdbc:postgresql://localhost:5432/thingsboard username: thingsboard password: 你的密码7. 服务启动与验证7.1 初始化数据库运行数据库初始化脚本sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo这个命令会创建必要的数据库表结构并可选地加载演示数据。7.2 启动服务启动ThingsBoard服务并设置开机自启sudo systemctl enable thingsboard sudo systemctl start thingsboard检查服务状态sudo systemctl status thingsboard8. 常见问题排查8.1 服务启动失败如果ThingsBoard启动失败首先检查日志sudo tail -f /var/log/thingsboard/thingsboard.log常见问题包括数据库连接失败检查用户名密码和网络连接端口冲突确保8080端口没有被其他程序占用内存不足调整JVM参数或增加系统内存8.2 性能优化当系统运行缓慢时可以尝试以下优化调整ThingsBoard的JVM参数优化PostgreSQL配置考虑使用Redis缓存对高频访问的数据建立索引修改JVM参数sudo nano /etc/thingsboard/conf/thingsboard.conf调整内存分配JAVA_OPTS$JAVA_OPTS -Xms2048M -Xmx4096M