diff --git a/src/lib/caddy.sh b/src/lib/caddy.sh index 2803ecc..2a24d65 100644 --- a/src/lib/caddy.sh +++ b/src/lib/caddy.sh @@ -11,6 +11,27 @@ create_caddy_config() { mkdir -p "${CADDY_DIR}/sites" + + # Define phpMyAdmin service block + PHPMYADMIN_CADDY_BLOCK=$( + cat <<-EOL + # Redirect /pma to /pma/ + redir /pma /pma/ 301 + # Route requests for /pma (and subpaths) to the phpMyAdmin container + handle_path /pma* { + reverse_proxy phpmyadmin_${DOMAIN} + } +EOL + ) + + + + if [[ "$USE_PHPMYADMIN" == "y" ]]; then + export PHPMYADMIN_CADDY_BLOCK="$PHPMYADMIN_CADDY_BLOCK" + else + export PHPMYADMIN_CADDY_BLOCK="" + fi + envsubst < "${SCRIPT_DIR}/templates/caddy.template" > "$CONFIG_FILE" if ! grep -q "import sites/\*.caddy" "${CADDY_DIR}/Caddyfile"; then diff --git a/src/lib/docker.sh b/src/lib/docker.sh index 7473c89..c561b17 100644 --- a/src/lib/docker.sh +++ b/src/lib/docker.sh @@ -77,7 +77,7 @@ create_docker_compose() { # Define phpMyAdmin service block PHPMYADMIN_BLOCK=$( cat <<-EOL - phpmyadmin: + phpmyadmin_${DOMAIN}: container_name: phpmyadmin_${DOMAIN} depends_on: - db_${DOMAIN} @@ -85,13 +85,11 @@ create_docker_compose() { environment: - PMA_HOST=db_${DOMAIN} - MYSQL_ROOT_PASSWORD=\${MYSQL_ROOT_PASSWORD} + - PMA_ABSOLUTE_URI=https://${DOMAIN}/pma/ restart: always - ports: - - "8080:80" networks: - ${DOMAIN}_net - profiles: - - phpmyadmin + - caddy_net EOL ) diff --git a/src/lib/menu.sh b/src/lib/menu.sh index f73acf0..6ad88cd 100644 --- a/src/lib/menu.sh +++ b/src/lib/menu.sh @@ -207,7 +207,8 @@ install_site() { cd "$WP_PROJECT_DIR" # Ask if the user wants to include phpMyAdmin in the setup - read -p "Do you want to include phpMyAdmin? (y/n): " USE_PHPMYADMIN + read -p "Do you want to include phpMyAdmin? (Y/n) [N]: " USE_PHPMYADMIN + USE_PHPMYADMIN=${USE_PHPMYADMIN:-n} USE_PHPMYADMIN=$(echo "$USE_PHPMYADMIN" | tr '[:upper:]' '[:lower:]') # Create necessary configuration files for Docker Compose, Caddy, and WordPress diff --git a/src/lib/validation.sh b/src/lib/validation.sh index ae4b97b..3083601 100644 --- a/src/lib/validation.sh +++ b/src/lib/validation.sh @@ -1,7 +1,7 @@ #!/bin/bash validate_domain() { - if [[ ! $1 =~ ^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$ ]]; then + if [[ ! $1 =~ ^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$ ]]; then echo -e "${RED}Invalid domain format${NC}" return 1 fi diff --git a/src/templates/caddy.template b/src/templates/caddy.template index 01fff21..376ed89 100644 --- a/src/templates/caddy.template +++ b/src/templates/caddy.template @@ -18,5 +18,6 @@ ${DOMAIN} { X-Content-Type-Options "nosniff" } import wordpress -} + $PHPMYADMIN_CADDY_BLOCK +}