Skip to content

Обновления и подпись релизов ​

Новые версии публикуются на странице Releases на GitHub. Приложение само узнаёт о них и устанавливает обновление, только если релиз подписан ключом keqdroid.

Когда приложение проверяет ​

  • при запуске;
  • когда вы возвращаетесь в приложение, если с прошлой проверки прошло больше 6 часов;
  • когда вы нажимаете «Проверить обновления» в настройках.

Черновики и предварительные версии не предлагаются. Когда VPN включён, запрос к GitHub идёт через сервер.

Окно о новой версии ​

В окне есть кнопки «Обновить», «Позже» и «Пропустить версию». Само окно появляется не чаще, чем указано в «Поведение» → «Сообщать о новой версии»: каждый день, раз в 3 дня (по умолчанию) или раз в неделю. О пропущенной версии окно больше не напоминает, но в настройках по-прежнему видно, что обновление есть.

Проверка подлинности ​

В каждом релизе есть файл SHA256SUMS с хешами всех файлов и SHA256SUMS.sig с его подписью Ed25519. Перед установкой приложение:

  1. скачивает SHA256SUMS и SHA256SUMS.sig;
  2. проверяет подпись ключом, встроенным в само приложение;
  3. сверяет хеш скачанного файла с тем, что записан в SHA256SUMS.

Если подписи нет, она не сходится или хеш отличается, файл удаляется и не устанавливается. Ключей два: основной и запасной, который хранится не на GitHub. Запасной нужен на случай, если основной потеряется: тогда обновления не прекратятся навсегда.

Так же проверяется полная база стран на Android. «О приложении» → «Скачать полную базу» скачивает geoip.dat из последнего релиза и принимает его, только если хеш подписан.

Как ставится обновление ​

ГдеЧто происходит
AndroidAPK открывается в системном установщике; нужно разрешение «Установка приложений»
Windows, установщикновая версия ставится поверх старой без окон установщика, Windows может запросить права администратора; потом приложение перезапускается
Windows, портативнаяфайлы в папке приложения заменяются, и приложение перезапускается
Linux, .debapt-get install через pkexec, система спросит пароль
Linux, .rpmrpm -U через pkexec, система спросит пароль
Linux, AppImageфайл заменяется на месте; если в его папку нельзя писать, новая версия сохраняется в «Загрузки»
Linux, .tar.gzфайлы в папке приложения заменяются
Linux, Archоткрывается страница релиза, пакет обновляется через PKGBUILD
Linux, папка приложения без права записиоткрывается страница релиза

Приложение скачивает файл того же типа, каким оно установлено: AppImage обновляется через AppImage, .deb – через .deb. В Fedora Silverblue, Kinoite, Bazzite и других атомарных системах пакеты устанавливает rpm-ostree, поэтому .rpm просто сохраняется в «Загрузки».

Если VPN был включён, после обновления он включится снова: на Android – после установки APK, на компьютере – после перезапуска.

Проверить файл самому ​

Релизы после 0.35.0 собираются в GitHub Actions прямо из репозитория keqdroid. Проверить, что файл собран именно там, можно командой:

bash
gh attestation verify <файл> --repo Lemonochka/keqdroid

Хеш файла можно сверить с SHA256SUMS, например так:

bash
sha256sum -c SHA256SUMS --ignore-missing

Подпись кода для Windows пока настраивается, поэтому сборки для Windows сейчас не подписаны.