docs: create betrieb/element-customization
This commit is contained in:
committed by
ThreadNet Wiki
parent
8901f8f853
commit
270f9cd031
@@ -0,0 +1,158 @@
|
|||||||
|
---
|
||||||
|
title: Element Customization
|
||||||
|
description: Themes, Desktop-Apps, Admin
|
||||||
|
published: true
|
||||||
|
date: 2026-08-13T18:04:24.484Z
|
||||||
|
tags:
|
||||||
|
editor: markdown
|
||||||
|
dateCreated: 2026-08-13T18:04:24.484Z
|
||||||
|
---
|
||||||
|
|
||||||
|
**Status**: ✅ Vollständig deployed
|
||||||
|
**Domains**: `axion1337.chat` (Web), `/docs/setup` (Scripts)
|
||||||
|
|
||||||
|
## 1. Custom Themes (17 Stück)
|
||||||
|
|
||||||
|
| Theme | Art | Akzent | Grundton |
|
||||||
|
|---|---|---|---|
|
||||||
|
| aXion1337 Dark true | dunkel | `#ffaf0f` | `—` |
|
||||||
|
| Deep Purple | dunkel | `#6503b3` | `#181b21` |
|
||||||
|
| Discord Dark | dunkel | `#747ff4` | `#36393f` |
|
||||||
|
| Electric Blue | **hell** | `#3596fc` | `#ffffff` |
|
||||||
|
| Everforest dark hard | dunkel | `#a7c080` | `#2b3339` |
|
||||||
|
| aXion1337 Dark | dunkel | `#bd93f9` | `#282828` |
|
||||||
|
| aXion1337 Light | **hell** | `#8f3f71` | `#fbf1c7` |
|
||||||
|
| Ocean Depths | dunkel | `#2ec4b6` | `#12303f` |
|
||||||
|
| Sunset Boulevard | dunkel | `#ff6b6b` | `#452133` |
|
||||||
|
| Forest Canopy | dunkel | `#7fb069` | `#22372b` |
|
||||||
|
| Modern Minimalist | **hell** | `#3d5a80` | `#ffffff` |
|
||||||
|
| Golden Hour | dunkel | `#d4a017` | `#3f2f1f` |
|
||||||
|
| Arctic Frost | **hell** | `#3b9ec7` | `#ffffff` |
|
||||||
|
| Desert Rose | **hell** | `#c08497` | `#fdfaf9` |
|
||||||
|
| Tech Innovation | dunkel | `#00e5ff` | `#161d29` |
|
||||||
|
| Botanical Garden | **hell** | `#4c9a5d` | `#ffffff` |
|
||||||
|
| Midnight Galaxy | dunkel | `#b388ff` | `#1c1440` |
|
||||||
|
|
||||||
|
**Konfiguration**: `apps/production/custom-configs/element-values.yaml`
|
||||||
|
(Schlüssel `setting_defaults.custom_themes` — JSON innerhalb der ConfigMap).
|
||||||
|
|
||||||
|
**Anwendung (User)**: Settings → Appearance → Colour theme
|
||||||
|
|
||||||
|
### Hinweise zur Pflege
|
||||||
|
|
||||||
|
- **`aXion1337 Dark` ist Gruvbox Dark** — Grundtöne, Textfarben und die acht
|
||||||
|
`username-colors` sind die Gruvbox-Palette. **`aXion1337 Light` ist das exakte
|
||||||
|
helle Gegenstück** (Gruvbox Light): gleiche Rollenverteilung, gleiche
|
||||||
|
Akzentfamilie, nur die Helligkeitsachse gespiegelt. Wer eins ändert, sollte das
|
||||||
|
andere mitziehen.
|
||||||
|
- Die zehn Paletten von *Ocean Depths* bis *Midnight Galaxy* nutzen einen
|
||||||
|
einheitlichen Schlüsselsatz (24 Farben inkl. `username-colors`) und sind dadurch
|
||||||
|
untereinander vergleichbar; ältere Themes haben teils nur 3–16 Schlüssel und
|
||||||
|
erben den Rest vom Element-Default.
|
||||||
|
- ⚠️ **Beim Bearbeiten der ConfigMap niemals die YAML neu serialisieren.** Der
|
||||||
|
Themes-Block ist JSON innerhalb von YAML; ein Re-Dump zerstört Formatierung und
|
||||||
|
Kommentare (real passiert am 2026-07-30). Nur textuell ergänzen und danach beides
|
||||||
|
prüfen — YAML parsen **und** den JSON-Block parsen.
|
||||||
|
- Nach jeder Änderung muss die **ConfigMap-Prüfsumme** mitgezogen werden, sonst
|
||||||
|
rotiert der Pod nicht sauber (Fallstrick vom 2026-08-01).
|
||||||
|
|
||||||
|
## 2. Desktop-Setup-Scripts
|
||||||
|
|
||||||
|
| System | Datei |
|
||||||
|
|--------|-------|
|
||||||
|
| Windows | `element-setup-windows.cmd` (Doppelklick) |
|
||||||
|
| macOS | `element-setup-macos.command` (Doppelklick) |
|
||||||
|
| Linux | `element-setup-linux.sh` (bash) |
|
||||||
|
|
||||||
|
**Was die Scripts tun**:
|
||||||
|
1. config.json erstellen mit `configUrl: "https://axion1337.chat/config.json"`
|
||||||
|
2. Element installieren (WinGet / Homebrew / apt/dnf/pacman)
|
||||||
|
3. Element starten (auto-config laden)
|
||||||
|
|
||||||
|
**Download**: `https://axion1337.chat/docs/setup/`
|
||||||
|
|
||||||
|
## 3. Element Admin-Panel
|
||||||
|
|
||||||
|
**URL**: `https://admin.axion1337.chat`
|
||||||
|
|
||||||
|
- User verwalten
|
||||||
|
- Room durchsuchen
|
||||||
|
- Server-Statistiken
|
||||||
|
|
||||||
|
**Konfiguration**: `apps/production/element-server-suite.yaml` (ESS Chart)
|
||||||
|
|
||||||
|
## 4. Element Call Fork (Video/Audio-Qualität)
|
||||||
|
|
||||||
|
**Status**: ✅ Deployed (2026-07-28, Closes Issue #8)
|
||||||
|
|
||||||
|
- Fork: `rohana.axion1337.de/sorb/threadnet-call` (basiert auf `emmick4/element-call:livekit`,
|
||||||
|
enthält den noch nicht gemergten Upstream-PR element-hq/element-call#3736 mit
|
||||||
|
config-driven `media_quality` — kein Custom-Code nötig)
|
||||||
|
- Defaults angehoben: Kamera bis **1440p/60fps** (~8 Mbps), Screen-Share **1440p/30fps**
|
||||||
|
(~6 Mbps). Das sind Startwerte, keine harten Limits — Nutzer können in Settings weiter
|
||||||
|
hochdrehen.
|
||||||
|
- **Incident (2026-07-28)**: Erster Versuch mit erzwungenem `video_codec: vp9` hat Calls
|
||||||
|
komplett kaputt gemacht (kein Bild/Ton). Sofort zurückgerollt. Vermutete Ursache: LiveKit
|
||||||
|
nutzt für vp9/av1 SVC statt klassischem Simulcast, der Fork-Code setzt aber immer
|
||||||
|
Simulcast-Layer — Code-Fix nötig, bevor vp9 erneut versucht wird (Backlog).
|
||||||
|
- **720p-Zwischen-Layer ergänzt** — ohne eigene `simulcast_layers`-Definition fiel die
|
||||||
|
Übertragung bei kleinsten Netzwerkschwankungen direkt von 1440p auf blockiges 360p.
|
||||||
|
- **H.264 statt VP8** (2026-07-28) — nutzt wie VP8 klassisches Simulcast (kein SVC-Risiko),
|
||||||
|
zusätzlich auf vielen Geräten (v.a. iOS/Safari) hardwarebeschleunigt. Live verifiziert:
|
||||||
|
7 von 8 Video-Tracks über H.264, 1 sauberer Fallback auf VP8. Deployed als
|
||||||
|
`v0.2.3-elementcall-h264`.
|
||||||
|
- Rauschunterdrückung: clientseitige WebRTC-Standardtoggles (Echo/Noise/Gain), passend zu
|
||||||
|
LiveKits eigener Empfehlung für Mensch-zu-Mensch-Calls. Bewusst **kein** server-seitiges
|
||||||
|
ML-Noise-Cancellation (siehe `docs/TASKS.md` Backlog).
|
||||||
|
- Deployt als `rohana.axion1337.de/sorb/threadnet-web:v0.2.0-elementcall-mediaquality` — nur
|
||||||
|
der `/app/widgets/element-call/`-Ordner im bestehenden `v0.1.0`-Image ausgetauscht, da
|
||||||
|
`ThreadNet-Web` einen vorbestehenden Build-Bug hat (siehe unten).
|
||||||
|
- Config live prüfbar: `https://axion1337.chat/widgets/element-call/config.json`
|
||||||
|
|
||||||
|
**Update 2026-07-28 (Issue #12) — Full-Rebuild-Blocker behoben**: Der oben beschriebene
|
||||||
|
Workaround (nur den `widgets/element-call/`-Ordner patchen) war nötig, weil `ThreadNet-Web`
|
||||||
|
komplett neu gebaut nicht funktionierte. Drei Bugs gefunden und gefixt:
|
||||||
|
|
||||||
|
1. 7 Skripte nicht ausführbar committet (644 statt 755) - `docker-link-repos.sh`,
|
||||||
|
`docker-package.sh` + 5 weitere, betraf auch die eigenen GitHub-Actions-Workflows des Forks.
|
||||||
|
2. `matrix-js-sdk#develop`-Pin war auf einen veralteten Commit resolved (fehlte
|
||||||
|
`src/oidc/authorize.ts`). Der aktuelle develop-HEAD wäre noch schlimmer gewesen - dort
|
||||||
|
wurde der komplette `src/oidc/`-Ordner zu `src/oauth/` umbenannt, mit geänderter API
|
||||||
|
(`generateOidcAuthorizationUrl`/`completeAuthorizationCodeGrant`/`OidcError` existieren
|
||||||
|
so nicht mehr). Stattdessen auf `d19cb751` gepinnt - den letzten Commit vor diesem
|
||||||
|
Rename, verifiziert dass Datei+API exakt passen.
|
||||||
|
3. **Gefunden**: `package.json`/`webpack.config.ts` referenzierten noch upstream
|
||||||
|
`@element-hq/element-call-embedded` statt unseres eigenen Forks - ein Full-Rebuild hätte
|
||||||
|
bisher alle Fork-Anpassungen stillschweigend verworfen. Umgestellt auf
|
||||||
|
`@sorb/threadnet-call-embedded@0.19.2-threadnet.5`.
|
||||||
|
|
||||||
|
Verifiziert mit einem echten, vollständigen `docker build` aus frischem Klon (kein Cache) -
|
||||||
|
erst bei 3.8GB Docker-RAM an OOM gescheitert, nach Erhöhung auf 7.75GB sauber durchgelaufen.
|
||||||
|
Gebautes Image enthält nachweislich unseren Fork (deutsche Übersetzung `Kameraqualität` im
|
||||||
|
Bundle gefunden). Produktivumgebung bleibt vorerst beim bestehenden Patch-Image - der
|
||||||
|
Full-Rebuild-Prozess ist jetzt nur *möglich*, nicht automatisch scharf geschaltet.
|
||||||
|
|
||||||
|
**Update 2026-07-28 (später) — Video-Tab statt Developer-Mode**: Kamera-/Screen-Share-
|
||||||
|
Qualitätseinstellungen waren im Upstream-PR #3736 hinter einem "Developer Mode"-Schalter
|
||||||
|
versteckt - in den regulären "Video"-Settings-Tab verschoben, für alle Nutzer sichtbar.
|
||||||
|
Deutsche Übersetzungen ergänzt. Codec-Dropdown auf die tatsächlich von der SFU akzeptierten
|
||||||
|
Codecs beschränkt (VP8/H.264/H.265).
|
||||||
|
|
||||||
|
**Update 2026-07-29 — VP9/AV1 live getestet, zurückgerollt (Issue #11)**: SFU-Codec-Freigabe
|
||||||
|
+ Dropdown-Wiederfreischaltung getestet. Trotz echter Auswahl auf Safari und Desktop-Firefox
|
||||||
|
(frischer Rejoin) fiel VP9 immer automatisch auf VP8 zurück. SFU-Logs zeigten: die eigene
|
||||||
|
Codec-Freigabe kam serverseitig nie in der aktiven `enabledPublishCodecs`-Liste an - Ursache
|
||||||
|
nicht abschließend geklärt (möglicher Zusammenhang: `sfu.additional` ersetzt die Chart-eigene
|
||||||
|
`config-overrides.yaml` statt sie zu ergänzen). Komplett zurückgerollt. Details: Issue #11.
|
||||||
|
|
||||||
|
## Dateien
|
||||||
|
|
||||||
|
| Datei | Ort |
|
||||||
|
|-------|-----|
|
||||||
|
| Custom Themes | `element-values.yaml` ConfigMap |
|
||||||
|
| Setup-Scripts | `element-web-docs-configmap.yaml` |
|
||||||
|
| Docs Server | `element-web-docs-server.yaml` (nginx) |
|
||||||
|
| Ingress | `apex-ingress.yaml` (`/docs/setup/` route) |
|
||||||
|
|
||||||
|
---
|
||||||
|
**Weitere Details**: Siehe Kapitel 4.
|
||||||
Reference in New Issue
Block a user