Single Server Installation (v2)

With this installation model, all of the components required to run the GameBench platform are deployed to a single server.

The GameBench platform is composed of:

  • Front-end
  • Back-end
  • Redis
  • Postgres


  • Linux
  • Docker
  • Docker Compose
  • Credentials for our private Docker registry
  • A valid GameBench enterprise license
  • Only ports 80, 443 and the port you select for the backend should be externally accessible
  • Hardware requirements suggested for production deployments: 8GB of RAM and 2 vCPU

Getting started

Log into the GameBench Docker registry

You’ll need your credentials for our Docker registry supplied to you by your account representative. Please get in touch with if you are unable to log in and we’ll be happy to assist.

If you have been provided with credentials:

docker login -u <username>

Alternatively, please run the following command to load the docker images from the downloaded archive:

docker load < /path/to/web-archive.tar.gz

Create a separate directory for the GameBench files

# Below is just an example, you may use any directory
mkdir ~/gamebench
cd ~/gamebench

Download config generation tool

curl -L -s --output gbctlv2
chmod +x gbctlv2

Generate configuration

Before GameBench enterprise can be started, two files need to be created: docker-compose.yml and nginx.conf. The CLI tool gbctlv2 takes care of this for you. By default ./gbctlv2 generate-config will ask a series of questions to help set up your configuration. If you wish, you can create the gamebench.toml file yourself and then run ./gbctlv2 generate-config --no-interaction to skip the questions. Please see the configuration reference.

# Generate gamebench.toml, docker-compose.yml, nginx.conf
./gbctlv2 generate-config

If the server you’re running the command on does not have external internet access, please run the command with the --skip-version-check option, i.e.:

./gbctlv2 generate-config --skip-version-check

Example answers

The below answers assume the following:

  • The license zip file has been extracted into /home/example-user/gamebench/license
  • The DNS for is set up and pointing to the server
        GameBench Enterprise version
        (Default: v2.0.0) (Current: v2.0.0) 
Frontend host
        Host frontend is accessible on. The frontend container runs nginx which serves HTML, JS etc. and proxies API calls to the backend container.
        (Default: ) (Current: )
Frontend port
        (Default: 80) (Current: 80) 
License directory
        Should contain the following files: gamebench-license, gamebench-license.RSA-SHA256
        (Default: ) (Current: ) /home/example-user/gamebench/license
TLS enabled
        Whether URLs should use https protocol
        (Default: no) (Current: no) 
External Redis
        (Default: no) (Current: no) 
External Postgres
        (Default: no) (Current: no) 
Mail host
        (Default: ) (Current: ) 
Mail port
        (Default: ) (Current: ) 
Mail user
        (Default: ) (Current: ) 
Mail password
        (Default: ) (Current: ) 
Mail from
        (Default: ) (Current: ) 
Mail secure
        (Default: no) (Current: no) 
Bind mount GameBench directory?
        Use this setting if you want to bind mount the GameBench directory on the host.
        (Default: no) (Current: no) 
Publish ports to host
        (Default: yes) (Current: yes) 
Administrator email
        Displayed in the web dashboard update notification
        (Default: ) (Current: )
Enable proxy protocol in Nginx configuration?
        Only enable this if you have a load balancer in place which expects to communicate with its upstream using the proxy protocol.
        You may need to restart the frontend container after enabling this: `docker restart frontend`.
        (Default: no) (Current: no) 
Enable TLS in Nginx configuration?
        If you wish to terminate TLS on the server, use this option.
        In the current directory, create a new directory called `certs` and add the private key (`key.pem`) and cert (`cert.pem`.)
        The `cert.pem` should contain any intermediate certificates.
        (Default: no) (Current: no) 
Sets the maximum allowed size of the client request body. Increase this if you encounter 413 (Request Entity Too Large) errors when uploading sessions.
        You may need to restart the frontend container after updating this: `docker restart frontend`.
        (Default: 100m) (Current: 100m) 
Deploy a separate signup container?
        A separate signup container is deployed which is accessible on /open-signup. Warning: authentication is not required to use this endpoint.
        (Default: no) (Current: no) 
Overwrite docker-compose.yml?
        (Default: yes) (Current: yes) 
Overwrite nginx.conf?
        (Default: yes) (Current: yes) 

Now run `COMPOSE_PROJECT_NAME=gamebench docker-compose up -d` to start or replace the GameBench containers.
After running `COMPOSE_PROJECT_NAME=gamebench docker-compose up -d`, the web dashboard should be accessible at

Start GameBench enterprise

# Start the containers
COMPOSE_PROJECT_NAME=gamebench docker-compose up -d

Create an initial admin user

Please see our create admin user documentation.


If you’re unable to access the web dashboard, first check that the containers are running:

COMPOSE_PROJECT_NAME=gamebench docker-compose ps

Depending on your configuration, you should see something like the following:

    Name                  Command               State         Ports       
backend node  ...   Up      5000/tcp          
frontend       / nginx -g da ...   Up>80/tcp
postgres postgres    Up      5432/tcp          
queue_worker node  ...   Up                        
redis --req ...   Up      6379/tcp

If the containers are up, try to call the API:

curl localhost:80/v1/info/version

The version string should be returned, for example:


If the above return as expected, please check the networking to your server. Perhaps there is a firewall in place preventing access.


Please ensure you take frequent backups.

Migrating from a legacy installation

Please contact us if you need to migrate from a legacy (non-Docker) installation.