Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach d50ffbcdd2 Merge branch 'main' into fix/web-app-seaweedfs/anonymous-deny 2026-10-28 12:26:03 +01:00
kevinveenbirkenbach 7a9fb8a56a Merge pull request #1244 from infinito-nexus/fix/web-app-akaunting/swarm-setup-image
fix(web-app-akaunting): run the swarm setup job on the service's own image
2026-10-28 12:17:36 +01:00
kevinveenbirkenbach c8540b67d7 Merge branch 'main' into fix/web-app-akaunting/swarm-setup-image 2026-10-28 11:47:40 +01:00
kevinveenbirkenbachandClaude Opus 5.5 c76e1fb843 chore(web-app-akaunting): mark the role end of life
Set the akaunting lifecycle to eol: the updaters stop proposing bumps for
it and the CI deploy matrix leaves it out, as for the other eol roles.
The role keeps shipping for existing deployments. The root README overview
drops it, as it does for every eol role.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:47:38 +01:00
kevinveenbirkenbach 40c01e9102 Merge branch 'main' into update/repository-refs-web-app-discourse-20261027-e6a0fdd 2026-10-28 03:47:12 +01:00
kevinveenbirkenbach c412ed38e6 Merge branch 'main' into update/docker-image-versions-web-app-stalwart-20261026-f99d2b6 2026-10-28 03:46:55 +01:00
kevinveenbirkenbachandClaude Opus 5.5 4d9c3c1cfc refactor(web-app-stalwart): group the store SQL files and use the vars SPOT constant
- test_prefix_grouped_files: files/sql/store_database.sql and
  store_layout.sql become files/sql/store/database.sql and layout.sql.
- test_file_spot: test_store_guard.py builds the vars path with
  ROLE_FILE_VARS_MAIN instead of a hard-coded "vars" / "main.yml" chain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 03:46:55 +01:00
