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