Updated README.md
This commit is contained in:
123
README.md
123
README.md
@@ -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
|
||||
@@ -24,4 +37,98 @@ docker buildx build \
|
||||
--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.
|
||||
Reference in New Issue
Block a user