Skip to content

Multi-channel notification gateway for SMS, WhatsApp, Signal, Teams & Email. Self-hosted, Docker-based, uses Android as gateway. No cloud costs!

License

Notifications You must be signed in to change notification settings

walleralexander/alarma

🚨 Alarma! - Multi-Channel Notification Gateway

License: MIT Docker Version Status AI Generated Platform PRs Welcome

⚠️ DISCLAIMER / HAFTUNGSAUSSCHLUSS

This code is AI-generated and untested. AI can make errors - human oversight and testing is mandatory. All code is open source and in BETA status. Use at your own risk.

Dieser Code ist KI-generiert und ungetestet. KI kann Fehler machen - menschliche Überprüfung und Tests sind zwingend erforderlich. Der gesamte Code ist Open Source und im BETA-Status. Verwendung auf eigene Gefahr.

Kurzbeschreibung

Ein selbst-gehostetes, kosteneffizientes Notification-System fΓΌr SMS, WhatsApp, Signal, Teams und E-Mail

Entwickelt von WebPoint Internet Solutions | Ein Konzept von Alexander Waller und Claude AI


πŸ“‹ Übersicht

Alarma! ist eine Docker-basierte LΓΆsung, die es ermΓΆglicht, Benachrichtigungen ΓΌber mehrere KanΓ€le zu versenden - gesteuert ΓΌber eine einzige API. Das System nutzt ein Android-Smartphone als Gateway fΓΌr SMS, WhatsApp und Signal, wodurch teure Cloud-Provider ΓΌberflΓΌssig werden.

✨ Kernfeatures

  • πŸ†“ Keine Cloud-Kosten - VollstΓ€ndig selbst-gehostet
  • πŸ“± Android als Gateway - Bestehende Hardware nutzen
  • 🎯 Ein API-Endpunkt - FΓΌr alle KanΓ€le
  • πŸ”§ Docker-basiert - In 30 Minuten einsatzbereit
  • πŸ”’ Open Source - Keine Vendor Lock-ins
  • πŸ’° ROI in 4 Monaten - Einsparung von ~€700/Jahr
  • πŸ›‘οΈ Ausfallsicher - SMS funktioniert auch ohne Internet (Mobilfunknetz)

πŸ”Œ UnterstΓΌtzte KanΓ€le

Kanal Gateway Status
πŸ“§ E-Mail SMTP βœ… Ready
πŸ“± SMS Android App βœ… Ready
πŸ’¬ WhatsApp Android App βœ… Ready
πŸ” Signal signal-cli βœ… Ready
πŸ‘” Microsoft Teams Webhook βœ… Ready
πŸ”” Push (ntfy) ntfy.sh βœ… Ready

πŸ—οΈ Architektur

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     EXTERNE SYSTEME & TRIGGER                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
β”‚  β”‚   PRTG       β”‚   β”‚  PowerShell  β”‚   β”‚   Scripts    β”‚              β”‚
β”‚  β”‚   Monitor    β”‚   β”‚   Module     β”‚   β”‚   & APIs     β”‚              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                  β”‚                  β”‚
          β”‚  HTTP POST       β”‚  HTTP POST       β”‚  HTTP POST
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             β”‚
                             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     DOCKER CONTAINER STACK                           β”‚
β”‚                                                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚  β”‚         Apprise API Gateway (Port 8000)                 β”‚         β”‚
β”‚  β”‚         β€’ Tag-basiertes Routing                         β”‚         β”‚
β”‚  β”‚         β€’ Multi-Service Orchestration                   β”‚         β”‚
β”‚  β”‚         β€’ REST API Endpoint                             β”‚         β”‚
β”‚  β””β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚      β”‚         β”‚          β”‚          β”‚          β”‚                    β”‚
β”‚      β”‚  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚      β”‚  β”‚SMS Gateway  β”‚ β”‚ WhatsApp β”‚ β”‚ β”‚   Signal    β”‚ β”‚   ntfy    β”‚ β”‚
β”‚      β”‚  β”‚(Port 3000)  β”‚ β”‚ Gateway  β”‚ β”‚ β”‚   CLI       β”‚ β”‚(Port 8080)β”‚ β”‚
β”‚      β”‚  β”‚   Android   β”‚ β”‚  Android β”‚ β”‚ β”‚  REST API   β”‚ β”‚   Push    β”‚ β”‚
β”‚      β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚      β”‚         β”‚           β”‚         β”‚                               β”‚
β”‚  β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”                         β”‚
β”‚  β”‚       alarma-network (Bridge)           β”‚                         β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                         β”‚
β”‚                      β”‚                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚               β”‚               β”‚
       β–Ό               β–Ό               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   πŸ“± SMS    β”‚ β”‚ πŸ’¬ WhatsAppβ”‚ β”‚ πŸ” Signal   β”‚
β”‚             β”‚ β”‚             β”‚ β”‚             β”‚
β”‚   Android   β”‚ β”‚   Android   β”‚ β”‚   Phone #   β”‚
β”‚  Smartphone β”‚ β”‚  Smartphone β”‚ β”‚   +43...    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚               β”‚               β”‚
       β–Ό               β–Ό               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ‘” MS Teams β”‚ β”‚ πŸ“§ E-Mail  β”‚ β”‚ πŸ”” Push     β”‚
β”‚             β”‚ β”‚             β”‚ β”‚             β”‚
β”‚  Webhook    β”‚ β”‚    SMTP     β”‚ β”‚   ntfy      β”‚
β”‚    URL      β”‚ β”‚   Server    β”‚ β”‚   Topics    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

