Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach e3a5b20c0d Merge pull request #1166 from infinito-nexus/fix/web-app-bigbluebutton/shared-notes-server
fix(web-app-bigbluebutton): run BBB v3.0.39 with the shared-notes server
2026-10-22 17:00:24 +02:00
kevinveenbirkenbachandClaude Opus 5.5 b83b361ea9 fix(web-app-bigbluebutton): run BBB v3.0.39 with the shared-notes server
The version-source update in #1146 moved the bigbluebutton/docker ref from
v3.0.23 to v3.0.39. That tag changes three things the role did not
handle, and it exposed a fourth defect in compose_file_args.

1. generate-compose renders etherpad and bbb-pads only behind
   USE_INSECURE_ETHERPAD and otherwise emits bbb-shared-notes-server with
   a `build:` block and no `image:` (upstream adds the image only after
   the tag, in 9a6a9a9a4c). compose_mods drops `build` only where an image
   is set, so the guard "Fail if any service still builds locally" stopped
   every BigBlueButton deploy (main run 39749899667, Nextcloud#11:
   `rc: 0`, `stdout: '    build:'`, bootstrap_compose_project.yml:35).
   meta/services.yml now pins alangecker/bbb-shared-notes-server:v3.0.39,
   compose_mods takes `pinned` (BBB_PINNED_SERVICES, every service the
   role config pins an image for) and drops their `build`, and the
   etherpad leftovers go (ep_redis_publisher patch, etherpad postgres
   entrypoint and initdb hook, etherpad database tasks, ETHERPAD_* env,
   etherpad_api_key secret).

2. The notes server connects to postgres once at start and exits with 2
   when it is not up yet; upstream gives it no restart policy. The
   override sets the role's restart policy, so it retries until postgres
   accepts connections.

3. Greenlight moves from v3.8.0 to v3.9.0.1, which sets
   `config.hosts = URL_HOST`, and the template passes
   `URL_HOST: https://${DOMAIN}`. Rails compares hostnames, so every
   request was blocked (`Blocked hosts: bbb.talk.infinito.test`, 403).
   Greenlight documents URL_HOST as the bare hostname; the override sets
   it to the role domain.

4. compose_file_args decided whether a role ships a compose override by
   templating "{{ application_id | abs_role_path_by_application_id }}"
   through the templar. ansible-core 2.21 does not render an untrusted
   string, so the check saw the literal and always returned False: the CA
   override generation and the pull handler never read BBB's
   compose.override.yml. That was harmless while compose.yml alone was
   valid; with the notes-server image living in the override, `compose
   config` failed ("has neither an image nor a build context"). The check
   now resolves the role path for the application id it is given. BBB is
   the only role that ships an override, so no other role's file list
   changes.

Existing installations drop the etherpad and bbb-pads containers on the
next `compose up --remove-orphans`; the old `etherpad` database stays in
PostgreSQL untouched.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 16:56:48 +02:00
kevinveenbirkenbach cbb29f898d Merge remote-tracking branch 'origin/main' into fix/security/swarm-ingress-guard/1089 2026-10-22 11:22:34 +02:00
kevinveenbirkenbach 16f6350aba Merge pull request #1149 from infinito-nexus/fix/update/dnf-stale-mirror-metadata
fix(update): refresh dnf metadata for real and retry once after a push race
2026-10-22 10:43:32 +02:00
kevinveenbirkenbach 2a9bce9813 Merge pull request #1151 from infinito-nexus/fix/update/centos-pin-master-mirror
fix(update): resolve CentOS Stream packages from mirror.stream.centos.org
2026-10-22 10:42:57 +02:00
kevinveenbirkenbach 11cf141696 Merge pull request #1156 from infinito-nexus/fix/web-app-prometheus/healthz-upstream-strips/1124
fix(proxy): strip upstream headers on every proxying location fragment
2026-10-22 10:42:11 +02:00
kevinveenbirkenbach 7ce7217213 Merge pull request #1152 from infinito-nexus/fix/tests/workspace-minimal-keeps-asset
fix(tests): keep the workspace minimal deploy off the public asset host
2026-10-22 10:41:12 +02:00
kevinveenbirkenbach 37a42e7964 Merge pull request #1150 from infinito-nexus/fix/update/version-source-image-exists
fix(update): pin only image tags the registry carries
2026-10-22 10:40:26 +02:00
kevinveenbirkenbachandClaude Opus 5.5 0986957e52 fix(proxy): strip upstream headers on every proxying location fragment
proxy_hide_header is replaced, not merged, by a location that sets its own,
so upstream_strips.conf.j2 only takes effect where a location includes it.
The health locations of web-app-prometheus (/healthz/ready, /_live_probe),
which every standard vhost includes, and the extra locations of
web-app-bluesky (/config, /ipcc) and web-app-opentalk (/v1/, /signaling,
/livekit) proxied without it, so X-Powered-By and the upstream's
Strict-Transport-Security leaked on those paths.

