====== MeshChat ======
[[https://github.com/liamcottle/reticulum-meshchat|MeshChat]] - комплексное приложение (Web UI) для обмена сообщениями, голосовых звонков и встроенным браузером для просмотра страниц (в формате Micron) посредством протокола [[https://github.com/markqvist/lxmf|LXMF]] в сети [[:reticulum|Reticulum]]. В отличии от [[https://github.com/markqvist/nomadnet|NomadNet]] (TUI) является более интуитивным для ознакомления с возможностями сети Reticulum на уровне бытового пользователя. Также содержит гибкие настройки подключения и удобную визуализацию доступной части сети:
{{:reticulum:meshchat_reticulum-network-map.jpg?200|}}
===== Системные зависимости =====
Подобно NomadNet, серверная часть реализована на языке Python:
sudo apt install git python3-pip
Для сборки клиента, потребуется установка последней версии Node.js:
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
NODE_MAJOR=22
echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs
Для предотвращения [[https://github.com/liamcottle/reticulum-meshchat/issues/110|ошибки запуска]], желательно сразу выполнить следующую команду:
mkdir -p ~/reticulum-meshchat/public
===== Установка =====
Для запуска сервера MeshChat, далее будет создан сервис systemd, для него можно сразу создать пользователя с домашней директорией:
sudo useradd -m reticulum
==== Сборка с исходного кода ====
В директорию пользователя клонируется последняя версия из репозитория, производится инициализация зависимостей Python и компиляция Front-end:
su reticulum
cd ~
git clone https://github.com/liamcottle/reticulum-meshchat
cd reticulum-meshchat
pip install -r requirements.txt --break-system-packages
npm install --omit=dev
npm run build-frontend
==== systemd ====
[Unit]
Description=reticulum-meshchat
After=network.target
Wants=network-online.target
StartLimitIntervalSec=0
[Service]
Type=simple
User=reticulum
Group=reticulum
WorkingDirectory=/home/reticulum/reticulum-meshchat
ExecStart=/usr/bin/env /usr/bin/python3 /home/reticulum/reticulum-meshchat/meshchat.py --headless --host 127.0.0.1 --port 1234
# можно указать null
StandardOutput=file:///home/reticulum/debug.log
StandardError=file:///home/reticulum/error.log
[Install]
WantedBy=multi-user.target
* "127.0.0.1" - или хост сервера
==== iptables ====
MeshChat удобно запускать на отдельном устройстве, работающем 24/7. Для локального сервера, этот шаг можно пропустить.
Если подключение удалённое, открываем порт для соответствующих from/to хостов:
sudo ufw allow from xx.xx.xx.xx to xx.xx.xx.xx port 1234 proto tcp
===== Настройка =====
MeshChat использует типичный узел Reticulum, для подключения к сети в оверлейном режиме, нужно добавить как минимум один пир:
[interfaces]
[[rothbard_RNS_transport_ZA_ygg]]
type = TCPClientInterface
enabled = true
target_host = 200:73eb:2e4:14be:aac7:90b3:784b:71a3
target_port = 4242
* [[https://github.com/markqvist/Reticulum/wiki/Community-Node-List|актуальный список доступных узлов]]
==== Режим ретрансляции ====
Поддержать сеть Reticulum, можно став "публичным пиром" например, для пользователей Yggdrasil
enable_transport = true
[interfaces]
[[TCP Server Interface]]
type = TCPServerInterface
interface_enabled = true
listen_ip = ::
listen_port = 4242
* можно указать вместо "::" - конкретный адрес Yggdrasil
* желательно добавить публичный узел в [[https://github.com/markqvist/Reticulum/wiki/Community-Node-List#yggdrasil|реестр]]
Для получения входящих подключений, не забываем открыть порт:
sudo ufw allow from 0200::/7 to xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx port 4242 proto tcp
===== Запуск =====
При использовании systemd:
sudo systemctl restart reticulum-meshchat
Проверка статуса:
sudo systemctl status reticulum-meshchat
netstat -tulpn | grep 4242
В браузере:
[[http://localhost:1234]] (или хост сервера)