Files
MeshChatX/lang/README.de.md
T

20 KiB

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.

Get it on Obtainium

rngit: git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX NomadNet Node: c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu

Wichtige Aenderungen gegenueber Reticulum MeshChat

  • Verwendet LXST fuer Anrufe
  • 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 unterstuetzt. Aktuelle Basis: Python >=3.11 und Node >=24 (Electron 41 entspricht Node 24; engines in package.json und CI folgen derselben Linie).

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)

Browser Versions Required:

Safari 16.4 oder neuer, Chrome 111 oder neuer, Firefox 128 oder neuer (Web-Oberflaeche).

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 Vom CI-Runner abhaengig (Veroeffentlichung) Fedora/RHEL/openSUSE
Aus Quellcode Lokal gebaut Host-Architektur Entwicklung und individuelle Builds

Hinweise:

  • GitHub Actions baut getaggte Releases (Linux Wheel/AppImage/deb/rpm, Windows, macOS, Flatpak, Android-APKs bei Tags auf dev/master, SLSA, Entwurfs-Release) in einem Lauf über .github/workflows/build-release.yml; das Container-Image über .github/workflows/docker.yml. Android-CI für Branches und PRs: .github/workflows/android-build.yml.
  • Linux x64 und arm64 AppImage + DEB werden auf GitHub gebaut; RPM wird versucht und hochgeladen, wenn es erzeugt wird.

Docker

  • Docker Hub: quad4io/meshchatx
  • GHCR: ghcr.io/quad4-software/meshchatx
docker compose up -d
docker run -d --name reticulum-meshchatx \
  --restart unless-stopped \
  --security-opt no-new-privileges:true \
  -p 127.0.0.1:8000:8000 \
  -v meshchatx-config:/config \
  ghcr.io/quad4-software/meshchatx:latest

Sie koennen quad4io/meshchatx:latest statt des GHCR-Images verwenden, wenn Sie Docker Hub bevorzugen.

Standard-Compose-Datei:

  • 127.0.0.1:8000 auf dem Host -> Container-Port 8000
  • Docker-Benanntes Volume meshchatx-config -> /config fuer Persistenz (passt zum Image-Benutzer meshchat, UID 1000, ohne Host-chown bei Bind-Mounts)

Optional: Host-Verzeichnis einbinden

Ersetzen Sie die Volume-Zeile durch -v "$(pwd)/meshchat-config:/config" (Compose: volumes-Eintrag des Service anpassen). Der Container laeuft als UID 1000; das Host-Verzeichnis muss dafuer beschreibbar sein (typisch: sudo chown -R 1000:1000 ./meshchat-config). Leeres Verzeichnis vor dem ersten Start anlegen, damit Docker es nicht mit unpassenden Rechten erzeugt.

Named Volume pruefen oder loeschen

docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-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.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).
  • 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:

Dieselbe Seite erscheint in der in-app-Liste Dokumentation (MeshChatX-Dokumentation), 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

Container-Build (Wheel, AppImage, deb, rpm)

Dockerfile.build fuehrt die gleichen Schritte wie die CI aus (Poetry, pnpm, task, APT-Paketabhaengigkeiten). Ausgelegt auf linux/amd64 (NodeSource amd64, Task amd64). Standardziel ist alles; per Build-Arg ueberschreibbar.

Werte fuer MESHCHATX_BUILD_TARGETS: all (Standard), wheel oder electron (AppImage + deb fuer x64 und arm64, RPM best-effort, kein wheel).

Build:

docker build -f Dockerfile.build -t meshchatx-build:local .

Nur Wheel:

docker build -f Dockerfile.build --build-arg MESHCHATX_BUILD_TARGETS=wheel -t meshchatx-build:wheel .

/artifacts aus dem fertigen Image auf den Host kopieren:

cid=$(docker create meshchatx-build:local)
docker cp "${cid}:/artifacts" ./meshchatx-artifacts
docker rm "${cid}"

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: nur Universal-APK (siehe android/README.md)

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) Universal-APK bauen (ein Debug + ein Release pro Lauf; siehe android/README.md)
cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease

