Updated README.md

This commit is contained in:
2025-12-26 16:35:34 +01:00
parent 4607f2b497
commit 6896798561

121
README.md
View File

@@ -1,11 +1,24 @@
# IGMG Gebetszeiten -> ICS (Traefik File Provider)
# IGMG Gebetszeiten → iCalendar (.ics) Feed (Docker + Traefik)
## Start
```bash
cp .env.example .env
nano .env
docker compose up -d --build
```
Dieses Projekt erzeugt aus dem IGMG-Gebetskalender (AJAX-Quelle) einen **abonnierbaren iCalendar-Feed (.ics)** und stellt ihn über einen Webserver bereit.
Ein separater Updater-Container aktualisiert den Feed **automatisch** (Standard: **monatlich**).
Ziel: Du kannst den Link in Google Calendar / iOS Kalender / Outlook etc. als **Kalender-Abo** hinzufügen und bekommst immer die aktuellen Gebetszeiten.
---
## Überblick
- **Updater-Container** (Python + Cron)
- ruft die IGMG-AJAX-Quelle ab
- parst die HTML-Antwort
- schreibt atomar eine `.ics` Datei und eine `index.html` in ein Docker-Volume
- **Web-Container** (nginx)
- liefert das Volume `/data` via HTTP aus
- Traefik routet von außen auf nginx
---
## Container bauen und pushen
```bash
@@ -25,3 +38,97 @@ docker buildx build \
-f ./web/Dockerfile \
.
```
---
## Architektur
```
Internet
|
| https://gebetszeiten.musaberdem.de/igmg-20020.ics
v
Traefik (File Provider Routing)
|
v
igmg-ics-web (nginx) ---> liest /data (read-only)
|
v
Docker Volume "igmg_ics_data" <--- igmg-ics-updater schreibt /data
^
|
igmg-ics-updater (cron + python)
```
Warum zwei Container?
- nginx bleibt minimal und sicher (nur statische Dateien)
- Updater hat Schreibrechte und macht die HTTP-Requests
---
## Dateistruktur
Beispiel-Struktur des Projekts:
```
igmg-ics/
docker-compose.yml
nginx.conf
.env.example
traefik/
dynamic/
igmg-ics.yml
updater/
Dockerfile
entrypoint.sh
crontab
update.py
README.md
```
Im Volume `igmg_ics_data` landen:
- `/data/<ICS_FILENAME>` → abonnierbarer Kalenderfeed
- `/data/index.html` → Landing-Page (Link + letzte Aktualisierung)
---
## Konfiguration
Konfiguration erfolgt über eine `.env` Datei im Projektordner.
### Beispiel `.env`
```env
TZ=Europe/Berlin
PUID=1000
PGID=1000
CITY_ID=20020
CITY_SLUG=Blumberg_(DE)
LANG=de
ICS_FILENAME=igmg-20020.ics
```
Erklärung
- `TZ`: Zeitzone. Wichtig für korrekte Event-Zeiten.
- `CITY_ID`: ID aus der IGMG-URL (id=...)
- `CITY_SLUG`: stadt=... Teil der URL (wird nur als Quell-Link genutzt)
- `LANG`: de oder tr
- `ICS_FILENAME`: Dateiname, unter dem der Feed ausgeliefert wird
---
## Kalender abonnieren
Der Feed ist erreichbar unter: https://gebetszeiten.musaberdem.de/igmg-20020.ics
Optional (einige Clients bevorzugen webcal): webcal://gebetszeiten.musaberdem.de/igmg-20020.ics
### Hinweise zu Kalendern
- Google Calendar: “Andere Kalender” → “Per URL” → HTTPS-Link einfügen
- iOS / macOS: Kalender → “Kalender hinzufügen” → “Kalenderabonnement”
- Outlook: “Kalender hinzufügen” → “Aus dem Internet” / “Abonnieren”
Hinweis: Kalender-Abos refreshen oft nur alle paar Stunden oder 1× täglich.