Portainer Templates logo

Portainer Templates

Floating License Server Floating License Server

Container

edge

License Server for Softing edgeConnector products

Image details

Pulls: 5k
Architecture: amd64
Image size: 40 MB
User: skse
Created: May 19, 2021
Updated: 4 years ago
Status: active

Configuration

Type
Container
Platform
linux
Image
softingindustrial/floating-license-server:latest
Interactive
Yes
Ports
6200/tcp
Volumes
/licsrv/licenses

Template by portainer

Standalone Install

Select an install method, to see config/commands for deploying Floating License Server

Installation method

Install on Portainer

Import all app templates into your Portainer instance, for easy 1-click deploys

  1. Ensure both Docker and Portainer are installed, and up-to-date
  2. Log into your Portainer web UI
  3. Under Settings → App Templates, paste the below URL
  4. Head to Home → App Templates, and the list of apps will show up
  5. 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 demo

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-server

NOTE: 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:
  1. 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.
  1. From log file: the command docker exec -it licsrv cat /licsrv/lmx-serv.log will show the same output.

Steps to activate a license using Softing's web interface

  1. Log in to Softing web portal

  1. Navigate to Licenses->Register License

  1. Fill in the purchased license activation key in the License key field

  1. Fill in the Host Id information retrieved as indicated in the previous sub-chapter

  1. Click Register License

  1. Download and store the generate *.lic file

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 licsrv

Technical Data

NameValue
EnvironmentUbuntu 18.04 LTS
Port6200
Licenses Volume/licsrv/licenses
Config File/licsrv/lmx-serv.cfg
Log File/licsrv/lmx-serv.log
Addresshttp://ipofhost:port

Logs

To view the logs of the Docker container run the following commands:
  1. 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 -d option (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...
```
  1. In the output above the path to the licensing server log file. The command docker exec -it licsrv cat /licsrv/lmx-serv.log will show the same output, extracting the content of the log file from the container.

Volumes

License files
The 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 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 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 file
Similarly 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: 137 means killed, usually out of memory. 126 or 127 means 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 login to 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.

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/licenses as 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.