Initial Taler stack with templated configs, db init script, caddy proxy

This commit is contained in:
nocci 2025-12-11 12:22:48 +00:00
commit d0b0722a7b
16 changed files with 723 additions and 0 deletions

115
compose.yml Normal file
View file

@ -0,0 +1,115 @@
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"
caddy:
image: caddy:2
depends_on: [exchange, merchant, bank]
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}
volumes:
pgdata: {}
caddy_data: {}
caddy_config: {}