Reticulum MeshChatX
English README | Deutsch | Italiano | Русский | 日本語
Liam Cottle 开发的 Reticulum MeshChat 的一个功能丰富的深度修改分支。
本项目独立于原始 Reticulum MeshChat 项目,与其无关联。
- 网站: meshchatx.com
- 源码: git.quad4.io/RNS-Things/MeshChatX
- 官方镜像: github.com/Sudo-Ivan/MeshChatX — 目前亦用于 Windows 与 macOS 构建。
- 发行版: git.quad4.io/RNS-Things/MeshChatX/releases
- 变更日志:
CHANGELOG.md - TODO: Boards
与 Reticulum MeshChat 的重要差异
- 使用 LXST
- 以原生 SQL 替代 Peewee ORM
- 以原生
fetch替代 Axios - 使用最新 Electron
.whl内置 Web 服务器与前端资源,便于多种部署方式- i18n
- 使用 PNPM 与 Poetry 管理依赖
Warning
MeshChatX 不保证与旧版 Reticulum MeshChat 的数据兼容。迁移或测试前请备份数据。
Warning
旧系统尚未完全支持。当前最低要求:Python
>=3.11,Node>=24。
系统要求
- Python
>=3.11(来自pyproject.toml) - Node.js
>=24(来自package.json) - pnpm
10.32.1(来自package.json) - Poetry(用于
Taskfile.yml与 CI 工作流)
task install
task lint:all
task test:all
task build:all
安装方式
请按运行环境与打包形式选择。
| 方式 | 包含前端 | 架构 | 适用场景 |
|---|---|---|---|
| Docker 镜像 | 是 | linux/amd64, linux/arm64 |
Linux 服务器快速部署 |
Python wheel (.whl) |
是 | 任何 Python 支持的架构 | 无需 Node 构建的无头/Web 服务器安装 |
| Linux AppImage | 是 | x64, arm64 |
便携式桌面使用 |
Debian 包 (.deb) |
是 | x64, arm64 |
Debian/Ubuntu 安装 |
RPM 包 (.rpm) |
是 | 取决于 CI | Fedora/RHEL/openSUSE |
| 从源码 | 本地构建 | 主机架构 | 开发与自定义构建 |
说明:
- 发布工作流明确构建 Linux
x64与arm64的 AppImage + DEB。 - RPM 亦会尝试构建,成功时上传。
快速开始: Docker
docker compose up -d
默认 compose 文件映射:
- 主机
127.0.0.1:8000-> 容器端口8000 ./meshchat-config->/config持久化
如遇权限问题:
sudo chown -R 1000:1000 ./meshchat-config
从发行版安装
1) Linux AppImage (x64/arm64)
- 从发行版下载
ReticulumMeshChatX-v<版本>-linux-<架构>.AppImage。 - 赋予执行权限并运行:
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
2) Debian/Ubuntu .deb (x64/arm64)
- 下载
ReticulumMeshChatX-v<版本>-linux-<架构>.deb。 - 安装:
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
3) RPM 系统
- 若发行版中存在,下载
ReticulumMeshChatX-v<版本>-linux-<架构>.rpm。 - 安装:
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
4) Python wheel (.whl)
发行版 wheel 包含已构建的前端资源。
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
亦支持 pipx:
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
从源码运行(Web 服务器模式)
在开发或需要本地定制构建时使用。
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 meshchatx --headless --host 127.0.0.1
在沙盒中运行(Linux)
若要在额外隔离文件系统的情况下运行原生 meshchatx(别名:meshchat),可使用 Firejail 或 Bubblewrap(bwrap),同时保留 Reticulum 与 Web 界面所需的网络访问。完整示例(pip/pipx、Poetry、USB 串口说明)见:
在提供已捆绑或已同步的 meshchatx-docs 时,应用内 文档(MeshChatX 文档)列表亦会显示同一页面。
从源码构建桌面包
脚本定义于 package.json 与 Taskfile.yml。
Linux x64 AppImage + DEB
pnpm run dist:linux-x64
Linux arm64 AppImage + DEB
pnpm run dist:linux-arm64
RPM
pnpm run dist:rpm
或通过 Task:
task dist:fe:rpm
架构支持
- Docker:
amd64,arm64 - Linux AppImage:
x64,arm64 - Linux DEB:
x64,arm64 - Windows:
x64,arm64(提供构建脚本) - macOS: 提供构建脚本(
arm64、universal),适用于本地构建环境 - Android: 仓库内含项目与 CI 工作流
Android
配置
| 参数 | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
--host |
MESHCHAT_HOST |
127.0.0.1 |
Web 服务器绑定地址 |
--port |
MESHCHAT_PORT |
8000 |
Web 服务器端口 |
--no-https |
MESHCHAT_NO_HTTPS |
false |
禁用 HTTPS |
--ssl-cert / --ssl-key |
MESHCHAT_SSL_CERT / MESHCHAT_SSL_KEY |
(无) | PEM 证书与私钥路径;需同时设置。覆盖身份下 ssl/ 目录中自动生成的证书。 |
--headless |
MESHCHAT_HEADLESS |
false |
不自动打开浏览器 |
--auth |
MESHCHAT_AUTH |
false |
启用基本认证 |
--storage-dir |
MESHCHAT_STORAGE_DIR |
./storage |
数据目录 |
--public-dir |
MESHCHAT_PUBLIC_DIR |
自动/捆绑 | 前端文件目录(无捆绑资源安装时需要) |
分支
| 分支 | 用途 |
|---|---|
master |
稳定发布。仅限生产就绪代码。 |
dev |
活跃开发。可能包含不稳定或不完整的更改。 |
开发
Taskfile.yml 中的常用任务:
task install
task lint:all
task test:all
task build:all
Makefile 快捷方式:
| 命令 | 说明 |
|---|---|
make install |
安装 pnpm 与 poetry 依赖 |
make run |
通过 poetry 运行 MeshChatX |
make build |
构建前端 |
make lint |
运行 eslint 与 ruff |
make test |
运行前端与后端测试 |
make clean |
移除构建产物与 node_modules |
版本
本仓库当前版本: 4.4.0。
- JavaScript/Electron 版本以
package.json为准。 meshchatx/src/version.py通过以下命令与package.json同步:
pnpm run version:sync
发布时请保持相关字段一致(package.json、pyproject.toml、meshchatx/__init__.py)。
安全
SECURITY.md- 应用内置完整性检查与默认 HTTPS/WSS
.gitea/workflows/中的 CI 扫描工作流
添加语言
语言由目录自动发现。添加新语言只需一个 JSON 文件:
- 从
en.json生成空白模板:
python scripts/generate_locale_template.py
将写入 locales.json,所有键值为空字符串。
- 重命名并移入语言目录:
mv locales.json meshchatx/src/frontend/locales/xx.json
-
在文件顶部设置
_languageName为该语言的母语名称(例如"Espanol"、"Francais")。将显示在语言选择器中。 -
翻译其余全部值。
-
校验键一致性:
pnpm test -- tests/frontend/i18n.test.js --run
无需其他代码更改。应用、语言选择与测试在构建时从 meshchatx/src/frontend/locales/ 发现语言文件。
致谢
- Liam Cottle - 原始 Reticulum MeshChat
- RFnexus - Micron 解析器(JavaScript)
- markqvist - Reticulum, LXMF, LXST