KEY FEATURES:
═══════════
β€’ Single API Endpoint fΓΌr alle KanΓ€le
β€’ Tag-basiertes Routing (kritisch/warnung/info)
β€’ Android-basierte Gateway-LΓΆsung (SMS/WhatsApp)
β€’ Keine Cloud-AbhΓ€ngigkeiten
β€’ VollstΓ€ndig selbst-gehostet

πŸš€ Quick Start

Voraussetzungen

  • Linux-Server (Ubuntu/Debian)
  • Docker & Docker Compose
  • Android Smartphone (Android 5.0+)
  • Min. 2 GB RAM, 10 GB Speicher

Installation

# Repository klonen
git clone https://github.com/walleralexander/alarma.git
cd alarma

# Verzeichnisstruktur erstellen
mkdir -p apprise-config sms-data whatsapp-data signal-data ntfy/{cache,etc}

# Konfiguration anpassen
cp docker-compose.example.yml docker-compose.yml
cp apprise-config/apprise.example.yml apprise-config/apprise.yml
# Bearbeite die Konfigurationsdateien nach deinen BedΓΌrfnissen

# Container starten
docker compose up -d

# Status prΓΌfen
docker compose ps

Android App Setup

  1. SMS Gateway App installieren: GitHub Releases
  2. App konfigurieren mit Server-IP und Token
  3. WhatsApp Gateway: Web-UI ΓΆffnen und QR-Code scannen

πŸ’» Verwendung

Basic Notification

PowerShell:

$notification = @{
    urls = "tag=kritisch"
    title = "Server Alert"
    body = "CPU Auslastung kritisch: 95%"
} | ConvertTo-Json

Invoke-RestMethod -Uri "http://notification-server:8000/notify" `
    -Method Post -Body $notification -ContentType "application/json"

Curl:

curl -X POST http://notification-server:8000/notify \
  -H "Content-Type: application/json" \
  -d '{
    "urls": "tag=kritisch",
    "title": "Server Alert",
    "body": "CPU Auslastung kritisch: 95%"
  }'

PowerShell Module

# Modul importieren
Import-Module .\scripts\NotificationGateway.psm1

# Verwendung
Send-CriticalAlert -Title "Firewall Alert" -Body "UngewΓΆhnliche AktivitΓ€t erkannt"
Send-InfoMessage -Title "Update" -Body "Windows Updates verfΓΌgbar"
Send-SMSAlert -Body "Server DC01 nicht erreichbar"

πŸ“Š Kostenvergleich

Unsere LΓΆsung

  • Einmalig: €250 (Android Smartphone)
  • Laufend: ~€15/Monat (Mobilfunkvertrag)
  • Jahr 1: €430 Gesamtkosten

Cloud-Alternative (Twilio/MessageBird)

  • Laufend: ~€75/Monat
  • Jahr 1: €900 Gesamtkosten

πŸ’° Einsparung

€470 im ersten Jahr, €720 in Folgejahren


πŸ”§ Integration

Alarma! lΓ€sst sich einfach in bestehende Systeme integrieren:

  • βœ… PRTG Network Monitor - Sensor-basierte Alerts
  • βœ… PowerShell Scripts - Automatisierte Benachrichtigungen
  • βœ… Veeam Backup - Backup-Status Reports
  • βœ… VMware vCenter - VM-Status Alerts
  • βœ… Active Directory - User-Event Notifications
  • βœ… MikroTik Router - Script-basierte Alerts

πŸ“– Dokumentation

Die vollstΓ€ndige Dokumentation findest du hier:


πŸ› οΈ Komponenten

Container Image Beschreibung
apprise-api lscr.io/linuxserver/apprise-api Zentrale API & Routing
sms-gateway capcom6/sms-gateway SMS ΓΌber Android
whatsapp-gateway dickyermawan/kilas WhatsApp ΓΌber Android
signal-gateway bbernhard/signal-cli-rest-api Signal Messenger
ntfy binwiederhier/ntfy Push-Notifications

πŸ”’ Sicherheit

  • Alle Ports nur intern freigeben (LAN/VPN)
  • Sichere API-Tokens verwenden
  • Optional: HTTPS via Reverse Proxy (nginx/Traefik)
  • Rate Limiting implementieren
  • RegelmÀßige Updates der Container

🀝 Beitragen

VerbesserungsvorschlΓ€ge und Pull Requests sind willkommen!

Entwicklung

# Repository forken und klonen
git clone https://github.com/DEIN-USERNAME/alarma.git

# Branch erstellen
git checkout -b feature/neue-funktion

# Γ„nderungen committen
git commit -am "FΓΌge neue Funktion hinzu"

# Push und Pull Request erstellen
git push origin feature/neue-funktion

πŸ“ Lizenz

Dieses Projekt steht unter der MIT-Lizenz - siehe LICENSE-Datei fΓΌr Details.


πŸ‘¨β€πŸ’» Autoren

Alexander Waller WebPoint Internet Solutions E-Mail: office@webpoint.at

Mit UnterstΓΌtzung von Claude AI


πŸ™ Danksagungen


πŸ“ž Support

Bei Fragen oder Problemen:

  1. PrΓΌfe die Dokumentation
  2. Schau dir die Issues an
  3. Erstelle ein neues Issue mit detaillierter Beschreibung

Version: 1.0
Letzte Aktualisierung: 29. Januar 2026


⭐ Wenn dir dieses Projekt gefÀllt, gib ihm einen Stern auf GitHub!

About

Multi-channel notification gateway for SMS, WhatsApp, Signal, Teams & Email. Self-hosted, Docker-based, uses Android as gateway. No cloud costs!

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks