From 50404948f4736ea508c37d9dc02ec0eb881631de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Sat, 8 Nov 2025 19:23:56 +0100 Subject: [PATCH] feat: configure SMTP email notifications across all services MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added comprehensive email configuration to enable notifications for password resets, user invitations, system alerts, and backup failures. **Services configured:** - **Vaultwarden** (vault/compose.yaml): - SMTP settings for password resets, 2FA, emergency access emails - Uses IONOS SMTP with force_tls security - Sender: hi@pivoine.art - **Linkwarden** (links/compose.yaml): - Email server configuration for user invitations - Password reset functionality via email - Uses smtp:// connection string format - **n8n** (n8n/compose.yaml): - SMTP mode enabled for workflow notifications - User invitation emails - Password reset support - SSL-secured connection - **Netdata** (netdata/compose.yaml, health_alarm_notify.conf, msmtprc): - Health alarm notifications via email - MSMTP configuration for sending alerts - Notifications sent to valknar@pivoine.art - Alerts for system issues, resource exhaustion, service failures **Common SMTP settings** (from .env): - Provider: IONOS (smtp.ionos.de:465) - From address: hi@pivoine.art - Transport: SMTP with TLS/SSL - Admin email: valknar@pivoine.art **Backrest notifications:** - Configured via web UI at restic.pivoine.art - Supports webhooks to Gotify for push notifications - Email notifications can be added through UI settings All services now have proper email notification capabilities for improved monitoring, user management, and security features. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- links/compose.yaml | 2 ++ n8n/compose.yaml | 7 +++++++ netdata/compose.yaml | 2 ++ netdata/health_alarm_notify.conf | 26 ++++++++++++++++++++++++++ netdata/msmtprc | 20 ++++++++++++++++++++ vault/compose.yaml | 7 +++++++ 6 files changed, 64 insertions(+) create mode 100644 netdata/health_alarm_notify.conf create mode 100644 netdata/msmtprc diff --git a/links/compose.yaml b/links/compose.yaml index 4df93f8..9684302 100644 --- a/links/compose.yaml +++ b/links/compose.yaml @@ -12,6 +12,8 @@ services: NEXTAUTH_URL: https://${LINKS_TRAEFIK_HOST} MEILI_ADDR: http://linkwarden_meilisearch:7700 MEILI_MASTER_KEY: ${LINKS_MEILI_MASTER_KEY} + EMAIL_FROM: ${EMAIL_FROM} + EMAIL_SERVER: smtp://${EMAIL_SMTP_USER}:${EMAIL_SMTP_PASSWORD}@${EMAIL_SMTP_HOST}:${EMAIL_SMTP_PORT} volumes: - linkwarden_data:/data/data depends_on: diff --git a/n8n/compose.yaml b/n8n/compose.yaml index 2d54a01..bc4aa52 100644 --- a/n8n/compose.yaml +++ b/n8n/compose.yaml @@ -23,6 +23,13 @@ services: N8N_PORT: 5678 N8N_PROTOCOL: https WEBHOOK_URL: https://${N8N_TRAEFIK_HOST}/ + N8N_EMAIL_MODE: smtp + N8N_SMTP_HOST: ${EMAIL_SMTP_HOST} + N8N_SMTP_PORT: ${EMAIL_SMTP_PORT} + N8N_SMTP_USER: ${EMAIL_SMTP_USER} + N8N_SMTP_PASS: ${EMAIL_SMTP_PASSWORD} + N8N_SMTP_SENDER: ${EMAIL_FROM} + N8N_SMTP_SSL: "true" depends_on: - postgres networks: diff --git a/netdata/compose.yaml b/netdata/compose.yaml index 1aae8d2..3491a35 100644 --- a/netdata/compose.yaml +++ b/netdata/compose.yaml @@ -15,6 +15,8 @@ services: - netdata_cache:/var/cache/netdata - ./go.d/postgres.conf:/etc/netdata/go.d/postgres.conf:ro - ./go.d/filecheck.conf:/etc/netdata/go.d/filecheck.conf:ro + - ./health_alarm_notify.conf:/etc/netdata/health_alarm_notify.conf:ro + - ./msmtprc:/etc/msmtprc:ro - /mnt/hidrive/users/valknar/Backup:/mnt/hidrive/users/valknar/Backup:ro - /etc/passwd:/host/etc/passwd:ro - /etc/group:/host/etc/group:ro diff --git a/netdata/health_alarm_notify.conf b/netdata/health_alarm_notify.conf new file mode 100644 index 0000000..5ac1c43 --- /dev/null +++ b/netdata/health_alarm_notify.conf @@ -0,0 +1,26 @@ +# Netdata health alarm notification configuration +# This file configures where to send alarm notifications + +# Enable/disable sending email notifications +SEND_EMAIL="YES" + +# Recipient email address for all alarms +DEFAULT_RECIPIENT_EMAIL="${ADMIN_EMAIL}" + +# Email sender address +EMAIL_SENDER="${EMAIL_FROM}" + +# SMTP configuration +SENDMAIL="" +EMAIL_SENDER="${EMAIL_FROM}" + +# Custom send email command using msmtp +EMAIL_COMMAND="msmtp -t" + +# Enable specific notification types +role_recipients_email[sysadmin]="${ADMIN_EMAIL}" +role_recipients_email[domainadmin]="${ADMIN_EMAIL}" +role_recipients_email[dba]="${ADMIN_EMAIL}" +role_recipients_email[webmaster]="${ADMIN_EMAIL}" +role_recipients_email[proxyadmin]="${ADMIN_EMAIL}" +role_recipients_email[sitemgr]="${ADMIN_EMAIL}" diff --git a/netdata/msmtprc b/netdata/msmtprc new file mode 100644 index 0000000..be22c16 --- /dev/null +++ b/netdata/msmtprc @@ -0,0 +1,20 @@ +# MSMTP configuration for Netdata email alerts + +# Set default values for all accounts +defaults +auth on +tls on +tls_trust_file /etc/ssl/certs/ca-certificates.crt +logfile /var/log/msmtp.log + +# IONOS SMTP account +account ionos +host smtp.ionos.de +port 465 +tls_starttls off +from hi@pivoine.art +user hi@pivoine.art +password jaquoment + +# Set default account +account default : ionos diff --git a/vault/compose.yaml b/vault/compose.yaml index 866e399..f9253fa 100644 --- a/vault/compose.yaml +++ b/vault/compose.yaml @@ -12,6 +12,13 @@ services: SIGNUPS_ALLOWED: ${VAULT_SIGNUPS_ALLOWED:-false} INVITATIONS_ALLOWED: ${VAULT_INVITATIONS_ALLOWED:-true} SHOW_PASSWORD_HINT: ${VAULT_SHOW_PASSWORD_HINT:-false} + SMTP_HOST: ${EMAIL_SMTP_HOST} + SMTP_FROM: ${EMAIL_FROM} + SMTP_FROM_NAME: Vaultwarden + SMTP_SECURITY: force_tls + SMTP_PORT: ${EMAIL_SMTP_PORT} + SMTP_USERNAME: ${EMAIL_SMTP_USER} + SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD} networks: - compose_network labels: