Files
computer-playbook/roles/web-app-mobilizon/meta/services.yml
kevinveenbirkenbachandClaude Opus 5.5 7595d150a7 fix(web-app-mobilizon): patch four migrations for PostgreSQL 18
Every fresh Mobilizon deploy on PostgreSQL 18 died in migration
20190806131306. Four migrations drop the integer id column, add a uuid id
without NOT NULL and declare it the primary key in the same ALTER TABLE.
PostgreSQL 18 rejects that with 42P16 "primary key column "id" is not
marked NOT NULL", PostgreSQL 17 accepted it. The container exited 1 and
restarted in a loop, in compose and in swarm.

Upstream fixed it for 5.3.0 by adding null: false to that line in the four
migrations. No published image carries the fix yet, so the role builds its
own image on top of the pinned upstream one and applies the same one-line
change to the same four files.

The build fails once a base image no longer contains the unfixed line and
names the migration, so the patch cannot outlive its reason unnoticed.
TODO.md lists what to delete then.

Closes #779

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-04 16:57:26 +02:00

86 lines
2.5 KiB
YAML

---
# nocheck: seaweedfs-playwright, seaweedfs-required — Mobilizon (mainline, incl. 5.2.3) ships only Mobilizon.Web.Upload.Uploader.Local (no ex_aws/Uploader.S3 backend per upstream docs), so uploads cannot be routed to the object store and no S3 write surface exists to drive
sso:
bond: 1
enabled: "{{ 'web-app-keycloak' in group_names }}"
shared: "{{ 'web-app-keycloak' in group_names }}"
flavor: oidc
logout:
bond: 1
enabled: "{{ 'web-svc-logout' in group_names }}"
shared: "{{ 'web-svc-logout' in group_names }}"
dashboard:
bond: 1
enabled: "{{ 'web-app-dashboard' in group_names }}"
shared: "{{ 'web-app-dashboard' in group_names }}"
matomo:
bond: 1
enabled: "{{ 'web-app-matomo' in group_names }}"
shared: "{{ 'web-app-matomo' in group_names }}"
email:
bond: 1
enabled: "{{ MAIL_PROVIDER in group_names }}"
shared: "{{ MAIL_PROVIDER in group_names }}"
postgres:
bond: 1
enabled: true # nocheck: dynamic-flag
shared: "{{ 'svc-db-postgres' in group_names }}"
extensions:
- postgis
- pg_trgm
- unaccent
mobilizon:
healthcheck:
flavor: curl
modes:
compose:
enabled: true
swarm:
enabled: true
image: docker.io/kaihuri/mobilizon
name: mobilizon
version: 5.2.4
custom: true
min_storage: 825MB
titel: Mobilizon on {{ DOMAIN_PRIMARY | upper }}
ports:
local:
http: 8043
internal:
http: 4000
run_after:
- web-app-matomo
- web-app-keycloak
- web-app-stalwart
- web-app-mailu
lifecycle: beta
cpus: "0.2"
mem_reservation: 128m
mem_limit: 256m
pids_limit: 256
# nocheck: dynamic-flag — seaweedfs intentionally disabled; Mobilizon has no S3 upload backend
seaweedfs:
enabled: false
shared: false
css:
bond: 1
enabled: "{{ 'web-svc-css' in group_names }}"
shared: "{{ 'web-svc-css' in group_names }}"
prometheus:
bond: 1
enabled: "{{ 'web-app-prometheus' in group_names }}"
shared: "{{ 'web-app-prometheus' in group_names }}"
# nocheck: playwright-service-flag
# nocheck: variants-coverage — sso-variant-tor requires the onion on in every variant, so the false polarity has no variant left to live in
tor:
bond: 0.5
enabled: "{{ 'svc-net-tor' in group_names }}"
shared: true # nocheck: dynamic-flag
# nocheck: dynamic-flag — seaweedfs intentionally disabled; Mobilizon has no S3 upload backend
# nocheck: playwright-service-flag, dynamic-flag infrastructure backup consumer
container_backup: # nocheck: bond-baseline backup host joins outside the variant topology
bond: 1
enabled: "{{ 'svc-bkp-volume-2-local' in group_names }}"
shared: true