release 1.4.1: generic docs and canonical install path

Docs use generic ops/outside-runner wording; install path ~/src/taler-monitoring.
VERSION 1.4.1 patch on top of the 1.4.0 scheme release.
This commit is contained in:
Hernâni Marques 2026-07-18 21:49:53 +02:00
parent d2e0a28e5e
commit 4f092b90cc
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
15 changed files with 75 additions and 50 deletions

View file

@ -55,7 +55,7 @@ command -v qrencode zbarimg
---
## firecuda-external (macOS, outside-only timer)
## outside-runner (macOS, outside-only timer)
| Need | Notes |
|------|--------|

View file

@ -51,7 +51,7 @@ sibling `~/src/koopa/koopa-admin-secrets`.
### Local file (recommended on laptop)
```bash
cd ~/src/koopa/src/taler-monitoring
cd ~/src/taler-monitoring
cp secrets.env.example secrets.env # gitignored
$EDITOR secrets.env
./taler-monitoring.sh e2e
@ -387,5 +387,5 @@ If pages are missing publicly: `sudo ~/koopa-caddy/apply-monitoring-live.sh` on
## Version on monitoring pages (v1.3+ / sticky bar)
The sticky bar shows the suite **tag** (e.g. `v1.3.3`) and links to that tag on Forgejo.
The sticky bar shows the suite **tag** (e.g. `v1.4.1`) and links to that tag on Forgejo.
Planned **v1.4.0**: fuller L10n (fr-CH for FrancPaysan, de-CH for hacktivism/Taler CH).

View file

@ -163,7 +163,7 @@ Skip SPA block: `CHECK_WEBUI_SPA=0`.
| **`full`** | `urls inside versions sanity server e2e ladder auth401` |
```bash
cd ~/src/koopa/src/taler-monitoring
cd ~/src/taler-monitoring
# secrets.env with bank admin + merchant tokens (see secrets.env.example)
./taler-monitoring.sh -d hacktivism.ch full
# same, explicit:

View file

@ -1 +1 @@
1.4.0
1.4.1

View file

