Commit Graph
15703 Commits
Author SHA1 Message Date
kevinveenbirkenbach 4c4b00a0e9 Merge branch 'main' into feature/store-i18n
# Conflicts:
#	roles/update/README.md
#	roles/web-app-bluesky/templates/extra_locations.conf.j2
#	roles/web-app-opentalk/templates/nginx/extra.conf.j2
#	scripts/install/filesystem.sh
2026-10-22 10:57:53 +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
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
kevinveenbirkenbach eaec310b7a Merge branch 'main' into feature/store-i18n
# Conflicts:
#	roles/web-app-akaunting/TODO.md
#	roles/web-app-friendica/meta/volumes.yml
#	roles/web-app-fusiondirectory/TODO.md
#	roles/web-app-keycloak/TODO.md
#	roles/web-app-lam/meta/volumes.yml
#	roles/web-app-phpmyadmin/meta/volumes.yml
#	roles/web-app-pixelfed/meta/volumes.yml
#	scripts/docker/cache/package.sh
2026-10-22 07:59:04 +02:00
kevinveenbirkenbachandClaude Opus 5 a11714afeb chore(i18n): take the 88 translations the paused run produced
The run was stopped on the operator's word to free the GPU, after 25 catalogs.
What it had written stays: 88 msgstr filled across 26 core catalogs, with 90
translated-by marks, the two extra being entries whose mark was set as the run
ended.

Every file passes msgfmt -c. That is the check that matters for a killed run,
because an interrupted write leaves a syntax error rather than a short file,
the way 5790359cd0 found for docs/tr and docs/zh.

Two catalogs carry the open defect rather than translations: core/zh took 0 of
4 entries and core/ar 7 of 15, both on HTTP 422 from the gateway. Those entries
keep a refusal mark, so a later run picks them up again once the 422 is
understood.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-22 07:51:12 +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
kevinveenbirkenbachandClaude Opus 5 231b006a5a fix(web-app-moodle): put the cURL egress policy back where config.php reads it
The merge dc19615d62 inverted 1590ec2c6f. It took main's cfg.php task back and
dropped the two env lines that feed config.php, so config.php kept reading
MOODLE_EGRESS_BLOCKED_HOSTS from an environment that no longer carried it, and
moodle_env() throws on an unset name. Both Moodle jobs of run 39658756830 died
in install_database.php with rc 255:

    Fatal error: Uncaught RuntimeException: Required env var
    MOODLE_EGRESS_BLOCKED_HOSTS is not set in /var/www/html/config.php:11

The rescue bundle proves the absence rather than inferring it: env-lengths.txt
of web-app-moodle-stack lists all 44 variables the container received, and
none of the three the merge dropped is among them.

vars/main.yml gets MOODLE_EGRESS_ALLOWED_PORTS back, as the list main's
expression built, so the conditional LiteLLM port survives under the name the
template and config.php expect. MOODLE_EGRESS_SETTINGS and
MOODLE_EGRESS_NEWLINE go, because their only consumer was the cfg.php loop.

Dropping the egress entries from that loop is mandatory, not tidy, and
1590ec2c6f says why: a value set in config.php lands in
$CFG->config_php_settings, cfg.php then exits 4 with 'unable to change', and
the deploy aborts. Repairing env.j2 alone would have moved the failure one step
later. MOODLE_DEBUG_SETTINGS stays on the cfg.php path, which nothing in
config.php contests.

Values are unchanged. env.j2 joins with commas, moodle_env_lines splits on
/[\s,]+/ and rejoins with PHP_EOL, so both halves produce the byte-identical
string the removed task wrote.

What this restores is reach: the policy now holds for every replica and the
cron container on each request, not for the one replica the deploy touched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-22 07:43:44 +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