Repository navigation
Added
- Multi-tenancy foundation (single tenant for now, nothing to configure):
tenants, providers and sites;tenant_idon every tenant-owned table and
every ClickHouse row; a fail-closed tenant filter on all database access;
tenant memberships as the source of roles; per-tenant settings, caches,
WebSocket/SSE fan-out and notifications; per-tenant fair scheduling of the
check jobs. See docs/specs/2026-10-10-multi-tenancy-design.md. - A gating tenant-isolation test suite that walks every API route and every
tenant job with two tenants (SQLite and PostgreSQL with RLS on); new routes
must be classified there. - linux/arm64 release images are back: every image is a multi-arch manifest
list (linux/amd64 + linux/arm64), built per platform on native GitHub
runners instead of QEMU. Signatures and attestations cover the manifest
list. The attached offline bundle stays amd64; build an arm64 one with
scripts/make-offline-bundle.sh --platform linux/arm64. - PostgreSQL row-level security as the second tenant-isolation layer
(NODEGLOW_RLS), with a separate app database user (POSTGRES_APP_USER,
POSTGRES_APP_PASSWORD). New installs frominstall.shget both; existing
installs are unchanged until switched (docs/OPERATIONS.md, "Row-level
security"). Migrations run on the owner connection (DATABASE_OWNER_URL,
aliasMIGRATION_DATABASE_URL, defaultDATABASE_URL).
Changed
- Ping history retention now takes effect. "Ping history (days)" was
stored but ignored: ClickHouse kept every ping result for its fixed 30-day
TTL. The nightly cleanup now deletes a tenant's ping results older than the
configured value. Installs that set a value below 30 lose the older ping
history at the first cleanup after the upgrade; the default (30) changes
nothing. Values above 30 cannot be honoured (the table keeps 30 days) and
the setting is now limited to 1-30. - ClickHouse tables carry a tenant id (multi-tenancy). Existing rows belong to
the default tenant; a background job rebuilds each table once so the tenant
leads its sort key (needs free disk of about twice the table's size; the
old copy is kept for 24 h). - Frontend build tooling moved to Tailwind CSS 4 (CSS-first
@themein
frontend/src/app/globals.cssinstead oftailwind.config.ts, PostCSS via
@tailwindcss/postcss). The UI looks the same (pixel-compared in dark and
light at desktop and phone width). This clears the remainingnpm audit
findings of the dev toolchain (braces, micromatch, postcss-selector-parser
via Tailwind 3; braces via@next/eslint-plugin-next's fast-glob, now
overridden with tinyglobby), and CI now fails on high findings in build
tooling too. - If you override
DATABASE_URL(e.g. in docker-compose.override.yml) and
enable a separate app user, also setDATABASE_OWNER_URL; otherwise the
migrations would target the bundleddb. The backend logs an error when
the two URLs name different databases.
Fixed
- Syslog lost its host mapping and allowlist after the tenancy schema
upgrade (2026-10-11 hotfix). - Backup/restore routes are installation-operator only; previously any tenant
admin could export or replace the whole installation. - System status listed expiring certificates of other tenants; host parents,
alert-rule sources and SNMP credentials could reference another tenant's
objects; twelve routes accepted foreign ids. - Backup restore on PostgreSQL (sequence reset and timestamp handling).
- PostgreSQL: backup export skipped every table after the dropped legacy
tableping_results, a restore of such an export failed, and
/api/system/statuslost its later sections for the same reason.
Install
curl -fsSLO https://github.com/jubacCH/Nodeglow/releases/download/v2.0.0/install.sh
sudo sh install.sh --version 2.0.0Images (linux/amd64 + linux/arm64, cosign-signed, SBOM + provenance):
ghcr.io/jubacch/nodeglow-backend:2.0.0ghcr.io/jubacch/nodeglow-backend-community:2.0.0ghcr.io/jubacch/nodeglow-frontend:2.0.0ghcr.io/jubacch/nodeglow-updater:2.0.0
Air-gapped: nodeglow-2.0.0-offline-amd64.tar.gz → sh install.sh --offline <bundle>; for arm64 build it with scripts/make-offline-bundle.sh --version 2.0.0 --platform linux/arm64.
Verify downloads and images: docs/INSTALL.md.