Selbst gehosteter WhatsApp-Bot der jeden Monat automatisch eine personalisierte Nachricht an die richtige Person schickt – ohne Business-Account, nur Docker.
Manchmal braucht es eine monatliche Erinnerung – z.B. wer diesen Monat für etwas zuständig ist. Statt das manuell zu tracken habe ich whatsapp-reminder gebaut: ein selbst gehosteter, dockerisierter Bot der automatisch eine personalisierte WhatsApp-Nachricht nach einem konfigurierbaren Jahresplan versendet. Kein WhatsApp Business Account, keine Cloud-Services – nur Docker auf dem eigenen Server.
Der Quellcode liegt auf Gitea: gitea.aontech.ch/neyer/whatsapp-reminder
Features
- Monatliche personalisierte Nachrichten nach konfigurierbarer Rotation
- Monate ohne Eintrag werden automatisch übersprungen
- Cron-basierte Planung mit Zeitzonen-Support
- Session-Persistierung über Container-Neustarts hinweg
- Web-Dashboard zur Übersicht und manuellen Auslösung
- Docker Healthcheck integriert
Voraussetzungen
- Docker und Docker Compose
- Ein WhatsApp-Account (normaler Account, kein Business)
1. Repository klonen
git clone https://gitea.aontech.ch/neyer/whatsapp-reminder.git cd whatsapp-reminder
2. Konfigurationsdateien anlegen
Kopiere die Beispieldateien und passe sie an:
cp config/contacts.example.json config/contacts.json cp config/settings.example.json config/settings.json
contacts.json – Deine Kontakte mit ID, Name und Telefonnummer:
[
{ "id": "alice", "name": "Alice Müller", "phone": "+41791234567" },
{ "id": "bob", "name": "Bob Meier", "phone": "+41797654321" }
]
settings.json – Betrag, Cron-Ausdruck, Nachrichtenvorlage und Jahresplan:
{
"amount": 25,
"currency": "CHF",
"cron": "0 7 1 * *",
"timezone": "Europe/Zurich",
"message": "Hallo {vorname}, diesen Monat bist du dran. Bitte überweise {amount} {currency}.",
"schedule": ["alice", "bob", null, "carol", "alice", "bob", null, "carol", "alice", "bob", null, "carol"]
}
Der schedule-Array hat 12 Einträge – einen pro Monat. null bedeutet, dieser Monat wird übersprungen.
Verfügbare Platzhalter in der Nachricht: {vorname}, {name}, {amount}, {currency}, {month}, {year}
3. Container starten
docker compose up --build -d
4. WhatsApp verknüpfen
Beim ersten Start muss der Account einmalig per QR-Code verknüpft werden. Öffne im Browser:
http://<SERVER-IP>:3001/qr
Scanne den QR-Code in WhatsApp unter Verknüpfte Geräte → Gerät hinzufügen. Die Session wird lokal in data/ gespeichert und übersteht Neustarts.
Web-Interface
Nach dem Start steht ein einfaches Dashboard auf Port 3001 zur Verfügung:
http://<IP>:3001– Jahresplan-Übersicht/qr– QR-Code zur Erstkonfiguration/send-now– Nachricht manuell auslösen (optionale Parameter:?year=2026&month=5)/status– JSON-Statusabfrage
Hinweis: Das Interface sollte nicht öffentlich erreichbar sein – am besten nur im lokalen Netz oder hinter einem VPN zugänglich machen.
Das Projekt ist MIT-lizenziert. Wer Verbesserungen hat, gerne per Pull Request auf Gitea.