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