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

Requirements

  • 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 support@gamebench.net if you are unable to log in and we’ll be happy to assist.

If you have been provided with quay.io credentials:

docker login -u <username> quay.io

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 https://downloads.gamebench.net/gbctlv2/latest
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

Example answers

The below answers assume the following:

  • The license zip file has been extracted into /home/example-user/gamebench/license
  • The DNS for gamebench.example.com is set up and pointing to the server
Version
        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: ) gamebench.example.com
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: ) example@gamebench.example.com
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.
        http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
        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 http://gamebench.example.com

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.

Troubleshooting

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        docker-entrypoint.sh node  ...   Up      5000/tcp          
frontend       /entrypoint.sh nginx -g da ...   Up      0.0.0.0:80->80/tcp
postgres       docker-entrypoint.sh postgres    Up      5432/tcp          
queue_worker   docker-entrypoint.sh node  ...   Up                        
redis          docker-entrypoint.sh --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:

"2.0.0"

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

Backups

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.