Files
MeshChatX/lang/README.de.md
T

16 KiB
Raw Blame History

Reticulum MeshChatX

English | Русский | Italiano | 中文 | 日本語

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.

Wichtige Aenderungen gegenueber Reticulum MeshChat

  • Verwendet LXST
  • Peewee-ORM durch direktes SQL ersetzt
  • Axios durch natives fetch ersetzt
  • Aktuelles Electron
  • .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 >=22 (Electron nutzt Node 22; CI kann neuer sein).

Voraussetzungen

  • Python >=3.11 (aus pyproject.toml)
  • Node.js >=22 (aus package.json)
  • pnpm 10.32.1 (aus package.json)
  • Poetry (verwendet in Taskfile.yml und CI-Workflows)
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

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:

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:
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:
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:
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm

4) Python Wheel (.whl)

Release-Wheels enthalten die gebauten Web-Assets.

pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless

pipx wird ebenfalls unterstuetzt:

pipx install ./reticulum_meshchatx-*-py3-none-any.whl

Aus Quellcode ausfuehren (Webserver-Modus)

Fuer Entwicklung oder lokale Custom-Builds.

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.1.1"
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.1.1" 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:

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

pnpm run dist:linux-x64

Linux arm64 AppImage + DEB

pnpm run dist:linux-arm64

RPM

pnpm run dist:rpm

Oder ueber Task:

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:

# 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:

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:

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:
pnpm run version:sync

Fuer konsistente Releases die Versionsfelder dort abgleichen, wo noetig (package.json, pyproject.toml, meshchatx/__init__.py).

Sicherheit

  • 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 oder beim GitHub-Spiegel 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.

# 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

Lizenz

Die projekt-eigenen Anteile stehen unter 0BSD. Urspruengliche Upstream-Anteile von MeshChat bleiben unter MIT. Vollstaendiger Text und Hinweise in ../LICENSE.