feat: add GoAlert Cloudron package (Monitoring) [#633]

Official-image wrapper of goalert/goalert 0.34.1 (digest-pinned),
single Go binary + postgresql only. Native generic OIDC wired from
the platform provider (GOALERT_OIDC_*), data-encryption key
persisted, optional first-admin basic auth. grind-stack verified:
full migration chain, serving, origin canonicalization correct.
18th package; category table reconciled to the 46-app set.
This commit is contained in:
2026-09-06 18:47:20 -05:00
parent 5ba4078133
commit b9bc032d2b
10 changed files with 269 additions and 27 deletions
+22 -20
View File
@@ -3,7 +3,8 @@
> **Human read-only. Agents maintain this file automatically after each work
> session.** Do not edit by hand — the next agent run will overwrite it.
>
> **Last updated:** 2026-09-06 by ZCode (GLM-5.3) — ConsulDemocracy packaged (17th; verified via grind lifecycle)
> **Last updated:** 2026-09-06 by ZCode (GLM-5.3) — GoAlert packaged (18th; rulings synced:
> GitUrlList 56→46, no-Node policy live)
> (#648, Infrastructure, 16th package); auth gate verdict: native OIDC via
> python-social-auth (OpenIdConnectAuth + SOCIAL_AUTH_OIDC_*) wired to the
> platform provider; official-image wrapper of netboxcommunity/netbox
@@ -13,14 +14,14 @@
## Current State: STABLE (packaging phase, ongoing)
Cloudron packaging pipeline is operational. 17 of ~57 upstream applications are
Cloudron packaging pipeline is operational. 18 of 46 remaining-set applications are
packaged, committed, and pushed. Packaging templates exist for the core
patterns. The gardening protocol (this file + AGENTS.md) keeps docs in sync.
All remaining apps now carry build tickets (#633-#678) under umbrella
[#632](https://projects.knownelement.com/issues/632) in Redmine project 55 —
ready for the sequential grind-driver pattern.
## Completed Packages (17)
## Completed Packages (18)
| # | Application | Category | Pattern | Port(s) | Addons |
|---|-------------|----------|---------|---------|--------|
@@ -56,7 +57,7 @@ GitUrlList pruned 56 → 46 accordingly.
| Ticket | App | Category | Flavor |
|--------|-----|----------|--------|
| #633 | GoAlert | Monitoring | GO: verify passed 2026-09-06, commit landing next |
| #633 | GoAlert | Monitoring | DONE 2026-09-06 (18th package, grind-verified) |
| #634 | Tirreno | Security | build (already live on Cloudron — verify packaging need) |
| #635 | Runme | Automation | pending service-story ruling (Go CLI runner, NOT node) |
| #636 | DataHub | Data-Management | build (heavy; disposition risk) |
@@ -105,27 +106,27 @@ Full write-ups of each pattern + challenges are in [`JOURNAL.md`](JOURNAL.md).
## Progress by Category
| Category | Apps | Packaged | Notes |
| Category | Apps | Packaged | Notes |
|----------|------|----------|-------|
| **API-Gateway** | 2 | 2/2 (100%) ✅ | Category complete |
| Development | 4 | 2/4 | reviewboard, puter done |
| **DevOps-Tools** | 1 | 1/1 (100%) ✅ | Category complete |
| **Development** | 2 | 2/2 (100%) ✅ | reviewboard, puter (autobom removed) |
| Documentation-Tools | 3 | 2/3 | wireviz-web, draw.io done |
| Low-Code | 3 | 1/3 | corteza done |
| Monitoring | 6 | 1/6 | healthchecks done |
| Automation | 4 | 1/4 | windmill done |
| Business-Apps | 8 | 1/8 | elabftw done |
| Low-Code | 2 | 1/2 | corteza done (openblocks removed) |
| Monitoring | 5 | 2/5 | healthchecks, goalert done (langfuse removed) |
| Automation | 3 | 1/3 | windmill done (huginn removed) |
| Business-Apps | 6 | 1/6 | elabftw done (midday removed) |
| Collaboration | 2 | 1/2 | consuldemocracy done |
| Communication | 1 | 0/1 | |
| Data-Management | 2 | 0/2 | |
| DevOps-Tools | 1 | 1/1 (100%) ✅ | fx done |
| Financial-Payments | 1 | 0/1 | |
| Financial-Trading | 1 | 0/1 | |
| Infrastructure | 6 | 5/6 | easy-gate, rathole, database-gateway, chirpstack, netbox done |
| Legal | 1 | 0/1 | |
| Project-Management | 1 | 0/1 | |
| Scientific-Computing | 2 | 0/2 | |
| Security | 5 | 0/5 | |
| System-Administration | 2 | 0/2 | |
| Data-Management | 2 | 0/2 | datahub, seatunnel |
| Security | 4 | 0/4 | tirreno, gophish, sniperphish, sat (comply removed) |
| System-Administration | 2 | 0/2 | mender, slurm |
| Scientific-Computing | 2 | 0/2 | boinc, jamovi |
| Financial-Payments | 1 | 0/1 | hyperswitch |
| Financial-Trading | 1 | 0/1 | nautilus (out-of-scope pending ruling) |
| Legal | 1 | 0/1 | docassemble |
| Project-Management | 1 | 0/1 | resgrid |
## Auth Status
@@ -134,7 +135,7 @@ Auth capability is a hard gate before packaging (see
LDAP acceptable (risk flag), 🔄 = auth-proxy (no users), ❌ = local-only
(unacceptable / blocked-on-auth).
### Completed packages (17)
### Completed packages (18)
| App | OIDC | LDAP | Verdict | Note |
|-----|------|------|---------|------|
@@ -155,6 +156,7 @@ LDAP acceptable (risk flag), 🔄 = auth-proxy (no users), ❌ = local-only
| eLabFTW | no | yes | ⚠️ risk (LDAP) | **Packaged**; no OIDC upstream (auth = local/SAML/LDAP per `src/Enums/AuthMethod.php`); `ldap` addon enabled, README maps `CLOUDRON_LDAP_*` → sysconfig LDAP panel — must be validated on the live Cloudron before production; SAML possible via external IdP |
| NetBox | yes | plugin | ✅ preferred | **Packaged**; python-social-auth OIDC (`REMOTE_AUTH_BACKEND=OpenIdConnectAuth` + `SOCIAL_AUTH_OIDC_*`) wired from `CLOUDRON_OIDC_*`; local Django login retained for admin bootstrap; SSO users register without privileges (README) |
| ConsulDemocracy | yes | no | ✅ preferred | **Packaged**; omniauth_openid_connect (discovery) wired into generated secrets.yml; `feature.oidc_login` auto-enabled on first boot when the provider is present (admin-panel toggle afterwards); SAML also available; local admin seeded |
| GoAlert | yes | no | ✅ preferred | **Packaged**; native generic OIDC (go-oidc, any issuer) wired via GOALERT_OIDC_* from the platform provider; new-user creation on; optional first-admin basic auth via GOALERT_ADMIN_USER/PASS; callback /api/v2/identity/providers/oidc/callback |
### Candidates researched