diff --git a/templates/caddy/full/.env b/templates/caddy/full/.env index 6ba8595..96887be 100644 --- a/templates/caddy/full/.env +++ b/templates/caddy/full/.env @@ -1 +1,2 @@ CROWDSEC_API_KEY=${CROWDSEC_API_KEY} +PROMETHEUS_PASSWORD=${PROMETHEUS_PASSWORD} diff --git a/web/install_caddy.sh b/web/install_caddy.sh index 37a88f3..1ee5c59 100644 --- a/web/install_caddy.sh +++ b/web/install_caddy.sh @@ -13,16 +13,70 @@ function install_caddy() { mkdir -p "$caddy_dir/crowdsec" mkdir -p "$caddy_dir/caddy" mkdir -p "$caddy_dir/caddy/coraza" + mkdir -p "$caddy_dir/caddy/sites-enabled" chown -R "$username:$username" "$caddy_dir" + # Download configuration files wget "$REPO_URL/$TEMPLATE_PATH/docker-compose.yml" -O "$caddy_dir/docker-compose.yml" - wget "$REPO_URL/$TEMPLATE_PATH/.env" -O "$caddy_dir/.env" wget "$REPO_URL/$TEMPLATE_PATH/Makefile" -O "$caddy_dir/Makefile" wget "$REPO_URL/$TEMPLATE_PATH/caddy/Caddyfile" -O "$caddy_dir/caddy/Caddyfile" wget "$REPO_URL/$TEMPLATE_PATH/caddy/coraza/coraza.conf" -O "$caddy_dir/caddy/coraza/coraza.conf" wget "$REPO_URL/$TEMPLATE_PATH/crowdsec/acquis.yaml" -O "$caddy_dir/crowdsec/acquis.yaml" + wget "$REPO_URL/$TEMPLATE_PATH/caddy/sites-enabled/prometheus.Caddyfile" -O "$caddy_dir/caddy/sites-enabled/prometheus.Caddyfile" + wget "$REPO_URL/$TEMPLATE_PATH/caddy/sites-enabled/examples.Caddyfile" -O "$caddy_dir/caddy/sites-enabled/examples.Caddyfile" - echo "[ WEB ]: Caddy setup succesfully. You can find the Caddyfile under /home/$username/web_server/caddy" - echo "[ WEB ]: Do not forget to update the .env file located under $caddy_dir" + echo "[ WEB ]: Starting containers to generate keys..." + cd "$caddy_dir" + + # Generate random Prometheus password + echo "[ WEB ]: Generating Prometheus password..." + PROMETHEUS_PASSWORD=$(openssl rand -base64 32) + + # Create .env file with placeholder + cat > "$caddy_dir/.env" </dev/null 2>&1; then + echo "[ WEB ]: CrowdSec is ready!" + break + fi + echo "[ WEB ]: Waiting for CrowdSec... ($i/30)" + sleep 2 + done + + # Check if CrowdSec is ready + if ! sudo docker exec crowdsec cscli version >/dev/null 2>&1; then + echo "[ WEB ]: ERROR: CrowdSec failed to start properly. Check logs with: docker compose logs crowdsec" + return 1 + fi + + # Generate CrowdSec API key + echo "[ WEB ]: Generating CrowdSec API key..." + CROWDSEC_API_KEY=$(sudo docker exec crowdsec cscli bouncers add caddy-bouncer -o raw) + + # Update .env file with real API key + cat > "$caddy_dir/.env" <