# Standorte für Sitealarm bereitstellen

Wir suchen ständig nach neuen Standorten, um unsere Überwachung zu verbessern. Wenn du einen Standort vorschlagen möchtest, kannst du uns gerne kontaktieren.

Um selbst einen Standort bereitzustellen, lies dir bitte die folgenden Informationen durch. Wenn du alle Informationen gelesen hast und immer noch Fragen hast, kannst du uns gerne kontaktieren.

# Was ist ein Standort?

Ein Standort (Node) ist ein Server, der von Sitealarm verwendet wird, um deine Website zusätzlich zu unserem Hauptstandort (Frankfurt, Deutschland) zu überwachen. Ein Standort trifft nie selbst die Entscheidung, eine Benachrichtigung auszulösen — er meldet lediglich seine Prüfergebnisse an den Hauptserver zurück, der allein über Alarme entscheidet.

Du benötigst lediglich einen Server mit einer öffentlichen IP-Adresse (IPv4 und/oder IPv6) und ausgehendem HTTPS-Zugriff auf unseren Hauptserver. Ein eingehender Endpunkt ist nicht erforderlich — der Standort holt sich seine Aufgaben aktiv beim Hauptserver ab (Pull statt Push).

# Registrierung

Ein neuer Standort wird von uns per Artisan-Command registriert:

php artisan probe:register-location "London" lon

Das Kommando gibt dir Namen, Slug und ein einmalig generiertes Bearer-Token aus, das du sicher (wie ein Passwort) auf dem neuen Node hinterlegen musst.

# Kommunikationsablauf

Der Node authentifiziert sich bei jedem Aufruf über den Authorization: Bearer <token>-Header und kommuniziert ausschließlich über folgende drei Endpunkte:

GET  /api/probe/monitors    Ruft die für diesen Standort freigeschalteten Monitore ab
POST /api/probe/heartbeat   Signalisiert dem Hauptserver, dass der Node aktiv ist
POST /api/probe/results     Meldet Prüfergebnisse an den Hauptserver

Alle Aufrufe sind zusätzlich rate-limitiert.

# GET /api/probe/monitors

Liefert alle Monitore, die für genau diesen Standort aktiviert wurden (Opt-in pro Monitor).

{
  "monitors": [
    {
      "id": 42,
      "url": "https://example.com",
      "type": "http",
      "interval_seconds": 60,
      "timeout_seconds": 10
    }
  ]
}

# POST /api/probe/heartbeat

Kein Body erforderlich — allein der gültige Token reicht, um last_seen auf dem Hauptserver zu aktualisieren.

{ "status": "ok", "server_time": "2026-07-06T10:00:00Z" }

# POST /api/probe/results

{
  "results": [
    {
      "monitor_id": 42,
      "status": "down",
      "response_time": null,
      "http_code": null,
      "error": "Connection refused",
      "checked_at": "2026-07-06T10:00:00Z"
    }
  ]
}

Antwort:

{ "accepted": 1 }

Ergebnisse für Monitore, die für diesen Standort nicht freigeschaltet sind, werden ignoriert.

# Referenzimplementierung

Unsere eigene Node-Software ist eine schlanke Laravel-Konsolenanwendung, die die drei Aufgaben in regelmäßigen Abständen ausführt:

  • probe:run — holt Monitore, führt die Checks aus und sendet die Ergebnisse (jede Minute)
  • probe:heartbeat — sendet den Keep-Alive (alle 5 Minuten)

Ein eigenes Redis/Horizon-Setup ist auf dem Node nicht notwendig.