services: postgres: image: postgres:16 environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-taler} volumes: - pgdata:/var/lib/postgresql/data - ./postgres/init:/docker-entrypoint-initdb.d:ro exchange: image: taler-stack:build entrypoint: ["/usr/local/bin/with-dbinit.sh"] command: ["taler-exchange-httpd", "-c", "/etc/taler/taler-exchange.conf"] environment: DB_NAME: ${TALER_EXCHANGE_DB:-talerexchange} INIT_CMD: taler-exchange-dbinit -c /etc/taler/taler-exchange.conf PGHOST: ${POSTGRES_HOST:-postgres} PGUSER: ${POSTGRES_ADMIN_USER:-postgres} PGPASSWORD: ${POSTGRES_PASSWORD:-taler} EXCHANGE_BASE_URL: ${EXCHANGE_BASE_URL:-https://exchange.antifa.ltd/} EXCHANGE_SHOPPING_URL: ${EXCHANGE_SHOPPING_URL:-https://exchange.antifa.ltd/} OPEN_BANKING_GATEWAY_URL: ${OPEN_BANKING_GATEWAY_URL:-https://ob.antifa.ltd} PAYTO_URI: ${PAYTO_URI:-payto://x-taler-bank/ob.antifa.ltd/demogeld?receiver-name=demogeld} EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd} BANK_HOST: ${BANK_HOST:-ob.antifa.ltd} depends_on: [postgres] volumes: - ./exchange/conf:/etc/taler - ${EXCHANGE_SECRETS_PATH:-./exchange/secrets}:/etc/taler/secrets - ./exchange/terms:/etc/taler-exchange/terms - ./exchange/privacy:/etc/taler-exchange/privacy ports: - "8081:8081" # intern, später via Reverse Proxy auf 443 exchange-account-init: image: taler-stack:build depends_on: [exchange] environment: ENABLE_EXCHANGE_ACCOUNT: ${ENABLE_EXCHANGE_ACCOUNT:-0} PAYTO_URI: ${PAYTO_URI:-payto://x-taler-bank/ob.antifa.ltd/demogeld?receiver-name=demogeld} EXCHANGE_CONFIG: /etc/taler/taler-exchange.conf EXCHANGE_KEYS_URL: ${EXCHANGE_KEYS_URL:-http://exchange:8081/keys} EXCHANGE_WAIT_RETRIES: ${EXCHANGE_WAIT_RETRIES:-60} EXCHANGE_WAIT_INTERVAL: ${EXCHANGE_WAIT_INTERVAL:-2} EXCHANGE_CURL_OPTS: ${EXCHANGE_CURL_OPTS:-} volumes: - ./exchange/conf:/etc/taler - ${EXCHANGE_SECRETS_PATH:-./exchange/secrets}:/etc/taler/secrets - ./exchange/terms:/etc/taler-exchange/terms - ./exchange/privacy:/etc/taler-exchange/privacy command: ["/usr/local/bin/enable-exchange-account.sh"] restart: "no" merchant: image: taler-stack:build entrypoint: ["/usr/local/bin/with-dbinit.sh"] command: ["taler-merchant-httpd", "-c", "/etc/taler-merchant/merchant.conf"] environment: DB_NAME: ${TALER_MERCHANT_DB:-talermerchant} INIT_CMD: taler-merchant-dbinit -c /etc/taler-merchant/merchant.conf PGHOST: ${POSTGRES_HOST:-postgres} PGUSER: ${POSTGRES_ADMIN_USER:-postgres} PGPASSWORD: ${POSTGRES_PASSWORD:-taler} EXCHANGE_BASE_URL: ${EXCHANGE_BASE_URL:-https://exchange.antifa.ltd/} EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd} depends_on: [postgres, exchange] volumes: - ./merchant/conf:/etc/taler-merchant ports: - "9966:9966" bank: image: taler-stack:build entrypoint: ["/usr/local/bin/with-dbinit.sh"] command: ["libeufin-bank", "serve", "-c", "/etc/libeufin/bank.conf"] environment: DB_NAME: ${LIBEUFIN_DB_NAME:-libeufinbank} INIT_CMD: libeufin-bank dbinit -c /etc/libeufin/bank.conf PGHOST: ${POSTGRES_HOST:-postgres} PGUSER: ${POSTGRES_ADMIN_USER:-postgres} PGPASSWORD: ${POSTGRES_PASSWORD:-taler} BANK_BASE_URL: ${BANK_BASE_URL:-https://ob.antifa.ltd/} BANK_HOST: ${BANK_HOST:-ob.antifa.ltd} EXCHANGE_BASE_URL: ${EXCHANGE_BASE_URL:-https://exchange.antifa.ltd/} EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd} LIBEUFIN_ADMIN_USER: ${LIBEUFIN_ADMIN_USER:-admin} LIBEUFIN_ADMIN_PASSWORD: ${LIBEUFIN_ADMIN_PASSWORD:-} LIBEUFIN_USER: ${LIBEUFIN_USER:-demogeld} LIBEUFIN_USER_PASSWORD: ${LIBEUFIN_USER_PASSWORD:-} depends_on: [postgres] volumes: - ./bank/conf:/etc/libeufin ports: - "8080:8080" sync: image: taler-stack:build entrypoint: ["/usr/local/bin/with-dbinit.sh"] command: ["taler-sync-httpd", "-c", "/etc/taler-sync/taler-sync.conf"] environment: DB_NAME: ${TALER_SYNC_DB:-talersync} INIT_CMD: taler-sync-dbinit -c /etc/taler-sync/taler-sync.conf PGHOST: ${POSTGRES_HOST:-postgres} PGUSER: ${POSTGRES_ADMIN_USER:-postgres} PGPASSWORD: ${POSTGRES_PASSWORD:-taler} SYNC_BASE_URL: ${SYNC_BASE_URL:-https://sync.domain.tld/} SYNC_HOST: ${SYNC_HOST:-sync.domain.tld} depends_on: [postgres] volumes: - ./sync/conf:/etc/taler-sync ports: - "8087:8087" caddy: image: caddy:2 depends_on: [exchange, merchant, bank, sync] ports: - "80:80" - "443:443" volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config environment: CADDY_ACME_EMAIL: ${CADDY_ACME_EMAIL:-ops@example.com} BANK_HOST: ${BANK_HOST:-ob.antifa.ltd} EXCHANGE_HOST: ${EXCHANGE_HOST:-exchange.antifa.ltd} MERCHANT_HOST: ${MERCHANT_HOST:-merchant.antifa.ltd} SYNC_HOST: ${SYNC_HOST:-sync.domain.tld} 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: {}