Soty

Установка

Поставить Soty и написать первое сообщение

Приложение для Android ставится одним APK, версия для Linux — распакованным архивом, узел ретрансляции — одним бинарником. Ниже: что скачать, что понадобится и что приложение покажет после первого запуска.

Сборки лежат только в релизах GitHub — рядом с ними файл контрольных сумм SHA256SUMS.

Что скачать

Последний релиз: приложение для телефона и десктопа и узел ретрансляции для операторов.

Последний релиз v1.3.0+10 опубликован 16 октября 2026

Android

Приложение мессенджера одним APK: скачать, разрешить установку из неизвестного источника и открыть файл. Подойдёт Android 8.0 и новее.

soty-release.apk · 86 MB

Скачать

Linux x64

Тот же мессенджер для компьютера. Распакуйте архив и запустите файл soty; нужны GTK 3 и libsqlite3.

soty-linux-x64.tar.gz · 20 MB

Скачать

Релейный хост

Узел офлайн-доставки и трекера: один бинарник, которому нужна только libsqlite3. Для тех, кто держит релей сам.

dtm_host.bin · 8 MB

Скачать
Контрольные суммы SHA-256 — в описании релиза и в файле SHA256SUMS. Все релизы на GitHub

Перед началом

Требования короткие: ни учётной записи, ни номера телефона, ни почты.

Android 8.0 и новее

Файл APK около 86 МБ, устанавливается вручную: система один раз спросит разрешение на установку из неизвестных источников.

Linux x64

Архив около 20 МБ. Нужны библиотеки GTK 3 и libsqlite3 — в обычном дистрибутиве они уже стоят.

Узлу — x86-64 и libsqlite3

Хост ретрансляции — это один бинарник и один файл базы. Хватит самого скромного сервера.

Контроль целостности

К каждому релизу приложен SHA256SUMS: сверьте скачанный файл, прежде чем запускать его.

Пошаговая установка

Выберите, что ставите: приложение для телефона, приложение для компьютера или свой узел ретрансляции. Шаги и экраны ниже относятся к выбранной платформе.

Свой relay и tracker: держит зашифрованные конверты для тех, кто офлайн, и знакомит устройства адресами. Один бинарник и один файл базы.

  1. 1

    Скачайте бинарник

    В релизах это файл dtm_host.bin, около 8 МБ. GitHub не принимает расширение .app, поэтому файл переименован в .bin: байты те же, контрольная сумма та же, меняется только имя.

    Собрать самому тоже можно: dart compile exe bin/dtm_host.dart -o dtm_host. Суффикс на работу не влияет — на Linux это обычный ELF.

  2. 2

    Проверьте, что библиотек хватит

    Нужен x86-64 Linux и libsqlite3 — больше ничего: ни отдельной базы данных, ни nginx, пока хост слушает напрямую.

    Если вывод пуст: Alma и RHEL — sudo dnf install -y sqlite-libs, Debian и Ubuntu — sudo apt-get install -y libsqlite3-0.

  3. 3

    Запустите узел

    Одна команда поднимает relay и tracker на порту 3100: WebSocket-эндпоинт будет ws://<адрес>:3100/ws. В лог печатается баннер с ссылкой-приглашением вида soty://host?addr=…&pk=… и ключом Ed25519 узла.

    Файл базы — это личность узла: Ed25519-ключ генерируется в нём при первом запуске. Новый файл означает новый узел, и клиенты, закрепившие прежний ключ, перестанут этот узел принимать. Поэтому базу не удаляют, а копируют.

  4. 4

    Подключите к нему приложение

    В Soty откройте «Настройки → Ретрансляционные хосты → Добавить ретрансляционный хост» и вставьте ссылку soty://host… из баннера — или введите адрес ws:// и ключ отдельно. Узел появится в списке со статусом «Подключено».

    Список ретрансляционных хостов в настройках Soty
    Ретрансляционные хосты в приложении
  5. 5

    Поставьте на постоянную работу

    Для пробы хватит запуска из терминала. Для постоянной работы в репозитории есть deploy/deploy-host.sh: он копирует бинарник, рендерит конфиг выбранного рантайма (systemd-user, systemd-system, supervisor, nohup), поднимает сервис и печатает приглашение. Основные ключи: --ssh, --runtime, --nginx, --listen, --port, --announce, --peer.

    Проверить живой узел и его ключ можно тем же скриптом с ключом --check: в репозитории для этого лежит deploy/host_probe.py.

  6. 6

    Свяжите узлы между собой

    Несколько узлов объединяются флагом --peer, который можно повторять: они обмениваются конвертами при живом канале и догоняют пропущенное антиэнтропией. Получатель найдёт сообщение на любом узле федерации, до которого дотянется.

Контрольные суммы

Каждый релиз приходит с файлом SHA256SUMS. Скачайте его рядом с нужным файлом и проверьте, что байты не изменились по дороге:

Те же суммы напечатаны в заметках к релизу — их можно сверить глазами.

Если что-то не сработало

Частые места, где установка спотыкается.

Android не даёт установить APK

Разрешение выдаётся для конкретного приложения — браузера или файлового менеджера, из которого вы открыли файл. В диалоге есть переход в «Установку неизвестных приложений»; после разрешения установку можно повторить.

Камера недоступна

Так приложение говорит, что не получило разрешение на камеру. Выдайте его в системных настройках или добавьте контакт текстом: приглашение и X25519-ключ работают без камеры.

Уведомления не приходят

Откройте «Настройки → Уведомления»: приложение показывает свой статус и, если система его заблокировала, предлагает перейти в системные настройки. Кнопка «Отправить тестовое уведомление» проверяет канал сразу.

Фоновая работа отключается сама

Так работает оптимизация батареи: система усыпляет приложение вместе с мешем и релеями. В настройках видно текущее состояние — «Без ограничений» или «Ограничена системой», — а исключение выдаётся в системных настройках батареи.

Узлы ретрансляции не в сети

Посмотрите «Настройки → Сеть»: узел мог просто стать недоступен. Добавьте свой или включите «Переключение ретрансляторов → Автоматическая замена», чтобы приложение подставляло релей, о котором узнало от хостов.

Куда деваются сообщения после удаления приложения

Никуда: ключи и переписка лежат в локальной базе, копии на сервере нет. После удаления восстановить их нельзя — проект не делает резервных копий.

Поставили? Осталось добавить собеседника

Дальше приложению нужен только второй участник: покажите QR-код или перешлите приглашение — и можно писать.