LEAPS Server
LEAPS Server is a central data hub for the UWB network. It interconnects all the LEAPS Gateway devices with the world via a MQTT Broker.
Key Features
It functions as an uplink data concentrator, downlink data router, data processor, location engine, device management, device access control and quality of service.
It communicates with the world via the connectors. Currently, the supported connector is MQTT including support for AWS.
The LEAPS Server runs as a daemon service on the Linux platform.
Installation
System requirements
Note
Docker’s system requirements vary based on the operating system.
For Linux, you need a 64-bit architecture, a compatible kernel version, and specific kernel features.
On Windows, use Docker Desktop on Windows 10 with virtualization enabled.
On macOS, use Docker Desktop with macOS 10.13 or newer. In terms of hardware, a minimum of 2GB RAM is recommended, along with sufficient CPU and disk space.
Refer to Docker official documentation for up-to-date details.
Instructions
Install Docker on your PC
Install Docker Desktop on Linux
Additionally, you can refer to the following commands to install:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh sudo usermod -aG docker $USER
Create folder
leaps_server_hub
and subfolderdata
. Then, add theleaps-server.conf
configuration file inleaps_server_hub/data
.
####################################################################### # LEAPS Server settings # # ----------------------------------------------------------------- # Logging # ----------------------------------------------------------------- log_level = 0 # Logging level, default is 0 (0=none, 1=fatal, 2=error, 3=warning, 4=info, 5=debug, 6=verbose) # Path to log file. Comment out to disable logging to file (log to stdio instead). # log = leaps-server.log # ----------------------------------------------------------------- # Certificate based SSL/TLS support # ----------------------------------------------------------------- # # cafile - Authority certificates that have signed your server certificate. # certfile - Path to the PEM encoded server certificate. # keyfile - Path to the PEM encoded keyfile. # gw_auth - When using TLS on the interface with the gateways, this parameter configures TLS authentication between server and the gateway (0=server 1=mutual). # # cafile = /etc/leaps-server/cacert.pem # certfile = /etc/leaps-server/servercert.pem # keyfile = /etc/leaps-server/serverkey.pem # gw_auth = 0 # Optional AES 128-bit private key as hexadecimal number. If specified, the key is used to encrypt sensitive data # for example the WiFi password published on the MQTT interface. # aes_128_key = 00112233445566778899aabbccddeeff # ----------------------------------------------------------------- # MQTT Broker # ----------------------------------------------------------------- # MQTT API variant "pans" or "leaps" mqtt_api = leaps # include network ID (panid) in the MQTT topics mqtt_with_panid = true # Specifies an alias for particular UWB network that is then used in the MQTT topic instead of the network ID (pan ID) . # Parameter can be used multiple times and there might be multiple definitions separated by spaces which are then added to the list of known aliases. # Alias definitions must follow format <ID>:<ALIAS_STRING>. Multiple definitions must be separated with spaces. # Network ID (PAN ID) can be hexadecimal number (withe prefix \"0x\") or decimal number. # mqtt_panid_alias = [123:NetworkA] [0x0002:Net B] # mqtt_panid_alias = [0XABCD:Network_C] mqtt_clid = 1 mqtt_port = 1883 mqtt_host = localhost # Or your Computer's IP Address # For LEAPS RTLS mqtt_user = leaps mqtt_password = leapspass mqtt_topic_prefix = leaps # For PANS PRO RTLS # mqtt_user = dwmuser # mqtt_password = dwmpass # mqtt_topic_prefix = dwm # Certificates used on MQTT interface # mqtt_cafile = /etc/leaps-server/cacert.pem # mqtt_certfile = /etc/leaps-server/servercert.pem # mqtt_keyfile = /etc/leaps-server/serverkey.pem # Period in seconds after which all retained topics are published regardless # whether the content has changed or not. Disabled when set to 0. Disabled by default. #mqtt_refresh = 0 # ----------------------------------------------------------------- # Secondary MQTT Broker # ----------------------------------------------------------------- # # mqtt_clid_sec = 2 # mqtt_port_sec = 1883 # mqtt_host_sec = # For PANS PRO RTLS # mqtt_user_sec = dwmuser # mqtt_password_sec = dwmpass # Certificates used on MQTT interface # mqtt_cafile_sec = /etc/leaps-server/cacert.pem # mqtt_certfile_sec = /etc/leaps-server/servercert.pem # mqtt_keyfile_sec = /etc/leaps-server/serverkey.pem # ----------------------------------------------------------------- # TCP # ----------------------------------------------------------------- # tcp_port = 7777 # ----------------------------------------------------------------- # Tag location statistics # ----------------------------------------------------------------- # Enable calculation of tag location statistics. Default is false. # loc_stats_enable = true # History window for calculation of tag location statistics. Default is 100. # loc_stats_history_window = 100 # ----------------------------------------------------------------- # Other # ----------------------------------------------------------------- # maximum number of attempts of configuration and service commands # cmd_att = 3
Open a command prompt or terminal window on your PC.
Navigate to the folder where you created the configuration file.
For example, on Ubuntu (Linux):
cd leaps_server_hub/
Install the LEAPS Server Docker packages, run:
docker run -d -p 7777:7777/tcp -p 7777:7777/udp --name some_name -v /path/to/data/data/:/app/data/ leapslabs/leaps_server:tag /app/leaps-server --cfg /app/data/leaps-server.conf
where
some_name
is the name you want to assign to your container andtag
is the tag specifying theleaps-server
version you want.The leaps_server instance is using ports
7777
forTCP
andUDP
communication with the LEAPS Gateway so these ports need to be remapped from the host to leaps_server instance with command-p 7777:7777/tcp -p 7777:7777/udp
.It is not recommended to change the port numbers unless needed. If they need to be modified, please adapt accordingly the port settings on the LEAPS Gateway.
Recommended run options
--user $(id -u):$(id -g)
Run the instance under a specific user and group.
--restart unless-stopped
Restart automatically the instance in case the server would crash.
The LEAPS Server installation process will begin.
For example, on Ubuntu (Linux):
docker run -d -p 7777:7777/tcp -p 7777:7777/udp --name leaps_server -v "$(pwd)"/data/:/app/data leapslabs/leaps_server:latest /app/leaps-server --cfg /app/data/leaps-server.conf Unable to find image 'leapslabs/lc_server:latest' locally latest: Pulling from leapslabs/lc_server a458657ccc71: Pull complete Digest: sha256:a19b127656d41d8607f043c2c83924e5b9a5cbd4dc23cfbed070be3b9cfc6b9a Status: Downloaded newer image for leapslabs/lc_server:latest 320d3768289874e063619f75faca7a24dd75a08884df8cd8fb2cc9b54c6f0a46
Verify that the installation is successful, run:
For example, on Ubuntu (Linux):
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1145b72db35 leapslabs/lc_server:latest "sh -c 'cd /app && …" 37 seconds ago 11 seconds ago lc_server
So, you have successfully installed and started LEAPS Server on your PC.
Getting started
LEAPS Server Docker
Start LEAPS Server, run:
docker start lc_server
Stop LEAPS Server, run:
docker stop lc_server
Restart LEAPS Server, run:
docker restart lc_server
Remove LEAPS Server, run
docker rm --force lc_server
Network Configuration
MQTT API variant “pans” or “leaps”
LEAPS ID into the published topics
mqtt_with_panid = true mqtt_clid = 1 mqtt_port = 1883 mqtt_host = localhost # Or your Computer's IP Address
LEAPS RTLS account configuration
mqtt_user = leapsuser mqtt_password = leapspass mqtt_topic_prefix = leaps
TCP port is 7777
Troubleshooting
Use the following command
docker restart leaps_server
to restart LEAPS Server.Check the logs when the LEAPS Server is running, open the docker desktop and select the leaps_server container.