All seven locations now include the strips. A new lint checks every role
template without a server block, i.e. every fragment the front proxy
renders into a vhost, and fails on a proxying location that lacks them.
Templates with their own server block are app-internal nginx configs
behind such a location and stay out of scope.

Closes #1124

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 10:33:53 +02:00
kevinveenbirkenbach 03c85619f8 Merge remote-tracking branch 'origin/main' into fix/security/swarm-ingress-guard/1089 2026-10-22 10:31:27 +02:00
kevinveenbirkenbachandClaude Opus 5.5 ba9e51ae85 fix(tests): keep the workspace minimal deploy off the public asset host
compose/01_minimal.sh disabled every variable service of the dashboard,
asset included, and ran both matrix rounds; round 1 of web-app-dashboard
pins the asset provider off as well. Without web-svc-asset the dashboard
renders its logo and favicon from the public
https://file.infinito.nexus/assets, so the workspace test depended on
that host: while it does not answer, Playwright's no-console-noise spec
fails on `net::ERR_CONNECTION_REFUSED` for the logo (main run
39684179395, ubuntu and centos).

The test now keeps the asset provider out of the disable set and pins
round 0, so the dashboard serves its branding from the deployment's own
file service. Round 1 stays covered by the regular dashboard matrix.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 10:31:15 +02:00
kevinveenbirkenbachandClaude Opus 5.5 0f9bdca445 fix(install): refresh dnf metadata on every retried install
scripts/install/filesystem.sh retried `dnf install -y zfs` three times
against the same metadata during the Fedora image build of main run
39684179395 (XMPP#0): every attempt listed pcp-*-7.2.2-1.fc44, every
mirror answered 404, "Failed to download packages" after 3 attempts.

Each retried dnf install now runs with --refresh, so every attempt
resolves against freshly fetched metadata instead of repeating the one
that lists packages no mirror serves anymore.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 10:30:57 +02:00
kevinveenbirkenbachandClaude Opus 5.5 e7e3856b09 fix(update): match the dnf download failure by prefix
Under the dnf4 backend (CentOS) ansible.builtin.dnf reports
`Failed to download packages: <reason>` (module_utils/_embed/dnf.py),
under dnf5 (Fedora) the bare `Failed to download packages`. The exact
comparison re-raised the CentOS form instead of retrying. The rescue now
re-raises everything that does not start with that message.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 10:30:57 +02:00
kevinveenbirkenbachandClaude Opus 5.5 88d76aeea0 fix(update): resolve CentOS Stream packages from mirror.stream.centos.org
Since 2026-10-21 18:45Z part of the metalinks mirrors.centos.org hands
to CI runners still expects the previous BaseOS repomd.xml (sha512
bed4f4…) while every mirror and the master already serve the current one
(2f4550…). dnf then rejects every mirror ("checksum doesn't match",
"All mirrors were tried", Nextcloud#2, Nextcloud#10, Mattermost#1 in run
39684179395) or resolves BaseOS from a mirror still on the previous push
while AppStream is current ("nothing provides rpm = 4.19.1.1-27.el10
needed by rpm-build-4.19.1.1-27.el10", Baserow#0, Akaunting#0).

roles/update/files/centos_mirror.sh replaces every metalink of the
CentOS Stream repo files with the matching baseurl on
mirror.stream.centos.org and prints what it pinned. The Dockerfile runs
it before its first dnf call, so the dev and swarm-node images never
consult a metalink; roles/update reaches fedora.yml through a new
centos.yml that runs it first, so production hosts resolve against the
same source. The script is idempotent and prints nothing once every
section is pinned.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 10:30:38 +02:00
kevinveenbirkenbachandClaude Opus 5.5 c65c5ce48c fix(update): pin only image tags the registry carries
7e82ba6d71 moved web-app-bigbluebutton's bbb-pads to v1.5.11, the tag
https://raw.githubusercontent.com/bigbluebutton/docker/develop/repos/tags
names for the bbb-pads source. alangecker/bbb-docker-pads has no such
image (Docker Hub: newest v1.5.8), so every BigBlueButton deploy pulls a
missing tag and test-external fails "These pinned Docker images do not
exist in their registry (HTTP 404): web-app-bigbluebutton/bbb-pads".

bbb-pads goes back to v1.5.8. The version-source updater now knows the
image a `version` pin tags (pulled directly or as the base of a custom
build) and withholds a bump when the registry answers 404 for the new
tag; an indeterminate answer does not block it, the same line
test-external draws. Run against main, the updater now reports no
update for bbb-pads instead of v1.5.11.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 10:30:10 +02:00
kevinveenbirkenbachandClaude Opus 5.5 5d05e78a68 fix(update): refresh dnf metadata for real and retry once after a push race
Fedora deploys failed in `update (dnf)` with "Failed to download
packages": the node's metadata still listed builds the master had
already replaced, and every mirror answered 404 (#1138: less-704-4.fc44
four hours after the push; run 39684179395: OpenBao#0 swarm-mgr-01 and
Nextcloud#9, less-704-4 and ca-certificates-2026.2.90).

Two mechanisms lead there:

- Under dnf5, ansible.builtin.dnf's `update_cache: true` expires no
  repository: it queries the repos before loading them (0 available
  repos before create_repos_from_system_configuration, 16 after), so
  metadata already cached on the node stays in use until
  metadata_expire. An explicit `dnf makecache --refresh` now runs
  before the upgrade.
- A metalink can still hand out repodata from a mirror on the previous
  push. The upgrade now runs in a block whose rescue re-raises every
  other failure unchanged and, on exactly "Failed to download
  packages", runs `dnf clean metadata` and upgrades once more.

Fixes #1138

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 07:48:52 +02:00
kevinveenbirkenbach b37d57870e Merge pull request #1148 from infinito-nexus/update/docker-image-versions-web-app-snipe-it-20261022-2af6e84
update(images): update Docker image versions (web-app-snipe-it)
2026-10-22 07:34:47 +02:00
infinito-nexus-updater[bot] 935444c7f2 update(images): update Docker image versions (web-app-snipe-it) 2026-10-22 05:29:18 +00:00
kevinveenbirkenbach 7dc5479c69 Merge pull request #1147 from infinito-nexus/fix/web-app-dashboard/branding-wait-local-only
fix(web-app-dashboard): wait only for branding assets the deployment serves
2026-10-22 07:22:25 +02:00
kevinveenbirkenbachandClaude Opus 5.5 30d03287de fix(web-app-dashboard): wait only for branding assets the deployment serves
Without web-svc-asset in the inventory, services.asset.url falls back to
the public https://file.infinito.nexus/assets. The branding-asset wait
then matched the public logo and favicon and polled the project's public
website before the first compose start. Since that host stopped
answering on 2026-10-21, every deploy that disables the asset service
failed after 60 retries, among them the workspace compose track on main
(run 39684179395: ubuntu and centos, "Status code was -1 ... Errno 101
Network is unreachable" for file.infinito.nexus/assets/img/logo.png).

The slurp, the URL collection and the wait now run in one block guarded
by the dashboard's own services.asset.enabled, so the deploy waits only
for assets the shared file service of this deployment serves.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 07:18:51 +02:00
kevinveenbirkenbach 438b8329c7 Merge pull request #1146 from infinito-nexus/update/version-sources-web-app-bigbluebutton-20261022-0a01c81
update(versions): update pins with a declared source (web-app-bigbluebutton)
2026-10-22 06:57:40 +02:00
infinito-nexus-updater[bot] 7e82ba6d71 update(versions): update pins with a declared source (web-app-bigbluebutton) 2026-10-22 04:44:07 +00:00
kevinveenbirkenbach 6fbd51972a Merge pull request #1140 from infinito-nexus/update/docker-image-versions-web-app-bigbluebutton-20261021-1297cc6
update(images): update Docker image versions (web-app-bigbluebutton)
2026-10-22 06:42:49 +02:00
kevinveenbirkenbach aa6bc3cdc2 Merge pull request #1141 from infinito-nexus/update/docker-image-versions-web-app-fediwall-20261021-2fc4f5d
update(images): update Docker image versions (web-app-fediwall)
2026-10-22 06:41:52 +02:00
kevinveenbirkenbach a07b483e5a Merge pull request #1142 from infinito-nexus/update/docker-image-versions-web-app-littlejs-20261021-32e012d
update(images): update Docker image versions (web-app-littlejs)
2026-10-22 06:41:21 +02:00
kevinveenbirkenbach 9e0a25f3fd Merge pull request #1143 from infinito-nexus/update/docker-image-versions-web-app-nextcloud-20261021-6223fe5
update(images): update Docker image versions (web-app-nextcloud)
2026-10-22 06:40:58 +02:00
kevinveenbirkenbach 4274b092bf Merge pull request #1144 from infinito-nexus/update/docker-image-versions-web-app-taiga-20261021-5d1cfc6
update(images): update Docker image versions (web-app-taiga)
2026-10-22 06:40:26 +02:00
kevinveenbirkenbach 4720e21840 Merge pull request #1145 from infinito-nexus/update/docker-image-versions-web-svc-coturn-20261021-3b1b02e
update(images): update Docker image versions (web-svc-coturn)
2026-10-22 06:39:56 +02:00
infinito-nexus-updater[bot] 0cce2fbe6f update(images): update Docker image versions (web-svc-coturn) 2026-10-21 23:27:29 +00:00
infinito-nexus-updater[bot] 2e8b9e76bc update(images): update Docker image versions (web-app-taiga) 2026-10-21 23:27:25 +00:00
infinito-nexus-updater[bot] eb317dda51 update(images): update Docker image versions (web-app-nextcloud) 2026-10-21 23:27:20 +00:00
infinito-nexus-updater[bot] 9dd99062fc update(images): update Docker image versions (web-app-littlejs) 2026-10-21 23:27:15 +00:00
infinito-nexus-updater[bot] d86c21e403 update(images): update Docker image versions (web-app-fediwall) 2026-10-21 23:27:10 +00:00
infinito-nexus-updater[bot] 148274cc12 update(images): update Docker image versions (web-app-bigbluebutton) 2026-10-21 23:27:05 +00:00
kevinveenbirkenbach 6c401a693e Merge pull request #1136 from infinito-nexus/update/docker-image-versions-svc-ai-ollama-20261021-5ef88ff
update(images): update Docker image versions (svc-ai-ollama)
2026-10-22 01:09:19 +02:00
kevinveenbirkenbach 9646957cca Merge pull request #1137 from infinito-nexus/update/docker-image-versions-web-app-checkmk-20261021-23aabff
update(images): update Docker image versions (web-app-checkmk)
2026-10-22 01:08:46 +02:00
infinito-nexus-updater[bot] 762a3d624f update(images): update Docker image versions (web-app-checkmk) 2026-10-21 22:18:03 +00:00
infinito-nexus-updater[bot] 1ca0ce1916 update(images): update Docker image versions (svc-ai-ollama) 2026-10-21 22:17:57 +00:00
kevinveenbirkenbach b1b5ee96ca Merge pull request #1135 from infinito-nexus/fix/cache/raw-proxy-content-type
fix(cache): stop validating content types on the raw package proxies
2026-10-22 00:07:37 +02:00
kevinveenbirkenbachandClaude Opus 5.5 9041098c90 fix(cache): stop validating content types on the raw package proxies
The package cache creates every Nexus proxy with
strictContentTypeValidation. A raw proxy has no type contract, and Nexus
cannot type a GPG keybox: on a fresh cache it answers the Node.js release
keyring (raw.githubusercontent.com/nodejs/release-keys/.../pubring.kbx)
with 404 "Content type could not be determined". The Node.js installer
from #1108 fetches that keyring, so on main (run 39668792538) Workspace
debian:13 fails in `make install-lint`, and Workspace ubuntu, centos and
manjaro fail in `test-external`, whose URL check reaches the same file
through the cache.

The four raw proxies (raw-githubusercontent, raw-codeload-github,
raw-packagist, raw-alpine) now share the storage block with validation
switched off. Every typed proxy (apt, pypi, npm, helm, rubygems, go, yum)
keeps strict validation. The installer's integrity check does not depend
on Nexus: it verifies the SHASUMS file with gpgv and the tarball with
SHA-256.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 00:05:43 +02:00
kevinveenbirkenbach b44d5c7e20 Merge pull request #1128 from infinito-nexus/update/repository-refs-web-app-bluesky-20261021-c48c591
update(repos): bump git refs to latest semver tags (web-app-bluesky)
2026-10-21 22:30:48 +02:00
kevinveenbirkenbach c4e0b04331 Merge branch 'main' of github.com:infinito-nexus/core 2026-10-21 22:15:41 +02:00
infinito-nexus-updater[bot] 652c577489 update(repos): bump git refs to latest semver tags (web-app-bluesky) 2026-10-21 20:15:22 +00:00
kevinveenbirkenbach b30aec12ef Merge pull request #1118 from infinito-nexus/update/docker-image-versions-web-app-snipe-it-20261021-98aeafa
update(images): update Docker image versions (web-app-snipe-it)
2026-10-21 22:12:54 +02:00
kevinveenbirkenbach a9187e1fe1 Merge pull request #1117 from infinito-nexus/update/docker-image-versions-web-app-prometheus-20261021-e07fabc
update(images): update Docker image versions (web-app-prometheus)
2026-10-21 22:12:22 +02:00
kevinveenbirkenbach 2a867ede6f Merge pull request #1116 from infinito-nexus/update/docker-image-versions-svc-db-qdrant-20261021-a9d8f75
update(images): update Docker image versions (svc-db-qdrant)
2026-10-21 22:11:51 +02:00
kevinveenbirkenbach 29eaa44849 Release version 16.2.3 v16.2.3 2026-10-21 22:02:43 +02:00
infinito-nexus-updater[bot] 491fadd3c2 update(images): update Docker image versions (web-app-snipe-it) 2026-10-21 19:42:17 +00:00
infinito-nexus-updater[bot] 1835c38fbf update(images): update Docker image versions (web-app-prometheus) 2026-10-21 19:42:11 +00:00
infinito-nexus-updater[bot] d10b572239 update(images): update Docker image versions (svc-db-qdrant) 2026-10-21 19:42:03 +00:00