gnutaler-docker/README-DE.md

57 lines
4.7 KiB
Markdown
Raw Normal View History

# 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` (GNUnet von `https://ftp.fau.de/gnunet/`, Taler-Komponenten von `https://ftp.fau.de/gnu/taler/`; 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=...`