Docker Deployment (TKE)
TKE (ThinkLink Enterprise) is the self-hosted ThinkLink edition and runs with Docker Compose. For a Linux server with internet access, use the official one-command installer.
1. Requirements
| Item | Requirement |
|---|---|
| Permissions | root access (the command uses sudo) |
| CPU | x86_64 / amd64, at least 2 cores; ARM is not supported |
| Memory | At least 4 GiB |
| Disk | At least 20 GiB free on the filesystem containing /opt |
| Network | HTTPS access to package.think-link.net |
| Support level | Distribution | Docker requirement |
|---|---|---|
| Automatic installation | Debian 11/12/13, Ubuntu 22, Rocky/AlmaLinux 9 | The installer can install Docker |
| Compatibility mode | Ubuntu 20, CentOS 7/8 | Docker Engine and Docker Compose V2 must already be installed |
2. Open Ports
Open the ports you need in both the cloud security group and the server firewall:
| Port | Protocol | Purpose |
|---|---|---|
| 80 | TCP | ThinkLink web UI; if occupied, the installer can offer port 8080 interactively |
| 1883 | TCP | MQTT |
| 8083 | TCP | MQTT over WebSocket |
| 8084 | TCP | MQTT over Secure WebSocket |
| 18083 | TCP | EMQX management UI |
| 1700 | UDP | LoRaWAN GWMP gateway traffic |
PostgreSQL port 5432 and Redis port 6379 are container-internal and should not be exposed publicly. The installer does not configure HTTPS; use a reverse proxy and certificate if public HTTPS access is required.
3. One-Command Installation
Run this command in the server terminal:
curl --tlsv1.2 --tls-max 1.2 -fsSL https://package.think-link.net/install.sh | sudo bashNo additional arguments are required. The installer will:
- Check the operating system, architecture, CPU, memory, disk, and required ports.
- Install Docker on supported systems, or reuse an existing working installation.
- Download the current stable application, Compose file, and container images from the official ThinkLink package service.
- Install everything under
/opt/thinklink, load the images, and rundocker compose up -d. - Check service health and record the release and access information.
If port 80 is already in use, the terminal offers port 8080 as an alternative. The installer does not stop or modify the existing service that owns port 80.
4. Access ThinkLink
After installation, the terminal prints the platform URL, EMQX URL, MQTT Broker address, and GWMP address. The same access information and initial credentials are stored in:
/opt/thinklink/install-info.txtOnly root can read this file. Use the displayed platform URL and change all initial passwords immediately after the first login.
The default URL is:
http://<server-IP>If you selected the alternative web port during installation, use:
http://<server-IP>:8080After signing in, create or join an organization before configuring gateways and devices.
5. Verify and Troubleshoot
Check all containers:
sudo docker compose -f /opt/thinklink/docker-compose.yml psInspect a service log:
sudo docker compose -f /opt/thinklink/docker-compose.yml logs <service-name>Common installation failures include:
- The server is not amd64/x86_64.
- CPU, memory, or free space under
/optis below the minimum. - A compatibility-mode system does not already have Docker Engine and Compose V2.
- A required port is occupied and no available alternative was selected.
- A proxy or firewall prevents access to the official package service or interrupts a download.
The one-command installer is currently an online installation entry point and does not accept offline package arguments. For an offline or controlled-network deployment, obtain a release-matched delivery package and instructions from ThinkLink; do not use the retired repository or historical image archives.
6. Using TKE with the Cloud Platform
Do not keep the same LoRaWAN device profile enabled on two platforms at the same time. If TKE and the cloud platform both answer Join or Confirm messages, devices can experience Join failures and downlink conflicts. Disable or remove the profile on the platform that is not in use.