# taler-merchant scripts Mirrored from podman `taler-hacktivism`. | File | Location in container | User | |------|----------------------|------| | `start_base_services_for_taler.sh` | `/root/` | root | | `start_merchant.sh` | `/usr/local/bin/` | `taler-merchant-httpd` | | `ensure_merchant_helpers.sh` | `/usr/local/bin/` | root → `taler-merchant-httpd` | | `setup_credit_facade.sh` | host root (`/root/koopa-admin-log/…`) | root on koopa | | `check_merchant-health.sh` | `/usr/local/bin/` | any | | `certbot_renew.sh` | `/root/scripts/` | root (bg from base) | | `stats--merchant-payments.sh` | `/usr/local/bin/` | ops | | `taler-hacktivism-email-helper.sh` | `/usr/local/bin/` | merchant (SMTP password via env in git mirror) | | `taler-hacktivism-sms-helper-wrapper.sh` | `/usr/local/bin/` | merchant | ### Settlement (wired / transfers) Automatic import needs: 1. **`credit_facade_url`** = `…/accounts/$BANK_USER/taler-revenue/` (not `taler-wire-gateway/`) 2. **Bearer** bank token in `credit_facade_credentials` (Basic fails on history) 3. Running **`taler-merchant-wirewatch`** + **`taler-merchant-depositcheck`** ```bash # on koopa as root ./setup_credit_facade.sh ./ensure_merchant_helpers.sh # inside container or via start_merchant ``` SMS backends are symlinks into `/var/taler-src/...` (not copied). ## Self-build deploy (webui tag + merchant master) From a laptop with `ssh koopa` + `pnpm`/`node` (e.g. clementine): ```bash cd ~/src/koopa/koopa-admin-log chmod +x scripts/taler-merchant/build-deploy-webui-1.6.11-merchant-master.sh ./scripts/taler-merchant/build-deploy-webui-1.6.11-merchant-master.sh ``` What it does: 1. **Clone** `taler-typescript-core` **tag `v1.6.11`**, build SPA, install into `taler-hacktivism:/usr/share/taler-merchant-webui` (backup `…bak-selfbuild-*`). 2. **Inside the container:** update `/var/taler-src/merchant` to **master**, `./bootstrap && ./configure --prefix=/usr && make && make install`. 3. **`start_merchant.sh --restart`** + smoke `/config` + `/webui/`. Env knobs: `SKIP_WEBUI=1`, `SKIP_MERCHANT=1`, `SKIP_RESTART=1`, `WEBUI_TAG=…`, `MERCHANT_REF=master`, `KOOPA_SSH=koopa`. ## Portal / instance IDs: **lowercase only** Merchant SPA (`/webui/`) and `/instances/{id}/…` require **lowercase** instance ids. Uppercase or mixed case → **weird HTTP 401** (looks like bad password). Display names may be mixed case; **ids must be lowercase** (`goa-shop`, not `Goa-Shop`). See `configs/taler-hacktivism/README.md`. ## Usage ```bash # root in container ./start_base_services_for_taler.sh # then as taler-merchant-httpd in /usr/local/bin: ./start_merchant.sh --restart # nginx (TLS frontend) if not already up — root: # /etc/init.d/nginx start ./check_merchant-health.sh ``` ### `check_merchant-health.sh` | Check | Severity | |-------|----------| | socket + listener + httpd + nginx | FAIL | | merchant `/config` (unix sock or `:9010`) | FAIL | | each enabled `[merchant-exchange-*]`: `GET …/keys` | FAIL | | `MASTER_KEY` matches `master_public_key` in `/keys` | FAIL | | helpers (webhook, exchangekeyupdate, depositcheck) | WARN | Disabled exchanges (`DISABLED = YES`) are skipped. If public exchange URL is unreachable from the container, falls back to `http://127.0.0.1:9011/keys` (and pasta host IPs).