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

  1. 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
  1. Create folder leaps_server_hub and subfolder data. Then, add the leaps-server.conf configuration file in leaps_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
  1. 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/
  1. 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 and tag is the tag specifying the leaps-server version you want.

The leaps_server instance is using ports 7777 for TCP and UDP 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.

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