Android
Приложение мессенджера одним APK: скачать, разрешить установку из неизвестного источника и открыть файл. Подойдёт Android 8.0 и новее.
soty-release.apk · 86 MB
СкачатьУстановка
Приложение для Android ставится одним APK, версия для Linux — распакованным архивом, узел ретрансляции — одним бинарником. Ниже: что скачать, что понадобится и что приложение покажет после первого запуска.
Сборки лежат только в релизах GitHub — рядом с ними файл контрольных сумм SHA256SUMS.
Последний релиз: приложение для телефона и десктопа и узел ретрансляции для операторов.
Приложение мессенджера одним APK: скачать, разрешить установку из неизвестного источника и открыть файл. Подойдёт Android 8.0 и новее.
soty-release.apk · 86 MB
СкачатьТот же мессенджер для компьютера. Распакуйте архив и запустите файл soty; нужны GTK 3 и libsqlite3.
soty-linux-x64.tar.gz · 20 MB
СкачатьУзел офлайн-доставки и трекера: один бинарник, которому нужна только libsqlite3. Для тех, кто держит релей сам.
dtm_host.bin · 8 MB
СкачатьТребования короткие: ни учётной записи, ни номера телефона, ни почты.
Файл APK около 86 МБ, устанавливается вручную: система один раз спросит разрешение на установку из неизвестных источников.
Архив около 20 МБ. Нужны библиотеки GTK 3 и libsqlite3 — в обычном дистрибутиве они уже стоят.
Хост ретрансляции — это один бинарник и один файл базы. Хватит самого скромного сервера.
К каждому релизу приложен SHA256SUMS: сверьте скачанный файл, прежде чем запускать его.
Выберите, что ставите: приложение для телефона, приложение для компьютера или свой узел ретрансляции. Шаги и экраны ниже относятся к выбранной платформе.
Свой relay и tracker: держит зашифрованные конверты для тех, кто офлайн, и знакомит устройства адресами. Один бинарник и один файл базы.
В релизах это файл dtm_host.bin, около 8 МБ. GitHub не принимает расширение .app, поэтому файл переименован в .bin: байты те же, контрольная сумма та же, меняется только имя.
Собрать самому тоже можно: dart compile exe bin/dtm_host.dart -o dtm_host. Суффикс на работу не влияет — на Linux это обычный ELF.
Нужен x86-64 Linux и libsqlite3 — больше ничего: ни отдельной базы данных, ни nginx, пока хост слушает напрямую.
Если вывод пуст: Alma и RHEL — sudo dnf install -y sqlite-libs, Debian и Ubuntu — sudo apt-get install -y libsqlite3-0.
Одна команда поднимает relay и tracker на порту 3100: WebSocket-эндпоинт будет ws://<адрес>:3100/ws. В лог печатается баннер с ссылкой-приглашением вида soty://host?addr=…&pk=… и ключом Ed25519 узла.
Файл базы — это личность узла: Ed25519-ключ генерируется в нём при первом запуске. Новый файл означает новый узел, и клиенты, закрепившие прежний ключ, перестанут этот узел принимать. Поэтому базу не удаляют, а копируют.
В Soty откройте «Настройки → Ретрансляционные хосты → Добавить ретрансляционный хост» и вставьте ссылку soty://host… из баннера — или введите адрес ws:// и ключ отдельно. Узел появится в списке со статусом «Подключено».
Для пробы хватит запуска из терминала. Для постоянной работы в репозитории есть deploy/deploy-host.sh: он копирует бинарник, рендерит конфиг выбранного рантайма (systemd-user, systemd-system, supervisor, nohup), поднимает сервис и печатает приглашение. Основные ключи: --ssh, --runtime, --nginx, --listen, --port, --announce, --peer.
Проверить живой узел и его ключ можно тем же скриптом с ключом --check: в репозитории для этого лежит deploy/host_probe.py.
Несколько узлов объединяются флагом --peer, который можно повторять: они обмениваются конвертами при живом канале и догоняют пропущенное антиэнтропией. Получатель найдёт сообщение на любом узле федерации, до которого дотянется.
Каждый релиз приходит с файлом SHA256SUMS. Скачайте его рядом с нужным файлом и проверьте, что байты не изменились по дороге:
Те же суммы напечатаны в заметках к релизу — их можно сверить глазами.
Частые места, где установка спотыкается.
Разрешение выдаётся для конкретного приложения — браузера или файлового менеджера, из которого вы открыли файл. В диалоге есть переход в «Установку неизвестных приложений»; после разрешения установку можно повторить.
Так приложение говорит, что не получило разрешение на камеру. Выдайте его в системных настройках или добавьте контакт текстом: приглашение и X25519-ключ работают без камеры.
Откройте «Настройки → Уведомления»: приложение показывает свой статус и, если система его заблокировала, предлагает перейти в системные настройки. Кнопка «Отправить тестовое уведомление» проверяет канал сразу.
Так работает оптимизация батареи: система усыпляет приложение вместе с мешем и релеями. В настройках видно текущее состояние — «Без ограничений» или «Ограничена системой», — а исключение выдаётся в системных настройках батареи.
Посмотрите «Настройки → Сеть»: узел мог просто стать недоступен. Добавьте свой или включите «Переключение ретрансляторов → Автоматическая замена», чтобы приложение подставляло релей, о котором узнало от хостов.
Никуда: ключи и переписка лежат в локальной базе, копии на сервере нет. После удаления восстановить их нельзя — проект не делает резервных копий.
Дальше приложению нужен только второй участник: покажите QR-код или перешлите приглашение — и можно писать.