Содержание

MeshChat

MeshChat - комплексное приложение (Web UI) для обмена сообщениями, голосовых звонков и встроенным браузером для просмотра страниц (в формате Micron) посредством протокола LXMF в сети Reticulum. В отличии от NomadNet (TUI) является более интуитивным для ознакомления с возможностями сети Reticulum на уровне бытового пользователя. Также содержит гибкие настройки подключения и удобную визуализацию доступной части сети:

Системные зависимости

Подобно 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

Для предотвращения ошибки запуска, желательно сразу выполнить следующую команду:

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

/etc/systemd/system/reticulum-meshchat.service
[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

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, для подключения к сети в оверлейном режиме, нужно добавить как минимум один пир:

~/.reticulum/config
[interfaces]
  [[rothbard_RNS_transport_ZA_ygg]]
    type = TCPClientInterface
    enabled = true
    target_host = 200:73eb:2e4:14be:aac7:90b3:784b:71a3
    target_port = 4242

Режим ретрансляции

Поддержать сеть Reticulum, можно став «публичным пиром» например, для пользователей Yggdrasil

~/.reticulum/config
enable_transport = true
[interfaces]
  [[TCP Server Interface]]
    type = TCPServerInterface
    interface_enabled = true
    listen_ip = ::
    listen_port = 4242

Для получения входящих подключений, не забываем открыть порт:

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 (или хост сервера)