Eine Android-Variante. Gradle synchronisiert den gesamten meshchatx/-Ordner nach app/src/main/python/meshchatx/, inklusive Offline-Repository-Raeder. Dokumentierte und veroeffentlichte Builds nutzen ausschliesslich Universal-Packaging: je ein Debug- und ein Release-APK pro Lauf, mit allen in android/app/build.gradle gewaehlten nativen ABIs.

  • Debug: android/app/build/outputs/apk/debug/app-debug.apk
  • Release: android/app/build/outputs/apk/release/app-release-unsigned.apk

Hinweise:

  • Release-Builds sind standardmaessig unsigniert, bis die Signatur konfiguriert ist (scripts/sign-android-apks.sh).
  • Die im Universal-APK enthaltenen nativen ABIs folgen android/app/build.gradle (einschliesslich armeabi-v7a, falls aktiviert). Das Bauen von Radern fuer armeabi-v7a erfordert ein Android-SDK in ANDROID_HOME (siehe android/README.md).
  • Existiert im Repo-Root dist/reticulum_meshchatx-*.whl (z. B. nach python -m build --wheel -o dist .), bevorzugt die Aktualisierung des Offline-Repositorys dieses Wheel gegueber PyPI. In der CI wird das Wheel vor dem Android-Gradle-Schritt gebaut.

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
--reset-password MESHCHAT_RESET_PASSWORD false Gespeicherten Passwort-Hash loeschen, damit ein neues Passwort ueber die Web-Oberflaeche gesetzt werden kann
--storage-dir MESHCHAT_STORAGE_DIR ./storage Datenverzeichnis
--public-dir MESHCHAT_PUBLIC_DIR auto/bundled Frontend-Verzeichnis (fuer Quell-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.6.2.

  • Fuer Release-Bumps bearbeiten Sie nur version in package.json.
  • pnpm run version:sync (wird auch zu Beginn von pnpm run build ausgefuehrt) verbreitet diese Version in pyproject.toml, meshchatx/src/version.py, THIRD_PARTY_NOTICES.txt (Produktzeile), README / lang/README.* (Zeilen mit aktueller Version), docs/meshchatx_on_raspberry_pi.md (pipx-Beispiel) und Hilfsfelder in packaging/arch/PKGBUILD.
  • meshchatx.__version__ wird aus meshchatx/src/version.py gelesen, ohne meshchatx.src zu importieren, damit ein normales import meshchatx leicht bleibt.
  • Changelog-Eintrage bleiben beim Release manuell.

Sicherheit

  • SECURITY.md
  • LEGAL.md
  • Eingebaute Integritaetspruefungen und HTTPS/WSS-Standardwerte in der App-Laufzeit.
  • CI- und Release-Builds in GitHub Actions.

Sprache hinzufuegen

Arbeitsablauf des Autors: ArgosTranslate, dann lokales LLM (Qwen 3 + Gemma 4).

Korrekturen von der Community sind willkommen, per LXMF oder wo Sie erreichbar sind.

Die Locale-Erkennung erfolgt automatisch. Fuegen Sie Dateien unter meshchatx/src/frontend/locales/ hinzu (z. B. xx.json) mit denselben Schluesseln wie en.json und oberstes _languageName fuer die Sprachauswahl. Sie koennen en.json kopieren und alles manuell uebersetzen; maschinenunterstuetzte Erzeugung (optional) ist niemals erforderlich.

Optional: Argos-Translate-Start: fuer einen Entwurf aus en.json koennen Sie scripts/argos_translate.py nutzen; es behandelt Formatierung, farbige Ausgabe und schuetzt z. B. {count}.

# argostranslate ggf. installieren
pipx install argostranslate

# Uebersetzungsskript ausfuehren
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 jeder maschinellen Runde Grammatik, Kontext und Ton (formell vs. informell) mit LLM oder Mensch pruefen.

pnpm test -- tests/frontend/i18n.test.js --run prueft die Schluesselparitaet mit en.json.

Keine weiteren Code-Aenderungen noetig. App, Sprachwahl und Tests lesen Locales zur Build-Zeit aus meshchatx/src/frontend/locales/.

Spenden

Spenden sind freiwillig. Sie helfen, Zeit und Aufwand fuer die Entwicklung dieser App zu finanzieren.

Moeglichkeiten: donate.md (Monero, Ko-Fi, Buy Me a Coffee).

Mitwirkende

Lizenz

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