about summary refs log tree commit diff

circus-compose

docker-compose that can be used to start a circus (note: a digital one...)

Setup

You can setup the whole stack manually or using the setup.sh file semi-automatic. If you want to setup the circus automatically, simply execute the setup.sh, but if you want to do it by hand, read on...

The complete setup process should take no longer than 5 minutes.

Docker networking

Create some docker networks:

$ docker network create circus
$ docker network create circus_db

These will contain the various services and make sure some services can and some services can't communiate with each other.

Gerneral configuration

First of all, you should define where the CTF should run and what it should be called. To do so, fill the .env file with the corresponding information:

HOSTNAME=docker.localhost
CTFNAME=MyCTF

Service configuration

Traefik

Traefik requires the credentials as a user:pass combination, the password is hashed.

To create a traefik basicauth user, execute $ htpasswd -nb user password with your username and password and append the result to the traefik_users file.

Grafana

Define the grafana location in the grafana.env file.

GF_SERVER_ROOT_URL=http://grafana.docker.localhost:3000
GF_SECURITY_ADMIN_PASSWORD=secret
  • When starting grafana, you can login as admin:secret
  • You can create a prometheus datasource using the URL http://prometheus:9090

Pull images

Pull the companion and the vpn container:

$ docker login registry.darknebu.la
$ docker pull registry.darknebu.la/circus/companion:latest
$ docker pull registry.darknebu.la/circus/vpn:latest

This has to be done, else the registration container will want to create and run a companion image, but there won't be one there locally.

Opening the circus

Finally, start the stack:

$ docker-compose up -d

Services: - http://traefik.docker.localhost - http://register.docker.localhost - http://manager.docker.localhost - http://scoreboard.docker.localhost - http://prometheus.docker.localhost - http://grafana.docker.localhost