Files
BlueMastoFeed/README.md
Ralf Kirchner e4fc11405a
All checks were successful
Build and Push Docker Image on Tag / build_and_push (push) Successful in 27s
Added function to post mastodon, or bluesky or both
2025-05-25 14:32:20 +02:00

115 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📰 BlueMastoFeed RSS zu Mastodon & Bluesky Poster
**BlueMastoFeed** ist ein Docker-basiertes Tool, das regelmäßig einen RSS-Feed ausliest und neue Beiträge automatisch auf **Mastodon** und **Bluesky** veröffentlicht.
## Features
- RSS-Feed regelmäßig auslesen
- Postfilterung nach Alter (`MAX_POST_AGE_DAYS`)
- Verhindert doppelte Posts mit Hilfe einer persistierten ID-Liste
- Posten auf:
- ✅ Mastodon
- ✅ Bluesky
- ✅ Beides (konfigurierbar über `.env`)
- Optionaler E-Mail-Versand bei Erfolg oder Fehler
- Healthcheck-Endpoint auf Port 8000
## Voraussetzungen
- Docker (Version **20.10** oder höher)
- Zugangsdaten für Mastodon & Bluesky
- Gültige RSS-Feed-URL
## Einrichtung für Produktivbetrieb
### 1. Datenverzeichnis auf dem Host erstellen
```bash
mkdir -p /opt/bluemastofeed/data
```
### 2. Container mit Umgebungsvariablen starten
```bash
docker run -d \
--name bluemastofeed \
-e FEED_URL=https://example.com/rss.xml \
-e MASTODON_API_BASE_URL=https://mastodon.social \
-e MASTODON_ACCESS_TOKEN=your_mastodon_access_token \
-e BSKY_IDENTIFIER=your_handle.bsky.social \
-e BSKY_PASSWORD=your_bluesky_password \
-v /opt/bluemastofeed/data:/data \
dev.ksite.de/ralf.kirchner/bluemastofeed:latest
```
## Einrichtung für Entwicklung
### 1. Repository klonen
```bash
git clone https://dev.ksite.de/ralf.kirchner/BlueMastoFeed.git
cd BlueMastoFeed
```
### 2. `.env`-Datei erstellen
Erstelle im Projektverzeichnis eine Datei namens `.env` mit folgendem Inhalt:
```env
FEED_URL=https://example.com/rss.xml
MASTODON_API_BASE_URL=https://mastodon.social
MASTODON_ACCESS_TOKEN=your_mastodon_token
BSKY_IDENTIFIER=your_bsky_handle
BSKY_PASSWORD=your_bsky_password
```
### 3. Docker-Image lokal bauen
```bash
docker build -t bluemastofeed .
```
### 4. Container starten
```bash
docker run -d \
--name rss-poster \
--env-file .env \
-v $(pwd)/data:/data \
bluemastofeed
```
## Umgebungsvariablen
Die folgenden Umgebungsvariablen steuern das Verhalten des Containers. Sie können entweder direkt beim Start übergeben oder über eine `.env`-Datei definiert werden.
| Variable | Beschreibung | Beispielwert | Standardwert |
| ----------------------- | ------------------------------------------------------------ | -------------------------- | -------------- |
| `FEED_URL` | URL zum RSS- oder Atom-Feed | `https://example.com/feed` | _erforderlich_ |
| `MAX_POST_AGE_DAYS` | Maximales Alter eines Beitrags (in Tagen), der gepostet werden darf | `0` = nur heutige Beiträge | `0` |
| `POST_TARGETS` | Zielplattform(en): `mastodon`, `bluesky`, `both` | `mastodon` = nur Mastodon | `both` |
| `MASTODON_API_BASE_URL` | Basis-URL deiner Mastodon-Instanz | `https://mastodon.social` | _erforderlich_ |
| `MASTODON_ACCESS_TOKEN` | Access Token für die Mastodon API | `abc123...` | _erforderlich_ |
| `BSKY_IDENTIFIER` | Bluesky-Handle | `name.bsky.social` | _erforderlich_ |
| `BSKY_PASSWORD` | Passwort für das Bluesky-Konto | `passwort123` | _erforderlich_ |
| `INTERVAL_MINUTES` | Zeitintervall in Minuten zwischen den Feed-Prüfungen | `30` | `30` |
| `EMAIL_MODE` | Wann eine Status-E-Mail gesendet werden soll (`none`, `errors`, `all`) | `errors` | `errors` |
| `SMTP_HOST` | SMTP-Server für Status-E-Mails | `smtp.example.com` | _optional_ |
| `SMTP_PORT` | Port des SMTP-Servers | `587` | `587` |
| `SMTP_USER` | Benutzername für SMTP | `user@example.com` | _optional_ |
| `SMTP_PASSWORD` | Passwort für SMTP | `sicherespasswort` | _optional_ |
| `EMAIL_FROM` | Absenderadresse für E-Mails | `noreply@example.com` | _optional_ |
| `EMAIL_TO` | Empfängeradresse für E-Mails | `admin@example.com` | _optional_ |