ESPN DeportesMonchi se disculpa por pedir Balón de Oro para LamineESPNHarbaugh offers rare critique of struggling QB Herbert: 'Be better'The Jerusalem PostWATCH: 'Don't mess with us': Netanyahu warns enemies may attack Israel ahead of electionBollywood HungamaJubin Nautiyal welcomes first child with wife after intimate wedding, shares update: “Mom and baby are back home”Daily MaverickTHE CONVERSATION: New world map makes Africa look bigger – What’s the fuss about? Cartographers explainRTP DesportoBrasil vence Austrália com Circati a marcar e Irankunda a cometer penáltiNotJustOkRaphinha suffers Injury scare ahead of Barcelona’s El Clásico clashNME‘Later… With Jools Holland’ to return next month with Johnny Marr, Jamie T, Violet Grohl, Bloc Party and moreEl TiempoEn Cartagena nace el Comité Pro Islas para frenar la fuga del tributo ambiental y ordenar los zarpes hacia las islas del Rosario, Barú y Tierrabomba01netCertains forfaits Orange vont augmenter automatiquement, voici comment refuserkickerPflichtspieljahr beendet: Sturmtalent Musah fehlt Bremen monatelangNOSNa dagenlang protest neemt Spaanse regering maatregelen tegen woningcrisis
The Daily Newsstand · Free, Always
Tuesday, September 29, 2026

Der Universalbote für Admins: Apprise 2.0

Translate

Apprise 2.0.0 ist da. Mit der neuen Hauptversion lassen sich Zugangsdaten per Platzhalter aus Konfigurationsdateien heraushalten. Außerdem kann Apprise Empfänger gestaffelt eskalieren, Zustellungen gezielt wiederholen und nach einer festgelegten Zeit abbrechen. Wer die Python-Bibliothek in eigene Software einbindet, muss aber nacharbeiten: Die Methode notify() gibt jetzt ein Ergebnisobjekt zurück statt eines einfachen Wahrheitswerts.

Apprise ist ein Python-Paket und Kommandozeilenwerkzeug, das Benachrichtigungen mit einheitlicher Syntax an nahezu alle verbreiteten Dienste verschickt. Die Projektdokumentation spricht von 160 Diensten, darunter E-Mail, Chat-Plattformen und SMS-Anbieter. Jedes Ziel hat eine eigene URL. Für Signal sieht das etwa so aus: signal://localhost:8080/ABSENDERNUMMER/EMPFÄNGERNUMMER. Apprise schickt die Nachricht dabei nicht direkt an Signal, sondern an eine selbst gehostete signal-cli-rest-api, die als verknüpftes Gerät am Signal-Konto hängt. Entwickler müssen also nicht mehr jede Dienst-API einzeln anbinden, und Admins schicken Warnungen direkt aus Skripten oder Cron-Jobs. Apprise steht als Open-Source-Software unter der BSD-2-Clause-Lizenz.

Neben Bibliothek und CLI gibt es mit Apprise API ein schlankes REST-Framework, das die Apprise-Bibliothek kapselt. Hinzu kommt eine Android-App. Auch Home Assistant nutzt Apprise: Die dortige Integration verbindet die Hausautomation mit mehr als 140 Benachrichtigungsdiensten.

Laut den Release Notes auf GitHub hat Maintainer Chris Caron große Teile von Apprise neu geschrieben. Die folgenreichste Änderung betrifft notify(). Die Methode gibt nun ein AppriseResult-Objekt zurück. Übliche Prüfungen wie if apobj.notify(...): funktionieren weiter, weil bool(result) nach wie vor True oder False ergibt. Das frühere None für „kein Treffer“ liefert jetzt allerdings False.

Das Objekt enthält für jeden angesprochenen Dienst ein eigenes Log und einen eigenen Status. Die Statuswerte entsprechen den Exit-Codes der CLI: SUCCESS (0), FAILURE (1), NOMATCH (3), PARTIAL (4) und TIMEOUT (5). Neu sind PARTIAL und TIMEOUT. PARTIAL steht für Fälle, in denen einige Dienste erreicht wurden, mindestens einer aber nicht. Version 1 meldete dafür einfach False.

Alle Fehler, die Apprise auslöst, stammen jetzt aus der Klassenfamilie AppriseException. Man kann sie also an einer Stelle abfangen. Bestehende try/except-Blöcke laufen trotzdem weiter: Eine ungültige Einstellung ist nach wie vor ein ValueError, ein Festplattenproblem ein OSError.

Veraltete Optionen hat das Projekt entfernt. Die Umgebungsvariable APPRISE_CONFIG heißt jetzt APPRISE_CONFIG_PATH. Der alte Name funktioniert vorerst noch, erzeugt aber eine Warnung. Bei E-Mail fallen use_pgp= und ?pgpkey= weg, an ihre Stelle treten pgp_mode= und ?pgppub=. Ungültige URL-Parameter wie ein unbekanntes ?format= brechen jetzt mit einer klaren Fehlermeldung ab, statt stillschweigend etwas Unerwartetes zu tun.

