Server‑Monitoring als Widget.
Server-Status aus Proxmox, Prometheus-Alarme, Zertifikate und Deployments auf Homescreen und Sperrbildschirm von iPhone und iPad, vom Homelab bis zum Rechenzentrum. Deine Server senden, niemand fragt bei ihnen an. Kein offener Port, kein VPN.
7 Tage kostenlos testen, danach 4,99 € im Monat.

Monitoring hast du. Nur nicht in der Tasche.
Erreichbar heißt angreifbar
Damit dein iPhone Grafana oder Proxmox fragen kann, muss es hinein: Portfreigabe, VPN oder Tunnel. Jedes davon ist eine Tür mehr.
Eine App je Werkzeug
Proxmox hat eine App, Uptime Kuma auch, Grafana eine Weboberfläche. Den Überblick über alles hat keine davon.
Wer meldet, wenn alles steht?
Fällt der Server aus, der überwacht, meldet sich niemand. Stille sieht aus wie Ordnung.
Ein Dienst im Rechenzentrum, zum Ausprobieren.
Die Demo simuliert einen Webdienst auf mehreren Knoten. Scanne den Code mit der Andon-App, und du hast ihn auf deinem iPhone.
- ✓Zustand: API-Gateway, Verfügbarkeit über 30 Tage, letztes Deployment.
- ✓Last: Anfragen je Sekunde, Antwortzeit p95, Fehlerrate, CPU des Clusters.
- ✓Bestand: Knoten mit CPU und RAM, offene Störungen, belegter Speicher, Ablauf des Zertifikats.
- ✓Ohne Messung: Ein Check, der nicht antwortet, wird grau statt grün.
Cloud-Dienst
Ein Dienst im Rechenzentrum: Anfragen, Antwortzeit, Fehlerrate, Knoten, offene Störungen. Ein Blick aufs Widget statt eines Logins im Dashboard.
Deine Server senden. Niemand fragt an.
Ein Skript oder Node-RED auf deinem Server baut die Ansicht, verschlüsselt sie und schickt sie per HTTPS an das Relay. Ein Timer wie cron wiederholt das.
Zahlen holen
Ein Skript fragt ab, was du ohnehin betreibst, selbst gehostet oder in der Cloud: die Proxmox-API, Prometheus, einen Healthcheck, die Pipeline deines CI.
Status setzen und versiegeln
Das Skript entscheidet, was grün, gelb oder rot ist, und schreibt die Ansicht. Ein zweites versiegelt sie und lädt sie hoch. Die Vorlagen dafür gibt es für Node.js und Python.
Grau, wenn es still wird
Schweigt der Server länger als vereinbart, färbt die App die Ansicht grau. So merkst du auch den Ausfall, der sich selbst nicht mehr melden kann.
Proxmox aufs iPhone, mit einem Skript.
Auf jedem Proxmox-Knoten liegen pvesh und Python schon bereit. Das Skript fragt den Cluster nach Knoten und Gästen und schreibt eine Ansicht mit drei Kacheln.
- ✓Ein Knoten offline macht seine Kachel rot. Ein gestoppter Gast bleibt ohne Farbe, er kann mit Absicht aus sein.
- ✓Versiegeln und hochladen übernimmt
andon_seal.pyvon der Entwicklerseite. Es brauchtcryptographyundrequests. Unter Debian, also auch auf Proxmox, heißen die Paketepython3-cryptographyundpython3-requests. - ✓Ein cron-Eintrag leitet die Ausgabe jede Minute an
andon_seal.pyweiter, mit den Schlüsseln aus der.envals Umgebungsvariablen. - ✓Für Prometheus-Alarme liegt ein zweites Skript auf der Entwicklerseite: Alarme als Tabelle.
Lieber Node-RED als Skripte? Das geht auch: Andon für Node-RED.
#!/usr/bin/env python3 # Proxmox as an Andon view: nodes and guests, from the cluster's own API. # Runs on a Proxmox node, where pvesh is. Writes the document to stdout; # andon_seal.py seals and sends it. The status is decided HERE. import json, subprocess, sys from datetime import datetime, timezone res = json.loads(subprocess.run( ["pvesh", "get", "/cluster/resources", "--output-format", "json"], check=True, capture_output=True, text=True).stdout) nodes = [r for r in res if r["type"] == "node"] guests = [r for r in res if r["type"] in ("qemu", "lxc") and not r.get("template")] online = sum(n["status"] == "online" for n in nodes) running = sum(g["status"] == "running" for g in guests) def row(g): ram = round(100 * g["mem"] / g["maxmem"]) if g.get("maxmem") else None cells = [g.get("name") or str(g["vmid"]), g["node"], round(100 * g.get("cpu", 0)), ram] # A stopped guest gets no colour: it may be stopped on purpose. return {"cells": cells, "status": "ok"} if g["status"] == "running" else {"cells": cells} guests.sort(key=lambda g: (g["status"] != "running", g.get("name") or "")) json.dump({ "id": "5d0e8b47-2a19-4c63-9f8e-7b1a3c6d2e90", "schemaVersion": 1, "name": "Proxmox", "generatedAt": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"), "staleAfterSec": 300, "tiles": [ {"id": "t_nodes", "view": "label", "title": "Nodes online", "titleShort": "Nodes", "icon": "server.rack", "value": online, "subtext": f"of {len(nodes)}", "status": "ok" if online == len(nodes) else "critical"}, {"id": "t_guests", "view": "label", "title": "Guests running", "titleShort": "Guests", "icon": "shippingbox", "value": running, "subtext": f"of {len(guests)}"}, {"id": "t_list", "view": "table", "title": "Guests", "icon": "list.bullet", "columns": [{"title": "Name"}, {"title": "Node"}, {"title": "CPU", "unit": "%", "decimals": 0}, {"title": "RAM", "unit": "%", "decimals": 0}], "rows": [row(g) for g in guests[:20]]}, ], }, sys.stdout)
Ergänzt Grafana, statt es zu ersetzen.
Kein Weg hinein
Nur ausgehend über HTTPS. Kein Port, kein VPN, kein Tunnel, der offen bleibt.
Alles an einem Ort
Proxmox, Alarme, Zertifikate und CI nebeneinander. Mehrere Quellen bekommen eigene Ansichten, die App zeigt alle.
Stille wird sichtbar
Eine Ansicht ohne frische Daten wird grau. Das ersetzt keine Überwachung von außen, aber du siehst, dass etwas nicht stimmt.
Ende-zu-Ende verschlüsselt
Hostnamen und Zahlen gehen verschlüsselt durch das Relay. Lesen können sie nur deine gekoppelten Geräte.
Häufige Fragen zum Server-Monitoring.
Muss ich einen Port öffnen oder ein VPN betreiben?
Nein. Dein Server sendet nur nach außen, per HTTPS an das Relay. Eingehend bleibt alles zu.
Geht das mit Proxmox, Prometheus und Uptime Kuma?
Mit allem, was ein Skript abfragen kann. Das Skript für Proxmox steht oben, das für Prometheus-Alarme auf der Entwicklerseite. Uptime Kuma liefert seine Zahlen unter /metrics im Prometheus-Format.
Wie aktuell ist das Widget?
Ändert sich ein Status, weckt deine Quelle das Widget, meist innerhalb einer Minute. Sonst entscheidet iOS, wann es neu lädt, in der Regel etwa alle 15 Minuten. Die geöffnete App holt jede Minute neue Werte.
Was passiert, wenn mein Server ausfällt?
Dann kommen keine Daten mehr, und nach der vereinbarten Zeit (staleAfterSec) färbt die App die Ansicht grau. Einen Weckruf kann ein ausgefallener Server nicht mehr senden: Das Grau siehst du beim nächsten Blick, nicht als Push.
Kann ich den Status von GitHub Actions oder GitLab CI zeigen?
Ja, mit einem Skript, das die API deines CI fragt und das Ergebnis als Kachel schreibt. Eine fertige Vorlage dafür gibt es noch nicht.
Kann das Relay meine Daten lesen?
Nein. Die Ansicht wird auf deinem Server verschlüsselt, der Schlüssel bleibt dort und auf deinen Geräten. Wie das genau geht, steht unter So funktioniert es.
Andon in anderen Bereichen
Fang mit einem Server an.
Kacheln im Konfigurator bauen, Ansicht anlegen, iPhone koppeln. Dann das Skript in den cron.