1. Docker 部署(TKE)
TKE(ThinkLink Enterprise)是 ThinkLink 的私有化部署版本,基于 Docker Compose 运行,适合需要本地化部署、数据不出内网的场景。
仓库地址: https://gitee.com/manthink_bj/thinklink-docker
1.1. 环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux(推荐 Ubuntu 20.04 / 22.04 或 CentOS 7/8) |
| CPU 架构 | x86_64(x64),暂不支持 ARM |
| 内存 | 建议 ≥ 4 GB |
| Docker | 已安装 Docker Engine + Docker Compose |
| 权限 | 需要 root 权限(或具有 docker 组权限的用户) |
没有安装 Docker? 参见下方 1.2. 安装 Docker。已安装可跳过直接进入 1.3. 开放端口。
1.2. 安装 Docker
如果服务器上还没有 Docker,执行以下命令一键安装(需要联网):
curl -fsSL https://get.docker.com | sh安装完成后验证:
docker --version
docker compose version两条命令都能输出版本号即表示安装成功。
如果访问 Docker Hub 较慢,可以为 Docker 配置镜像加速器,主流云服务商通常提供免费的加速服务。
1.3. 开放端口
ThinkLink 使用以下端口,云服务器需要在安全组 / 防火墙中手动开放,本地虚拟机或自建服务器通常无需操作。
| 端口 | 协议 | 用途 |
|---|---|---|
| 80 | TCP | Web 管理界面(HTTP) |
| 443 | TCP | Web 管理界面(HTTPS,可选) |
| 1883 | TCP | MQTT(设备 / 第三方平台接入) |
| 1700 | UDP | LoRaWAN 网络服务器(网关上行数据) |
| 8083 | TCP | MQTT over WebSocket |
主流云服务商(AWS、Azure、GCP 等)的云服务器需要在控制台的安全组或防火墙规则中添加入方向规则才能生效,仅在服务器内执行
iptables是不够的。
1.4. 安装 ThinkLink
ThinkLink 支持两种安装方式,根据服务器的网络情况选择:
| 方式 | 适用场景 | 特点 |
|---|---|---|
| 在线安装 | 服务器可以访问外网 | Docker Compose 自动从 Docker Hub 拉取镜像,步骤最少 |
| 离线安装 | 内网服务器、无公网访问 | 手动下载镜像包后导入,再启动服务 |
1.4.1. 一键安装脚本(在线)
服务器能访问外网时,使用以下脚本完成所有步骤:
# 1. 克隆配置仓库(需要 git)
git clone https://gitee.com/manthink_bj/thinklink-docker.git
cd thinklink-docker
# 2. 启动所有服务(自动拉取镜像)
docker compose up -d
# 3. 查看服务运行状态
docker compose ps全部容器状态为 running 后,ThinkLink 即部署完成。
如果没有安装
git,可以在仓库页面手动下载 ZIP 压缩包后解压。
1.4.2. 离线安装(手动导入镜像)
步骤一:在有网络的机器上下载镜像包
从以下链接下载镜像文件(.tar 格式):
https://www.jianguoyun.com/p/DfMDLSgQjJyUBxj__5QGIAA
步骤二:将镜像包上传到服务器
scp imagename.tar user@your-server:/opt/thinklink/步骤三:导入镜像
在服务器上执行:
docker load -i /opt/thinklink/imagename.tar导入成功后可以用 docker images 查看已加载的镜像。
步骤四:克隆或上传配置文件
同样需要把仓库(thinklink-docker)的配置文件上传到服务器(docker-compose.yml 及相关配置),或者在有网络的机器上下载 ZIP 后传入。
步骤五:启动服务
cd thinklink-docker
docker compose up -d
docker compose ps1.5. 验证服务是否正常运行
检查容器状态
docker compose ps正常输出示例(所有服务的 STATUS 均为 Up):
NAME STATUS PORTS
thinklink-web Up 0.0.0.0:80->80/tcp
thinklink-server Up 0.0.0.0:1883->1883/tcp ...
thinklink-db Up ...
...如果某个容器显示 Exit 或 Restarting,查看其日志排查原因:
docker compose logs <服务名>
# 例如:
docker compose logs thinklink-server检查端口是否监听
ss -tlnp | grep -E '80|443|1883|8083'能看到对应端口的 LISTEN 行说明服务已就绪。
1.6. 登录 ThinkLink
服务正常运行后,打开浏览器访问:
http://<服务器IP>例如服务器 IP 为 192.168.1.100,则访问 http://192.168.1.100,即可看到 ThinkLink 登录页面。
端口
80是默认 HTTP 端口,浏览器会自动使用,无需在地址栏手动填写:80。
⚠️ 安全提醒:请立即修改默认密码 系统使用出厂默认密码,任何能访问该地址的人都可以登录。首次登录后必须立即前往「个人中心」修改密码,否则存在未授权访问风险。
登录后前往组织管理新建或加入一个组织,才能开始使用平台功能。
1.7. 与云平台协同使用
如果你同时使用 ThinkLink 官方云平台,建议在 TKE 中使用与云平台相同的组织账号名,这样在云平台调试完成后可以直接将档案和模型同步到私有部署,网关也无需修改任何配置即可切换。
⚠️ 重要:同一 LoRaWAN 设备档案不能在两个平台中同时处于启用状态。
如果同一台设备的档案在 TKE 和云平台(或 TKG)中都处于激活状态,两个平台会同时响应该设备的 Join 请求或 Confirm 包,造成入网紊乱、下行冲突,设备可能反复掉线或无法正常通信。出现此类异常时,这是首先应排查的点。
处理方法——在不使用的平台上操作,三选一:
- 将设备 LoRaWAN 档案的
enable设为 false- 将
downEnable设为 false(仅禁止下行)- 删除该平台上的设备档案
1.8. 故障诊断
问题一:docker compose up 拉取镜像失败
现象: 执行 docker compose up -d 后报错,提示无法连接 Docker Hub 或下载超时。
原因: 服务器没有外网访问能力,或网络访问 Docker Hub 速度过慢。
解决方案:改用离线安装
在一台可以联网的机器上,从以下地址下载镜像压缩包(
.tar格式):https://www.jianguoyun.com/p/DfMDLSgQjJyUBxj__5QGIAA
同时下载仓库的 ZIP 配置包:https://gitee.com/manthink_bj/thinklink-docker(页面右上角 → 下载 ZIP)
将两个文件通过 U 盘、
scp或其他方式传入服务器。在服务器上导入镜像:
bashdocker load -i imagename.tar解压配置包,进入目录后启动:
bashunzip thinklink-docker-master.zip cd thinklink-docker-master docker compose up -d
问题二:容器启动后立即退出(状态为 Exit)
诊断步骤:
# 查看所有容器状态(包括已退出的)
docker compose ps -a
# 查看退出容器的完整日志
docker compose logs <服务名>常见原因及处理:
| 日志关键字 | 原因 | 处理方法 |
|---|---|---|
permission denied | 当前用户无 Docker 权限 | 使用 sudo 或将用户加入 docker 组后重新登录 |
address already in use | 端口被占用 | 用 ss -tlnp 找到占用进程并停止,或修改 docker-compose.yml 中的端口映射 |
no space left on device | 磁盘空间不足 | 用 df -h 检查磁盘,清理旧镜像:docker system prune |
cannot connect to the Docker daemon | Docker 服务未启动 | 执行 systemctl start docker |
问题三:容器运行但无法访问 Web 界面
诊断步骤:
# 1. 确认容器在运行
docker compose ps
# 2. 确认 80 端口在监听
ss -tlnp | grep 80
# 3. 本机测试连通性
curl -I http://localhost常见原因:
- 云服务器安全组未开放 80 端口 — 前往云服务商控制台添加入方向 TCP 80 规则(参见 1.3. 开放端口)
- 防火墙拦截 — 检查服务器本地防火墙:
firewall-cmd --list-ports或iptables -L
问题四:docker 或 docker compose 命令找不到
现象: command not found
处理:
docker找不到 → 参见 1.2. 安装 Dockerdocker compose找不到(但docker正常)→ Docker 版本过旧,升级到 Docker Engine 20.10+ 即可内置 Compose V2:bash# 升级 Docker curl -fsSL https://get.docker.com | sh若旧版使用的是
docker-compose(带连字符),可临时用旧命令替代:bashdocker-compose up -d
通用排查命令速查
# 查看所有容器状态
docker compose ps -a
# 查看某个服务的实时日志
docker compose logs -f <服务名>
# 查看 Docker 整体资源占用
docker stats
# 检查磁盘使用
df -h
# 检查端口监听
ss -tlnp | grep -E '80|443|1883|1700|8083'
# 重启所有服务
docker compose restart
# 完全停止并重新启动
docker compose down && docker compose up -d