Одна страница обо всём проекте: сайт, приложения на всех платформах, переписка, приватность, связь без интернета, рации, свой сервер, звонки. Каждое утверждение здесь проверено по исходному коду проекта — что не подтвердилось, в текст не попало.
без номера телефона и почты сквозное шифрование работает и без интернета свой сервер по желанию
Duga — мессенджер без привязки к номеру телефона или почте: учётная запись — это ключ, который создаётся прямо на вашем устройстве, а не на чужом сервере. Из этого ключа выводится Duga-ID — им вас находят собеседники.
Главный принцип: связь работает и без интернета, а сервер — только помощник. Если рядом есть другой телефон с Duga, сообщение может дойти напрямую — по Wi-Fi, по Bluetooth, эстафетой через чужие телефоны или по радио. Сервер Duga ускоряет доставку и хранит письма для тех, кто сейчас выключен, но не является единственным путём, которым может пойти переписка. В приложении это можно проверить руками: режим «Только офлайн» (Настройки → Безопасность) полностью отключает соединение с сервером, а переписка с теми, кто рядом, продолжает работать.
Чем ещё отличается от привычных мессенджеров:
X25519+ML-KEM-768) в списке своих возможностей, и из-за этого в
приложении рисуется значок «Постквантовая защита» — но к выводу ключей самой
переписки этот слой сейчас не применяется, а в браузерном клиенте его нет вовсе.
Значок в этом месте обещает больше, чем происходит на самом деле — не берите
его на веру.У Duga нет единого «правильного» способа начать — версия зависит от того, чем вы пользуетесь и нужна ли вам связь совсем без сети.
| Платформа | Где взять | Особенность |
|---|---|---|
| Веб-версия | app.duga.pw, любой браузер | ничего не ставить; офлайн-связь (Bluetooth, Wi-Fi Direct, рация, радио) в браузере не работает — это ограничение самого браузера |
| Android — обычная | duga-android.apk на duga.pw |
несколько мегабайт; через интернет, а без него — напрямую между телефонами: общий Wi-Fi, раздача, Wi-Fi Direct без роутера, Bluetooth. Хватает почти всем |
| Android — с дальней сетью | duga-android-mesh.apk там же |
около 30 МБ; всё то же самое плюс радиосвязь LoRa на километры и эстафета через чужие узлы-ретрансляторы (нужен радиомодуль RNode). Внутри настоящий Python — отсюда и размер |
| Windows / macOS | zip-архив на duga.pw | распаковать и запустить, см. раздел 9 |
| Linux | duga-linux.AppImage |
chmod +x и запуск; нужен установленный python3
(в большинстве дистрибутивов уже есть) |
| iPhone (iOS) | — | пока не готово, кнопка на сайте помечена «скоро» — честно об этом ещё раз в разделе «Чего пока нет» |
На экране входа нажимаете «Создать аккаунт» (или отдельную кнопку «Создать без сети» — сейчас они ведут в один и тот же сценарий) и вводите:
Как вас будут видеть собеседники.
Не короче четырёх знаков, дважды. Этим PIN шифруются ваши ключи прямо на этом устройстве — сервер о нём не знает и его не проверяет.
Дальше приложение честно пишет «Рождаю ключи…»: они создаются локально, Duga-ID появляется сразу, и писать по локальной сети и радио можно немедленно — ещё до всякой связи с сервером. Ключ входа при этом на экране не показывается и копировать его не нужно — раньше было иначе, но в клиенте, который сейчас отдаётся сайтом, это устроено так. Регистрация на сервере (чтобы вас находили и чтобы сообщения доходили, когда прямой связи нет) — отдельный, более поздний шаг: адрес от него не меняется, публикуется уже существующий ключ. Если есть интернет, это обычно происходит само, через одну-две секунды после создания; вручную — кнопкой «Опубликовать личность на сервере» в Настройках → Безопасность.
Классический способ никуда не делся: поле «Ключ входа» и кнопка «Войти» на экране входа по-прежнему принимают ключ, полученный раньше при регистрации таким способом. Так же можно войти на новом устройстве, если такой ключ у вас сохранён.
Если личность заведена по-новому (видимого ключа нет), добавить второе устройство можно только так: на новом устройстве нажмите «Войти по QR» — оно покажет код (в нём нет секретов, только разовый публичный ключ); на уже вошедшем устройстве этот код снимают камерой и сверяют отпечаток на обоих экранах — это защита от того, что кто-то чужой подставит вам свой код вместо своего. Новое устройство получает отдельный, отзывный ключ входа: его можно в любой момент отозвать в списке «Устройства, которым выписан ключ» (Настройки → Безопасность), не трогая остальные устройства.
При первом запуске обновлённого приложения там, где ключ входа раньше лежал сохранённым открытым текстом, показывается экран переноса: «Придумайте PIN для этого устройства» — он зашифрует ключ прямо здесь. Можно отказаться кнопкой «Пока не надо» — тогда, как честно предупреждает само приложение, «ключ остаётся на устройстве открытым текстом», и всё продолжает работать по-прежнему.
.dugasafe, который можно скачивать заново
сколько угодно раз. Кнопка «Восстановить из Duga Safe» есть прямо на экране входа.В Настройках → Безопасность можно включить дополнительную проверку при входе с нового устройства — PIN-код или код из приложения-аутентификатора (TOTP). Это отдельная настройка, не то же самое, что PIN этого устройства из раздела выше.
Кнопка «Создать» (значок +) открывает всё, что можно завести: добавить контакт, новую группу, новый канал, найти канал по поиску, список рассылки, новое сообщество, добавить историю, ленту «Моменты», инкогнито-профиль, «Избранное» (заметки самому себе) и обратную связь разработчику.
| Что | Особенность |
|---|---|
| Личные сообщения | текст, голосовые, вложения, стикеры |
| Группы | то же самое плюс опросы — опрос можно создать только в группе |
| Каналы | публичное вещание на подписчиков; можно найти чужой канал через поиск |
| Сообщества | объединяют несколько групп под общей «крышей» |
| Списки рассылки | отдельная сущность для массовой рассылки одного и того же текста |
| Истории и «Моменты» | история у контакта живёт ограниченное время; «Моменты» — общая лента |
| Инкогнито-профиль | отдельная временная личность для анонимного общения |
Кнопка «Вложение» в чате открывает: фото, видео, файл, видео-кружок, геопозицию, фото со спойлером, эффект и отложенную отправку — во всех разговорах; и ещё три пункта только в личных сообщениях — альбом, фото «один раз» (исчезает после просмотра) и живую геопозицию.
В Настройках → «Язык и перевод» отдельно друг от друга настраиваются язык самого интерфейса приложения и язык, на который переводятся чужие сообщения — можно включить автоматический перевод входящих. В Настройках → «Боты» можно создать собственного бота — со своим кодом и правилами.
Содержимое сообщений сервер не получает и не хранит открытым текстом — оно шифруется на устройствах. Сервер по необходимости знает, кому адресовано сообщение и кто состоит в группе или канале — иначе не смог бы его доставить.
У ключа, которым переписка запечатана, есть оговорка, и молчать о ней нельзя. У большинства учётных записей этот ключ выводится из ключа входа, а ключ входа уходит на сервер при каждом входе. Запечатанная копия ключа переписки при этом хранится на сервере — а значит, технически владелец сервера её может распечатать. Само приложение сейчас пишет об этом прямо: «Ключ переписки: сервер пока может его распечатать».
С обновления начала сентября 2026 года есть отдельная схема (Настройки → Безопасность → «Личность и это устройство»): корневой секрет выводит ключ печати, который никогда не покидает устройство, отдельно от ключа входа. Личности, заведённые по-новому (раздел 3), печатают новые сообщения уже так. Но и для них старая, ещё расшифровываемая копия по умолчанию остаётся на сервере «на случай отката» — полностью закрыть эту лазейку можно только отдельным, необратимым шагом: кнопкой «Завершить переход» на том же экране, после которой сервер прежнюю копию уничтожает.
Короче: содержимое переписки сервер прочитать не может, а вот ключ, которым она запечатана, — пока может, если вы не перенесли личность и не завершили переход. Экран «Личность и это устройство» в любой момент честно показывает, что именно сейчас лежит на сервере у вашей учётной записи.
Это не тот же PIN, что задаётся при создании личности (раздел 3) и шифрует ключи на диске, — необязательный замок поверх уже открытого приложения. Он закрывает экран и выгружает ключ переписки из памяти: пока код не введён, приложение физически ничего не расшифровывает. Честно о границах защиты — так, как это прямо написано в самом приложении: если на устройстве нет отдельного защищённого сейфа системы, база переписки на диске остаётся незашифрованной, и человек с доступом к самому устройству или профилю браузера прочитает её в обход PIN. От случайного взгляда PIN защищает, от изъятия устройства — нет.
Дополнительно доступен тревожный (принудительный) PIN: при вводе на экране
блокировки он показывает пустой профиль вместо настоящего. И «быстрый выход» —
сочетание Ctrl+Shift+X мгновенно блокирует приложение.
В приложении (не в браузере) есть раздел «Устройства с доступом»: переписка хранится на телефоне, а браузеру можно временно разрешить доступ по QR-коду. Разрешение можно отозвать в любой момент — тогда переписка в том браузере исчезнет, а на телефоне останется нетронутой. Это отдельный список от «Устройств, которым выписан ключ» из раздела 3 — тот про вход по QR на новых устройствах, этот — про временный доступ браузеру.
Доступна только в Android-сборке «с дальней сетью» и только с подключённым радиомодулем (RNode). Даёт связь на километры через радио и через чужие узлы-ретрансляторы, без всякого интернета и без сотовой сети.
Полностью отключает соединение с сервером (Настройки → Безопасность). Связь с теми, кто рядом, продолжает работать — это тот самый принцип из раздела 1, который можно проверить руками.
Телефоны находят друг друга широковещательным пакетом, а такой пакет живёт ровно в одной подсети — первый же роутер его отбрасывает. Поэтому просто поставить два роутера рядом недостаточно, чтобы телефоны за ними увидели друг друга.
Решение — программный узел Duga на роутере (там, где это позволяет прошивка, например OpenWrt) или на любом мини-ПК рядом с ним. В своей подсети узел находит телефоны сам, без всякой настройки на телефоне; с соседним узлом он соединяется по обычному сетевому адресу — а это роутер уже пропускает. Сколько бы участков сети ни было, сообщение проходит по цепочке узлов. Узел также держит накопитель: письмо для выключенного адресата полежит на узле и уйдёт, как только тот появится.
| Нужно | Значение |
|---|---|
| Устройство | мини-ПК, одноплатник или роутер с Linux и Python 3.7+ |
| Интернет | не нужен нигде и никогда |
| Постоянный адрес | обязателен, закрепляется в настройках роутера |
Настройка на самом узле — два отдельных каталога: один для сетевой программы
(rnsd), другой для накопителя писем (lxmd). Обе программы
читают файл с именем config в своём каталоге; если положить их в один
каталог, накопитель молча останется выключенным. Обе программы ставятся автозапуском
(systemd) и держат связь постоянно.
На телефоне, если он в другой подсети, чем узел: Duga → «Связь без интернета»
→ «Через роутеры: сеть любого масштаба» → «Вписать узел дальней сети» — указать
адрес узла и порт 4242.
Duga умеет работать и как настоящая радио-рация на отдельной маленькой плате: две такие платы слышат друг друга напрямую по радио LoRa (диапазон 868 МГц и близкие к нему по региону) — без вышек сотовой связи и без роутера. Это отдельное железное устройство, не телефон.
| Heltec V3 | Heltec V4 | Heltec T114 | |
|---|---|---|---|
| Экран | OLED, чёрно-белый | OLED, чёрно-белый | цветной |
| Мощность передатчика | 22 дБм | ~28 дБм (с усилителем) | — |
| Wi-Fi и шлюз в интернет-сервер | есть | есть | нет |
| Разъём GPS | нет | есть | есть |
Полная инструкция по платам — 21 раздел с картинками: первое включение, экран и кнопки, меню, подключение телефона по Bluetooth, Wi-Fi, шлюз в интернет-сервер, знакомство плат между собой, тревога и маяк спасения, настройки по номерам, особенности T114, устранение неполадок, как защищена переписка, — вся она здесь не повторяется, а лежит отдельно:
→ Инструкция по платам /instrukciya/ → Прошить рацию из браузера
Прошивка V3 и V4 — по кабелю прямо в Chrome, ничего ставить не нужно. Для T114 там же лежит файл и короткое объяснение.
Код мессенджера можно поставить на собственный сервер — тогда переписка ваших людей идёт через вашу машину, а не через duga.pw, и продолжает работать, даже если общий интернет выключить: клиенты соединяются напрямую с вашим шлюзом.
Кому это нужно: тем, кому важен контроль над сервером, или сети, которая должна жить полностью автономно (например, без доступа к общему интернету вообще).
В самостоятельную редакцию физически не входят: Магазин, Игры и мини-приложения, Кошелёк, Duga Premium и звёзды, подарки, платные каналы, ассистент с языковой моделью и песочница ботов — это редакция «только связь», без извинений. Звонки, наоборот, входят: выключены по умолчанию, включаются отдельно и требуют двух открытых портов наружу — подробности и предупреждение про собеседника с одним портом 443 разобраны на странице «Свой сервер» ниже. Переписка, группы, каналы, вложения и уведомления работают без урезаний.
Установка — одной командой поверх Docker, три способа получить работающий
HTTPS-сертификат (свой домен, бесплатный адрес вида sslip.io без домена,
или полностью офлайн со своим корневым сертификатом) и код владельца, который
выдаётся один раз при установке. Подробная пошаговая инструкция и все технические
детали — на отдельной странице, здесь она не дублируется:
→ Поставить свой сервер /svoy-server/
С версии 1.2.2 приложение — не только окно веб-версии. Личность заводится прямо на устройстве, без всякой сети (тот же порядок, что в разделе 3), а второе устройство подключается по QR оттуда же. Появился и кусок офлайн-связи из раздела 6: компьютер сам находит рядом другие устройства Duga в локальной сети и передаёт им сообщения напрямую, минуя сервер; если получателя нет рядом — несёт письмо с собой и отдаёт при встрече (эстафета). Тот же способ связи, что у приложения для телефона: компьютер и телефон в одной сети видят друг друга. Bluetooth, Wi-Fi Direct и радио LoRa по-прежнему только в Android — этими радиомодулями и разрешениями управляет операционная система телефона, у компьютера их нет.
Архив — в папку без кириллицы в пути, например
C:\Duga\.
Duga.exe.
Windows SmartScreen покажет «Windows защитила ваш компьютер» — это не значит, что приложение вредоносно, а значит, что оно не подписано платным сертификатом Microsoft. Нажмите «Подробнее» → «Выполнить в любом случае».
Перетащить Duga.app в «Программы».
Приложение подписано собственной (ad-hoc) подписью и не заверено у Apple: скачанный файл получает метку карантина, и macOS откажется его открывать со словами «повреждено». Решение — одна строка в Терминале:
xattr -dr com.apple.quarantine /Applications/Duga.app |
После этого — обычный двойной щелчок. Либо без Терминала: правый щелчок по
Duga.app → «Открыть» → «Открыть» ещё раз.
Меню «Сервер» → «Добавить сервер…», в поле — адрес шлюза вида
wss://мой-сервер.ру/ws (или ws://192.168.1.10:8765 для
сервера в локальной сети). Кнопка «Сохранить» включится только после успешной
проверки связи. У каждого добавленного сервера — своё, полностью отдельное
хранилище: ключи и переписка одного сервера физически недоступны другому.
Данные приложения хранятся в папке профиля: Windows —
%APPDATA%\Duga, macOS — ~/Library/Application Support/Duga;
открыть её можно через меню «Помощь → Папка данных приложения».
Звонок один на один (голосом или видео) запускается кнопкой звонка прямо в переписке и идёт через сервер-реле, который скрывает IP-адрес собеседника. Внутри группы отдельно доступна групповая голосовая комната.
| Признак | Вероятная причина | Что сделать |
|---|---|---|
| «Неверный ключ входа» | опечатка при вводе, либо это ключ от учётной записи на другом сервере | сверить ключ посимвольно; проверить, что это тот же сервер, где создавали аккаунт |
| После переустановки старая переписка нечитаема | не был создан код восстановления заранее | если код есть — ввести на экране «Восстановление переписки»; если его не было, это необратимо |
| В браузере не находит никого «рядом», нет кнопки «Рация» | в вебе нет доступа к Bluetooth и Wi-Fi Direct — ограничение браузера | поставить приложение для Android |
| Windows: «Windows защитила ваш компьютер» | приложение не подписано платным сертификатом Microsoft | «Подробнее» → «Выполнить в любом случае» |
| macOS: файл «повреждён» | карантин macOS на файле без заверения Apple | xattr -dr com.apple.quarantine /Applications/Duga.app |
| Не получается позвонить | собеседник не в сети, плохой канал, либо свой сервер без сервера-реле для звонков | проверить, что оба на связи; для своего сервера уточнить, поднят ли LiveKit |
| Никого не видно поблизости в офлайн-режиме | выключены Bluetooth/Wi-Fi, либо прошивка телефона ограничивает фоновую работу (MIUI и похожие) | включить Bluetooth и Wi-Fi; разрешить фоновую работу через экран, который открывает само приложение |
| Кнопка «дальняя сеть» ничего не находит | нет подключённого радиомодуля RNode, либо стоит не та сборка | убедиться, что установлена
duga-android-mesh.apk и RNode подключён |
| Приложение предупреждает о смене ключа у собеседника | собеседник переустановил приложение, либо это подмена | сверить ключ или QR лично, не игнорировать предупреждение |
| Забыт ключ входа, кода восстановления нет | ключ есть только у владельца и нигде больше не хранится | заранее, сразу после регистрации, создавать код восстановления и/или копию Duga Safe |
Нет. Учётная запись — это ключ, который создаётся на самом устройстве при регистрации, а не привязка к номеру или почте.
Да, но способ зависит от того, как заведена личность. Если есть сохранённый ключ входа старого образца — введите его на новом устройстве в поле «Ключ входа». Если личность заведена по-новому (видимого ключа нет) — используйте «Войти по QR» с уже вошедшего устройства. Подробнее — раздел 3.
Файл подписан ключом разработчика. Предупреждение системы при установке — обычная реакция на установку не из официального магазина, а не признак вредоносности.
Да, файл APK можно передать прямо из приложения по Bluetooth или Wi-Fi.
Переписка с теми, кто рядом, продолжит работать (Wi-Fi, Bluetooth, эстафета, радио). Остановится то, для чего действительно нужен сервер: доставка тем, кто далеко, поиск людей по имени и звонки.
Сообщение, отправленное отключённому собеседнику, доходит после его переподключения — это проверено на практике. Но офлайн-доставка зависит от того, окажется ли рядом кто-то, кто донесёт конверт дальше, — это не то же самое, что гарантия сервера.
.dugasafe, которую можно скачивать заново.