Floating License Server

The ReqView Floating License Server is a web service providing floating licenses for ReqView products. It communicates with client applications using secure HTTPS connections, so it must be started with a TLS/SSL certificate and its private key.

The ReqView Floating License Server comes with a set of certificates so that it is easily started out of the box. However, you may wish to use existing certificates or generate your own. For more information on using existing certificates or generating your own, see TLS/SSL Certificates.

Note: The license server must run at the exact address and port for which the ReqView floating licenses were generated. The server’s TLS certificate must be issued for this address. Multiple DNS names and wildcards are not permitted.

Command Line Interface

Basic Usage and Arguments:

reqview_license_server [-h] [--host HOST [HOST ...]]
                       --port PORT
                       --certfile CERTFILE
                       [--adminpwfile ADMINPWFILE]
                       [--license LICENSE [LICENSE ...]]
Option Necessity Description
-h, --help Show help message and exit
--host optional Host(s) to bind to; defaults to (all interfaces)
--port required Port to serve on
--certfile required File in PEM format containing the server TLS/SSL certificate
--adminpwfile optional File containing the password that protects the admin site (username is always admin), the password will be set to admin if not provided
--license optional ReqView floating server license file(s) to serve; licenses will be stored until expiration


Start the ReqView Floating License Server on port 8000 with a TLS/SSL certificate stored in file server.pem:

$ reqview_license_server --port 8000 --certfile server.pem --license server-license.key


Run as Windows Service

Run the ReqView Floating License Server as a Windows service using NSSM (the Non-S***ing Service Manager).


Run an Administrator command prompt and change the directory to a folder that will permanently contain the reqview_license_server.exe binary and files needed by it.

Install and configure the service using the following commands by editing the provided service.cmd file:

set curdir=%~dp0
nssm install reqview-license-server "%curdir%reqview_license_server.exe"
nssm set reqview-license-server AppParameters --port 8000 --certfile server.pem --adminpwfile adminpw.txt --license server-license.key
nssm set reqview-license-server DisplayName "ReqView License Server"
nssm set reqview-license-server Description "Provides floating licenses to ReqView clients."
nssm set reqview-license-server DependOnService Tcpip
nssm set reqview-license-server ObjectName NetworkService
nssm set reqview-license-server Start SERVICE_DELAYED_AUTO_START
nssm set reqview-license-server AppNoConsole 1
nssm set reqview-license-server AppStdout "%curdir%stdout.log"
nssm set reqview-license-server AppStderr "%curdir%stderr.log"
nssm start reqview-license-server


The arguments present on the 3rd line will be used when the server is started or restarted. Do not move or delete the directory or any files in it after the service is installed. The file nssm.exe must also be kept as it is the executable registered for the service.

Note: Quotes must be used when paths containing spaces are involved. Moreover, the quotes themselves must be quoted to be preserved for the AppParameters setting — we do not recommend using paths with spaces for this reason. Standard output and error streams are appended to the files given by AppStdout, resp. AppStderr parameters.

As the service is started under the NetworkService account by default (a predefined account with minimum privileges), you must ensure that this account has read, write, and execute permissions for the directory containing the reqview_license_server.exe binary; this account cannot access the C:\Program Files directory unless it is explicitly allowed. Alternatively, you can make the service run under the LocalSystem account (which has extensive privileges) by removing the line nssm set reqview-license-server ObjectName NetworkService from the service.cmd file. For more information, see Service User Accounts.

To review or edit the service configuration using the NSSM GUI, run the nssm edit reqview-license-server command.

Service Management

The service starts automatically after system boot. Afterwards, you can manage the service (start, restart, stop, or query its status) using the following commands:

$ nssm start reqview-license-server
$ nssm restart reqview-license-server
$ nssm stop reqview-license-server
$ nssm status reqview-license-server


If necessary, stop the service and then uninstall it using the nssm remove reqview-license-server confirm command.

Run in Docker

Run the ReqView Floating License Server as a Docker Container using Docker Compose.


If you already have Docker and Docker Compose all set up, run a console with sufficient privileges and change the directory to the location of the reqview_license_server binary, certificate, and license files needed by it. This directory must be writable for the server instance.

The service is defined in the provided docker-compose.yml file. Change it based on your needs, if necessary.

version: "2"
image: debian:buster-slim
- "8000:8000"
restart: always
- .:/app
working_dir: /app
entrypoint: ["/app/reqview_license_server", "--port", "8000",
"--certfile", "/app/server.pem",
"--adminpwfile", "/app/adminpw.txt",
"--license", "/app/server-license.key"]


To start the service:

$ docker-compose up -d


Container Management

$ docker-compose start reqview-license-server
$ docker-compose restart reqview-license-server
$ docker-compose stop reqview-license-server
$ docker-compose logs reqview-license-server


If necessary, you can stop the service and then uninstall it using the docker-compose rm reqview-license-server command.

Update License or Server

The following steps are necessary to update your server license or the license server binary to a newer version:

  1. Stop the service using the appropriate command
    • on Windows:
      $ nssm stop reqview-license-server
    • with Docker:
      $ docker-compose stop reqview-license-server
  2. Replace the license server executable and/or server-license.key files
  3. Start the service
    • on Windows:
      $ nssm start reqview-license-server
    • with Docker, pull the latest image beforehand:
      $ docker-compose pull reqview-license-server
      $ docker-compose start reqview-license-server


Note: The client license doesn’t need to be replaced after updating the server license — the clients will check out the new license once the server is up and running.

Administration Web Page

You can check the Floating License Server status using the administration web page located at


Note: The <license-server-url> address must be the full address and match the address present in the server certificate exactly.

Note: Only Chrome and Firefox are supported when viewing the administration web page.

The administration web page is protected by a login form where the only correct username is admin and the password is taken from the file supplied by the --adminpwfile argument. The password is set to admin if no password file is provided.

The Licenses page shows the served licenses and current checkouts/borrows by ReqView users. If a ReqView user cannot check in a floating license (in exceptional circumstances), the license administrator can manually cancel the checkout/borrow by clicking the Cancel button.

The Log page shows all server events that have occurred during the last two weeks. The most recent event is listed at the top.

To refresh the website for updated information, press F5.

Querying License Server Status

You can query the server status in the console using curl tool on the https://<license-server-url>/status URL:

$ curl -k https://reqviewlicense.intranet.mycompany.com:8000/status

which will produce the following output in JSON format:

"my-reqview-floating-license": {
"issued": 10,
"in_use": 3


You can easily implement a script processing the JSON output and run it periodically. For example, the following Python script status.py outputs a message stating the currently available number of licenses:

import sys
import json
data = json.load(sys.stdin)
except Exception:
data = {}
issued = 0
in_use = 0
for lic in data.values():
issued += lic['issued']
in_use += lic['in_use']
print("Total %d issued, %d in use" % (issued, in_use))


You can run the status.py script and curl command in a pipe:

$ curl -s -k https://reqviewlicense.intranet.mycompany.com:8000/status | python status.py


which will print:

Total 10 issued, 3 in use
Updated for version 1.1.2