Files
igmg-ics/README.md
2025-12-26 16:35:34 +01:00

134 lines
3.1 KiB
Markdown
Raw 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.
# IGMG Gebetszeiten → iCalendar (.ics) Feed (Docker + Traefik)
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
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t gitea.home.musaberdem.de/musabe24/igmg-ics-updater:1.0.0 \
-t gitea.home.musaberdem.de/musabe24/igmg-ics-updater:latest \
--push \
./updater
```
```bash
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t gitea.home.musaberdem.de/musabe24/igmg-ics-web:1.0.0 \
-t gitea.home.musaberdem.de/musabe24/igmg-ics-web:latest \
--push \
-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.