@ -3,21 +3,36 @@
Release history for the standalone **taler-monitoring** suite
(https://git.hacktivism.ch/hernani/taler-monitoring).
## Version scheme
Tags and `VERSION` use **MAJOR.FEATURE.FIX** (three components):
| Part | Meaning |
|------|---------|
| **MAJOR** | Breaking changes to CLI, layout, or host-agent contract |
| **FEATURE** | New capabilities (phases, HTML features, i18n packs, …) |
| **FIX** | Bugfixes and docs that do not add a feature |
Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.4.1`). File `VERSION` omits the `v` prefix.
| Tag | Date (UTC) | Notes |
|-----|------------|--------|
| **v1.3.4** | 2026-07-18 | **Bugfix:** summary line printed raw `$(i18n_text …)` instead of message; aptdeploy remote rsync path `src/src/…`; monpages detects merchant code 21 on any HTTP status + checks bare URLs (no trailing slash); host-agent logs expected public FQDNs. |
| **v1.3.3** | 2026-07-18 | **Docs/fix:** `VERSIONS.md` is git/suite only (no Android blob, no dead `koopa-admin-log` cadence paths); Android stays in `android-test/GUI-AUTOMATION-NOTES.md`. monpages in TESTS; README/host-agent/DEPENDENCIES cleanup. |
| **v1.3.2** | 2026-07-18 | **Bugfix:** drop remaining `koopa-admin-log` suite paths — host-agent/install, path unit, aptdeploy dedupe use **only** `~/src/taler-monitoring`. Reinstall systemd units. |
| **v1.4.0** | *planned* | **L10n** for user-facing outputs that need localization: **fr-CH** (FrancPaysan, Suisse romande) and **de-CH** (hacktivism / Taler CH German). Not implemented yet — after **1.3.x**. |
| **v1.3.1** | 2026-07-18 | **Bugfix:** silent skip when `DEPLOY_WWW_ROOT` not writable left public pages missing (merchant JSON code 21). **monpages** phase + host-agent post-check: verify monitoring HTML via **FQDN** (`https://<host>/monitoring/` etc.). |
| **v1.3** | 2026-07-18 | Sticky bar shows **suite version** and links to the Forgejo **tag** (`…/src/tag/vX.Y.Z`). (supersedes tag name **v1.3.0**) |
| **v1.2** | 2026-07-18 | Language selection: `--lang` / `TALER_MON_LANG` (en\|fr). |
| **v1.1** | 2026-07-18 | i18n chrome: English default; French for FrancPaysan. |
| **v1.0** / **v1** | 2026-07-18 | Initial standalone release (split from `koopa-admin-log`). |
| **v1.5.0** | *planned* | **L10n** packs for user-facing strings that need localization: **fr-CH** (FrancPaysan) and **de-CH** (hacktivism / Taler CH German). |
| **v1.4.1** | 2026-07-18 | **Docs/versioning:** canonical tree `~/src/taler-monitoring`; docs use generic ops/outside-runner wording (no client hostnames); tags always **MAJOR.FEATURE.FIX**. |
| **v1.3.4** | 2026-07-18 | Summary i18n, monpages code-21, aptdeploy rsync path. |
| **v1.3.3** | 2026-07-18 | GIT notes vs GUI notes; monpages in TESTS. |
| **v1.3.2** | 2026-07-18 | Suite paths only `~/src/taler-monitoring` (no admin-log suite tree). |
| **v1.3.1** | 2026-07-18 | monpages FQDN check + deploy no longer silent-skip. |
| **v1.3.0** | 2026-07-18 | Sticky bar suite version + Forgejo tag link. |
| **v1.2.0** | 2026-07-18 | Language selection: `--lang` / `TALER_MON_LANG` (en\|fr). |
| **v1.1.0** | 2026-07-18 | i18n chrome: English default; French for FrancPaysan. |
| **v1.0.0** | 2026-07-18 | Initial standalone release. |
## Sticky bar version (v1.3+)
Older short tags (`v1`, `v1.0`, `v1.1`, `v1.2`, `v1.3`) are obsolete; use the three-component tags above.
Generated HTML shows the installed release tag (e.g. `v1.3.1`) next to the host line.
## Sticky bar version (v1.3.0+)
Generated HTML shows the installed release tag (e.g. `v1.4.1`) next to the host line.
Clicking opens the tag page on Forgejo:
`https://git.hacktivism.ch/hernani/taler-monitoring/src/tag/<tag>`
@ -26,22 +41,22 @@ Resolved via `git describe --tags` after `update-suite.sh`, with fallback to the
## Public monitoring pages (v1.3.1+)
Host-agent must publish under `DEPLOY_WWW_ROOT` **and** Caddy must `handle` the paths.
Host-agent must publish under `DEPLOY_WWW_ROOT` **and** the reverse proxy must `handle` the paths.
If not, public FQDNs return merchant **JSON code 21**.
| Check | How |
|-------|-----|
| Phase | `./taler-monitoring.sh monpages` (or `pages`) |
| Auto | host-agent default phases include `monpages`; post-check after HTML write |
| URLs | `https://$MON_HOSTS$HTML_URL_OK` (e.g. `https://taler.hacktivism.ch/monitoring/`) |
| URLs | `https://$MON_HOSTS$HTML_URL_OK` |
Bug (fixed in 1.3.1): rsync to `/var/www/monitoring-sites` was **silently skipped** when not writable, so staging had pages but FQDNs never did. Now that is an **ERROR**, and monpages fails until live apply:
On the stack host (e.g. koopa), publish + Caddy handles:
```bash
sudo ~/koopa-caddy/apply-monitoring-live.sh
```
## Language (v1.2+)
## Language (v1.2.0+)
| Method | Example |
|--------|---------|
@ -49,11 +64,11 @@ sudo ~/koopa-caddy/apply-monitoring-live.sh
| Env | `TALER_MON_LANG=en` or `fr` |
| Auto | `*lefrancpaysan*` → fr, else en |
**Note:** Full locale packs (fr-CH / de-CH) for all check messages are scheduled for **v1.4.0**, not 1.3.x.
Full locale packs (fr-CH / de-CH) are scheduled for **v1.5.0**.
## Pin a release
```bash
git clone https://git.hacktivism.ch/hernani/taler-monitoring.git ~/src/taler-monitoring
cd ~/src/taler-monitoring && git checkout v1.3.4
cd ~/src/taler-monitoring && git checkout v1.4.1
```

View file

@ -116,7 +116,7 @@ GUI=1 ./run-android-build-and-smoke.sh
## Platform capability flags (planned + defaults)
Automation can run on hosts that support **Android only**, **GUI tooling only**
(conceptual), or **both**. Flags keep that explicit for CI and laptops.
(conceptual), or **both**. Flags keep that explicit for CI and workstations.
### Proposed env flags
@ -152,7 +152,7 @@ with **`-no-window`** and still keep **graphics logic** in the guest:
# or let smoke auto-start headless AVD when no phone is plugged in
STACK=goa ./run-android-gui-smoke.sh
# laptop: show the emulator window
# ops workstation: show the emulator window
WINDOWED=1 ./start-android-emulator.sh --wait
# or: EMULATOR_HEADLESS=0 EMULATOR_GPU=host ./start-android-emulator.sh --wait
```

View file

@ -104,7 +104,7 @@ Canonical notes (minimal variant, **flags**, Linux defaults):
```bash
# headless AVD only (default path for servers)
./start-android-emulator.sh --wait
# windowed (laptops)
# windowed (workstations with display)
WINDOWED=1 ./start-android-emulator.sh --wait
```

View file

@ -31,7 +31,7 @@ Thin wrappers only set stack defaults:
| `koopa-taler-deploy-test-apt-src-trixie-testing-upgrade` | **upgrade** for testing suite |
```bash
# from laptop / clementine → triggers on koopa-external
# from ops workstation → triggers on koopa-external
./host-agent/run-aptdeploy.sh
./host-agent/run-aptdeploy.sh upgrade
./host-agent/run-aptdeploy.sh fresh
@ -74,7 +74,7 @@ Runs **as user `hernani`** (systemd user, linger). **Primary** mode:
`podman exec` on this host into
`taler-hacktivism-bank` / `taler-hacktivism-exchange-ansible` / `taler-hacktivism`
(IDs `inside.host-*`, not `inside.ssh-*`).
From a **laptop**, leave `INSIDE_PODMAN` off → access mode **`ssh`** via `KOOPA_SSH`
From an **ops workstation**, leave `INSIDE_PODMAN` off → access mode **`ssh`** via `KOOPA_SSH`
(`inside.ssh-*`).
- Public **`urls` + `versions`** for the stack (`-d hacktivism.ch`).
- Writes console HTML for all three sites under
@ -109,7 +109,7 @@ mkdir -p ~/.config/taler-monitoring
cp ~/src/taler-monitoring/host-agent/env.example \
~/.config/taler-monitoring/env
# laptop:
# ops workstation:
./host-agent/install-host-agent.sh --remote koopa-external
# or on koopa:
@ -144,16 +144,16 @@ journalctl --user -u taler-monitoring-hacktivism.service -n 50 --no-pager
ls ~/monitoring-sites-staging/bank.hacktivism.ch/monitoring_err/
```
## Relation to firecuda outside-only timer
## Relation to optional outside-only timer
| | host-agent (koopa) | firecuda site-gen |
| | host-agent (koopa) | outside-runner site-gen |
|--|--------------------|-------------------|
| Access | **podman on host** | public HTTPS only |
| Phases | urls **inside** versions | urls versions |
| Trigger | software path + 4h | *could* launchd 4h |
| Primary for GOA | **yes** | **off** (optional only) |
**firecuda-external is not scheduled** right now (launchd disabled). Scripts under
**outside-runner is not scheduled** right now (launchd disabled). Scripts under
`site-gen/` can still one-shot a public run if needed; see `site-gen/README.md`.
No secrets required for default phases. `secrets.env` optional for e2e later.

View file

@ -5,7 +5,7 @@
# $EDITOR secrets.env
#
# Never commit secrets.env. Prefer file paths under koopa-admin-secrets
# for long-term storage; this file is for laptop one-shots / overrides.
# for long-term storage; this file is for workstation one-shots / overrides.
#
# Load order: env already set > secrets.env > SECRETS_ROOT files > SSH koopa

View file

@ -14,35 +14,37 @@ Applies to all nine fronts (GOA + FP stage + FP prod) in the default `SITES` lis
| Host | Role |
|------|------|
| **firecuda-external** | optional runner (public DNS) |
| **optional outside runner** (SSH alias via `FIRECUDA_SSH`) | optional runner (public DNS) |
| **koopa-external** | deploy staging + Caddy (root service) |
| **host-agents** | primary: GOA + FP on-box (`../host-agent/`) |
No secrets in `settings.conf` — only hosts, paths, site list.
## firecuda-external (outside-only) — **disabled for now**
## Optional outside runner (outside-only) — **disabled for now**
**firecuda-external could** run public-only monitoring (`SKIP_SSH=1`, phases
An **optional outside runner** could run public-only monitoring (`SKIP_SSH=1`, phases
`urls versions`) on a schedule (launchd every 4h) and write HTML under
`~/var/taler-monitoring-sites-work/html/`. Scripts for that still live here
(`install-firecuda-timer.sh`, `run-on-firecuda.sh`, plist template).
**Current policy: do not run a real launchd job on firecuda.**
**Current policy: do not run a real launchd job on the outside runner.**
Primary GOA monitoring is **koopa host-agent** (`host-agent/`, user `hernani`,
local `podman exec`). Re-enable firecuda only if you explicitly want a second,
local `podman exec`). Re-enable the outside runner only if you explicitly want a second,
outside-only view.
```bash
# optional one-shot (no timer):
# ssh firecuda-external '~/taler-monitoring-site-gen/site-gen/run-on-firecuda.sh'
# ssh "$FIRECUDA_SSH" # e.g. your outside-runner alias
# ssh "$FIRECUDA_SSH" '~/taler-monitoring-site-gen/site-gen/run-on-firecuda.sh'
# if a timer was installed earlier, ensure it is off:
# ssh firecuda-external 'launchctl list | grep taler-monitoring || echo off'
# ssh "$FIRECUDA_SSH" # e.g. your outside-runner alias
# ssh 'launchctl list | grep taler-monitoring || echo off # macOS outside runner'
```
Disabled plists may remain as `*.plist.disabled-*` under `~/Library/LaunchAgents/`.
## Quick start (laptop)
## Quick start (ops workstation)
```bash
cd site-gen

View file

@ -88,5 +88,5 @@ curl -sS https://bank.hacktivism.ch/monitoring_err/ | head
## Not needed as root
- Running `taler-monitoring` (use **firecuda-external** / laptop)
- Running `taler-monitoring` (use **optional outside runner** (SSH alias via `FIRECUDA_SSH`) / laptop)
- Writing into podman Taler containers

View file

@ -12,7 +12,11 @@ set -euo pipefail
ROOT=$(cd "$(dirname "$0")" && pwd)
MON_ROOT=$(cd "$ROOT/.." && pwd)
FIRECUDA="${FIRECUDA_SSH:-firecuda-external}"
FIRECUDA="${FIRECUDA_SSH:-}"
if [ -z "$FIRECUDA" ]; then
echo "Set FIRECUDA_SSH to your outside-runner SSH host alias" >&2
exit 2
fi
REMOTE_BASE="${FIRECUDA_INSTALL_DIR:-taler-monitoring-site-gen}"
RUN_NOW=0
[ "${1:-}" = "--run-now" ] && RUN_NOW=1

View file

@ -2,7 +2,11 @@
# pull-firecuda-to-koopa.sh — copy HTML from firecuda work dir → koopa staging
# Run on laptop (hernani) where both SSH aliases work.
set -euo pipefail
FIRECUDA="${FIRECUDA_SSH:-firecuda-external}"
FIRECUDA="${FIRECUDA_SSH:-}"
if [ -z "$FIRECUDA" ]; then
echo "Set FIRECUDA_SSH to your outside-runner SSH host alias" >&2
exit 2
fi
KOOPA="${DEPLOY_SSH:-koopa-external}"
REMOTE_HTML="${FIRECUDA_HTML:-var/taler-monitoring-sites-work/html/}"
STAGE="${DEPLOY_STAGING:-/home/hernani/monitoring-sites-staging}"

View file

@ -1,8 +1,8 @@
#!/usr/bin/env bash
# run-on-firecuda.sh — entrypoint for launchd/cron on firecuda-external.
# run-on-firecuda.sh — entrypoint for launchd/cron on outside-runner.
# Outside-only monitoring (SKIP_SSH=1), all 9 sites, then stage HTML to koopa.
#
# Installed path on firecuda (default):
# Installed path on outside-runner (default):
# ~/taler-monitoring-site-gen/site-gen/run-on-firecuda.sh
#
set -uo pipefail
@ -16,7 +16,7 @@ STAMP=$(date +%Y%m%d-%H%M%S)
LOG="$LOG_DIR/run-${STAMP}.log"
exec >>"$LOG" 2>&1
echo "======== $(date -Iseconds 2>/dev/null || date) firecuda monitoring sites ========"
echo "======== $(date -Iseconds 2>/dev/null || date) outside-runner monitoring sites ========"
# Always: public DNS only, no SSH checks into stacks
export SKIP_SSH=1
@ -39,7 +39,7 @@ chmod +x generate-monitoring-sites.sh deploy-monitoring-sites.sh console_to_html
./generate-monitoring-sites.sh
ec=$?
# HTML stays on firecuda under WORK_ROOT/html.
# HTML stays on outside-runner under WORK_ROOT/html.
# Optional push to koopa if this host can SSH there (often only from laptop):
if [ -n "${DEPLOY_SSH:-}" ] && [ "${DEPLOY_FROM_FIRECUDA:-0}" = "1" ]; then
if [ -x ./deploy-monitoring-sites.sh ]; then
@ -47,7 +47,7 @@ if [ -n "${DEPLOY_SSH:-}" ] && [ "${DEPLOY_FROM_FIRECUDA:-0}" = "1" ]; then
fi
else
echo "note: HTML at ${WORK_ROOT}/html — pull from laptop:"
echo " rsync -az firecuda-external:var/taler-monitoring-sites-work/html/ \\"
echo " rsync -az outside-runner:var/taler-monitoring-sites-work/html/ \\"
echo " koopa-external:monitoring-sites-staging/"
echo " # or: ./pull-firecuda-to-koopa.sh"
fi

View file

@ -2,8 +2,8 @@
# Copy: cp settings.conf.example settings.conf
# Never put passwords/tokens here.
# On firecuda the suite runs *locally* (RUNNER_SSH empty). From a laptop you
# can set RUNNER_SSH=firecuda-external to drive a one-off remote run instead.
# On an outside runner the suite runs *locally* (RUNNER_SSH empty). From a laptop you
# can set RUNNER_SSH=<outside-runner-ssh-alias> to drive a one-off remote run instead.
RUNNER_SSH=
RUNNER_SSH_FALLBACKS=
RUNNER_REMOTE_WORKDIR=/tmp/taler-monitoring-site-gen