You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.0 KiB
Bash

#!/bin/bash
# Generate secure passwords and WordPress salts for .env.prod
# Usage: ./generate-env-secrets.sh
set -e
PROJECT_NAME="ch_meow_tb_dev_shop"
DOMAIN="shop.dev.tb.meow.ch"
TABLE_PREFIX="wp_"
DOCKER_IMAGE="registry.sn48.zivili.ch/meow/wp-shop-dev-tb"
DOCKER_IMAGE_WP_CRON="registry.sn48.zivili.ch/meow/wp-cron-shop-dev-tb:latest"
# Generate random passwords
DB_ROOT_PASSWORD=$(openssl rand -base64 32)
DB_PASSWORD=$(openssl rand -base64 32)
FTP_PASSWORD=$(openssl rand -base64 24)
# Fetch WordPress salts from official API
echo "Fetching WordPress salts from api.wordpress.org..."
SALTS=$(curl -s https://api.wordpress.org/secret-key/1.1/salt/)
# Extract individual salt values and escape for shell
extract_salt() {
echo "$SALTS" | grep "define('$1'" | sed "s/define('$1', *'//" | sed "s/');$//" | sed "s/\\\$/\\\\\$/g" | sed "s/\`/\\\\\`/g"
}
AUTH_KEY=$(extract_salt "AUTH_KEY")
SECURE_AUTH_KEY=$(extract_salt "SECURE_AUTH_KEY")
LOGGED_IN_KEY=$(extract_salt "LOGGED_IN_KEY")
NONCE_KEY=$(extract_salt "NONCE_KEY")
AUTH_SALT=$(extract_salt "AUTH_SALT")
SECURE_AUTH_SALT=$(extract_salt "SECURE_AUTH_SALT")
LOGGED_IN_SALT=$(extract_salt "LOGGED_IN_SALT")
NONCE_SALT=$(extract_salt "NONCE_SALT")
# Write .env.prod
cat > .env.prod << EOF
REVERSE_DOMAIN=${PROJECT_NAME}
APPLICATION_DOMAIN_NAME=${DOMAIN}
DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
DB_NAME=${PROJECT_NAME}-db_name
DB_USER=${PROJECT_NAME}-db_user
DB_PASSWORD=${DB_PASSWORD}
DOCKER_IMAGE=${DOCKER_IMAGE}
DOCKER_IMAGE_TAG=latest
DOCKER_IMAGE_WP_CRON=${DOCKER_IMAGE_WP_CRON}
TABLE_PREFIX=${TABLE_PREFIX}
AUTH_KEY="'${AUTH_KEY}'"
SECURE_AUTH_KEY="'${SECURE_AUTH_KEY}'"
LOGGED_IN_KEY="'${LOGGED_IN_KEY}'"
NONCE_KEY="'${NONCE_KEY}'"
AUTH_SALT="'${AUTH_SALT}'"
SECURE_AUTH_SALT="'${SECURE_AUTH_SALT}'"
LOGGED_IN_SALT="'${LOGGED_IN_SALT}'"
NONCE_SALT="'${NONCE_SALT}'"
WP_DEBUG=1
WP_DEBUG_LOG=1
WP_DEBUG_DISPLAY=false
DISABLE_WP_CRON=true
FTP_USERNAME=admin
FTP_PASSWORD=${FTP_PASSWORD}
EOF
echo "Generated .env.prod for ${PROJECT_NAME} (${DOMAIN})"