Software License Manager: Docker deployable Flask REST API server with MongoDB database, simplifying software license management for easy integration and efficient tracking

yjpictures yjpictures Last update: Nov 16, 2023

🌐🔗 licensemate.ca

Version License GitHub Docker Pulls X (formerly Twitter) LinkedIn Reddit

What is this?

License Mate is an open-source software license manager that you can deploy easily in a variety of environments and customize to your own needs. This is made using Flask for REST API server, React.js for the server UI and MongoDB for the database.

License Mate is a tool or system designed to help organizations and individuals manage the distribution, tracking, and compliance of software licenses. It serves as a central hub for controlling how software licenses are allocated, monitored, and maintained for a software. Here's a breakdown of its key functions:

  1. License Creation and Allocation
  2. License Tracking
  3. License Validation
  4. License Renewal
  5. License Deactivation and Removal

Who is this for?

Companies and individuals who develop and distribute software products can use License Mate to control access and distribution of their software.

How to deploy this license manager?

Method 1: Self-hosted server and Cloud MongoDB (preferred)

This method is preferred as MongoDB Atlas has data redundancy built-in.

  1. Create the following docker compose on your server and name it compose.yml.
name: license-mate

services:

  backend:
    image: yjpictures/license-mate:1.1
    container_name: backend
    ports:
      - 80:80
    environment:
      MONGODB_URI: mongodb+srv://<username>:<password>@<yourcluster>.mongodb.net/
      ADMIN_PWD: <admin_password>
      MANAGER_PWD: <manager_password>
      CLIENT_PWD: <client_password>
      REQUIRED_CREATE: name, email, company, product, machine-node, machine-sn
      UNIQUE_VALIDATE: email, machine-node, machine-sn
  1. Create a MongoDB Atlas project/cluster and add the IP address(es) of the server into MongoDB (project -> security -> network access) for whitelisting (could also allow access from anywhere but its not recommended).

  2. Customize the environment variables based on your needs, MONGODB_URI is a connection string that can be obtained from your MongoDB project.

  3. Run docker compose up in your server to pull the image and run it into a container.

Simple as that! License Mate server should now be running on your port 80.

Method 2: Self-hosted server and MongoDB

  1. Create the following docker compose on your server and name it compose.yml.
name: license-mate

services:

  backend:
    image: yjpictures/license-mate:1.1
    container_name: backend
    ports:
      - 80:80
    environment:
      ADMIN_PWD: <admin_password>
      MANAGER_PWD: <manager_password>
      CLIENT_PWD: <client_password>
      REQUIRED_CREATE: name, email, company, product, machine-node, machine-sn
      UNIQUE_VALIDATE: email, machine-node, machine-sn
    networks:
      - backend-network
    depends_on:
      - database

  database:
    image: mongo:6.0
    container_name: database
    environment:
      MONGODB_DATA_DIR: /data/db
      MONDODB_LOG_DIR: /dev/null
    volumes:
      - licenseDB:/data/db
    networks:
      - backend-network

volumes:
  licenseDB:
    name: licenseDB
    driver: local

networks:
  backend-network:
    name: license-mate
    driver: bridge
  1. Customize the environment variables based on your needs.

  2. Run docker compose up in your server to pull the image and run it into a container.

Simple as that! License Mate server should now be running on your port 80.

Method 3: Installer files (coming soon)

Coming soon! You would soon be able to install everything through an installer file.

What about client side and documentation for API?

The interactive documentation for all the REST API calls can be seen if you open the server URL on a browser. You will be able to see all the different requests you can send including the required parameters, JSON payload schema and expected output. You can even test out the requests right through the browser window.

License Mate uses HTTP Basic Auth for authentication purposes.

Route /ui after the server URL will allow users to open Admin section, where admins can manage the licenses through the web browser.

Want us to take care of hosting your license manager?

Depending on the size and scale, we can host, manage and customize License Mate to suit your needs so you can focus on the client side of things.

Contact us for more information!

Subscribe to our newsletter