# GoToSocial Benachrichtigungs-Relay zu ntfy Dieses Projekt ist ein Go-Service, der regelmäßig Benachrichtigungen von einer [GoToSocial](https://docs.gotosocial.org/) Instanz abruft und als Push-Nachrichten an einen eigenen [ntfy](https://ntfy.sh/) Server weiterleitet. Jede Benachrichtigung enthält einen "Beitrag anzeigen"-Button, der direkt auf die Originalseite des jeweiligen Posts verweist. ## Features - **Polling** von GoToSocial-Benachrichtigungen über die REST-API - **Versand** neuer Benachrichtigungen als Push an einen ntfy-Server - **HTML zu Klartext**: Entfernt HTML aus den Benachrichtigungen - **Action-Button**: Öffnet den Original-Post auf der Instanz - **Konfigurierbar** über `.env`-Datei - **Docker- und Compose-Setup** - **Logging** mit Titel und Typ der Benachrichtigung - **Token-Unterstützung** für ntfy und GoToSocial --- ## Voraussetzungen - GoToSocial Instanz mit API-Zugang und Token (Scope: `read:notifications`) - ntfy-Server (selbst gehostet oder ntfy.sh) - Docker & Docker Compose --- ## Installation 1. **Repository klonen** ``` git clone cd ``` 2. **.env-Datei anlegen und konfigurieren** Beispiel: ``` # GoToSocial API GOTOSOCIAL_URL=https://social.example.com GOTOSOCIAL_TOKEN=dein_gotosocial_token # ntfy NTFY_SERVER=https://ntfy.example.com NTFY_TOKEN=dein_ntfy_token NTFY_TOPIC=mein_topic # Intervall für Polling (z.B. 30s, 1m) POLL_INTERVAL=30s ``` 3. **Build & Start mit Docker Compose** ``` docker-compose up --build -d ``` --- ## Verwendete Dateien - **main.go** Go-Programm: Fragt Benachrichtigungen ab und sendet sie an ntfy. - **Dockerfile** Baut das Go-Binary und erstellt ein minimales Image. - **docker-compose.yml** Startet den Dienst mit allen Umgebungsvariablen. - **.env** Konfigurationsdatei für Zugangsdaten und Einstellungen. --- ## Benachrichtigungsformat - **Titel:** `"Neue Benachrichtigung von "` - **Nachricht:** Typ und Inhalt der Benachrichtigung (HTML entfernt) - **Tags:** `bell`, `incoming_envelope` - **Action-Button:** - Label: `Beitrag anzeigen` - Öffnet die Original-URL des Beitrags (`status.url`) in der GoToSocial-Instanz --- ## Beispiel für eine Benachrichtigung ![ntfy Beispiel](https://docs.ntfy.sh/img/push-example.png) --- ## Hinweise - Das Feld `status.url` muss von der GoToSocial-API bereitgestellt werden (ab aktuellem Release Standard). - Die Anwendung speichert keine Daten dauerhaft, sondern verarbeitet nur neue Benachrichtigungen seit dem letzten Polling. - Für produktiven Einsatz: Tokens sicher speichern und HTTPS verwenden. --- ## Anpassungen - **Polling-Intervall:** Über `POLL_INTERVAL` in der `.env`-Datei anpassbar. - **Topic:** Über `NTFY_TOPIC` wählbar. - **ntfy-Server:** Eigener Server oder ntfy.sh verwendbar. --- ## Fehlerbehandlung & Logging - Alle Aktionen und Fehler werden mit Zeitstempel geloggt. - Logs sind im Docker-Container über `docker logs gots-notify` einsehbar. --- ## Lizenz MIT License --- ## Weiterführende Links - [GoToSocial Dokumentation](https://docs.gotosocial.org/) - [ntfy Dokumentation](https://docs.ntfy.sh/)