Single Server Installation
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
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 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
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 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.