#!/bin/bash # create a circus network containing most of the containers making interaction # on a network layer in between the containers possible docker network create circus 2> /dev/zero # create a network containing the database storing the challenges making it # possible that containers in the same network can interact with the database docker network create circus_db 2> /dev/zero echo "Welcome to the circus-setup tool!" echo "Please make sure you have the following services/tools installed before continuing:" echo "- docker (with a running docker-server)" echo "- docker-compose" echo "- htpasswd (apache2-utils)" # get a hostname and a ctfname from the user read -e -p "HOSTNAME: " -i "ctf.flexerilla.team" HOSTNAME read -e -p "CTFNAME: " -i "FlexCTF" CTFNAME # Write the vars to the .env file echo "HOSTNAME=$HOSTNAME" > .env echo "CTFNAME=$CTFNAME" >> .env # Read Traefik creds from the user read -e -p "Traefik username: " -i "traefik" TRAEFIK_USER read -e -p "Traefik password: " -i "secret" TRAEFIK_PASSWORD # Create the traefik creds string (user:pass) TRAEFIK_CREDS=$(htpasswd -nb $TRAEFIK_USER $TRAEFIK_PASSWORD) # Write the creds to the traefik users file echo TRAEFIK_CREDS >> traefik_users # Grafana settings read -e -p "Grafana server: " -i "https://grafana.$HOSTNAME:3000" GF_SERVER_ROOT_URL read -e -p "Grafana admin pwd: " -i "secret" GF_SECURITY_ADMIN_PASSWORD # Write the Grafana settings into the grafana.env file echo "GF_SERVER_ROOT_URL=$GF_SERVER_ROOT_URL" > grafana.env echo "GF_SECURITY_ADMIN_PASSWORD=$GF_SECURITY_ADMIN_PASSWORD" >> grafana.env # Ask if the circus should be started read -p "Do you want to start the circus now? (y/n) " -n 1 -r echo # (optional) move to a new line if [[ ! $REPLY =~ ^[Yy]$ ]] then exit 1 fi # start the docker-compose docker-compose up -d