237 lines
6.9 KiB
YAML
237 lines
6.9 KiB
YAML
roundcube:
|
|
controllers:
|
|
main:
|
|
type: deployment
|
|
replicas: 1
|
|
strategy: Recreate
|
|
containers:
|
|
main:
|
|
image:
|
|
repository: roundcube/roundcubemail
|
|
tag: 1.6.15-fpm-alpine@sha256:0e07c1c66d5a1392f0c47cc79e85e0c60095108f715037d7d0aa3fd8cbe2e780
|
|
env:
|
|
- name: ROUNDCUBEMAIL_DB_TYPE
|
|
value: pgsql
|
|
- name: ROUNDCUBEMAIL_DB_HOST
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: host
|
|
- name: ROUNDCUBEMAIL_DB_NAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: dbname
|
|
- name: ROUNDCUBEMAIL_DB_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: user
|
|
- name: ROUNDCUBEMAIL_DB_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: password
|
|
- name: ROUNDCUBEMAIL_DES_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-key-secret
|
|
key: DES_KEY
|
|
- name: ROUNDCUBEMAIL_DEFAULT_HOST
|
|
value: stalwart.stalwart
|
|
- name: ROUNDCUBEMAIL_DEFAULT_PORT
|
|
value: 143
|
|
- name: ROUNDCUBEMAIL_SMTP_SERVER
|
|
value: stalwart.stalwart
|
|
- name: ROUNDCUBEMAIL_SMTP_PORT
|
|
value: 25
|
|
- name: ROUNDCUBEMAIL_SKIN
|
|
value: elastic
|
|
- name: ROUNDCUBEMAIL_PLUGINS
|
|
value: archive,zipdownload,newmail_notifier
|
|
resources:
|
|
requests:
|
|
cpu: 1m
|
|
memory: 40Mi
|
|
nginx:
|
|
image:
|
|
repository: nginx
|
|
tag: 1.29.7-alpine-slim@sha256:0848ca84c476868cbeb6a5c2c009a98821b8540f96c44b1ba06820db50262e35
|
|
env:
|
|
- name: NGINX_HOST
|
|
value: mail.alexlebens.net
|
|
- name: NGINX_PHP_CGI
|
|
value: roundcube.roundcube:9000
|
|
cleandb:
|
|
type: cronjob
|
|
cronjob:
|
|
suspend: false
|
|
timeZone: America/Chicago
|
|
schedule: 30 4 * * *
|
|
backoffLimit: 3
|
|
parallelism: 1
|
|
containers:
|
|
backup:
|
|
image:
|
|
repository: roundcube/roundcubemail
|
|
tag: 1.6.15-fpm-alpine@sha256:0e07c1c66d5a1392f0c47cc79e85e0c60095108f715037d7d0aa3fd8cbe2e780
|
|
args:
|
|
- bin/cleandb.sh
|
|
env:
|
|
- name: ROUNDCUBEMAIL_DB_TYPE
|
|
value: pgsql
|
|
- name: ROUNDCUBEMAIL_DB_HOST
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: host
|
|
- name: ROUNDCUBEMAIL_DB_NAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: dbname
|
|
- name: ROUNDCUBEMAIL_DB_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: user
|
|
- name: ROUNDCUBEMAIL_DB_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-postgresql-18-cluster-app
|
|
key: password
|
|
- name: ROUNDCUBEMAIL_DES_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: roundcube-key-secret
|
|
key: DES_KEY
|
|
- name: ROUNDCUBEMAIL_DEFAULT_HOST
|
|
value: tls://stalwart.stalwart
|
|
- name: ROUNDCUBEMAIL_SMTP_SERVER
|
|
value: tls://stalwart.stalwart
|
|
- name: ROUNDCUBEMAIL_SKIN
|
|
value: elastic
|
|
- name: ROUNDCUBEMAIL_PLUGINS
|
|
value: archive,zipdownload,newmail_notifier
|
|
configMaps:
|
|
config:
|
|
enabled: true
|
|
data:
|
|
default.conf: |
|
|
server {
|
|
listen 80 default_server;
|
|
server_name _;
|
|
root /var/www/html;
|
|
|
|
location / {
|
|
try_files $uri /index.php$is_args$args;
|
|
}
|
|
|
|
location ~ \.php(/|$) {
|
|
try_files $uri =404;
|
|
fastcgi_pass roundcube:9000;
|
|
fastcgi_read_timeout 300;
|
|
proxy_read_timeout 300;
|
|
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
|
include fastcgi_params;
|
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
|
fastcgi_param DOCUMENT_ROOT $realpath_root;
|
|
internal;
|
|
}
|
|
|
|
client_max_body_size 6m;
|
|
|
|
error_log /var/log/nginx/error.log;
|
|
access_log /var/log/nginx/access.log;
|
|
}
|
|
service:
|
|
main:
|
|
controller: main
|
|
ports:
|
|
mail:
|
|
port: 9000
|
|
targetPort: 9000
|
|
web:
|
|
port: 80
|
|
targetPort: 80
|
|
route:
|
|
main:
|
|
kind: HTTPRoute
|
|
parentRefs:
|
|
- group: gateway.networking.k8s.io
|
|
kind: Gateway
|
|
name: traefik-gateway
|
|
namespace: traefik
|
|
hostnames:
|
|
- mail.alexlebens.net
|
|
rules:
|
|
- backendRefs:
|
|
- name: roundcube
|
|
port: 80
|
|
matches:
|
|
- path:
|
|
type: PathPrefix
|
|
value: /
|
|
persistence:
|
|
config:
|
|
enabled: true
|
|
type: configMap
|
|
name: roundcube-config
|
|
advancedMounts:
|
|
main:
|
|
nginx:
|
|
- path: /etc/nginx/conf.d/default.conf
|
|
readOnly: true
|
|
mountPropagation: None
|
|
subPath: default.conf
|
|
data:
|
|
forceRename: roundcube-data
|
|
storageClass: ceph-block
|
|
accessMode: ReadWriteOnce
|
|
size: 5Gi
|
|
advancedMounts:
|
|
main:
|
|
main:
|
|
- path: /var/www/html
|
|
readOnly: false
|
|
nginx:
|
|
- path: /var/www/html
|
|
readOnly: false
|
|
temp:
|
|
type: emptyDir
|
|
advancedMounts:
|
|
main:
|
|
main:
|
|
- path: /tmp/roundcube-temp
|
|
readOnly: false
|
|
postgres-18-cluster:
|
|
mode: recovery
|
|
recovery:
|
|
method: objectStore
|
|
objectStore:
|
|
index: 1
|
|
backup:
|
|
objectStore:
|
|
- name: garage-local
|
|
index: 1
|
|
destinationBucket: postgres-backups
|
|
externalSecretCredentialPath: /garage/home-infra/postgres-backups
|
|
isWALArchiver: true
|
|
scheduledBackups:
|
|
- name: live-backup
|
|
suspend: false
|
|
immediate: true
|
|
schedule: "0 40 15 * * *"
|
|
backupName: garage-local
|
|
volsync-target-data:
|
|
pvcTarget: roundcube-data
|
|
local:
|
|
enabled: true
|
|
schedule: 12 11 * * *
|
|
remote:
|
|
enabled: true
|
|
schedule: 12 12 * * *
|
|
external:
|
|
enabled: true
|
|
schedule: 12 13 * * *
|