diff --git a/configs/lab-local/README.md b/configs/lab-local/README.md new file mode 100644 index 0000000..607819c --- /dev/null +++ b/configs/lab-local/README.md @@ -0,0 +1,51 @@ +# Lab local on koopa (parallel to live) + +Does **not** touch live GOA (`taler-hacktivism*`, **9010–9015**) or **9080** (`koopa-nym`). + +| Lab | Container | Host binds (loopback only) | +|-----|-----------|----------------------------| +| **goa-regio-ng** | `goa-regio-ng` | `127.0.0.1:9180→80`, `127.0.0.1:9322→22` | +| **mytops-local** | `mytops-local` | `127.0.0.1:8288→80` | + +## goa-regio-ng + +- Tree on laptop/koopa: `~/src/regio-local/` +- Inventory (canonical copy here): [`goa-regio-ng-koopa.yml`](./goa-regio-ng-koopa.yml) +- Ansible from magikoopa: ProxyCommand → `hernani@koopa` → `127.0.0.1:9322` +- Master: `koopa-admin-secrets/backups/goa/current/exchange-offline/master.priv` + +```bash +rsync -az ~/src/regio-local/ hernani@koopa:src/regio-local/ +ssh hernani@koopa 'cd ~/src/regio-local && REGIO_HTTP_PORT=9180 REGIO_SSH_PORT=9322 REGIO_BIND=127.0.0.1 ./scripts/01-build-run.sh' +REGIO_PODMAN_SSH=hernani@koopa REGIO_INVENTORY=$HOME/git/admin-logs/koopa-admin-log/configs/lab-local/goa-regio-ng-koopa.yml \ + ~/src/regio-local/scripts/03-deploy.sh +REGIO_HTTP_PORT=9180 REGIO_PROBE_SSH=hernani@koopa ~/src/regio-local/scripts/04-probe.sh +``` + +Never `REGIO_PUBLISH_KOOPA_PORTS=1` on koopa next to live GOA. + +## mytops-local + +- **Verified 2026-09-04:** koopa `127.0.0.1:8288/config` → **200**; laptop same stack on **8088** → **200**. Daylog: `2026/2026-09-04--mytops-local-podman.md`. FIND: [`../koopa-setup`](../koopa-setup) · ports: [`../ports.md`](../ports.md). +- Tree: `mytops-admin-log` **`master`** (`mytops-local/wip:…`; rsync to `~/src/mytops-admin-log` on koopa; `.git` optional). Stage live-restore on betel still TODO. +- Config snippet: [`mytops-local.toml`](./mytops-local.toml) — port **8288** on koopa +- Orchestrator: `MYTOPS_LOCAL_HTTP_PORT=8288 ./scripts/taler-merchant/setup-local.sh` +- If `taler-merchant-dbconfig` fails (no postgres socket): `systemctl enable --now postgresql` inside the container, then dbconfig + `taler-merchant.target` again + +```bash +# on koopa: image + container (repo bind) +podman build -t localhost/mytops-debian-systemd:trixie -f Containerfile.mytops-local . +podman rm -f mytops-local 2>/dev/null || true +podman run -d --name mytops-local --hostname mytops-local \ + --systemd=always --cap-add SYS_ADMIN --security-opt label=disable \ + -v /sys/fs/cgroup:/sys/fs/cgroup:rw --tmpfs /run --tmpfs /run/lock \ + -p 127.0.0.1:8288:80 \ + -v "$HOME/src/mytops-admin-log:/root/mytops-admin-log:ro" \ + localhost/mytops-debian-systemd:trixie /sbin/init +# apply koopa URL then setup (needs RW copy of config or run apply on host tree) +podman exec mytops-local bash -lc \ + 'cd /root/mytops-admin-log && MYTOPS_LOCAL_HTTP_PORT=8288 ./scripts/taler-merchant/setup-local.sh' +curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8288/config # expect 200 +``` + +Laptop default remains **8088**; koopa lab uses **8288** so both can coexist with regio **9180**. diff --git a/configs/lab-local/goa-regio-ng-koopa.yml b/configs/lab-local/goa-regio-ng-koopa.yml new file mode 100644 index 0000000..00450d8 --- /dev/null +++ b/configs/lab-local/goa-regio-ng-koopa.yml @@ -0,0 +1,59 @@ +# goa-regio-ng on koopa — parallel lab; does NOT use live 9010–9015 or 9080 (nym). +# Host binds on koopa: 127.0.0.1:9180→80, 127.0.0.1:9322→22. +# Ansible from magikoopa via ProxyCommand into koopa loopback. +# +# Live GOA (untouched): taler-hacktivism{,-bank,-exchange-ansible} on 9010–9015. + +regional_currency: + hosts: + goa-regio-ng: + ansible_host: 127.0.0.1 + ansible_port: 9322 + ansible_user: root + ansible_ssh_private_key_file: "{{ lookup('ansible.builtin.env', 'HOME') }}/src/regio-local/ssh/regio_local_ed25519" + ansible_ssh_common_args: >- + -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null + -o ProxyCommand="ssh -W 127.0.0.1:%p -o StrictHostKeyChecking=no hernani@koopa" + ansible_python_interpreter: /usr/bin/python3 + + regional_currency_currency: GOA + regional_currency_currency_name: "GOA exploration currency" + regional_currency_domain: goa.local + regional_currency_bank_name: "GOA Exploration Bank" + regional_currency_bank_admin_password: "change-me" + regional_currency_bank_port: 8080 + regional_currency_bank_bind: "127.0.0.1" + regional_currency_enable_tls: false + regional_currency_enable_conversion: false + regional_currency_testing_deployment: true + regional_currency_enable_exchange_terms: false + regional_currency_enable_exchange_privacy: false + regional_currency_podman_systemd_relax: true + + # Dual merchant (CHF package + regional GOA); regio-style BASE_URLs (no :9180). + regional_currency_merchant_currency: CHF + regional_currency_merchant_regional_exchange_section: goa + regional_currency_merchant_disable_exchanges: + - kudos + regional_currency_merchant_disable_currencies: + - KUDOS + regional_currency_disable_currencies: + - kudos + - testkudos + - euro + - swiss-francs + - netzbon + + regional_currency_round_unit: "GOA:0.00000001" + regional_currency_tiny_amount: "GOA:0.00000001" + regional_currency_fractional_input_digits: 8 + regional_currency_fractional_normal_digits: 0 + regional_currency_fractional_trailing_zero_digits: 0 + regional_currency_alt_unit_names: '{"24":"Yotta-GOA","21":"Zetta-GOA","18":"Exa-GOA","15":"Peta-GOA","12":"Tera-GOA","9":"Giga-GOA","6":"Mega-GOA","3":"Kilo-GOA","0":"GOA","-1":"Deci-GOA","-2":"Centi-GOA","-3":"Milli-GOA","-6":"Micro-GOA","-7":"Deci-Micro-GOA","-8":"Atomic-GOA"}' + regional_currency_common_amounts: "GOA:10 GOA:20 GOA:50 GOA:100 GOA:200 GOA:1000" + regional_currency_static_coins_file: goa-exchange-coins.conf + regional_currency_coin_withdraw_duration: 7 days + regional_currency_default_debt_limit: "GOA:4503599627370496" + + regional_currency_exchange_master_public_key_expected: "TW6K5FXF81VYCAH0YWYX0SX98KBBSJ42VX27WAX01FTFH400QG10" + regional_currency_exchange_master_priv_src: "{{ lookup('ansible.builtin.env', 'HOME') }}/git/admin-logs/koopa-admin-secrets/backups/goa/current/exchange-offline/master.priv" diff --git a/configs/lab-local/mytops-local.toml b/configs/lab-local/mytops-local.toml new file mode 100644 index 0000000..57aa6e9 --- /dev/null +++ b/configs/lab-local/mytops-local.toml @@ -0,0 +1,6 @@ +# Drop-in values for mytops-admin-log config.toml [mytops-local] when running on koopa. +# Laptop lab keeps 8088; koopa lab uses 8288 (avoid 901x live GOA, 9080 nym, 9180 goa-regio-ng). + +[mytops-local] +base_url = "http://127.0.0.1:8288/" +forwarded_host = "127.0.0.1:8288" diff --git a/configs/ports.md b/configs/ports.md index 872d09c..52ca815 100644 --- a/configs/ports.md +++ b/configs/ports.md @@ -32,4 +32,6 @@ Git SSH needs separate NAT/firewall **9200/tcp** if exposed to WAN. | **9080** | podman **`koopa-nym`** HTTP API (mapped from container 8080; Tor keeps **8080**) | | **19000** | optional nym entry WS (gateway mode) | | **51822/udp** | optional nym WireGuard (dVPN path) | - +| **9180** | lab **`goa-regio-ng`** HTTP (loopback only; see `configs/lab-local/`) | +| **9322** | lab **`goa-regio-ng`** SSH/ansible (loopback only) | +| **8288** | lab **`mytops-local`** HTTP (loopback only) |