kevinveenbirkenbach 83284c8516 Merge branch 'main' into fix/web-app-seaweedfs/anonymous-deny 2026-10-28 03:46:41 +01:00
kevinveenbirkenbachandClaude Opus 5.5 6dde6458f5 refactor(web-app-seaweedfs): move the bucket task utils into a bucket/ folder
test_prefix_grouped_files rejects sibling files that share a delimiter-
bounded prefix: tasks/utils/bucket_list.yml and bucket_policy.yml become
tasks/utils/bucket/list.yml and policy.yml, and the includes follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 03:46:41 +01:00
kevinveenbirkenbach 093a0de828 Merge pull request #1240 from infinito-nexus/update/docker-image-versions-web-app-xwiki-20261027-2b043cc
update(images): update Docker image versions (web-app-xwiki)
2026-10-28 03:23:23 +01:00
kevinveenbirkenbachandClaude Opus 5.5 e66062be6c fix(web-app-discourse): drop the removed LlmModel#toggle_companion_user call
Discourse v2026.10.0 removed LlmModel#toggle_companion_user; bot users now
belong to AI agents (discourse/discourse 5e11656cae, "Gate AI bot user
provisioning on feature settings"). The AI gateway registration still
called it and failed with "undefined method 'toggle_companion_user' for an
instance of LlmModel" (PR #1239, Nextcloud#7).

The role does not need the companion user: verify.rb.j2 checks the binding
through LlmModel.enabled_chat_bot_ids, which v2026.10.0 still derives from
SiteSetting.ai_bot_enabled_llms, and the registration sets that setting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 03:18:47 +01:00
kevinveenbirkenbachandClaude Opus 5.5 e90bab5b66 fix(web-app-akaunting): run the swarm setup job on the service's own image
The akaunting service is built from the akaunting/docker repository
(ref master), whose Dockerfile downloads the latest Akaunting release into
/var/www/html, the shared data volume. Since 2026-10-26 that Dockerfile
builds on php:8.2, and Akaunting 3.3.0 (released 2026-10-27) requires
PHP >= 8.2.

The swarm setup job instead ran the upstream tag akaunting/akaunting:3.1.21
(PHP 8.1.34) against the same volume. It executed the 3.3.0 code there and
failed with "Ask your hosting provider to use PHP 8.2.0 or higher" (main
run 40507642995, Akaunting#0). Compose mode was unaffected because its
setup uses `compose run akaunting`, i.e. the built image.

Read the image from the service spec and start the setup job with it, so
code and runtime always come from the same build. Drop the now unused
AKAUNTING_IMAGE/AKAUNTING_VERSION vars.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 03:07:40 +01:00
kevinveenbirkenbach 7dfde987a0 Merge pull request #1243 from infinito-nexus/update/docker-image-versions-web-app-socialhome-20261028-bd8914d
update(images): update Docker image versions (web-app-socialhome)
2026-10-28 02:57:23 +01:00
kevinveenbirkenbach 28ebd28b85 Merge pull request #1242 from infinito-nexus/update/docker-image-versions-svc-ai-ollama-20261028-8e256f9
update(images): update Docker image versions (svc-ai-ollama)
2026-10-28 02:56:57 +01:00
infinito-nexus-updater[bot] f0382013f1 update(images): update Docker image versions (web-app-socialhome) 2026-10-28 01:55:24 +00:00
infinito-nexus-updater[bot] a6838f7a11 update(images): update Docker image versions (svc-ai-ollama) 2026-10-28 01:55:19 +00:00
kevinveenbirkenbach d80cf23755 Merge pull request #1241 from infinito-nexus/update/version-sources-web-app-hugo-20261027-2532404
update(versions): update pins with a declared source (web-app-hugo)
2026-10-28 02:54:48 +01:00
infinito-nexus-updater[bot] a0ef5e0c56 update(versions): update pins with a declared source (web-app-hugo) 2026-10-27 18:39:31 +00:00
infinito-nexus-updater[bot] 82af35f432 update(images): update Docker image versions (web-app-xwiki) 2026-10-27 18:30:38 +00:00
kevinveenbirkenbach 5812a2bbf2 Merge branch 'main' into update/repository-refs-web-app-discourse-20261027-e6a0fdd 2026-10-27 17:47:10 +01:00
kevinveenbirkenbach 66c120c613 Merge branch 'main' into update/docker-image-versions-web-app-stalwart-20261026-f99d2b6 2026-10-27 17:45:31 +01:00
kevinveenbirkenbachandClaude Opus 5.5 47060a72d3 fix(web-app-stalwart): register the WebUI OAuth client and harden the 0.16 store guard
Follow-up to the v1.0.0 port, closing holes a review and a local run found:

- WebUI sign-in: WebUI v2 sends an http:// client-metadata-document id
  on the onion origin, which Stalwart v1.0.0 rejects (unknown http ids
  get no CIMD fallback, trusted hosts require TLS). The recovery admin
  under SSO hit the same wall with the bare id 'stalwart-webui'. Register
  a public first-party x:OAuthClient 'stalwart-webui' with the WebUI's
  callback and login URIs on the served origin, and always inject it as
  the Application's oauthClientId. Native sign-in now shows Stalwart's
  consent step; test-login-native.js clicks it and also runs under SSO.
- Store guard: the previous guard only checked a running 0.16 server; a
  local run showed v1 writing into a 0.16 store whose server was stopped.
  The guard now reads the store whenever one exists (shared: pg_database,
  dedicated: volume) and fails on the 0.16 bigint layout. A host marker
  written at the end of a successful v1 deploy lets restores and
  redeploys with a stopped dedicated database pass; without the marker,
  a stopped dedicated database fails with an explicit message instead of
  a masked psql error. Queries retry while the database recovers.
- README: WebUI sign-in, guard semantics, restore and redeploy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:45:31 +01:00
kevinveenbirkenbach b8846d9942 Merge branch 'main' into fix/web-app-seaweedfs/anonymous-deny 2026-10-27 17:45:23 +01:00
kevinveenbirkenbachandClaude Opus 5.5 d18feb9dae fix(web-app-seaweedfs): converge the anonymous-read deny on every provider deploy
Follow-up to the bucket-policy deny, closing holes two reviews found:

- Scope: the policy was only applied during a consumer's own deploy, so a
  provider-only or partial deploy left other buckets without it. Every
  provider deploy now converges all existing consumer buckets, and a
  consumer's provisioning applies it right after creating the bucket.
- Ownership: our statement is identified by Sid DenyAnonymousRead; a
  public bucket loses only that statement, operator statements survive.
- Errors: only a 404 NoSuchBucketPolicy means "no policy"; any other
  status fails the read loudly.
- Credentials: curl expands the admin credential itself via --variable
  instead of --user "$VAR", which put it on curl's argv and in the
  host's ps.
- Curl runs through the repository's curl filter with timeouts, the
  read-only tasks run in check mode, and bucket names are parsed exactly
  instead of by substring.
- README: corrected embedded-mode authentication and documented the
  convergence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:45:22 +01:00
kevinveenbirkenbach f753134bed Merge pull request #1238 from infinito-nexus/update/docker-image-versions-web-app-matrix-20261027-5e3fcbe
update(images): update Docker image versions (web-app-matrix)
2026-10-27 17:27:03 +01:00
infinito-nexus-updater[bot] 0fbdc0e7cf update(repos): bump git refs to latest semver tags (web-app-discourse) 2026-10-27 16:26:49 +00:00
infinito-nexus-updater[bot] a8fba45d60 update(images): update Docker image versions (web-app-matrix) 2026-10-27 16:26:06 +00:00
kevinveenbirkenbach 26cfe69be5 Merge pull request #1236 from infinito-nexus/update/version-sources-web-app-n8n-20261027-b325d4b
update(versions): update pins with a declared source (web-app-n8n)
2026-10-27 16:45:55 +01:00
infinito-nexus-updater[bot] 9804ad47f7 update(versions): update pins with a declared source (web-app-n8n) 2026-10-27 12:58:16 +00:00
kevinveenbirkenbach 7c5000262c Merge pull request #1234 from infinito-nexus/update/docker-image-versions-web-app-checkmk-20261027-883c0bc
update(images): update Docker image versions (web-app-checkmk)
2026-10-27 13:56:53 +01:00
kevinveenbirkenbach 0e70d2fcde Merge pull request #1235 from infinito-nexus/update/docker-image-versions-web-app-openbao-20261027-4f842b0
update(images): update Docker image versions (web-app-openbao)
2026-10-27 13:56:35 +01:00
infinito-nexus-updater[bot] d1f5847f04 update(images): update Docker image versions (web-app-openbao) 2026-10-27 12:56:05 +00:00
infinito-nexus-updater[bot] bebb366bd5 update(images): update Docker image versions (web-app-checkmk) 2026-10-27 12:55:58 +00:00
kevinveenbirkenbach 5c550e3c11 Merge pull request #1232 from infinito-nexus/fix/web-app-nextcloud/context-agent-healthcheck
fix(web-app-nextcloud): probe the Context Agent without curl
2026-10-27 13:55:58 +01:00
kevinveenbirkenbach 3e85849aa8 Merge pull request #1230 from infinito-nexus/fix/web-app-seaweedfs/writeacp-grant
fix(web-app-seaweedfs): grant consumers WriteAcp on their bucket
2026-10-27 13:55:27 +01:00
kevinveenbirkenbachandClaude Opus 5.5 3b4ac40df5 fix(web-app-seaweedfs): deny unsigned reads on non-public consumer buckets
SeaweedFS 4.49+ honours a public-read object or bucket ACL on an unsigned
GET/HEAD/list even in a bucket the platform treats as private
(seaweedfs/seaweedfs#11605). Since consumers hold WriteAcp, an app could
expose objects through the public S3 API domain just by sending
x-amz-acl: public-read.

Put a bucket policy on every non-public consumer bucket that denies
s3:Get* and s3:List* to principal "*" when aws:username is null. SeaweedFS
evaluates that deny before any AllUsers grant; signed and presigned
requests carry an IAM user ARN, so aws:username is set and they are not
affected. Public buckets keep their anonymous Read grant, and a bucket
that turns public gets our deny lifted again. Embedded sidecars publish
no port and are left as they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 13:46:17 +01:00
kevinveenbirkenbachandClaude Opus 5.5 c75648ccdd fix(web-app-stalwart): port the role to server v1.0.0 and guard 0.16 stores
Stalwart v1.0.0 rejects unknown JMAP properties ("Invalid property" ->
notCreated/notUpdated), validates OIDC tokens more strictly and refuses to
open a data store from before 1.0. Port the role and protect existing
installs:

- Milter: hostname/timeoutConnect/timeoutCommand/timeoutData become
  host/connectTimeout/commandTimeout/dataTimeout; the existing milter is
  looked up by host.
- Onion relay route: address becomes host.
- OIDC directory: requireAudience is gone. Set skipAudienceValidation and
  unscopedTokens=interoperable on create and update, so Keycloak tokens
  (no Stalwart audience, no mail scope) keep working for the WebUI and
  Roundcube XOAUTH2.
- WebUI: send oauthClientId only with SSO enabled; without SSO the WebUI
  falls back to its own client metadata document.
- Store guard: before anything changes, a running Stalwart whose table u
  still has the 0.16 bigint layout stops the deploy and points to the
  stalwart-migrate steps, which the README now documents under
  "Upgrading from 0.16".
- Updater: pin the WebUI git_tags source to v2.* to match server 1.x.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 13:46:08 +01:00
kevinveenbirkenbachandClaude Opus 5.5 b17807faa3 fix(web-app-nextcloud): probe the Context Agent without curl
Context Agent 2.10.0 (bumped in #1219) moved to a multi-stage image whose
runtime stage ships no curl ("no vim, no git, no curl, no pipx/poetry",
nextcloud/context_agent Dockerfile at v2.10.0). The curl healthcheck then
fails with `exec: "curl": executable file not found in $PATH`, the task
never leaves `starting`, and the swarm converge wait gives up on
nextcloud_context_agent (main run 40401200083, Nextcloud#2).

Switch to the http_status flavor, which speaks HTTP over bash's
/dev/tcp and still requires a 2xx/3xx answer from /heartbeat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 13:35:30 +01:00
kevinveenbirkenbachandClaude Opus 5.5 f47233b0a3 fix(web-app-stalwart): bump WebUI to v2.0.0 with server v1.0.0 and set its OAuth client
Stalwart server v1.0.0 and WebUI v2.0.0 only work as a pair:

- WebUI v2.0.0 declares minServerVersion 1.0.0.
- Server v1.0.0 rejects a bundle without the manifest that only WebUI 2.x
  ships ("Application bundle does not contain a manifest").

The separate bumps in #1227 (server only) and #1223 (WebUI only) were
each broken on their own, so this commit carries both.

WebUI v2.0.0 also dropped the hardcoded 'stalwart-webui' fallback client
id. Without an oauth-client-id meta tag (or CIMD support at the IdP) it
shows "Sign-in is not configured" and never redirects. That is the
test-sso.js failure in Jenkins#0 of #1223. Set the Application record's
oauthClientId to the configured Keycloak client so the server injects the
meta tag on unpack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 09:59:51 +01:00
kevinveenbirkenbachandClaude Opus 5.5 ec7d4c9042 fix(web-app-seaweedfs): grant consumers WriteAcp on their bucket
SeaweedFS 4.49 (seaweedfs/seaweedfs#11592) authorizes a PutObject that
carries x-amz-acl as s3:PutObjectAcl as well. The consumer identities
only held Read/Write/List/Tagging, so every app that sends an ACL on
upload (Nextcloud, Fider and Pixelfed with private, Mastodon, PeerTube,
BookWyrm and Baserow with public-read) got AccessDenied after the 4.48 -> 4.51
bump in #1226. Main run 40401200083 failed Fider#0, BookWyrm#0,
Baserow#0, Pixelfed#0 and Nextcloud#0/#4/#8 on it.

Add WriteAcp to the s3.json identities and to the sidecar s3.configure
grant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 09:28:11 +01:00
kevinveenbirkenbach 0e17a90893 Merge branch 'main' into update/docker-image-versions-web-app-stalwart-20261026-f99d2b6 2026-10-26 22:42:41 +01:00
kevinveenbirkenbach 039505d757 Merge pull request #1229 from infinito-nexus/update/docker-image-versions-web-app-opentalk-20261026-b55a184
update(images): update Docker image versions (web-app-opentalk)
2026-10-26 22:04:14 +01:00
kevinveenbirkenbach 575c97de0c Merge pull request #1228 from infinito-nexus/dependabot/npm_and_yarn/npm_and_yarn-571e357d2d
build(deps-dev): Bump fast-uri from 3.1.8 to 3.1.9 in the npm_and_yarn group across 1 directory
2026-10-26 22:02:08 +01:00
kevinveenbirkenbach 9ac915bb02 Merge pull request #1226 from infinito-nexus/update/docker-image-versions-web-app-seaweedfs-20261026-fb7db50
update(images): update Docker image versions (web-app-seaweedfs)
2026-10-26 22:01:30 +01:00
kevinveenbirkenbach 82eb5beb12 Merge pull request #1225 from infinito-nexus/update/docker-image-versions-web-app-penpot-20261026-61e9114
update(images): update Docker image versions (web-app-penpot)
2026-10-26 22:00:55 +01:00
kevinveenbirkenbach 5fb28429f5 Merge pull request #1224 from infinito-nexus/update/docker-image-versions-web-app-peertube-20261026-6ca7492
update(images): update Docker image versions (web-app-peertube)
2026-10-26 21:59:48 +01:00
infinito-nexus-updater[bot] 733d8ef5a9 update(images): update Docker image versions (web-app-opentalk) 2026-10-26 20:59:21 +00:00
kevinveenbirkenbach 0f97b46460 Merge pull request #1222 from infinito-nexus/update/version-sources-web-app-n8n-20261026-2901c4f
update(versions): update pins with a declared source (web-app-n8n)
2026-10-26 21:59:15 +01:00
kevinveenbirkenbach d80e1f5272 Merge pull request #1221 from infinito-nexus/update/docker-image-versions-web-app-opentalk-20261026-b55a184
update(images): update Docker image versions (web-app-opentalk)
2026-10-26 21:58:56 +01:00
kevinveenbirkenbach da91c740ba Merge pull request #1220 from infinito-nexus/update/docker-image-versions-web-app-openbao-20261026-2641f50
update(images): update Docker image versions (web-app-openbao)
2026-10-26 21:58:34 +01:00