Skip to content

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,执行以下命令一键安装(需要联网):

bash
curl -fsSL https://get.docker.com | sh

安装完成后验证:

bash
docker --version
docker compose version

两条命令都能输出版本号即表示安装成功。

如果访问 Docker Hub 较慢,可以为 Docker 配置镜像加速器,主流云服务商通常提供免费的加速服务。


1.3. 开放端口

ThinkLink 使用以下端口,云服务器需要在安全组 / 防火墙中手动开放,本地虚拟机或自建服务器通常无需操作。

端口协议用途
80TCPWeb 管理界面(HTTP)
443TCPWeb 管理界面(HTTPS,可选)
1883TCPMQTT(设备 / 第三方平台接入)
1700UDPLoRaWAN 网络服务器(网关上行数据)
8083TCPMQTT over WebSocket

主流云服务商(AWS、Azure、GCP 等)的云服务器需要在控制台的安全组防火墙规则中添加入方向规则才能生效,仅在服务器内执行 iptables 是不够的。


ThinkLink 支持两种安装方式,根据服务器的网络情况选择:

方式适用场景特点
在线安装服务器可以访问外网Docker Compose 自动从 Docker Hub 拉取镜像,步骤最少
离线安装内网服务器、无公网访问手动下载镜像包后导入,再启动服务

1.4.1. 一键安装脚本(在线)

服务器能访问外网时,使用以下脚本完成所有步骤:

bash
# 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

步骤二:将镜像包上传到服务器

bash
scp imagename.tar user@your-server:/opt/thinklink/

步骤三:导入镜像

在服务器上执行:

bash
docker load -i /opt/thinklink/imagename.tar

导入成功后可以用 docker images 查看已加载的镜像。

步骤四:克隆或上传配置文件

同样需要把仓库(thinklink-docker)的配置文件上传到服务器(docker-compose.yml 及相关配置),或者在有网络的机器上下载 ZIP 后传入。

步骤五:启动服务

bash
cd thinklink-docker
docker compose up -d
docker compose ps

1.5. 验证服务是否正常运行

检查容器状态

bash
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              ...
...

如果某个容器显示 ExitRestarting,查看其日志排查原因:

bash
docker compose logs <服务>
# 例如:
docker compose logs thinklink-server

检查端口是否监听

bash
ss -tlnp | grep -E '80|443|1883|8083'

能看到对应端口的 LISTEN 行说明服务已就绪。


服务正常运行后,打开浏览器访问:

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 包,造成入网紊乱、下行冲突,设备可能反复掉线或无法正常通信。出现此类异常时,这是首先应排查的点。

处理方法——在不使用的平台上操作,三选一:

  1. 将设备 LoRaWAN 档案的 enable 设为 false
  2. downEnable 设为 false(仅禁止下行)
  3. 删除该平台上的设备档案

1.8. 故障诊断

问题一:docker compose up 拉取镜像失败

现象: 执行 docker compose up -d 后报错,提示无法连接 Docker Hub 或下载超时。

原因: 服务器没有外网访问能力,或网络访问 Docker Hub 速度过慢。

解决方案:改用离线安装

  1. 在一台可以联网的机器上,从以下地址下载镜像压缩包(.tar 格式):

    https://www.jianguoyun.com/p/DfMDLSgQjJyUBxj__5QGIAA

    同时下载仓库的 ZIP 配置包:https://gitee.com/manthink_bj/thinklink-docker(页面右上角 → 下载 ZIP)

  2. 将两个文件通过 U 盘、scp 或其他方式传入服务器。

  3. 在服务器上导入镜像:

    bash
    docker load -i imagename.tar
  4. 解压配置包,进入目录后启动:

    bash
    unzip thinklink-docker-master.zip
    cd thinklink-docker-master
    docker compose up -d

问题二:容器启动后立即退出(状态为 Exit

诊断步骤:

bash
# 查看所有容器状态(包括已退出的)
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 daemonDocker 服务未启动执行 systemctl start docker

问题三:容器运行但无法访问 Web 界面

诊断步骤:

bash
# 1. 确认容器在运行
docker compose ps

# 2. 确认 80 端口在监听
ss -tlnp | grep 80

# 3. 本机测试连通性
curl -I http://localhost

常见原因:

  • 云服务器安全组未开放 80 端口 — 前往云服务商控制台添加入方向 TCP 80 规则(参见 1.3. 开放端口
  • 防火墙拦截 — 检查服务器本地防火墙:firewall-cmd --list-portsiptables -L

问题四:dockerdocker compose 命令找不到

现象: command not found

处理:

  • docker 找不到 → 参见 1.2. 安装 Docker

  • docker compose 找不到(但 docker 正常)→ Docker 版本过旧,升级到 Docker Engine 20.10+ 即可内置 Compose V2:

    bash
    # 升级 Docker
    curl -fsSL https://get.docker.com | sh
  • 若旧版使用的是 docker-compose(带连字符),可临时用旧命令替代:

    bash
    docker-compose up -d

通用排查命令速查

bash
# 查看所有容器状态
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