Please, don’t forget to check for updates and download new versions from time to time.
The KeenTools License Server is a command line program, so you need some basic knowledge how to work with command line interfaces. It’s not that difficult though, so don’t be scared.
In the most basic scenario you open terminal in the directory where the License Server executable is placed and use three commands:
install (with aliases
The first one you use to get information (
Hardware ID, etc). The second one is used when you need to install licenses. The third one is used when you want to actually start the serving process.
One important thing to remember is that installed licenses are being loaded during startup, so after installing new licenses you need to restart the server to make licenses available for users.
The default path for storing licenses is the current directory of the terminal session followed with
/licenses/. You can change it passing
-location parameter followed with the desired path string, for example:
./KeenToolsLicenseServer run -l /home/user/licenses/
the longer variant:
./KeenToolsLicenseServer install --location /media/licenses/keentools/
the same in Windows:
.\KeenToolsLicenseServer install --location C:\licenses\keentools\
You can install (i.e. activate) a license using license server and its
install command or using the manual activation page at our site. Obviously, the first way requires Internet connection (
443) for the license server.
There are three ways you can install licenses using License Server: passing license IDs as arguments after
install command, specifying a file with license IDs separated with spaces or new lines, and entering license IDs in an interactive mode (the old way that was the only option before version 1.4.6).
So, installing a license with License Server and license IDs as arguments would look like this:
./KeenToolsLicenseServer install license-id-1 license-id-2 …
or if we want to specify the licenses folder, it may look like this:
./KeenToolsLicenseServer install -l /path/to/licenses/ license-id-1 license-id-2 …
or you can use the shorthand
./KeenToolsLicenseServer i license-id-1 …
Note that in some terminals you’d need to place license IDs inside quotes.
If you have a file with a number of license IDs in it, you can specify a path to it using
--file) flag, so the command would look like this:
./KeenToolsLicenseServer install --file ./license-ids.txt
If we use a shorthand and a short flag, it’d look like this:
./KeenToolsLicenseServer i -f ./license-ids.txt
Also we can use a specialised
./KeenToolsLicenseServer if ./license-ids.txt
Finally, we can use old interactive mode, it’s activated if you don’t pass any licenses or
-f flag to install command:
or a short variant with a custom path:
./KeenToolsLicenseServer i -l /path/to/licenses
Once you launch it in the interactive mode, you can past license IDs one by one or separated by new lines and press Enter after it, they’ll be installed one by one.
When Internet connection is not available, you can install licenses using manual semi-offline mode.
First you need to launch license server with the
info command to get the
Hardware ID. Copy it somewhere and then come to the offline license activation page at KeenTools site from the machine where you can access Internet. On this page enter the
Hardware ID and license codes you want to activate into the corresponding fields to get the activated license files. Transfer the activated license files to the machine where the license server is going to work and place them in the licenses directory (that one you point to with the
If you need to remove an old license just remove the file in the licenses folder and restart the License Server.
By default the License Server is using port
7096. Make sure there are no firewalls restricting connection to the License Server from users’ computers. You can customize the port using
./KeenToolsLicenseServer -p 9999
./KeenToolsLicenseServe --port 9999
Status Page & API
When the License Server is launched it starts a web-server with a simple status page that can be accessed on port
8080 using any modern browser (
http://127.0.0.1:8080/status). The status information can also be found in JSON format on the same port if you send a JSON-type request using curl for example. You can change the status server port with parameters
--api-port followed with the port number, for example:
./KeenToolsLicenseServer -a 8888
./KeenToolsLicenseServer --api-port 8888
This is how getting JSON status might look:
curl -H “Accept: application/json” “http://127.0.0.1:8080/status"
You’ll get something like this as a result:
"expirationTime": "2019-Sep-25 18:31:35 UTC",
By default the License Server writes all its output to the log file placed right near the executable file. You can specify where to write logs with
--log-file parameter followed with a path. You can also disable logging to a file if you pass the
When you work with floating licenses, you need to setup plugins accordingly. On the License tab of a node, in the Floating section specify the host name (or IP address) and the port (default is
7096), then press
Connect button. If there are no network issues and there is a license available on the server, you’ll see an appropriate message, otherwise you’ll see the error message with hints on what could go wrong.
There’s another more advanced way of setting up user’s nodes — using environment variables. When our plugins are loaded they check
KEENTOOLS_LICENSE_SERVER variable, and if it contains a string with a host address and/or a port number they try to connect using it and get a license. Here are some examples of what this variable could contain:
localhost (the default port will be used),
Creating A Windows Service
Instead of wasting time with built-in Windows tools for creating services, we highly recommend you to use the ‘Non-Sucking Service Manager’. It’s free and easy to use. You can get it here: nssm.cc
--help: print usage
--location: license files directory, default is
--file: file with license IDs or activated license
--port: server port number, default is
--api-port: API server port number, default is
--log-file: log file path
--disable-file-logging: disable writing logs to file