Send backup alerts to a person, not just the shared inbox
Deploy web to NAS / deploy (push) Successful in 1m2s

Failures went to REPORT_EMAIL, which is the media@ shared inbox the Sunday digest
already uses. An alert competing with a routine weekly mail in a shared inbox is
an alert that gets scrolled past, which is most of the way back to the logfile
nobody read.

ALERT_EMAIL is now a separate, comma-separated list for breakage only, falling
back to REPORT_EMAIL so a machine whose .env predates this still alerts somewhere
rather than silently not at all.

Verified by sending one test alert, which arrived.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Waters Church
2026-09-24 14:18:47 -04:00
co-authored by Claude Opus 5
parent 3d82e46951
commit ff6785b800
2 changed files with 14 additions and 2 deletions
+8 -2
View File
@@ -42,8 +42,14 @@ async function main() {
if (!subject) { console.error('alert.js: no subject given'); process.exit(1); } if (!subject) { console.error('alert.js: no subject given'); process.exit(1); }
const env = readEnv(ENV_FILE); const env = readEnv(ENV_FILE);
const to = env.REPORT_EMAIL; // ALERT_EMAIL is for things that are broken; REPORT_EMAIL is for the Sunday digest. They
if (!to) { console.error(`alert.js: no REPORT_EMAIL in ${ENV_FILE}`); process.exit(1); } // are separate because an alert that only reaches a shared inbox is easy to scroll past,
// and because the digest should not become a channel people learn to ignore. Comma
// separated, and it falls back to REPORT_EMAIL so a machine whose .env predates this
// still alerts somewhere rather than silently not at all.
const to = (env.ALERT_EMAIL || env.REPORT_EMAIL || '')
.split(',').map(a => a.trim()).filter(Boolean).join(', ');
if (!to) { console.error(`alert.js: no ALERT_EMAIL or REPORT_EMAIL in ${ENV_FILE}`); process.exit(1); }
if (!env.SMTP_HOST || !env.SMTP_USER || !env.SMTP_PASS) { if (!env.SMTP_HOST || !env.SMTP_USER || !env.SMTP_PASS) {
console.error(`alert.js: SMTP is not configured in ${ENV_FILE}`); process.exit(1); console.error(`alert.js: SMTP is not configured in ${ENV_FILE}`); process.exit(1);
} }
+6
View File
@@ -18,6 +18,12 @@ ADMIN_PASSWORD=changeme
# blank to send only the per-team emails. # blank to send only the per-team emails.
REPORT_EMAIL=you@example.com REPORT_EMAIL=you@example.com
# Where BREAKAGE is reported, comma separated. Kept separate from REPORT_EMAIL so a
# failure alert does not have to compete with the weekly digest for attention, and so
# it can reach a person rather than only a shared inbox. Falls back to REPORT_EMAIL.
# Used by scripts/alert.js, which backup-to-drive.sh calls on every failure path.
ALERT_EMAIL=you@example.com,team@example.com
# Cron schedule for the digest. Default: every Sunday at 3:00 PM. # Cron schedule for the digest. Default: every Sunday at 3:00 PM.
# Format: minute hour day-of-month month day-of-week # Format: minute hour day-of-month month day-of-week
REPORT_CRON=0 15 * * 0 REPORT_CRON=0 15 * * 0