# 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://traefik.docker.localhost) - [http://register.docker.localhost](http://register.docker.localhost) - [http://manager.docker.localhost](http://manager.docker.localhost) - [http://scoreboard.docker.localhost](http://scoreboard.docker.localhost) - [http://prometheus.docker.localhost](http://prometheus.docker.localhost) - [http://grafana.docker.localhost](http://grafana.docker.localhost)