Ein Dienst kann außerdem mehrere Textformate unterstützen, sofern der Anbieter das zulässt. Telegram etwa nimmt Markdown und HTML an. Apprise wählt automatisch das passende Format und konvertiert Inhalte nicht mehr unnötig. Wer das Format selbst festlegen will, gibt ?format= in der URL an.

Wer noch nicht umsteigen kann, sollte die Version in pyproject.toml oder requirements.txt auf apprise>=1.0.0,<2.0.0 festlegen. Der Code von Version 1 liegt im Branch apprise-v1-release. Caron will ihn nach eigener Aussage noch ein bis zwei Jahre mit Sicherheits- und Bugfixes versorgen, soweit das praktikabel ist.

Tags, mit denen Nutzer ihre Dienste gruppieren, können jetzt eine Priorität tragen, etwa 2:alerts. Dabei gilt: Eine niedrigere Zahl bedeutet höhere Dringlichkeit. Ein Aufruf mit --tag alerts benachrichtigt zuerst die Gruppe mit der höchsten Priorität. Die nächste Gruppe ist nur dran, wenn dabei etwas schiefgeht. So lässt sich zum Beispiel eine SMS nur dann verschicken, wenn die E-Mail nicht zugestellt wurde. Mit --tag "2:alerts" spricht man gezielt nur eine Prioritätsstufe an.

Auch die Wiederholungsversuche über ?retry= hat das Projekt überarbeitet. Apprise merkt sich jetzt, welche Nachrichten schon angekommen sind. Scheitert bei drei Empfängern nur einer, bekommt nur dieser die Nachricht erneut. Die Zahl der Versuche lässt sich auch direkt beim Aufruf festlegen, etwa mit --tag "alerts:3". Beides kombiniert – hier mit der Kurzform -g für --tag: -g "2:alerts:3" wählt nur Dienste der Priorität 2 und erlaubt bis zu drei Wiederholungen.

Hängt ein Server, wartet Apprise nicht mehr unbegrenzt. --limit 10 beschränkt den gesamten Durchlauf auf zehn Sekunden, --service-limit 5 jeden einzelnen Dienst auf fünf. Ohne eigene Angabe liegt das Limit pro Dienst bei 60 Sekunden. Nachrichten gehen standardmäßig parallel raus, damit ein langsamer Dienst die anderen nicht aufhält. Wer lieber nacheinander senden will, nutzt --disable-async. Für asynchrone Python-Anwendungen gibt es jetzt await apobj.async_notify().

YAML-Konfigurationen können nun Platzhalter im Format ${NAME} enthalten. API-Schlüssel und Passwörter stehen dann nicht mehr in der Datei selbst. Die verwendeten Namen deklariert man im neuen Abschnitt template:. Die Werte kommen dann aus einer von vier Quellen: von der Kommandozeile (--template-var api_key=abc123 oder kurz -tv), aus einer Umgebungsvariable wie APPRISE_TEMPLATE_API_KEY, als Standardwert im template:-Abschnitt oder über die API mit template={'api_key': 'abc123'}.

Ganz frei sind die Platzhalter nicht. Laut Projektseite können sie weder das Dienstschema vor :// noch Namen von Einstellungen oder Tags ersetzen. Außerdem gelten Template-Variablen nur für YAML-Konfigurationen; das TEXT-Format bleibt unverändert.

Über das Schema apprise:// spricht Apprise einen Apprise-API-Server an. Die Konfigurations-ID steht dabei nicht mehr in der URL und damit auch nicht mehr in den Zugriffslogs des Servers. Zudem hat das Projekt die Maskierung sensibler Werte in Logs verbessert. Die Release Notes verweisen dazu auf CWE-312, die Schwachstellenkategorie für Klartextspeicherung sensibler Informationen. Für Matrix gibt es jetzt eine optionale automatische SAS-Verifizierung. SAS steht für Short Authentication String: Zwei Geräte bestätigen sich gegenseitig, indem sie eine kurze Zahlen- oder Emoji-Folge vergleichen.

Neu unterstützt werden Delta Chat (deltachat://), ein Messenger auf E-Mail-Basis, außerdem WPUSH (wpush://), YouLMK (youlmk://) und Telnyx SMS (telnyx://). Auf dem Mac arbeitet Apprise jetzt mit terminal-notifier unter macOS 26 zusammen. Die Oberfläche ist zudem mehrsprachig, passend zur Android-App Apprise Mobile.

Apprise 2.0.0 lässt sich wie gewohnt per pip aus dem Python Package Index installieren. Neu ist die Unterstützung für den Paketmanager uv. Damit kann man die CLI in einer eigenen, isolierten Umgebung installieren oder Apprise zu einem uv-Projekt hinzufügen. Alle Änderungen stehen im vollständigen Changelog auf GitHub. Welche URL welchen Dienst anspricht, zeigt die Übersicht der unterstützten Dienste.

View the original on heise online →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.