app-email rollout: gitea + rallly mappings; calcom/nextcloud/immich = findings
gitea (STARTTLS + FORCE_TRUST_SERVER_CERT) and rallly (Nodemailer STARTTLS + SMTP_REJECT_UNAUTHORIZED=false) wired. Fixed rallly's non-existent 3.12.1 pin → 3.11.2. calcom/nextcloud/immich don't fit the mechanism (self-signed opportunistic-STARTTLS, split From, no-SMTP-env) — see FINDING doc in felhom.eu. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,3 +61,18 @@ healthcheck:
|
||||
path: "/api/healthz"
|
||||
expect:
|
||||
status: 200
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# Gitea uses STARTTLS to the shim and trusts its self-signed cert via FORCE_TRUST_SERVER_CERT.
|
||||
# Gitea applies GITEA__* env on every boot, so toggling app-email + redeploy takes effect. The From
|
||||
# is Gitea's single GITEA__mailer__FROM; USER/PASSWD stay unset (the shim accepts no-auth).
|
||||
smtp_mapping:
|
||||
host_var: GITEA__mailer__SMTP_ADDR
|
||||
port_var: GITEA__mailer__SMTP_PORT
|
||||
security_var: GITEA__mailer__PROTOCOL
|
||||
security_value: "smtp+starttls"
|
||||
from_var: GITEA__mailer__FROM
|
||||
from_local: gitea
|
||||
extra:
|
||||
GITEA__mailer__ENABLED: "true"
|
||||
GITEA__mailer__FORCE_TRUST_SERVER_CERT: "true"
|
||||
|
||||
@@ -16,6 +16,15 @@ services:
|
||||
- GITEA__server__ROOT_URL=https://${SUBDOMAIN}.${DOMAIN}
|
||||
- GITEA__server__SSH_DOMAIN=${SUBDOMAIN}.${DOMAIN}
|
||||
- GITEA__database__DB_TYPE=sqlite3
|
||||
# App-email (managed relay). Injected by the controller only when app-email is on (global +
|
||||
# per-app); empty ENABLED/ADDR keeps Gitea mail disabled. Gitea applies GITEA__* env on every
|
||||
# boot (environment-to-ini), so the toggle takes effect on redeploy. See .felhom.yml smtp_mapping.
|
||||
- GITEA__mailer__ENABLED=${GITEA__mailer__ENABLED:-false}
|
||||
- GITEA__mailer__PROTOCOL=${GITEA__mailer__PROTOCOL:-smtp+starttls}
|
||||
- GITEA__mailer__SMTP_ADDR=${GITEA__mailer__SMTP_ADDR:-}
|
||||
- GITEA__mailer__SMTP_PORT=${GITEA__mailer__SMTP_PORT:-2525}
|
||||
- GITEA__mailer__FROM=${GITEA__mailer__FROM:-}
|
||||
- GITEA__mailer__FORCE_TRUST_SERVER_CERT=${GITEA__mailer__FORCE_TRUST_SERVER_CERT:-false}
|
||||
volumes:
|
||||
- gitea_data:/data
|
||||
networks:
|
||||
|
||||
@@ -68,3 +68,18 @@ healthcheck:
|
||||
checks:
|
||||
- type: http
|
||||
port: 3000
|
||||
|
||||
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
|
||||
# Rallly (Nodemailer) uses STARTTLS to the shim (SMTP_SECURE=false) and accepts the shim's self-signed
|
||||
# cert (SMTP_REJECT_UNAUTHORIZED=false on v4; v3.x accepts by default). From = Rallly's single
|
||||
# NOREPLY_EMAIL; SMTP_USER/SMTP_PWD stay unset (the shim accepts no-auth).
|
||||
smtp_mapping:
|
||||
host_var: SMTP_HOST
|
||||
port_var: SMTP_PORT
|
||||
security_var: SMTP_SECURE
|
||||
security_value: "false"
|
||||
from_var: NOREPLY_EMAIL
|
||||
from_name_var: NOREPLY_EMAIL_NAME
|
||||
from_local: rallly
|
||||
extra:
|
||||
SMTP_REJECT_UNAUTHORIZED: "false"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
services:
|
||||
rallly:
|
||||
image: lukevella/rallly:3.12.1
|
||||
image: lukevella/rallly:3.11.2
|
||||
container_name: rallly
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
@@ -21,6 +21,16 @@ services:
|
||||
- DATABASE_URL=postgresql://rallly:${DB_PASSWORD}@rallly-postgres:5432/rallly
|
||||
- SECRET_PASSWORD=${SECRET_PASSWORD}
|
||||
- NEXT_PUBLIC_BASE_URL=https://${SUBDOMAIN}.${DOMAIN}
|
||||
# App-email (managed relay). Injected by the controller only when app-email is on (global +
|
||||
# per-app); empty SMTP_HOST keeps Rallly mail disabled. Rallly (Nodemailer) reads these at send
|
||||
# time. SMTP_SECURE=false → STARTTLS to the shim; SMTP_REJECT_UNAUTHORIZED=false accepts the
|
||||
# shim's self-signed cert (v4 flag; v3.x accepts self-signed by default). See .felhom.yml smtp_mapping.
|
||||
- SMTP_HOST=${SMTP_HOST:-}
|
||||
- SMTP_PORT=${SMTP_PORT:-587}
|
||||
- SMTP_SECURE=${SMTP_SECURE:-false}
|
||||
- SMTP_REJECT_UNAUTHORIZED=${SMTP_REJECT_UNAUTHORIZED:-true}
|
||||
- NOREPLY_EMAIL=${NOREPLY_EMAIL:-}
|
||||
- NOREPLY_EMAIL_NAME=${NOREPLY_EMAIL_NAME:-Felhom}
|
||||
networks:
|
||||
- traefik-public
|
||||
- rallly-internal
|
||||
|
||||
Reference in New Issue
Block a user