gots-notify/README.md

128 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

2025-07-01 20:39:43 +02:00
# 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/)