gnutaler-docker/README-DE.md
2025-12-12 12:10:43 +00:00

4.6 KiB

gnutaler-docker (DE)

Container-Stack für GNU Taler (Exchange, Merchant, LibEuFin Bank) mit optionalem Caddy-Reverse-Proxy, automatischer DB-Initialisierung und optionalem WordPress/WooCommerce-Demo-Shop mit dem GNU-Taler-Payment-Plugin.

Bestandteile

  • compose.yml: Services postgres, exchange, merchant, bank, optionaler Caddy (*.domain.tld), einmaliger exchange-account-init Job, optionale mariadb/wordpress/wp-init.
  • 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 Freischalten des Exchange-Payto-Kontos (optional, über 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 plus Terms/Privacy.
  • caddy/Caddyfile: Reverse-Proxy mit Hosts aus der Umgebung, ACME-Zertifikate.
  • wordpress-Stack: MariaDB + WordPress + WP-CLI-Init, installiert WooCommerce und gnu-taler-payment-for-woocommerce.

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).
    • Versionen: GNUNET_REF (Default v0.26.1), EXCHANGE_REF, MERCHANT_REF, LIBEUFIN_REF, optional GNUNET_TARBALL_URL für Tarball-Builds.
  3. Build: ./scripts/build-image.sh (liest .env für Refs/URLs). Alternativ mit expliziten Build-Args, da docker build ... die .env NICHT automatisch lädt:
    docker build \
      --build-arg GNUNET_TARBALL_URL="$GNUNET_TARBALL_URL" \
      --build-arg GNUNET_REF="$GNUNET_REF" \
      --build-arg EXCHANGE_REF="$EXCHANGE_REF" \
      --build-arg MERCHANT_REF="$MERCHANT_REF" \
      --build-arg LIBEUFIN_REF="$LIBEUFIN_REF" \
      -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.
  7. WordPress/WooCommerce (optional): WP_DB_*, WP_URL, Admin-Creds und WORDPRESS_HOST in .env setzen; wp-init installiert WordPress, WooCommerce und das GNU-Taler-Payment-Plugin.

Caddy/Reverse-Proxy

  • Hosts steuerst du über BANK_HOST, EXCHANGE_HOST, MERCHANT_HOST, WORDPRESS_HOST, ACME-Mail über CADDY_ACME_EMAIL.
  • Bei Domainwechsel BASE_URL/PAYTO in der .env anpassen; Templates rendern automatisch beim Start.
  • Direktes Port-Mapping (8080/8081/9966/8085) kannst du entfernen, wenn nur Caddy nach außen gehen soll.

Hinweise

  • Passwörter in .env müssen zu postgres/init/01-init-taler.sh passen (werden automatisch übernommen).
  • 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 eigener CA EXCHANGE_CURL_OPTS="-k" setzen, wenn der Offline-Job /keys über HTTPS abfragt.
  • Nach Passwortänderungen in .env ist kein manuelles SQL-Rendering nötig; das Init-Skript liest sie beim Start.
  • Release-Refs/Tarballs: Tags/Commits unter https://git.taler.net/{gnunet,exchange,merchant,libeufin}.git/ ansehen (Tarballs via .../snapshot/<tag>.tar.gz) und *_REF/GNUNET_TARBALL_URL entsprechend setzen.
  • Offline-Tarballs: Lege Tarballs unter vendor/ ab (gnunet-*.tar.gz, exchange-*.tar.gz, merchant-*.tar.gz, libeufin-*.tar.gz); bei unvollständigem Tarball fällt der Build auf Git zurück.
  • Release-Tarballs laden: ./scripts/fetch-tarballs.sh (nutzt aktuelle Stable-Versionen; per *_VERSION oder *_TARBALL_URL überschreibbar).

Nützliche Kommandos

  • Logs: docker compose logs -f exchange (oder bank/merchant/caddy/wordpress).
  • 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=...