feat: Traefik ingress, optional Lets Encrypt, configurable port bind, slot numbers from hostnames #12

Merged
igor merged 1 commits from feat/traefik-optional-le-port-bind-slot-numbers into main 2026-10-09 14:32:43 +00:00
Owner

Bundled changes, one branch per plan:

  • Traefik-native ingress (per-instance Middleware, 50 MiB request cap) alongside the existing ingress-nginx support; cert-manager is kept
  • Lets Encrypt is now optional: lets_encrypt: false issues self-signed 10-year certs and skips the ClusterIssuer
  • New port_bind setting (lan / all / local) controlling where Postgres/Studio ports listen
  • Hostname digit becomes the slot number everywhere including ports (supa4 -> slot 4, port base derived from it)
  • log-retention SQL: dblink and its helper function live in the extensions schema, fixing fresh-DB migrations failing with Postgres error 42501 (permission denied for function dblink_connect_u)
Bundled changes, one branch per plan: - Traefik-native ingress (per-instance Middleware, 50 MiB request cap) alongside the existing ingress-nginx support; cert-manager is kept - Lets Encrypt is now optional: `lets_encrypt: false` issues self-signed 10-year certs and skips the ClusterIssuer - New `port_bind` setting (`lan` / `all` / `local`) controlling where Postgres/Studio ports listen - Hostname digit becomes the slot number everywhere including ports (`supa4` -> slot 4, port base derived from it) - log-retention SQL: dblink and its helper function live in the `extensions` schema, fixing fresh-DB migrations failing with Postgres error 42501 (`permission denied for function dblink_connect_u`)
igor added 1 commit 2026-10-09 14:31:53 +00:00
- Traefik is a first-class ingress controller choice: per-instance Middleware
  caps uploads at 50 MiB, nginx keeps its proxy-* annotations; picked in setup
- Let's Encrypt is optional: off skips the ClusterIssuer and gives each instance
  a 10-year self-signed certificate instead of a Let's Encrypt one
- New port_bind setting: lan (default, LAN IP only), all (LAN + localhost),
  local (localhost only)
- Hostname slots are keyed by the digit in the name (supa4 -> slot 4), so the
  instance number, ports and hostname stay in step on every machine
- The log-retention job installs dblink and its helper into the extensions
  schema instead of public: in public they break the app's
  REVOKE ALL ON ALL ROUTINES IN SCHEMA public for the non-superuser postgres
  role (42501 permission denied for function dblink_connect_u)
igor merged commit 4a267c5336 into main 2026-10-09 14:32:43 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: public/supaspin#12