Auto-Update über Gitea einrichten + Web-Editor + Sync-Verbesserungen

- Thunderbird Auto-Update: update_url im Manifest, updates.json, release.sh
- .xpi neu gebaut (mit update_url, ohne defaults.local.json/Token)
- README + CLAUDE.md: Auto-Update-Doku, Repo muss public bleiben
- web-editor/ (Node/Docker WYSIWYG-Editor) hinzugefügt
- gitea-sync.js + templates_options: bestehende Anpassungen

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kendrick Bollens
2026-06-18 00:12:33 +02:00
parent edb979a1b2
commit eff90e9517
23 changed files with 3437 additions and 41 deletions

152
web-editor/README.md Normal file
View File

@@ -0,0 +1,152 @@
# HPS Vorlagen & Signaturen Web-Editor
Ein kleiner, in Docker laufender Web-Editor zum Pflegen der **E-Mail-Vorlagen** und
**Signaturen** für das Hotel Park Soltau. Er ist das Web-Gegenstück zum Thunderbird-Plugin
**„HPS Vorlagen & Signaturen“** und teilt sich mit ihm dieselbe **Gitea/Forgejo-Repository**
als gemeinsame Quelle der Wahrheit.
---
## Was kann der Editor?
- **Vorlagen für alle Abteilungen** verwalten gemeinsame Vorlagen (`_gemeinsam/`),
Abteilungsvorlagen (z. B. `Rezeption/`, `IT/`) und persönliche Vorlagen pro Benutzer
(`_benutzer/<email>/`).
- **Fußzeilen** pflegen pro Abteilung (`signatures/footers/<Abteilung>.html`) sowie eine
gemeinsame Standard-Fußzeile (`signatures/footers/_default.html`).
- **Signatur-Köpfe** bearbeiten (`signatures/headers/<email>.<name-slug>.html`).
- **WYSIWYG-Bearbeitung**, Umschalten auf den **HTML-Quelltext** und eine **Live-Vorschau**.
- Jede Änderung wird **direkt als Commit ins Gitea-Repo** geschrieben.
Der Editor ist eine kleine **Node.js/Express-App** (`server.js`), die ein statisches Frontend
aus `public/` ausliefert und die **Gitea Contents API** weiterreicht. Der **Gitea-Token bleibt
serverseitig** und ist für den Browser nicht sichtbar. Konfiguriert wird ausschließlich über
**Umgebungsvariablen**.
---
## Voraussetzungen
- **Docker** mit **docker compose** *oder* **Node.js ≥ 18**, falls ohne Docker betrieben.
- Ein **Gitea/Forgejo-API-Token mit Schreibrechten** auf das Vorlagen-Repository
(siehe [Gitea-API-Token erstellen](#gitea-api-token-erstellen)).
---
## Schnellstart mit docker compose
```bash
# 1. Vorlage kopieren und ausfüllen
cp .env.example .env
nano .env # GITEA_URL, GITEA_OWNER, GITEA_REPO, GITEA_TOKEN eintragen
# 2. Bauen und starten
docker compose up -d --build
```
Anschließend den Editor im Browser öffnen:
```
http://localhost:8080
```
Den Host-Port kannst du über `HOST_PORT` in der `.env` ändern (Standard `8080`).
docker compose mappt `${HOST_PORT:-8080}:3000`.
Logs ansehen bzw. Editor stoppen:
```bash
docker compose logs -f
docker compose down
```
---
## Alternative: plain `docker build` / `docker run`
```bash
# Image bauen
docker build -t hps-vorlagen-web-editor .
# Container starten (Umgebung aus .env, Port 8080 → 3000)
docker run -d \
--name hps-web-editor \
--restart unless-stopped \
-p 8080:3000 \
--env-file .env \
hps-vorlagen-web-editor
```
---
## Alternative: lokal ohne Docker
```bash
# Abhängigkeiten installieren
npm install
# Umgebungsvariablen setzen (Beispiel)
export GITEA_URL="https://git.example.com"
export GITEA_OWNER="organisation"
export GITEA_REPO="email-vorlagen"
export GITEA_BRANCH="main"
export GITEA_TOKEN="dein-api-token"
# Starten
npm start
```
Der Editor läuft dann auf dem in `PORT` eingestellten Port (Standard `3000`),
also unter `http://localhost:3000`.
---
## Umgebungsvariablen
| Name | Pflicht | Standard | Beschreibung |
| --------------------- | :-----: | -------------- | --------------------------------------------------------------------------- |
| `GITEA_URL` | **ja** | | Basis-URL des Gitea/Forgejo-Servers, ohne abschließenden Slash. |
| `GITEA_OWNER` | **ja** | | Besitzer des Repos (Organisation oder Benutzer). |
| `GITEA_REPO` | **ja** | | Name des Vorlagen-Repositories. |
| `GITEA_BRANCH` | nein | `main` | Branch, in den committet wird. |
| `GITEA_TOKEN` | **ja** | | API-Token mit Schreibrechten auf das Repository. Bleibt serverseitig. |
| `COMMIT_AUTHOR_NAME` | nein | `Web-Editor` | Name, mit dem Änderungen committet werden. |
| `COMMIT_AUTHOR_EMAIL` | nein | | E-Mail-Adresse des Commit-Autors. |
| `BASIC_AUTH_USER` | nein | | Benutzername für HTTP-Basic-Auth (siehe [Sicherheit](#sicherheit)). |
| `BASIC_AUTH_PASS` | nein | | Passwort für HTTP-Basic-Auth. Schutz aktiv, wenn beide Werte gesetzt sind. |
| `PORT` | nein | `3000` | Port, auf dem die App im Container/Prozess lauscht. |
| `HOST_PORT` | nein | `8080` | Nur für docker compose: Port, unter dem der Editor am Host erreichbar ist. |
Eine fertige Vorlage findest du in [`.env.example`](.env.example) einfach kopieren
und ausfüllen.
---
## Gitea-API-Token erstellen
1. In Gitea/Forgejo oben rechts auf das Profilbild → **Einstellungen**.
2. Reiter **Anwendungen** öffnen.
3. Unter **Token verwalten** einen neuen Token **generieren**.
4. Als **Scope** mindestens **Schreibrechte auf Repositories** (`repo` bzw. `write:repository`)
vergeben.
5. Den angezeigten Token **sofort kopieren** (er wird nur einmal angezeigt) und als
`GITEA_TOKEN` in die `.env` eintragen.
---
## Sicherheit
- **Wenn der Editor öffentlich erreichbar ist, unbedingt `BASIC_AUTH_USER` und
`BASIC_AUTH_PASS` setzen.** Sind beide gesetzt, ist der gesamte Editor per
HTTP-Basic-Auth geschützt.
- Die **`.env` niemals committen** sie enthält den Gitea-Token. Sie steht bereits in der
`.gitignore` und bleibt damit außerhalb der Versionskontrolle.
---
## Hinweis zum Zusammenspiel mit dem Thunderbird-Plugin
Jede im Editor gespeicherte Änderung landet **sofort als Commit im Gitea-Repo**. Das
Thunderbird-Plugin **„HPS Vorlagen & Signaturen“** nutzt dasselbe Repo als Quelle der Wahrheit
und übernimmt die Änderungen automatisch beim nächsten **Sync** (alle paar Sekunden bis
spätestens alle 15 Minuten). Ein manueller Export ist nicht nötig.