Files
claudeandClaude Opus 5.5 a74d580b0a Style newsletters and system e-mails like www.eom.dev
Catppuccin Mocha campaign template (default) and archive variant, kept
in sync in the database; system e-mail header/footer overridden via
--static-dir from a ConfigMap. PNG logo for mail clients. Tested in
Mailpit (desktop, phone width; 87% CSS support, rest inlined).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:36:39 -05:00

135 lines
4.7 KiB
YAML

# SPDX-License-Identifier: MIT-0
---
listmonk_name: listmonk
listmonk_namespace: listmonk
listmonk_create_namespace: true
# null uses normal kubeconfig discovery, including KUBECONFIG.
listmonk_kubeconfig: null
listmonk_kube_context: null
listmonk_wait_timeout: 600
listmonk_image: listmonk/listmonk:v6.2.0
listmonk_postgres_image: postgres:17.11-alpine
listmonk_image_pull_policy: IfNotPresent
listmonk_host: listmonk.eom.dev
listmonk_root_url: "https://{{ listmonk_host }}"
listmonk_ingress_class_name: nginx
listmonk_ingress_annotations:
cert-manager.io/cluster-issuer: ca-issuer
nginx.ingress.kubernetes.io/proxy-body-size: 16m
listmonk_tls_secret_name: "{{ listmonk_name }}-tls"
listmonk_storage_class: nfs-client
listmonk_db_storage_size: 2Ti
listmonk_uploads_storage_size: 2Ti
# Required secrets (Vault). The database password is only read on first
# initialisation of the volume; change it in Postgres before changing it here.
listmonk_db_password: ""
# Break-glass password login for the "admin" super admin. Day-to-day login is Dex.
listmonk_admin_user: admin
listmonk_admin_password: ""
# Mail goes out through postfix.eom.dev as an LDAP account in "Postfix Users",
# the same pattern Gitea, Nextcloud and PeerTube use. SPOOF_PROTECTION requires
# the From address to belong to that account.
listmonk_smtp_host: postfix.eom.dev
listmonk_smtp_port: 587
listmonk_smtp_tls_type: STARTTLS
listmonk_smtp_username: news
listmonk_smtp_password: ""
listmonk_smtp_max_conns: 4
listmonk_from_email: "eom.dev <news@eom.dev>"
# Log in with Dex. Users are matched by e-mail and must already exist in
# listmonk, so being an eom.dev member alone grants nothing.
listmonk_oidc_enabled: true
listmonk_oidc_provider_url: https://dex.eom.dev/
listmonk_oidc_provider_name: eom.dev account
listmonk_oidc_client_id: listmonk
listmonk_oidc_client_secret: ""
# Accounts allowed to log in through Dex as Super Admin.
listmonk_oidc_admins:
- username: eric
name: Eric Meehan
email: eric@eom.dev
listmonk_site_name: eom.dev
# E-mail design (templates/email/): Catppuccin Mocha like www.eom.dev.
# The logo must be a PNG; most mail clients don't render SVG.
listmonk_email_logo_url: https://www.eom.dev/static/email-logo.png
listmonk_email_home_url: https://www.eom.dev/
listmonk_email_members_url: https://www.eom.dev/members/
# Postal address in every footer (CAN-SPAM wants one for commercial mail).
listmonk_email_postal_address: ""
# Campaign template names; the first becomes the default for new campaigns.
listmonk_email_template_name: eom.dev
listmonk_email_archive_template_name: eom.dev archive
listmonk_logo_url: https://dex.eom.dev/theme/logo.svg
listmonk_favicon_url: https://www.eom.dev/static/favicon.svg
listmonk_notify_emails:
- eric@eom.dev
# Lists are created by name if missing and never deleted. Existing lists keep
# any edits made in the UI except for type, optin and description.
listmonk_lists:
- name: eom.dev
type: public
optin: double
tags: [newsletter]
description: >-
One short email per premiere, plus the monthly essay. Nothing else.
# API user for the www membership app (Authorization: token user:token).
# It can read and manage subscribers on listmonk_api_lists only. Empty token:
# no API user. listmonk caches API users at startup; the role restarts it.
listmonk_api_user: membership
listmonk_api_token: ""
listmonk_api_role: Membership sync
listmonk_api_lists:
- eom.dev
# API user for the scheduled newsletter task: create, edit and schedule
# campaigns to listmonk_newsletter_api_lists; no subscriber data or settings.
# Its token is generated once and kept in Secret <name>-newsletter-api
# (keys: url, username, token) for the task to read with kubectl.
listmonk_newsletter_api_enabled: true
listmonk_newsletter_api_user: newsletter
listmonk_newsletter_api_role: Newsletter automation
listmonk_newsletter_api_lists:
- eom.dev
# Drop the sample lists, subscribers and campaign created by --install.
listmonk_remove_sample_data: true
# Extra settings rows (key: JSON value) merged over the role's own.
listmonk_settings_extra: {}
listmonk_resources:
requests:
cpu: 100m
memory: 128Mi
limits:
memory: 512Mi
listmonk_postgres_resources:
requests:
cpu: 100m
memory: 256Mi
limits:
memory: 1Gi
# Keep off the node that runs the ingress controller, like the other services.
listmonk_affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: kubernetes.io/hostname
namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: ingress-nginx
labelSelector:
matchLabels:
app.kubernetes.io/component: controller
app.kubernetes.io/name: ingress-nginx