add SOGo (calendar/contacts) and a two-instance postgres model #112

Merged
lament merged 1 commit from sogo-cal into main 2026-07-25 18:11:56 -05:00
Owner

cal.lament.gay - SOGo webmail/calendar/contacts/dav on verdandi.

  • postgres role splits into postgres.identity (verdandi) / postgres.apps (minerva). enableTCPIP + a WG-scoped pg_hba rule so a tenant can live off-host; sogo is an identity tenant
  • caddy generator gains two hooks: proxyConfig (splices into the generated reverse_proxy, for sogod's x-webobjects-*) and assets (serves a package off the edge - sogod 404s its own css/js). pkgs.sogo-webresources copies the tree out to drop references: 51M vs pkgs.sogo's 2.3G closure
  • auth is LDAP-bind. OIDC was tried and backed out - SOGo holds no user password under OIDC and hands IMAP the raw keycloak access token, and this build has no XOAUTH2. keycloak's sogo client stays registered but inert
  • managesieve on athena for server-side filters, reached over WG. mailserver.stateVersion 4 -> 5 is the assertion gating it; nothing to migrate
`cal.lament.gay` - SOGo webmail/calendar/contacts/dav on verdandi. - postgres role splits into `postgres.identity` (verdandi) / `postgres.apps` (minerva). `enableTCPIP` + a WG-scoped `pg_hba` rule so a tenant can live off-host; sogo is an `identity` tenant - caddy generator gains two hooks: `proxyConfig` (splices into the generated `reverse_proxy`, for sogod's `x-webobjects-*`) and `assets` (serves a package off the edge - sogod 404s its own css/js). `pkgs.sogo-webresources` copies the tree out to drop references: 51M vs `pkgs.sogo`'s 2.3G closure - auth is LDAP-bind. OIDC was tried and backed out - SOGo holds no user password under OIDC and hands IMAP the raw keycloak access token, and this build has no XOAUTH2. keycloak's `sogo` client stays registered but inert - managesieve on athena for server-side filters, reached over WG. `mailserver.stateVersion` 4 -> 5 is the assertion gating it; nothing to migrate
add SOGo (calendar/contacts) and generalize the postgres role into two named instances
Some checks failed
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Failing after 2m16s
CI / dry-activate (pull_request) Has been skipped
31c01a9d55
SOGo lands as a directory-driven web service (verdandi backend): OIDC login
against keycloak for the webmail UI, LDAP-bound Basic auth for CalDAV/CardDAV
(no DAV client speaks OAuth redirect flows, so this is the ceiling anywhere,
not a SOGo shortfall), IMAP/SMTP against athena's mailserver. Caddy proxies
straight to sogod - nginx (the upstream module's own vhost) never actually
starts.

The postgres role stops being an untyped bool and becomes two named shared
instances (`identity` on verdandi, `apps` on minerva) addressed via the
existing roleHost path mechanism, with TCP + pg_hba scoped to the WG subnet
so a consumer doesn't have to be same-host as its backing db.
lament force-pushed sogo-cal from 31c01a9d55
Some checks failed
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Failing after 2m16s
CI / dry-activate (pull_request) Has been skipped
to cd9bbc1397
Some checks failed
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
2026-07-25 12:47:17 -05:00
Compare
lament force-pushed sogo-cal from cd9bbc1397
Some checks failed
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
to b304f0b998
All checks were successful
CI / check (pull_request) Successful in 51s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m19s
CI / dry-activate (pull_request) Successful in 30s
2026-07-25 12:49:32 -05:00
Compare
lament force-pushed sogo-cal from b304f0b998
All checks were successful
CI / check (pull_request) Successful in 51s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m19s
CI / dry-activate (pull_request) Successful in 30s
to 04bd58500d
All checks were successful
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m7s
CI / dry-activate (pull_request) Successful in 28s
2026-07-25 12:56:45 -05:00
Compare
lament force-pushed sogo-cal from 04bd58500d
All checks were successful
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m7s
CI / dry-activate (pull_request) Successful in 28s
to 8e86a3500e
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m9s
CI / dry-activate (pull_request) Successful in 24s
2026-07-25 13:01:40 -05:00
Compare
lament force-pushed sogo-cal from 8e86a3500e
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m9s
CI / dry-activate (pull_request) Successful in 24s
to 234be5395f
All checks were successful
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m9s
CI / dry-activate (pull_request) Successful in 24s
2026-07-25 13:46:40 -05:00
Compare
lament force-pushed sogo-cal from 234be5395f
All checks were successful
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m9s
CI / dry-activate (pull_request) Successful in 24s
to 22ced032cc
Some checks failed
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
2026-07-25 13:50:28 -05:00
Compare
lament force-pushed sogo-cal from 22ced032cc
Some checks failed
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
to b8d9491224
All checks were successful
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m11s
CI / dry-activate (pull_request) Successful in 39s
2026-07-25 13:52:37 -05:00
Compare
lament force-pushed sogo-cal from b8d9491224
All checks were successful
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m11s
CI / dry-activate (pull_request) Successful in 39s
to 8d87f495ec
All checks were successful
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m16s
CI / dry-activate (pull_request) Successful in 24s
2026-07-25 13:56:44 -05:00
Compare
lament force-pushed sogo-cal from 8d87f495ec
All checks were successful
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m16s
CI / dry-activate (pull_request) Successful in 24s
to 6bebe64a1d
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m5s
CI / dry-activate (pull_request) Successful in 25s
2026-07-25 14:15:32 -05:00
Compare
lament force-pushed sogo-cal from 6bebe64a1d
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m5s
CI / dry-activate (pull_request) Successful in 25s
to d187c35347
Some checks failed
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
2026-07-25 14:39:03 -05:00
Compare
lament force-pushed sogo-cal from d187c35347
Some checks failed
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
to f287e0e15c
Some checks failed
CI / check (pull_request) Successful in 53s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m6s
CI / dry-activate (pull_request) Has been cancelled
2026-07-25 14:41:29 -05:00
Compare
lament force-pushed sogo-cal from f287e0e15c
Some checks failed
CI / check (pull_request) Successful in 53s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m6s
CI / dry-activate (pull_request) Has been cancelled
to 2a8c56bf17
All checks were successful
CI / check (pull_request) Successful in 51s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m1s
CI / dry-activate (pull_request) Successful in 29s
2026-07-25 14:44:54 -05:00
Compare
lament force-pushed sogo-cal from 2a8c56bf17
All checks were successful
CI / check (pull_request) Successful in 51s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m1s
CI / dry-activate (pull_request) Successful in 29s
to 129d34872f
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m4s
CI / dry-activate (pull_request) Successful in 25s
2026-07-25 15:03:39 -05:00
Compare
lament force-pushed sogo-cal from 129d34872f
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m4s
CI / dry-activate (pull_request) Successful in 25s
to c3da118fa4
All checks were successful
CI / check (pull_request) Successful in 1m2s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m22s
CI / dry-activate (pull_request) Successful in 35s
2026-07-25 15:31:17 -05:00
Compare
lament force-pushed sogo-cal from c3da118fa4
All checks were successful
CI / check (pull_request) Successful in 1m2s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m22s
CI / dry-activate (pull_request) Successful in 35s
to 50e44314b7
All checks were successful
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m17s
CI / dry-activate (pull_request) Successful in 35s
2026-07-25 15:38:24 -05:00
Compare
lament force-pushed sogo-cal from 50e44314b7
All checks were successful
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m17s
CI / dry-activate (pull_request) Successful in 35s
to e5250ed190
All checks were successful
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m10s
CI / dry-activate (pull_request) Successful in 29s
2026-07-25 15:46:54 -05:00
Compare
lament force-pushed sogo-cal from e5250ed190
All checks were successful
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m10s
CI / dry-activate (pull_request) Successful in 29s
to 631d06a3ee
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m6s
CI / dry-activate (pull_request) Successful in 28s
2026-07-25 15:57:21 -05:00
Compare
lament force-pushed sogo-cal from 631d06a3ee
All checks were successful
CI / check (pull_request) Successful in 52s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m6s
CI / dry-activate (pull_request) Successful in 28s
to a5a31db570
All checks were successful
CI / check (pull_request) Successful in 53s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m14s
CI / dry-activate (pull_request) Successful in 25s
2026-07-25 16:01:40 -05:00
Compare
lament force-pushed sogo-cal from a5a31db570
All checks were successful
CI / check (pull_request) Successful in 53s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m14s
CI / dry-activate (pull_request) Successful in 25s
to e58f686bfd
Some checks failed
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
2026-07-25 16:25:28 -05:00
Compare
lament force-pushed sogo-cal from e58f686bfd
Some checks failed
CI / check (pull_request) Successful in 54s
CI / deploy (pull_request) Has been skipped
CI / dry-activate (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
to 0a27b4d9a7
All checks were successful
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m18s
CI / dry-activate (pull_request) Successful in 26s
2026-07-25 16:28:55 -05:00
Compare
lament force-pushed sogo-cal from 0a27b4d9a7
All checks were successful
CI / check (pull_request) Successful in 56s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m18s
CI / dry-activate (pull_request) Successful in 26s
to 69d93eb867
All checks were successful
CI / check (pull_request) Successful in 55s
CI / deploy (pull_request) Has been skipped
CI / build (pull_request) Successful in 2m13s
CI / dry-activate (pull_request) Successful in 35s
CI / check (push) Has been skipped
CI / build (push) Has been skipped
CI / dry-activate (push) Has been skipped
CI / deploy (push) Successful in 2m57s
2026-07-25 18:06:46 -05:00
Compare
lament merged commit 69d93eb867 into main 2026-07-25 18:11:56 -05:00
lament deleted branch sogo-cal 2026-07-25 18:11:57 -05:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
lament/pantheon!112
No description provided.