mirror of
https://github.com/vhaudiquet/homeprod.git
synced 2026-07-21 12:57:07 +00:00
148 lines
6.0 KiB
YAML
148 lines
6.0 KiB
YAML
# Stalwart Mail Server - Helm values
|
|
#
|
|
# TLS for the mail listeners is sourced from cert-manager: the
|
|
# mail-vhaudiquet-fr-tls Secret (see certificate.yaml) is mounted into the pod
|
|
# and pushed to Stalwart by the chart's tls-sync sidecar over JMAP, which also
|
|
# calls ReloadTlsCertificates on every cert-manager renewal.
|
|
# Container image
|
|
image:
|
|
repository: stalwartlabs/stalwart
|
|
tag: v0.16.11
|
|
pullPolicy: IfNotPresent
|
|
# Single-node RocksDB deployment.
|
|
replicaCount: 1
|
|
role: ""
|
|
pushShard: ""
|
|
# Recovery / bootstrap administrator.
|
|
# The Secret (stalwart-recovery-admin) is required for the lifetime of the
|
|
# deployment because the tls-sync sidecar authenticates to Stalwart's JMAP API
|
|
# with these credentials on every cert-manager renewal.
|
|
recoveryAdmin:
|
|
enabled: true
|
|
username: ENC[AES256_GCM,data:kpf88Vc=,iv:k2kGcGlH0jQkLmb35V4+IIrBpDM93PaG6atcO/SLDB4=,tag:qZIR2LZlv1g0XBkEh0y8qA==,type:str]
|
|
password: ""
|
|
existingSecret: ENC[AES256_GCM,data:DnjFoj8VNeqHmwM/KVebjOOHvYHPgZQ=,iv:JWBs6OeZzsa+8uJt/FjptI6t+tf+CRQDKA7149rBg1o=,tag:M4CXA2k8M65mbSUF0mnGvQ==,type:str]
|
|
usernameKey: username
|
|
passwordKey: password
|
|
# Recovery mode suspends mail services and exposes only the management listener.
|
|
# Ship production values with this OFF.
|
|
recoveryMode:
|
|
enabled: false
|
|
port: 8080
|
|
logLevel: info
|
|
extraEnv: {}
|
|
extraSecretEnv: {}
|
|
# The bootstrap hook Job provisions a *fresh* domain/accounts/OIDC directory.
|
|
bootstrap:
|
|
enabled: false
|
|
# cert-manager TLS integration for the mail (SMTP/IMAP/POP3 STARTTLS + implicit
|
|
# TLS) listeners. The Secret below is produced by the Certificate in
|
|
# certificate.yaml (letsencrypt-production, Cloudflare DNS-01).
|
|
mailTls:
|
|
enabled: true
|
|
existingSecret: ENC[AES256_GCM,data:e8rzv2mvlpoZR/vMfd5sgNuYLDvptQ==,iv:qIQfpHxAOameSdDzOHh89n+RIOd9CcJcl0oRumSHAQQ=,tag:xwbQR5Jabvz+lEju5zuW2g==,type:str]
|
|
certKey: tls.crt
|
|
privateKeyKey: tls.key
|
|
mountPath: /etc/stalwart/tls/ingress
|
|
hostname: mail.vhaudiquet.fr
|
|
domain: vhaudiquet.fr
|
|
# How often the sidecar re-checks the mounted cert for changes.
|
|
reloadIntervalSeconds: 300
|
|
# config.json contents - ONLY the DataStore object. All other settings
|
|
# (listeners, storage backends, domains, accounts, certs) live in the database
|
|
# and are managed via JMAP/WebUI.
|
|
config:
|
|
'@type': RocksDb
|
|
path: /var/lib/stalwart
|
|
# Main Service: ClusterIP. Used by the Ingress for the management WebUI (mgmt)
|
|
# and for in-cluster access. Mail L4 ports are exposed separately via mailService.
|
|
service:
|
|
type: ClusterIP
|
|
ports:
|
|
smtp: 25
|
|
smtps: 465
|
|
submission: 587
|
|
imap: 143
|
|
imaps: 993
|
|
pop3: 110
|
|
pop3s: 995
|
|
sieve: 4190
|
|
http: 80
|
|
https: 443
|
|
mgmt: 8080
|
|
# Dedicated LoadBalancer for SMTP/IMAP/POP3/Sieve (L4). HTTP/HTTPS/mgmt are NOT
|
|
# exposed here - the WebUI is reached via the Ingress (Traefik) below.
|
|
# The WAN router NAT for 25/465/587/993/995/4190 must be repointed to this IP.
|
|
mailService:
|
|
enabled: true
|
|
name: stalwart-mail
|
|
type: LoadBalancer
|
|
loadBalancerIP: 10.1.2.143
|
|
annotations: {}
|
|
# WebUI ingress. TLS is terminated by Caddy at the edge (wildcard cert), so the
|
|
# path is: public -> Caddy (TLS) -> Traefik (HTTP) -> this Ingress -> mgmt:8080.
|
|
# No TLS block here.
|
|
ingress:
|
|
enabled: true
|
|
annotations: {}
|
|
hosts:
|
|
- host: mail.vhaudiquet.fr
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
portName: mgmt
|
|
tls: []
|
|
# Persistent volume for the RocksDB data directory.
|
|
persistence:
|
|
enabled: true
|
|
accessMode: ReadWriteOnce
|
|
storageClass: longhorn
|
|
size: 50Gi
|
|
resources:
|
|
requests:
|
|
cpu: 250m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: "1"
|
|
memory: 1Gi
|
|
# Override chart defaults to add fsGroupChangePolicy: OnRootMismatch.
|
|
# Without this, kubelet recursively chowns every file in the NFS-backed PVC
|
|
# on every pod start (15k+ RocksDB files), causing multi-minute delays.
|
|
# OnRootMismatch skips the recursive chown if the volume root already
|
|
# has the correct owner (UID 2000).
|
|
podSecurityContext:
|
|
fsGroup: 2000
|
|
fsGroupChangePolicy: OnRootMismatch
|
|
runAsUser: 2000
|
|
runAsGroup: 2000
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
containerSecurityContext: {}
|
|
sops:
|
|
lastmodified: "2026-07-18T14:22:17Z"
|
|
mac: ENC[AES256_GCM,data:JjN4ziOnd65U8AzI9ZnMiPUBiYFGqjGjM3HJ7XoSJuJ+fgYjOH+WX/U2IAfSeqEIMkzvP435BxKGoylrwEVM1k5v07slul5zEclPZglphDjiX+md403lVDtYEXdCSo0+3nqv1DFEQDkKItEEEz882sZBbhMotBHhgcd41RSA1aY=,iv:MaSmisJoj3aobpMw1HGgEOktegX2LtOaXLh3601xgvc=,tag:acWtTiu4ub7GDNp8nM/yVA==,type:str]
|
|
pgp:
|
|
- created_at: "2026-07-18T14:22:17Z"
|
|
enc: |-
|
|
-----BEGIN PGP MESSAGE-----
|
|
|
|
hQIMA7uy4qQr71wiAQ/9G7UtHO7Ux0YNAPlnkVmU5BI+crzwbWPhdaUZFf5dmCkg
|
|
r67EAi/DjqFHR9Ew1Dhpn0InTA/Ld+mGZAAbWeP7xhIEQ+AqACmm/Oxgf3IkHKzE
|
|
P7dvco6lQO50W/m3fiU0Pv4A7w3Oq+AdFHcPr3UBi8YGYLgkCbzLs2r9JNviCJsl
|
|
uuvz438g92aXfa5JcyUjzxtxKFjzHrZ8seDx38X4fveS/mROpRqiw+G8aQ0BlXDM
|
|
9wfiQtiM9CcuahPUWopv4RCOjuqrSc14sxv9xRGsYt1YZFxZ/4Q7rqM+HXBsFp4u
|
|
8r4MgE+EflrhKp1aWPGnSn2kalDy3o+yFuk7IhWsrSKsNIU4j1J5xCfhliey+kNJ
|
|
387cVf7Bjw+iqoy+qiV7Q7XGip6NgF8WwSudZhznv/pS6LL5H5yHaKxjz5rny/TQ
|
|
0upK///2YGuiE66sBb8h2sqzIgr6hZecvb2VdY7BQX4FCo2uAmxTEh+h1fHlervc
|
|
i/03B9kNSjP5fSufhE9lsLl0oZgaFIKSpkzLlPdy6z0X5vDEXJGSL+qFudo9RKtf
|
|
aaEwaQ+I+snmhWyBeeywxpdyRE5g3xhRwuwaxp7zzVt5ykCnyrZIPvzaSxu/QjaF
|
|
jCUmvPp0ZLzAB2xY9AMwOHIrym9lPmcBEEqCiHywCauOQzsGJE3vLF8x3/nzZnvS
|
|
XgEE9z1NxK8o0ntL+JZO3+GYvm28Hyw0eXgDJbjJ+tlBYeWH8lfBUOsk2V485OJZ
|
|
4SDNvxzxpyF/4RJY4P4KR7HgwDC8gOCsDgqcyn1s4KzECXyQlqmrXxOrL8cFRhY=
|
|
=aeJw
|
|
-----END PGP MESSAGE-----
|
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
|
version: 3.10.2
|