mirror of
https://github.com/10h30/kazewp.git
synced 2026-05-12 15:21:20 +09:00
118 lines
3.5 KiB
Bash
Executable File
118 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Get the directory where the script is located
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
# Source library files in specific order
|
|
source "${SCRIPT_DIR}/lib/colors.sh"
|
|
source "${SCRIPT_DIR}/lib/config.sh"
|
|
source "${SCRIPT_DIR}/lib/utils.sh"
|
|
source "${SCRIPT_DIR}/lib/validation.sh"
|
|
source "${SCRIPT_DIR}/lib/docker.sh"
|
|
source "${SCRIPT_DIR}/lib/caddy.sh"
|
|
source "${SCRIPT_DIR}/lib/wordpress.sh"
|
|
|
|
echo "WordPress Site Setup Script"
|
|
echo "=========================="
|
|
|
|
setup_directories
|
|
|
|
FIRST_TIME=false
|
|
if ! check_container_running "caddy"; then
|
|
FIRST_TIME=true
|
|
fi
|
|
|
|
while true; do
|
|
read -p "Enter domain (e.g., example.com): " DOMAIN
|
|
if validate_domain "$DOMAIN"; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
while true; do
|
|
read -p "Enter admin email: " ADMIN_EMAIL
|
|
if validate_email "$ADMIN_EMAIL"; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
read -p "Enter admin username: " ADMIN_USER
|
|
|
|
read -s -p "Enter password (press Enter for random password): " ADMIN_PASSWORD
|
|
echo
|
|
|
|
if [ -z "$ADMIN_PASSWORD" ]; then
|
|
ADMIN_PASSWORD=$(generate_password)
|
|
echo "Generated password: $ADMIN_PASSWORD"
|
|
fi
|
|
|
|
read -p "Enter site title: " SITE_TITLE
|
|
|
|
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 32)
|
|
MYSQL_PASSWORD=$(openssl rand -base64 32)
|
|
|
|
WP_PROJECT_DIR="${WORDPRESS_DIR}/${DOMAIN}"
|
|
if [ -d "$WP_PROJECT_DIR" ]; then
|
|
echo -e "${RED}Directory ${WP_PROJECT_DIR} already exists!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$WP_PROJECT_DIR"
|
|
cd "$WP_PROJECT_DIR"
|
|
|
|
create_docker_compose "$DOMAIN" "$MYSQL_ROOT_PASSWORD" "$MYSQL_PASSWORD"
|
|
create_caddy_config "$DOMAIN"
|
|
create_wp_setup "$DOMAIN" "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_EMAIL" "$SITE_TITLE"
|
|
create_env_file "$DOMAIN" "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_EMAIL" "$MYSQL_ROOT_PASSWORD" "$MYSQL_PASSWORD"
|
|
|
|
|
|
while true; do
|
|
read -p "Do you want to (1) start services and set up WordPress automatically or (2) do it manually later? [1/2]: " SETUP_CHOICE
|
|
case $SETUP_CHOICE in
|
|
1)
|
|
if start_services "$FIRST_TIME" "$DOMAIN"; then
|
|
if run_wp_setup "$DOMAIN"; then
|
|
echo -e "${GREEN}Complete setup finished successfully!${NC}"
|
|
else
|
|
echo -e "${RED}WordPress setup failed. You may need to run setup manually later.${NC}"
|
|
fi
|
|
else
|
|
echo -e "${RED}Service startup failed. You may need to start services manually.${NC}"
|
|
fi
|
|
break
|
|
;;
|
|
2)
|
|
echo -e "\n${BLUE}Manual setup instructions:${NC}"
|
|
if [ "$FIRST_TIME" = true ]; then
|
|
echo "1. Start Caddy:"
|
|
echo " cd ${CADDY_DIR} && docker compose up -d"
|
|
fi
|
|
reload_caddy
|
|
echo "2. Start WordPress:"
|
|
echo " cd ${WP_PROJECT_DIR} && docker compose up -d"
|
|
echo "3. Run the WordPress setup script:"
|
|
echo " ./wp-setup.sh"
|
|
break
|
|
;;
|
|
*)
|
|
echo -e "${RED}Invalid choice. Please enter 1 or 2.${NC}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo -e "\n${BLUE}WordPress Site Information:${NC}"
|
|
echo "----------------------------------------"
|
|
echo "Domain: https://$DOMAIN"
|
|
echo "Admin URL: https://$DOMAIN/wp-admin"
|
|
echo "Username: $ADMIN_USER"
|
|
if [ "$PASSWORD_CHOICE" = "2" ]; then
|
|
echo "Password: $ADMIN_PASSWORD (SAVE THIS PASSWORD!)"
|
|
fi
|
|
echo "Email: $ADMIN_EMAIL"
|
|
echo "----------------------------------------"
|
|
|
|
save_credentials "$WP_PROJECT_DIR" "$DOMAIN" "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_EMAIL"
|
|
|
|
echo -e "\nCredentials have been saved to: ${WP_PROJECT_DIR}/credentials.txt"
|
|
|
|
exit 0 |