Skip to content

Docker 部署(TKE)

TKE(ThinkLink Enterprise)是 ThinkLink 的私有化部署版本,使用 Docker Compose 运行。能够访问互联网的 Linux 服务器可使用官方一键安装脚本;无法联网的服务器可使用同一安装器生成的离线包。两种方式均自动部署 MinIO 对象存储并初始化私有存储桶。

更新日期:2026-09-11。新版安装器已发布,支持在线安装、离线包下载、包校验和离线安装。

架构限制:ThinkLink 安装版本仅支持 x64(x86_64 / amd64)架构,不支持 ARM、ARM64 或 32 位 x86。联网一键安装和脚本化离线安装均适用。

1. 安装要求

项目要求
权限root 权限(安装命令使用 sudo
CPU仅支持 x64(x86_64 / amd64),至少 2 核;不支持其他架构
内存至少 4 GiB
磁盘/opt 所在文件系统至少 20 GiB 可用空间
网络在线安装或下载离线包时,需通过 HTTPS 访问 package.think-link.net 及其返回的制品下载地址;离线目标服务器不需要公网连接
系统支持级别发行版Docker 要求
自动安装Debian 11/12/13、Ubuntu 22.04、Rocky/AlmaLinux 9在线模式可自动安装 Docker;离线模式必须预装
兼容模式Ubuntu 20.04、CentOS 7/8必须预装 Docker Engine 和 Docker Compose V2

2. 开放端口

在云安全组和服务器防火墙中按实际使用范围开放以下端口:

端口协议用途
80TCPThinkLink Web 管理界面;若已占用,安装器可交互选择 8080
1883TCPMQTT
8083TCPMQTT over WebSocket
8084TCPMQTT over Secure WebSocket
18083TCPEMQX 管理界面
1700UDPLoRaWAN GWMP 网关接入
9000TCPMinIO S3 API,供对象存储服务使用
9001TCPMinIO 管理控制台,仅向管理员所在的可信网络开放

MinIO 随安装自动配置,正常使用 ThinkLink 无需访问 MinIO 控制台。上述两个端口由 Compose 映射到宿主机,请按部署网络限制访问来源,不需要统一对公网开放。首次安装时,若 9000 或 9001 已被其他服务占用,安装器会停止,不会自动选择替代端口。

PostgreSQL 的 5432 和 Redis 的 6379 仅供容器内部使用,不需要对公网开放。安装器不负责配置 HTTPS;如需公网 HTTPS,请另外配置反向代理和证书。

3. 在线一键安装

无法联网的目标服务器请使用脚本化离线安装

在服务器终端执行:

bash
curl --tlsv1.2 --tls-max 1.2 -fsSL https://package.think-link.net/install.sh | sudo bash

该命令不需要额外参数。安装器会依次:

  1. 检测操作系统、CPU、内存、磁盘和所需端口。
  2. 在支持的系统上安装 Docker;已有可用 Docker 时直接复用。
  3. 从 ThinkLink 官方软件包服务下载应用归档、Compose 文件和 7 个容器镜像归档(共 9 个文件),包含 tkl-minio.tar
  4. 将文件安装到 /opt/thinklink,加载镜像并启动 Docker Compose 服务。MinIO 首次启动时自动创建私有的 thinklink 存储桶。
  5. 检查 ThinkLink HTTP、MinIO 就绪状态及存储桶初始化结果,再记录版本和访问信息。安装器还生成 MinIO 客户端配置参考,业务接入见内置对象存储

如果 80 端口已被其他服务占用,安装器会在终端询问是否改用 8080。它不会停止或修改占用该端口的原有服务。

4. 查看结果并登录

在线或离线安装完成后,终端会显示 ThinkLink 平台及相关服务的访问信息。安装记录保存在:

text
/opt/thinklink/install-info.txt

该文件仅允许 root 读取。请使用安装结果中的 ThinkLink 平台地址登录,并在首次登录后修改 ThinkLink、EMQX 和 MinIO 的初始密码;修改 MinIO 凭据后同步更新业务客户端配置。安装器还生成 /opt/thinklink/minio-client.json(权限 0600)及版本记录 /opt/thinklink/.package-version

默认情况下访问:

text
http://<服务器IP>

如果安装时选择了备用 Web 端口,则访问:

text
http://<服务器IP>:8080

登录后需要创建或加入组织,才能开始配置网关和设备。

5. 内置对象存储

使用当前在线安装器或完整离线包全新安装时,安装器自动配置 MinIO 服务并创建私有存储桶,无需手工合并 Compose 或创建桶。/opt/thinklink/minio-client.json 提供实际凭据和连接参数参考,不会自动覆盖 ThinkLink 的业务配置;请按所安装的 ThinkLink 版本核对并填写对象存储设置。

项目默认行为
存储桶thinklink,首次启动时自动创建
访问方式私有存储桶,文件通过授权链接访问
下载链接有效期参考604800 秒(7 天),以业务客户端实际设置为准
数据持久化Compose 命名卷 minio_data,挂载到 MinIO 容器的 /data

ThinkLink 容器访问同一 Docker 网络中的 MinIO 时,通常使用 http://minio:9000。配置参考文件中的 127.0.0.1 不能直接作为独立 ThinkLink 容器访问 MinIO 的地址;浏览器打开预签名链接时,链接中的地址也必须是浏览器可达的服务器 IP 或域名。

安装并核对对象存储配置后,可生成一份报表,并在报表记录中打开或下载,确认文件存储功能正常。

对象文件保存在 Docker 命名卷中。日常备份应覆盖该数据卷;仅备份 /opt/thinklink 目录不能代替对象数据备份。容器重新启动时会保留已有存储桶及对象。

以上说明适用于在线和离线全新安装。离线模式会拒绝已有安装目录、ThinkLink 容器或数据卷;已有部署应先制定备份与版本升级方案。

6. 验证与排障

查看容器状态:

bash
sudo docker compose -f /opt/thinklink/docker-compose.yml ps

查看某个服务的日志:

bash
sudo docker compose -f /opt/thinklink/docker-compose.yml logs <服务>

检查 MinIO 服务及存储桶初始化状态:

bash
curl --fail --silent --show-error http://127.0.0.1:9000/minio/health/ready
sudo docker compose -f /opt/thinklink/docker-compose.yml exec -T minio /thinklink-minio check-ready

第一条命令检查 MinIO 服务就绪状态,第二条检查镜像内置初始化流程是否完成。若报表生成或下载失败,先检查容器状态、初始化检查结果、相关服务日志及下载链接是否过期。

常见安装失败原因包括:

  • 服务器不是 x64(x86_64 / amd64)架构。
  • CPU、内存或 /opt 可用空间不足。
  • 兼容模式系统未预装 Docker Engine 和 Compose V2。
  • 端口已占用,且没有选择可用的替代端口。
  • 服务器无法访问官方软件包地址,或下载过程被代理、防火墙中断。

执行 bash thinklink-install.sh --help 可查看新版参数。离线或受控网络部署请按脚本化离线安装生成和使用完整离线包,不要混用不同批次的制品。

7. 与云平台协同使用

同一 LoRaWAN 设备档案不要同时在两个平台上启用。若 TKE 和云平台同时响应 Join 或 Confirm 消息,可能产生入网失败和下行冲突。切换平台时,应在不使用的平台禁用或删除对应设备档案。

8. 脚本化离线安装

新版安装器支持“联网下载 → 搬运校验 → 离线安装”。无需手工调用下载 API、编辑 Compose 或逐个导入镜像。

8.1. 准备机器

联网下载机建议使用 Linux,预装 Bash、curl、jq、tar、sha256sum;下载和校验不需要 root 或 Docker。预留完整离线包所需空间;2026-09-11 验收的 2.00.062 包约 2.45 GB,后续版本大小可能变化。

离线目标服务器须满足安装要求,推荐 Ubuntu 22.04、Debian 11/12/13、Rocky Linux 9 或 AlmaLinux 9,并提前准备:

  • 已安装并启动的 Docker Engine,以及 Docker Compose V2。
  • Bash、curl、jq、tar、sha256sum、ss、hostname 及系统基础命令。
  • /opt 所在文件系统至少 20 GiB 可用空间,另留离线包、解压和镜像导入空间。
  • 全新安装环境:没有 /opt/thinklink、已有 ThinkLink 容器或数据卷。

离线包不包含 Docker 和操作系统依赖。 请按目标发行版、版本及 x64 架构另行准备其离线安装材料。离线安装器不会调用 apt/dnf、下载 Docker、拉取或构建镜像,也不会上报安装事件。

在离线目标服务器检查环境:

bash
uname -m
sudo docker version
sudo docker compose version

uname -m 应输出 x86_64。其他架构请停止安装;已有安装或残留数据时,先制定备份、恢复或升级方案。

8.2. 在联网机器下载离线包

先将公开安装脚本保存到本地,再运行下载模式。每条命令成功后再执行下一条:

bash
curl --fail --silent --show-error --proto '=https' \
  --tlsv1.2 --tls-max 1.2 --connect-timeout 10 --max-time 60 \
  https://package.think-link.net/install.sh -o thinklink-install.sh
bash thinklink-install.sh --help
bash thinklink-install.sh --download-only ./thinklink-offline

--help 应包含 --download-only--verify-only--offline;若没有,请重新获取新版脚本。下载模式必须从本地脚本文件执行,不能使用 curl | bash,因为离线包需要携带同一份完整安装器。

目标目录 ./thinklink-offline 必须尚不存在,父目录必须已存在;不要提前执行 mkdir thinklink-offline。脚本会下载应用归档、Compose 文件和七个镜像,全部校验通过后才交付目标目录:

text
thinklink-offline/
  application.tar
  docker-compose.yml
  tkl-emqx.tar
  tkl-nsbrg.tar
  tkl-postgres.tar
  tkl-redis.tar
  tkl-thinklink.tar
  tkl-thinkone.tar
  tkl-minio.tar
  install.sh
  install-offline.sh
  release.json
  SHA256SUMS
  README.txt

release.json 记录发布 ID、版本、通道、架构和离线格式版本;SHA256SUMS 覆盖九个制品、两个脚本、版本记录和包内说明,共 13 个文件。下载会话响应和短期签名地址不会进入交付目录。

地址过期或单文件下载失败时,脚本会用原下载会话刷新地址并重试一次,同时核对发布 ID、版本及制品路径,避免混入其他版本。跨进程断点续传尚不支持;失败后重新执行下载命令会重新下载整套文件。强制终止或断电可能留下 .thinklink-offline.* 暂存目录,不要将其当作完整包交付。

8.3. 搬运并校验

通过 U 盘或内网传输整个 thinklink-offline 目录,保持全部文件不变。生成目录的权限为 0700;包内可能包含应用配置,搬运后仍应限制读取权限。

在离线目标服务器进入包目录,执行:

bash
cd thinklink-offline
bash install.sh --verify-only .

该模式不需要 root 或 Docker,也不会发起网络请求。它校验文件完整性、清单路径和版本格式;全部通过后才继续安装。SHA-256 用于核对转移完整性,不是发布方数字签名,不能独立证明来源。不要修改校验清单来绕过损坏或缺失文件。

8.4. 按提示安装

在包目录执行:

bash
sudo bash install-offline.sh

安装器依次完成以下步骤:

  1. 再次校验完整离线包和版本信息。
  2. 检查系统、资源、Docker、已有安装及端口。80 被占用时可选择 8080 或退出;其他必要端口冲突时停止。
  3. 显示版本、安装目录和 HTTP 端口,等待输入 y 确认;直接回车或输入 n 会取消。
  4. 检查应用归档路径,解压应用,自动配置 Compose 和 MinIO,并导入七个镜像。
  5. 确认 Compose 所需镜像全部存在,以 --pull never --no-build 启动服务,等待 ThinkLink HTTP、MinIO 和私有桶就绪。

需要自动确认最终安装提示时,可执行:

bash
sudo bash install-offline.sh --yes

--yes 只跳过最终确认,不绕过校验、旧安装保护或端口选择。也可从其他目录指定完整包路径:

bash
sudo bash /path/to/thinklink-offline/install.sh --offline /path/to/thinklink-offline

离线模式仅用于全新安装,不提供自动升级或失败回滚。若检测到已有安装或残留数据,请保留并排查,不要直接删除数据后重试。

8.5. 验证安装结果

安装成功后显示实际服务地址,并生成安装记录和版本文件。默认 ThinkLink 使用 HTTP 80(或选择的 8080),EMQX 控制台为 18083,MinIO S3 API 为 9000、控制台为 9001。

查看容器和安装版本;若使用 8080,请相应修改 HTTP 检查端口:

bash
sudo docker compose -f /opt/thinklink/docker-compose.yml ps
sudo cat /opt/thinklink/.package-version
curl --fail http://127.0.0.1:80/
curl --fail http://127.0.0.1:9000/minio/health/ready
sudo docker compose -f /opt/thinklink/docker-compose.yml exec -T minio /thinklink-minio check-ready

随后验证实际登录、业务功能和报表生成/下载;对象存储连接要求见内置对象存储。保留完整离线包及 release.jsonSHA256SUMS,用于版本追溯。

2026-09-11 发布验收记录确认:2.00.062 在独立 x64 Ubuntu 22.04 Docker 虚拟机移除默认路由后完成安装,七个容器运行,ThinkLink HTTP、MinIO 和私有桶检查通过,匿名访问私有桶被拒绝。此次验收覆盖安装基础设施,不包含实际业务登录和业务流程;部署后仍需完成上述业务验证。

8.6. 常见错误

提示处理方式
OFFLINE_OUTPUT_EXISTS换用尚不存在的下载目录,不覆盖旧包
SCRIPT_FILE_REQUIRED将公开脚本保存为本地文件后再运行下载模式
ARTIFACT_DOWNLOAD_FAILED检查网络与磁盘空间,重新下载整套文件
DOWNLOAD_REFRESH_INVALID刷新后的版本或制品发生变化,重新下载完整包
OFFLINE_BUNDLE_INVALID / OFFLINE_CHECKSUM_FAILED重新传输完整目录,不修改校验清单绕过
OFFLINE_RELEASE_INVALID / OFFLINE_ARCHIVE_UNSAFE版本记录或应用归档异常,重新获取完整交付包并联系维护人员
OFFLINE_DOCKER_REQUIRED / COMMAND_REQUIRED补齐离线依赖,启动 Docker 并检查 Compose V2
OFFLINE_EXISTING_INSTALL已有安装或数据,先制定备份和升级方案
PORT_IN_USE / ALTERNATE_PORT_IN_USE检查端口占用,安排可用端口后重试
OFFLINE_CONFIRMATION_REQUIRED在交互终端运行,或明确使用 --yes 确认最终安装提示
OFFLINE_IMAGES_MISSINGCompose 与镜像不匹配,提供同版完整包
HEALTH_CHECK_FAILED检查容器状态和日志,保留安装数据排查

查看本机日志:

bash
sudo docker compose -f /opt/thinklink/docker-compose.yml logs --tail=200

对外分享日志前检查是否包含业务配置或凭据。失败时保留已有数据和完整离线包;脚本只清理自己创建的临时目录。

8.7. 后续版本与升级

下载时使用 stable 通道当前已发布的版本,具体以本次下载输出和 release.json 为准。2026-09-11 验收版本为 2.00.062,不代表后续下载永久固定为该版本。

软件包服务已启用每日北京时间 00:00 检查上游并按发布校验结果更新下载制品;需要人工审查或发布失败时保留原 stable。下载请求不会实时构建刚提交的上游代码。服务端制品更新不会自动升级客户已安装实例,离线机也不会自动检查或安装更新。已有部署升级前需准备新制品、备份和对应版本的升级方案,不混用不同下载批次。