.PHONY: help configure clean # Colors for output BLUE := \033[0;34m GREEN := \033[0;32m YELLOW := \033[0;33m RED := \033[0;31m NC := \033[0m # No Color help: ## Show this help message @echo "$(BLUE)Step-CA Docker Stack - Available commands:$(NC)" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}' configure: ## Create secret files from .env if they don't exist @echo "$(BLUE)Configuring secrets...$(NC)" @if [ ! -f .env ]; then \ echo "$(RED)Error: .env file not found. Please copy .env.example to .env and configure it.$(NC)"; \ exit 1; \ fi @mkdir -p secrets @if [ ! -f secrets/postgres_password.txt ]; then \ echo "$(YELLOW)Creating secrets/postgres_password.txt$(NC)"; \ grep '^POSTGRES_PASSWORD=' .env | cut -d '=' -f2- | tr -d '"' > secrets/postgres_password.txt; \ chmod 600 secrets/postgres_password.txt; \ echo "$(GREEN)✓ Created secrets/postgres_password.txt$(NC)"; \ else \ echo "$(GREEN)✓ secrets/postgres_password.txt already exists$(NC)"; \ fi @if [ ! -f secrets/step_pwd.txt ]; then \ echo "$(YELLOW)Creating secrets/step_pwd.txt$(NC)"; \ if grep -q '^STEP_CA_PASSWORD=' .env; then \ grep '^STEP_CA_PASSWORD=' .env | cut -d '=' -f2- | tr -d '"' > secrets/step_pwd.txt; \ else \ openssl rand -base64 32 > secrets/step_pwd.txt; \ echo "$(YELLOW)No STEP_CA_PASSWORD in .env, generated random password$(NC)"; \ fi; \ chmod 600 secrets/step_pwd.txt; \ echo "$(GREEN)✓ Created secrets/step_pwd.txt$(NC)"; \ else \ echo "$(GREEN)✓ secrets/step_pwd.txt already exists$(NC)"; \ fi @echo "$(GREEN)✓ Configuration complete$(NC)" clean: docker compose down @echo "$(RED)WARNING: This will destroy all data (certificates, database)$(NC)" @read -p "Are you sure? [y/N] " -n 1 -r; \ echo; \ if [[ $$REPLY =~ ^[Yy]$$ ]]; then \ echo "$(BLUE)Removing volumes...$(NC)"; \ docker compose down -v; \ echo "$(GREEN)✓ Volumes removed$(NC)"; \ else \ echo "$(YELLOW)Cancelled$(NC)"; \ fi exec-ca: ## Execute ash in step-ca container docker compose exec step-ca sh exec-db: ## Execute psql in postgres container docker compose exec postgres psql -U stepca -d stepca fingerprint: ## Get CA root certificate fingerprint @docker compose exec step-ca step certificate fingerprint /home/step/certs/root_ca.crt 2>/dev/null || echo "$(RED)CA not initialized yet$(NC)"