Floating License Server
Container
License Server for Softing edgeConnector products
Image details
Configuration
TypeContainerlinuxsoftingindustrial/floating-license-server:latestYes6200/tcp/licsrv/licensesTemplate by portainer
Standalone Install
Select an install method, to see config/commands for deploying Floating License Server
Install on Portainer
Import all app templates into your Portainer instance, for easy 1-click deploys
- Ensure both Docker and Portainer are installed, and up-to-date
- Log into your Portainer web UI
- Under Settings → App Templates, paste the below URL
- Head to Home → App Templates, and the list of apps will show up
- Select Floating License Server, fill in any config options, and hit Deploy
Template Import URL
https://raw.githubusercontent.com/Lissy93/portainer-templates/main/templates.json
Show Me
More install options in our documentation.
⚠️ Deprecated – Use softingindustrial/license-server
This Docker image is deprecated and is no longer actively maintained.👉 Please use the successor image: https://hub.docker.com/r/softingindustrial/license-server
Impact
- ❌ No new versions will be released
- ❌ No bug fixes or security updates will be provided
- ✅ Existing images remain available for download
Softing License Server
Reference
This product is developed by Softing.Additional information and examples about how to activate other Softing products can be found at GitHub.
Product Information
Softing License Server is used to host network software licenses (also called floating licenses or shared licenses) that are installed locally on an individual users' machine. The network licenses can be shared among many users and/or applications.Softing License Server fulfills requests to run a network application if the required license is available. When the network license is released (for example, a user closes the application), the license is moved to the license server's available license pool and is made available for other checkout requests.
Run the Container
To start the container, run the following command. The image will be pulled and the container started.docker container run\
-it\
--name licsrv\
-p 6200:6200\
--volume $(pwd)/license_files:/licsrv/licenses\
softingindustrial/floating-license-serverNOTE: Replace
licsrv with the name of the container used in a real-world scenario.Retrieve the license server Host information
To activate licenses, the Host Id provided by the license server must be used. The Host Id is specific to the host on which the server is run.Steps to get the Host Id from the containerized licensing server:
- From container logs:
```
docker container logs licsrv
```
Output:
```
...
[2021-05-26 13:38:30] HostId: a476a2de-ca10-11e9-80d8e98fa9baf9c85
...
```
The line above shows the Host Id information.- From log file: the command
docker exec -it licsrv cat /licsrv/lmx-serv.logwill show the same output.
Steps to activate a license using Softing's web interface
- Log in to Softing web portal
- Navigate to Licenses->Register License
- Fill in the purchased license activation key in the
License keyfield
- Fill in the Host Id information retrieved as indicated in the previous sub-chapter
- Click
Register License
- Download and store the generate
*.licfile
Activating newly copied licenses
The downloaded*.lic files need to be copied to the mounted volume of the Docker container. This is how the license server will use them, stored in the persistent volume.Once the new license files are copied to the shared volume, the container needs to be restarted in order for the new files to be activated.
docker restart licsrvTechnical Data
| Name | Value |
|---|---|
| Environment | Ubuntu 18.04 LTS |
| Port | 6200 |
| Licenses Volume | /licsrv/licenses |
| Config File | /licsrv/lmx-serv.cfg |
| Log File | /licsrv/lmx-serv.log |
| Address | http://ipofhost:port |
Logs
To view the logs of the Docker container run the following commands:- If the container is run with the
-it(interactive) option, it will display all standard output and error messages in the terminal. If it is run with the-doption (daemon), the output logs can be retrieved via a docker command:
```
docker container logs licsrv
```
The output should look similar to the following, in both cases (interactive and daemon):
```
[2022-05-11 05:47:20] LM-X License Server v5.2.3 build 13512bee on softing_licsrv (Linux_x64)
[2022-05-11 05:47:20] Copyright (C) 2002-2022 X-Formation. All rights reserved.
[2022-05-11 05:47:20] Website: https://www.lm-x.com https://www.x-formation.com
[2022-05-11 05:47:20] License server has pid 1.
[2022-05-11 05:47:20] Serving licenses for vendor SOFTING.
[2022-05-11 05:47:20] WARNING: It is not recommended to run license server as root.
[2022-05-11 05:47:20]
[2022-05-11 05:47:20] License server using TCP IPv4 port 6200.
[2022-05-11 05:47:20] License server using TCP IPv6 port 6200.
[2022-05-11 05:47:20] License server using UDP IPv4 port 6200.
[2022-05-11 05:47:20] Reading licenses...
[2022-05-11 05:47:20] License file(s):
[2022-05-11 05:47:20] /licsrv/licenses/lic3.lic
[2022-05-11 05:47:20] Log file path: /licsrv/lmx-serv.log
[2022-05-11 05:47:20] Log to stdout: Yes
[2022-05-11 05:47:20] Log format: Normal
[2022-05-11 05:47:20] Configuration file path: /licsrv/config/lmx-serv.cfg
[2022-05-11 05:47:20] Serving following features:
[2022-05-11 05:47:20] Advanced-1-Initial (v2023.509) (1 license(s)) license type: additive
[2022-05-11 05:47:20]
[2022-05-11 05:47:20] HostId: a476a2de-ca10-11e9-80d8-98fa9baf9c86
[2022-05-11 05:47:20] To administrate the license server go to your enduser directory and run the License Server Client.
[2022-05-11 05:47:20] Ready to serve...
```- In the output above the path to the licensing server log file. The command
docker exec -it licsrv cat /licsrv/lmx-serv.logwill show the same output, extracting the content of the log file from the container.
Volumes
License filesThe Docker image from which the container is created is configured with a default internal Docker volume of
/licsrv/licenses, into which the license files can be copied for the server to activate. This internal volume can be mapped to the host machine in two ways:
- Docker Volumes:
```
docker container run\
--name licsrv\
-p 6200:6200\
--volume licenses:/licsrv/licenses\
softingindustrial/floating-license-server
```
In the second line from the bottom a Docker volume is mapped to the internal container volume. If the volume does not exist, it will be created.
A Docker volume can be created by `docker volume create --name licenses` beforehand, if needed.
To copy files to the volume execute the following (files will be stored in an internal Docker directory on the host):
```
docker cp ./*.lic licsrv:/licsrv/licenses
```- Docker Bind Mounts:
```
docker container run\
--name licsrv\
-p 6200:6200\
--volume $(pwd)/softing/licenses:/licsrv/licenses\
softingindustrial/floating-license-server
```
To copy files to the volume the license files need to be copied normally to the specified directory (i.e.: `$(pwd)/softing/licenses` in the example).
In the second line from the bottom a Docker bind mount is mapped to the internal container volume. The full path must be given to the directory on the host, which will be mounted as a bind mount.Server configuration fileSimilarly to the license files volumes, the container provides a way to expose the configuration file as well.
The default volume path for this is
/licsrv/config and the file name is lmx-serv.cfg.A number of parameters can be configured, based on the official X-Formation documentation.
The container must be restarted in order for the changes to take effect.
Mounting the volume should be done by using Docker Volumes: - create volume:
docker volume create config_volume
- start the container with the created volume:```
docker container run\
--name licsrv\
-p 6200:6200\
--volume licenses:/licsrv/licenses\
--volume config_volume:/licsrv/config\
softingindustrial/floating-license-server
```NOTE: Use only volumes for the configuration file, not bind mounts. The latter will overwrite the internal container volume, making the configuration file inaccessible.To edit the configuration file after the volume has been mapped, it can be found in the following path:
/var/lib/docker/volumes/config_volume/_data/lmx-serv.cfg, where config_volume is the name of the Docker volume created.
This path may change depending on host environment.Serve Floating License Server on your own domain behind Caddy, Nginx or Traefik. Fill in your domain and copy the result. It's a starting point, some apps need their own base URL or extra headers set too.
Proxying floating-license-server.example.com to http://floating-license-server:6200
Add this to your Caddyfile
floating-license-server.example.com {
reverse_proxy http://floating-license-server:6200
}Check the logs first
Nine times out of ten the logs tell you exactly what went wrong.
- In Portainer, go to Containers, click the container, then Logs. Or run
docker logs <container> - Exit codes help too:
137means killed, usually out of memory.126or127means the command inside the image is broken.
Published on a random port
This template exposes 6200/tcp without setting a host port,
so Docker picks a random free one on every deploy.
- Find it in the Ports column of Portainer's container list, or with
docker port <container>
Image won't pull
Test the pull directly on the host: docker pull softingindustrial/floating-license-server:latest
- "manifest unknown" means the tag no longer exists. This template uses
latest, so try pinning a specific version instead. - "toomanyrequests" is the Docker Hub rate limit. Log in with
docker loginto raise it. - "no space left on device" means a full disk. Reclaim space with
docker system prune
"exec format error"
This means the image was built for a different CPU architecture than your server.
- This image supports:
amd64 - Check yours with
uname -m: x86_64 is amd64, aarch64 is arm64. Raspberry Pi and other ARM boards are the usual culprits.
Raise an issue
Found something which isn't working as it should? Here's how to report it.
- Bug within the app: Open an issue within the app's repo
- Template not working: Open an issue on portainer/templates
- This website not working: Open an issue on lissy93/portainer-templates
A single container
Floating License Server runs as one container, the simplest kind of app here. Just the one image to pull and nothing else wired up alongside it.
The app image
An image is the app packed up ready to go, everything Floating License Server needs bundled into one download. This template pulls softingindustrial/floating-license-server:latest, which Docker fetches once (about 40 MB) and then starts your own copy from.
Where the image comes from
Docker pulls its images from registries, public libraries of ready-built apps. Floating License Server's comes from Docker Hub, published by softingindustrial.
Version tags
The bit after the colon in the image name is the version tag. Here it's latest, which always points at the newest build, so a redeploy can bump you to a newer release without you asking. Pin a specific tag if you would rather stay on one version.
Which machines it runs on
Every image is built for particular CPU types. This one ships for amd64, so it runs on regular x86 PCs and servers, though not ARM boards like a Raspberry Pi.
Ports
A port is the door the app answers on. Here the app exposes a port but leaves the host side blank, so Docker picks a free one for you. It opens:
6200, published on a random host port
Volumes
A volume is where Floating License Server keeps its files so they survive an update or a restart. Without one, anything it saves would sit inside the container and vanish the moment it's recreated. This template mounts:
/licsrv/licensesas a volume Docker manages for you
Networking
Nothing custom is set, so Floating License Server sits on Docker's default bridge network: its own private space that reaches the outside world only through the ports it publishes.
Interactive mode
This one's built to be used interactively, so it keeps a terminal open for you to type into instead of quietly ticking along in the background.
Platform
The platform is linux, the kind of system the container is built to run on. Docker and Portainer handle this on a normal Linux server.
Portainer app templates
Zooming out, this whole page comes from a Portainer app template: a short recipe telling Portainer how to set Floating License Server up. Add the template list to Portainer once, then deploying Floating License Server is a click rather than a wall of config.
Anyviz Cloud Adaptor edge
- CockroachDB (stack) edge
EMQX Open Source MQTT Broker edge
Grafana Dashboard edge
Inductive Automation - Ignition Gateway edge
InfluxDB for Edge edge
Litmus Edge edge
Litmus Edge Digital Factory Demo edge
MaestroHub edge
Manubes Edge Node edge
OPC Router edge
Pro Mosquitto with Management Center edge