Files
MeshChatX/lang/README.de.md
T

347 lines
16 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.
# Reticulum MeshChatX
[English](../README.md) | [Русский](README.ru.md) | [Italiano](README.it.md) | [中文](README.zh.md) | [日本語](README.ja.md)
Ein umfassend modifizierter und funktionsreicher Fork von Reticulum MeshChat von Liam Cottle.
Dieses Projekt ist unabhaengig vom originalen Reticulum MeshChat und steht in keiner Verbindung dazu.
- Website: [meshchatx.com](https://meshchatx.com)
- Quellcode: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
- Offizieller Spiegel: [github.com/Quad4/MeshChatX](https://github.com/Quad4/MeshChatX) derzeit auch fuer Windows- und macOS-Builds genutzt.
- Releases: [git.quad4.io/RNS-Things/MeshChatX/releases](https://git.quad4.io/RNS-Things/MeshChatX/releases)
- Aenderungsprotokoll: [`CHANGELOG.md`](../CHANGELOG.md)
- TODO: [Boards](https://git.quad4.io/RNS-Things/MeshChatX/projects)
## Wichtige Aenderungen gegenueber Reticulum MeshChat
- Verwendet LXST
- Peewee-ORM durch direktes SQL ersetzt
- Axios durch natives `fetch` ersetzt
- Electron 41.x (mit Node-24-Laufzeit)
- `.whl`-Pakete mit Webserver und eingebauten Frontend-Assets fuer mehr Deploy-Optionen
- i18n
- PNPM und Poetry fuer Abhaengigkeiten
> [!WARNING]
> MeshChatX garantiert keine Datenkompatibilitaet mit aelteren Reticulum-MeshChat-Versionen. Erstellen Sie vor Migration oder Tests eine Datensicherung.
> [!WARNING]
> Aeltere Systeme werden noch nicht vollstaendig unterstuetzt. Aktuelle Mindestanforderungen: Python `>=3.11` und Node `>=24` (Electron 41 entspricht Node 24; `engines` in `package.json` und CI folgen derselben Vorgabe).
## Voraussetzungen
- Python `>=3.11` (aus `pyproject.toml`)
- Node.js `>=24` (aus `package.json`, Feld `engines`)
- pnpm `10.33.0` (aus `package.json`, Feld `packageManager`)
- Poetry (verwendet in `Taskfile.yml` und CI-Workflows)
```bash
task install
task lint:all
task test:all
task build:all
```
## Installationsmethoden
Waehlen Sie die Methode passend zu Umgebung und Paketierung.
| Methode | Frontend enthalten | Architekturen | Geeignet fuer |
| --------------------- | ------------------ | ------------------------------------- | ----------------------------------- |
| Docker-Image | Ja | `linux/amd64`, `linux/arm64` | Schnellster Start auf Linux-Servern |
| Python Wheel (`.whl`) | Ja | Jede Python-unterstuetzte Architektur | Headless/Webserver ohne Node-Build |
| Linux AppImage | Ja | `x64`, `arm64` | Portabler Desktop-Einsatz |
| Debian-Paket (`.deb`) | Ja | `x64`, `arm64` | Debian/Ubuntu-Installation |
| RPM-Paket (`.rpm`) | Ja | CI-abhaengig | Fedora/RHEL/openSUSE |
| Aus Quellcode | Lokal gebaut | Host-Architektur | Entwicklung und individuelle Builds |
Hinweise:
- Der Release-Workflow baut explizit Linux `x64` und `arm64` AppImage + DEB.
- RPM wird ebenfalls versucht und bei Erfolg hochgeladen.
## Schnellstart: Docker
```bash
docker compose up -d
```
Standard-Compose-Datei:
- `127.0.0.1:8000` auf dem Host -> Container-Port `8000`
- `./meshchat-config` -> `/config` fuer Persistenz
Bei Berechtigungsproblemen:
```bash
sudo chown -R 1000:1000 ./meshchat-config
```
## Installation aus Release-Artefakten
### 1) Linux AppImage (x64/arm64)
1. `ReticulumMeshChatX-v<version>-linux-<arch>.AppImage` von den Releases herunterladen.
2. Ausfuehrbar machen und starten:
```bash
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
```
### 2) Debian/Ubuntu `.deb` (x64/arm64)
1. `ReticulumMeshChatX-v<version>-linux-<arch>.deb` herunterladen.
2. Installieren:
```bash
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
```
### 3) RPM-basierte Systeme
1. `ReticulumMeshChatX-v<version>-linux-<arch>.rpm` herunterladen, falls im Release vorhanden.
2. Installieren:
```bash
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
```
### 4) Python Wheel (`.whl`)
Release-Wheels enthalten die gebauten Web-Assets.
```bash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
```
`pipx` wird ebenfalls unterstuetzt:
```bash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
```
## Aus Quellcode ausfuehren (Webserver-Modus)
Fuer Entwicklung oder lokale Custom-Builds.
```bash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
corepack enable
pnpm config set verify-store-integrity true
pnpm install --frozen-lockfile
pip install "poetry==2.3.4"
poetry check --lock
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1
```
Hinweise zu den Installationsbefehlen:
- `pnpm install --frozen-lockfile` verweigert Aenderungen an `pnpm-lock.yaml` und schlaegt fehl, wenn die Lockdatei nicht zu `package.json` passt. Damit wird verhindert, dass eine unerwartete Upstream-Version still eingespielt wird.
- `verify-store-integrity=true` ist auch in der projektweiten `.npmrc` gesetzt; die explizite `pnpm config set`-Zeile haertet zusaetzlich die Benutzerkonfiguration.
- Lifecycle-Skripte (`preinstall`/`postinstall`) sind in pnpm v10+ standardmaessig blockiert. Nur die unter `pnpm.onlyBuiltDependencies` in `package.json` aufgefuehrten Pakete duerfen Installationsskripte ausfuehren (aktuell `electron`, `electron-winstaller`, `esbuild`, `protobufjs`).
- `poetry check --lock` schlaegt frueh fehl, wenn `poetry.lock` nicht mit `pyproject.toml` synchron ist; `poetry install` aufloest danach nur aus der Lockdatei.
- Fuer eine strikte Lockfile-Installation (ohne implizite Lock-Aktualisierung) Poetry mit `pip install "poetry==2.3.4"` pinnen, passend zur CI-Version.
Wenn Sie absichtlich Abhaengigkeiten aktualisieren wollen, fuehren Sie `pnpm update` / `poetry update` in einem dedizierten Commit aus und pruefen Sie das resultierende Lockdatei-Diff vor dem Push.
## Sandboxing (Linux)
Um das native `meshchatx`-Programm (Alias: `meshchat`) mit zusaetzlicher Dateisystem-Isolation auszufuehren, koennen Sie **Firejail** oder **Bubblewrap** (`bwrap`) nutzen, bei weiterhin normalem Netzwerkzugriff fuer Reticulum und die Web-Oberflaeche. Vollstaendige Beispiele (pip/pipx, Poetry, Hinweise zu USB-Seriell) finden Sie in:
- [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
Dieselbe Seite erscheint in der in-app-**Dokumentation** (MeshChatX-Docs), wenn sie aus den gebuendelten oder synchronisierten `meshchatx-docs`-Dateien ausgeliefert wird.
## Linux-Desktop: Emoji-Schriften
Die Emoji-Auswahl rendert Standard-Unicode-Emoji mit den Systemschriften (Electron/Chromium). Wenn Emoji als leere Kaestchen („Tofu“) erscheinen, installieren Sie ein Farb-Emoji-Paket und starten Sie die App neu.
| Distribution (Beispiele) | Paket |
| -------------------------- | -------------------------------------------------------------------- |
| Arch Linux, Artix, Manjaro | `noto-fonts-emoji` (`sudo pacman -S noto-fonts-emoji`) |
| Debian, Ubuntu | `fonts-noto-color-emoji` (`sudo apt install fonts-noto-color-emoji`) |
| Fedora | `google-noto-emoji-color-fonts` |
Nach der Installation bei Bedarf `fc-cache -fv` ausfuehren. Optional: `noto-fonts` fuer breitere Symbolabdeckung bei minimalen Installationen.
## Desktop-Pakete aus Quellcode bauen
Diese Skripte sind in `package.json` und `Taskfile.yml` definiert.
### Linux x64 AppImage + DEB
```bash
pnpm run dist:linux-x64
```
### Linux arm64 AppImage + DEB
```bash
pnpm run dist:linux-arm64
```
### RPM
```bash
pnpm run dist:rpm
```
Oder ueber Task:
```bash
task dist:fe:rpm
```
## Architekturunterstuetzung
- Docker-Image: `amd64`, `arm64`
- Linux AppImage: `x64`, `arm64`
- Linux DEB: `x64`, `arm64`
- Windows: `x64`, `arm64` (Build-Skripte vorhanden)
- macOS: Build-Skripte vorhanden (`arm64`, `universal`) fuer lokale Build-Umgebungen
- Android: native APKs — ABIs `arm64-v8a`, `x86_64`, plus universal
## Android
MeshChatX unterstuetzt native Android-APK-Builds (nicht nur Termux).
### APKs aus Quellcode bauen
Vom Repository-Root:
```bash
# 1) Chaquopy-Wheels gemaess android/app/build.gradle bauen
bash scripts/build-android-wheels-local.sh
# 2) Beide APK-Varianten bauen
cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
```
APK-Ausgaben (ABI-Splits plus universelles APK; siehe `splits { abi { ... } }` in `android/app/build.gradle`):
Debug (`android/app/build/outputs/apk/debug/`):
- `app-arm64-v8a-debug.apk` (ARM64-Geraete)
- `app-x86_64-debug.apk` (x86_64-Emulatoren)
- `app-universal-debug.apk` (alle gebundelten ABIs in einem Paket)
Release (`android/app/build/outputs/apk/release/`):
- `app-arm64-v8a-release-unsigned.apk`
- `app-x86_64-release-unsigned.apk`
- `app-universal-release-unsigned.apk`
Hinweise:
- Release-Ausgaben sind standardmaessig unsigniert, sofern keine Signatur konfiguriert ist.
- Wenn nur eine Variante noetig ist: `:app:assembleDebug` oder `:app:assembleRelease`.
- Android zielt auf die ABIs `arm64-v8a` und `x86_64` gemaess `android/app/build.gradle`.
Weitere Dokumentation:
- [`docs/meshchatx_on_android_with_termux.md`](../docs/meshchatx_on_android_with_termux.md)
- [`android/README.md`](../android/README.md)
## Konfiguration
| Argument | Umgebungsvariable | Standard | Beschreibung |
| -------------------------- | ---------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Webserver-Bind-Adresse |
| `--port` | `MESHCHAT_PORT` | `8000` | Webserver-Port |
| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | HTTPS deaktivieren |
| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (keine) | PEM-Zertifikat und Schluessel; beide setzen. Ueberschreibt automatisch erzeugte Zertifikate unter der Identitaet im Verzeichnis `ssl/`. |
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (keine) | Reticulum (RNS) Log-Level: `none`, `critical`, `error`, `warning`, `notice`, `verbose`, `debug`, `extreme` oder numerisch. CLI ueberschreibt die Umgebungsvariable, wenn beide gesetzt sind. |
| `--headless` | `MESHCHAT_HEADLESS` | `false` | Browser nicht automatisch oeffnen |
| `--auth` | `MESHCHAT_AUTH` | `false` | Basis-Authentifizierung aktivieren |
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Datenverzeichnis |
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundled | Frontend-Verzeichnis (fuer Installationen ohne gebundelte Assets) |
## Branches
| Branch | Zweck |
| -------- | ------------------------------------------------------------------------------ |
| `master` | Stabile Releases. Nur produktionsreifer Code. |
| `dev` | Aktive Entwicklung. Kann instabile oder unvollstaendige Aenderungen enthalten. |
## Entwicklung
Gaengige Aufgaben aus `Taskfile.yml`:
```bash
task install
task lint:all
task test:all
task build:all
```
`Makefile`-Kurzformen:
| Befehl | Beschreibung |
| -------------- | --------------------------------------------- |
| `make install` | pnpm- und Poetry-Abhaengigkeiten installieren |
| `make run` | MeshChatX ueber Poetry starten |
| `make build` | Frontend bauen |
| `make lint` | eslint und ruff ausfuehren |
| `make test` | Frontend- und Backend-Tests |
| `make clean` | Build-Artefakte und node_modules entfernen |
## Versionierung
Aktuelle Version in diesem Repository: `4.5.0`.
- `package.json` ist die Quelle fuer die JavaScript/Electron-Version.
- `meshchatx/src/version.py` wird aus `package.json` synchronisiert mit:
```bash
pnpm run version:sync
```
Fuer konsistente Releases die Versionsfelder dort abgleichen, wo noetig (`package.json`, `pyproject.toml`, `meshchatx/__init__.py`).
## Sicherheit
- [`SECURITY.md`](../SECURITY.md)
- Integrierte Integritaetspruefungen und HTTPS/WSS-Standardeinstellungen in der App
- CI-Scanning-Workflows in `.gitea/workflows/`
## Sprache hinzufuegen
Die Locale-Erkennung erfolgt automatisch. Legen Sie eine neue Datei unter `meshchatx/src/frontend/locales/` an (z. B. `xx.json`) mit denselben Schluesseln wie `en.json` und einem obersten Feld `_languageName` fuer die Anzeige in der Sprachauswahl. Sie koennen `en.json` kopieren und alles von Hand uebersetzen; **maschinelle Erzeugung ist optional** und nie verpflichtend.
**Korrekturen und menschliche Uebersetzungen sind willkommen.** Verbesserungen an bestehenden Locale-Dateien oder vollstaendig manuell uebersetzte Dateien koennen Sie per Pull Request oder Issue im [Quellcode-Repository](https://git.quad4.io/RNS-Things/MeshChatX) oder beim [GitHub-Spiegel](https://github.com/Sudo-Ivan/MeshChatX) einreichen.
**Optional: Argos-Translate-Bootstrap** -- Wenn Sie einen maschinellen Erstentwurf aus `en.json` wollen, koennen Sie `scripts/argos_translate.py` nutzen. Es kuemmert sich um Formatierung und schuetzt Interpolationsvariablen (wie `{count}`) vor versehentlichen Aenderungen.
```bash
# Installieren Sie argostranslate, falls noch nicht geschehen
pip install argostranslate
# Fuehren Sie das Uebersetzungsskript aus
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name "Ihr Sprachname"
```
Nach einem maschinellen Entwurf sollten ein LLM oder ein Mensch Grammatik, Kontext und Ton pruefen (z. B. formell vs. informell).
Schluesselparitaet pruefen: `pnpm test -- tests/frontend/i18n.test.js --run`
Keine weiteren Code-Aenderungen noetig. App, Sprachwahl und Tests lesen Locales zur Build-Zeit aus `meshchatx/src/frontend/locales/`.
## Mitwirkende
- [Liam Cottle](https://github.com/liamcottle) - Originales Reticulum MeshChat
- [RFnexus](https://github.com/RFnexus) - Micron-Parser (JavaScript)
- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST
## Lizenz
Die projekt-eigenen Anteile stehen unter 0BSD.
Urspruengliche Upstream-Anteile von MeshChat bleiben unter MIT.
Vollstaendiger Text und Hinweise in [`../LICENSE`](../LICENSE).