diff --git a/.env.example b/.env.example index 203c87c..38e8ee9 100644 --- a/.env.example +++ b/.env.example @@ -39,6 +39,7 @@ CADDY_ACME_EMAIL=ops@example.com BANK_HOST=bank.domain.tld EXCHANGE_HOST=exchange.domain.tld MERCHANT_HOST=merchant.domain.tld +WORDPRESS_HOST=wordpress.domain.tld # Secrets path (host path mounted into /etc/taler/secrets) EXCHANGE_SECRETS_PATH=./exchange/secrets @@ -59,3 +60,15 @@ OPEN_BANKING_GATEWAY_URL=https://bank.domain.tld BANK_BASE_URL=https://bank.domain.tld/ TALER_CURRENCY=DEMOGELD + +# WordPress / WooCommerce +WP_DB_ROOT_PASSWORD=wordpressroot +WP_DB_NAME=wordpress +WP_DB_USER=wordpress +WP_DB_PASSWORD=wordpress +WP_DB_HOST=mariadb +WP_TABLE_PREFIX=wp_ +WP_URL=https://wordpress.domain.tld +WP_ADMIN_USER=admin +WP_ADMIN_PASSWORD=change_me +WP_ADMIN_EMAIL=ops@example.com diff --git a/README.md b/README.md index a3409e2..5421a49 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,10 @@ Container-Stack für GNU Taler (Exchange, Merchant, LibEuFin Bank) mit optionale - Bei Domainwechsel passen BASE_URL/PAYTO in der `.env` ebenfalls an (Templates rendern automatisch beim Start). - Direktes Port-Mapping (8080/8081/9966) kannst du entfernen, wenn nur Caddy nach außen gehen soll. +## WordPress/WooCommerce (optional) +- Services `mariadb`, `wordpress`, `wp-init`. `wp-init` installiert bei Bedarf Core, WooCommerce und das Plugin `gnu-taler-payment-for-woocommerce`. +- Env in `.env` setzen (`WP_DB_*`, `WP_URL`, Admin-Creds, `WORDPRESS_HOST`); Default-Port 8085 oder über Caddy (`WORDPRESS_HOST`). + ## Hinweise - Passwörter in `.env` müssen zu `postgres/init/01-init-taler.sh` passen (wird automatisch per Env gesetzt). - Master-Key muss stabil bleiben; nur Pfad mounten, nicht neu generieren. diff --git a/caddy/Caddyfile b/caddy/Caddyfile index 8ae3657..097aeb0 100644 --- a/caddy/Caddyfile +++ b/caddy/Caddyfile @@ -13,3 +13,7 @@ {$MERCHANT_HOST} { reverse_proxy merchant:9966 } + +{$WORDPRESS_HOST} { + reverse_proxy wordpress:80 +} diff --git a/compose.yml b/compose.yml index 00a8c78..8326276 100644 --- a/compose.yml +++ b/compose.yml @@ -108,8 +108,62 @@ services: BANK_HOST: ${BANK_HOST:-ob.antifa.ltd} EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd} MERCHANT_HOST: ${MERCHANT_HOST:-merchant.antifa.ltd} + WORDPRESS_HOST: ${WORDPRESS_HOST:-wordpress.domain.tld} + + mariadb: + image: mariadb:11 + environment: + MARIADB_ROOT_PASSWORD: ${WP_DB_ROOT_PASSWORD:-wordpressroot} + MARIADB_DATABASE: ${WP_DB_NAME:-wordpress} + MARIADB_USER: ${WP_DB_USER:-wordpress} + MARIADB_PASSWORD: ${WP_DB_PASSWORD:-wordpress} + volumes: + - mariadb_data:/var/lib/mysql + + wordpress: + image: wordpress:6.5-php8.2-apache + depends_on: [mariadb] + environment: + WORDPRESS_DB_HOST: ${WP_DB_HOST:-mariadb} + WORDPRESS_DB_NAME: ${WP_DB_NAME:-wordpress} + WORDPRESS_DB_USER: ${WP_DB_USER:-wordpress} + WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWORD:-wordpress} + WORDPRESS_TABLE_PREFIX: ${WP_TABLE_PREFIX:-wp_} + volumes: + - wordpress_data:/var/www/html + ports: + - "8085:80" + + wp-init: + image: wordpress:cli-php8.2 + depends_on: [wordpress] + environment: + WORDPRESS_DB_HOST: ${WP_DB_HOST:-mariadb} + WORDPRESS_DB_NAME: ${WP_DB_NAME:-wordpress} + WORDPRESS_DB_USER: ${WP_DB_USER:-wordpress} + WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWORD:-wordpress} + WORDPRESS_TABLE_PREFIX: ${WP_TABLE_PREFIX:-wp_} + WP_URL: ${WP_URL:-https://wordpress.domain.tld} + WP_ADMIN_USER: ${WP_ADMIN_USER:-admin} + WP_ADMIN_PASSWORD: ${WP_ADMIN_PASSWORD:-change_me} + WP_ADMIN_EMAIL: ${WP_ADMIN_EMAIL:-ops@example.com} + volumes: + - wordpress_data:/var/www/html + entrypoint: ["/bin/sh","-c"] + command: > + set -e; + cd /var/www/html; + wp core is-installed --allow-root || + wp core install --allow-root --url="${WP_URL}" --title="Taler Demo Shop" + --admin_user="${WP_ADMIN_USER}" --admin_password="${WP_ADMIN_PASSWORD}" --admin_email="${WP_ADMIN_EMAIL}"; + wp plugin is-installed woocommerce --allow-root || wp plugin install woocommerce --activate --allow-root; + wp plugin is-installed gnu-taler-payment-for-woocommerce --allow-root || wp plugin install gnu-taler-payment-for-woocommerce --activate --allow-root; + echo "WordPress init complete."; + restart: "no" volumes: pgdata: {} caddy_data: {} caddy_config: {} + mariadb_data: {} + wordpress_data: {}