gnutaler-docker/README.md

3.3 KiB

gnutaler-docker

Container-Stack für GNU Taler (Exchange, Merchant, LibEuFin Bank) mit optionalem Caddy-Reverse-Proxy und automatischer DB-Initialisierung.

Bestandteile

  • compose.yml: Services postgres, exchange, merchant, bank, optionaler Caddy (*.domain.tld), einmaliger exchange-account-init Job.
  • Dockerfile: Baut GNUnet/Taler/LibEuFin aus Git, legt Helper-Skripte ins Image.
  • entrypoints/with-dbinit.sh: Rendert Templates via envsubst, wartet auf Postgres, führt *-dbinit, setzt LibEuFin-Admin/User-Passwörter.
  • postgres/init/01-init-taler.sh: Legt DB-User/-Datenbanken mit Passwörtern aus der .env an.
  • scripts/enable-exchange-account.sh: Offline-Tool zum Enable-Account für den Exchange (optional, via ENABLE_EXCHANGE_ACCOUNT).
  • scripts/provision-bank-user.sh: Legt Bank-User an, setzt Debit-Limit, erzeugt einen Token und schreibt ihn auf den Host.
  • exchange/…, merchant/…, bank/…: Templated Configs, Terms/Privacy.
  • caddy/Caddyfile: Reverse-Proxy mit Hosts aus Environment, holt Zertifikate über ACME.

Schnellstart

  1. Voraussetzungen: Docker + Docker Compose.
  2. .env aus .env.example kopieren und füllen (Passwörter, Hosts/URLs, ACME-Mail, Master-Key, EXCHANGE_SECRETS_PATH, etc.). Wichtig:
    • EXCHANGE_SECRETS_PATH: Host-Pfad mit dem Exchange-Master-Privatschlüssel (persistieren!).
    • MASTER_PUBLIC_KEY: zum Master-Privatschlüssel passend.
    • LIBEUFIN_MERCHANT_TOKEN: erst nach Token-Generierung eintragen (siehe unten).
  3. Build: docker build -t taler-stack:build .
  4. Start: docker compose up -d
  5. Bank-Token erzeugen: ./scripts/provision-bank-user.sh (Bank-Service muss laufen). Token steht danach in TOKEN_OUTPUT (Default bank/token-info.txt); Wert in .env bei LIBEUFIN_MERCHANT_TOKEN eintragen.
  6. Optional: Exchange-Payto automatisch freischalten, indem du in .env ENABLE_EXCHANGE_ACCOUNT=1 setzt (PAYTO/Hosts anpassen); Job läuft als exchange-account-init.

Caddy/Reverse-Proxy

  • Hosts steuerst du über BANK_HOST, EXCHANGE_HOST, MERCHANT_HOST, ACME-Mail über CADDY_ACME_EMAIL.
  • 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.
  • Wenn ENABLE_EXCHANGE_ACCOUNT=0, musst du das Offline-Tool manuell ausführen (scripts/enable-exchange-account.sh im Exchange-Container).
  • Bei Zertifikaten mit eigenem CA kannst du EXCHANGE_CURL_OPTS="-k" setzen, wenn der Offline-Job die /keys-URL abfragt.

Nützliche Kommandos

  • Logs eines Dienstes: docker compose logs -f exchange (analog bank/merchant/caddy).
  • Bank-Token/Users neu provisionieren: ./scripts/provision-bank-user.sh
  • Payto-Enable manuell: docker compose run --rm exchange /usr/local/bin/enable-exchange-account.sh PAYTO_URI=...