14 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.
- Website: meshchatx.com
- Quellcode: git.quad4.io/RNS-Things/MeshChatX
- Offizieller Spiegel: github.com/Sudo-Ivan/MeshChatX – derzeit auch fuer Windows- und macOS-Builds genutzt.
- Releases: git.quad4.io/RNS-Things/MeshChatX/releases
- Aenderungsprotokoll:
CHANGELOG.md - TODO: Boards
Wichtige Aenderungen gegenueber Reticulum MeshChat
- Verwendet LXST
- Peewee-ORM durch direktes SQL ersetzt
- Axios durch natives
fetchersetzt - 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.11und Node>=24.
Voraussetzungen
- Python
>=3.11(auspyproject.toml) - Node.js
>=24(auspackage.json) - pnpm
10.32.1(auspackage.json) - Poetry (verwendet in
Taskfile.ymlund 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
x64undarm64AppImage + DEB. - RPM wird ebenfalls versucht und bei Erfolg hochgeladen.
Schnellstart: Docker
docker compose up -d
Standard-Compose-Datei:
127.0.0.1:8000auf dem Host -> Container-Port8000./meshchat-config->/configfuer Persistenz
Bei Berechtigungsproblemen:
sudo chown -R 1000:1000 ./meshchat-config
Installation aus Release-Artefakten
1) Linux AppImage (x64/arm64)
ReticulumMeshChatX-v<version>-linux-<arch>.AppImagevon den Releases herunterladen.- Ausfuehrbar machen und starten:
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
2) Debian/Ubuntu .deb (x64/arm64)
ReticulumMeshChatX-v<version>-linux-<arch>.debherunterladen.- Installieren:
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
3) RPM-basierte Systeme
ReticulumMeshChatX-v<version>-linux-<arch>.rpmherunterladen, falls im Release vorhanden.- 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 install
pip install poetry
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1
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.apkapp-x86_64-release-unsigned.apkapp-universal-release-unsigned.apk
Hinweise:
- Release-Ausgaben sind standardmaessig unsigniert, sofern keine Signatur konfiguriert ist.
- Wenn nur eine Variante noetig ist:
:app:assembleDebugoder:app:assembleRelease. - Android zielt auf die ABIs
arm64-v8aundx86_64gemaessandroid/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.jsonist die Quelle fuer die JavaScript/Electron-Version.meshchatx/src/version.pywird auspackage.jsonsynchronisiert 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 Spracherkennung erfolgt automatisch. Um eine neue Sprache hinzuzufuegen, genuegt eine einzige JSON-Datei:
- Leere Vorlage aus
en.jsonerzeugen:
python scripts/generate_locale_template.py
Damit wird locales.json mit leeren Strings fuer alle Schluessel geschrieben.
- Umbenennen und in das Locale-Verzeichnis verschieben:
mv locales.json meshchatx/src/frontend/locales/xx.json
-
_languageNameam Anfang der Datei auf den nativen Sprachnamen setzen (z.B."Espanol","Francais"). Wird im Sprachwahlmenue angezeigt. -
Alle uebrigen Werte uebersetzen.
-
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 - Originales Reticulum MeshChat
- RFnexus - Micron-Parser (JavaScript)
- markqvist - Reticulum, LXMF, LXST