From fceb987906c19a0516510f2b0f91104a0174630b Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Wed, 24 Dec 2025 20:31:46 +0000 Subject: [PATCH] docs: verify and reproduce builds (#6515) * docs/REPRODUCIBLE: add new * docs/REPRODUCIBLE: clarify Android requirements * rename to REPRODUCE * expand and fix sections * website * docs, site: change links to simplex.apk to simplex-aarch64.apk --------- Co-authored-by: Evgeny Poberezkin --- README.md | 6 +- docs/DOWNLOADS.md | 6 +- docs/REPRODUCE.md | 203 ++++++++++++++++++ docs/TRANSLATIONS.md | 2 +- docs/WEBRTC.md | 3 +- docs/lang/cs/README.md | 6 +- docs/lang/fr/README.md | 6 +- docs/lang/pl/README.md | 10 +- website/langs/en.json | 1 + website/src/_data/docs_dropdown.json | 4 + website/src/_data/docs_sidebar.json | 1 + website/src/_includes/contact_page.html | 30 +-- website/src/_includes/hero.html | 2 +- website/src/_includes/navbar.html | 2 +- .../src/_includes/sections/join_simplex.html | 2 +- website/src/css/doc.css | 2 +- website/src/index.html | 2 +- 17 files changed, 250 insertions(+), 38 deletions(-) create mode 100644 docs/REPRODUCE.md diff --git a/README.md b/README.md index b1d2556072..f8abf8adfb 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,11 @@   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) - 🖲 Protects your messages and metadata - who you talk to and when. - 🔐 Double ratchet end-to-end encryption, with additional encryption layer. -- 📱 Mobile apps for Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk)) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). +- 📱 Mobile apps for Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). - 🚀 [TestFlight preview for iOS](https://testflight.apple.com/join/DWuT2LQu) with the new features 1-2 weeks earlier - **limited to 10,000 users**! - 🖥 Available as a terminal (console) [app / CLI](#zap-quick-installation-of-a-terminal-app) on Linux, MacOS, Windows. @@ -435,4 +435,4 @@ Graphic designs, artworks and layouts are not licensed for re-use. If you want t   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) diff --git a/docs/DOWNLOADS.md b/docs/DOWNLOADS.md index a23a920bbb..b9889fe7a7 100644 --- a/docs/DOWNLOADS.md +++ b/docs/DOWNLOADS.md @@ -24,6 +24,8 @@ You can link your mobile device with desktop to use the same profile remotely, b - Ubuntu 22.04 and Debian-based distros ([x86_64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-ubuntu-22_04-x86_64.deb), [aarch64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-ubuntu-22_04-aarch64.deb)). - Ubuntu 24.04 ([x86_64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-ubuntu-24_04-x86_64.deb), [aarch64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-ubuntu-24_04-aarch64.deb)). +You can [verify and reproduce](./REPRODUCE.md) Linux builds. + **Mac**: [x86_64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-macos-x86_64.dmg) (Intel), [aarch64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-macos-aarch64.dmg) (Apple Silicon). **Windows**: [x86_64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-desktop-windows-x86_64.msi). @@ -32,7 +34,9 @@ You can link your mobile device with desktop to use the same profile remotely, b **iOS**: [App store](https://apps.apple.com/us/app/simplex-chat/id1605771084), [TestFlight](https://testflight.apple.com/join/DWuT2LQu). -**Android**: [Play store](https://play.google.com/store/apps/details?id=chat.simplex.app), [F-Droid](https://simplex.chat/fdroid/), [APK aarch64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk), [APK armv7](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-armv7a.apk). +**Android**: [Play store](https://play.google.com/store/apps/details?id=chat.simplex.app), [F-Droid](https://simplex.chat/fdroid/), [APK aarch64](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk), [APK armv7](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-armv7a.apk). + +You can [verify and reproduce](./REPRODUCE.md) Android APKs. ## Terminal (console) app diff --git a/docs/REPRODUCE.md b/docs/REPRODUCE.md new file mode 100644 index 0000000000..03fb6b4336 --- /dev/null +++ b/docs/REPRODUCE.md @@ -0,0 +1,203 @@ +--- +title: Verify and reproduce builds +permalink: /reproduce/index.html +revision: 19.12.2025 +--- + +# Verifying and reproducing release builds + +- [Obtain release signing key](#obtain-release-signing-key) +- [Verify release signature](#verify-release-signature) +- [How to reproduce builds](#how-to-reproduce-builds) + - [Server binaries](#server-binaries) + - [Linux desktop apps and CLI](#linux-desktop-apps-and-cli) + - [Android apps](#android-apps) + +## Obtain release signing key + +To verify the signature of `_sha256sums` or apks you need to obtain the signing key. You can do it from keyservers: + +```sh +gpg --keyserver hkps://keys.openpgp.org --search build@simplex.chat +gpg --keyserver hkps://keyserver.ubuntu.com --search build@simplex.chat +``` + +```sh +gpg --list-keys build@simplex.chat +``` + +Once you obtain the signing key, verify that its fingerprint is: + +``` +BBDF 7BDA D154 8B16 836A F5B9 D53B DFD1 53C3 66BA +``` + +Additionally, compare the key fingerprint with: + +- [simplexchat.eth](https://app.ens.domains/simplexchat.eth) (release key record) +- [Mastodon](https://mastodon.social/@simplex) (profile) +- [Reddit](https://www.reddit.com/r/SimpleXChat/) (side panel) + +You can set the imported key as "ultimately trusted": + +```sh +echo -e "trust\n5\ny\nquit" | gpg --command-fd 0 --edit-key build@simplex.chat +``` + +## Verify release signature + +**Linux dekstop apps and CLI**: + +Download the file with executable hashes and the signature. For example, to verify the `v6.5.0-beta.3` release: + +```sh +curl -LO 'https://github.com/simplex-chat/simplex-chat/releases/download/v6.5.0-beta.3/_sha256sums.asc' +curl -LO 'https://github.com/simplex-chat/simplex-chat/releases/download/v6.5.0-beta.3/_sha256sums' +``` + +Verify the signature: + +```sh +gpg --verify _sha256sums.asc _sha256sums +``` + +**Android APKs**: + +Download the APK files and signatures. For example, to verify the `v6.5.0-beta.3` release: + +```sh +curl -LO 'https://github.com/simplex-chat/simplex-chat/releases/download/v6.5.0-beta.3/simplex-aarch64.apk' +curl -LO 'https://github.com/simplex-chat/simplex-chat/releases/download/v6.5.0-beta.3/_simplex-aarch64.apk.asc' +curl -LO 'https://github.com/simplex-chat/simplex-chat/releases/download/v6.5.0-beta.3/simplex-armv7a.apk' +curl -LO 'https://github.com/simplex-chat/simplex-chat/releases/download/v6.5.0-beta.3/_simplex-armv7a.apk.asc' +``` + +Verify the signatures: + +```sh +gpg --verify _simplex-armv7a.apk.asc simplex-armv7a.apk +gpg --verify _simplex-aarch64.apk.asc simplex-aarch64.apk +``` + +## How to reproduce builds + +To reproduce the build you must have: + +- Linux machine +- `x86-64` architecture +- Installed `docker`, `curl` and `git` + +### Server binaries + +1. Download script: + + ```sh + curl -LO 'https://raw.githubusercontent.com/simplex-chat/simplexmq/refs/heads/master/scripts/simplexmq-reproduce-builds.sh' + ``` + +2. Make it executable: + + ```sh + chmod +x simplexmq-reproduce-builds.sh + ``` + +3. Execute the script with the required tag: + + ```sh + ./simplexmq-reproduce-builds.sh 'v6.3.1' + ``` + + The script executes these steps (please review the script to confirm): + + 1) builds all server binaries for the release in docker container. + 2) downloads binaries from the same GitHub release and compares them with the built binaries. + 3) if they all match, generates _sha256sums file with their checksums. + + This will take a while. + +4. After compilation, you should see the folder named as the tag and repository name (e.g., `v6.3.1-simplexmq`) with two subfolders: + + ```sh + ls v6.3.1-simplexmq + ``` + + ```sh + from-source prebuilt _sha256sums + ``` + + The file _sha256sums contains the hashes of all builds - you can compare it with the same file in GitHub release. + +### Linux desktop apps and CLI + +1. Download script: + + ```sh + curl -LO 'https://raw.githubusercontent.com/simplex-chat/simplex-chat/refs/heads/master/scripts/simplex-chat-reproduce-builds.sh' + ``` + +2. Make it executable: + + ```sh + chmod +x simplex-chat-reproduce-builds.sh + ``` + +3. Execute the script with the required tag: + + ```sh + ./simplex-chat-reproduce-builds.sh 'v6.4.8' + ``` + + The script executes these steps (please review the script to confirm): + + 1) builds all Linux CLI and Dekstop binaries for the release in docker container. + 2) downloads binaries from the same GitHub release and compares them with the built binaries. + 3) if they all match, generates _sha256sums file with their checksums. + + This will take a while. + +4. After compilation, you should see the folder named as the tag and reprository name (e.g., `v6.4.8-simplex-chat`) with two subfolders: + + ```sh + ls v6.4.8-simplex-chat + ``` + + ```sh + from-source prebuilt _sha256sums + ``` + + The file _sha256sums contains the hashes of all builds - you can compare it with the same file in GitHub release. + +### Android apps + +In addition to basic requirments, Android build will: + +- Take ~150gb of disc space +- Take ~20h to build all the architectures (depends on core count) +- Require at least 16gb of RAM + +1. Download script: + + ```sh + curl -LO 'https://raw.githubusercontent.com/simplex-chat/simplex-chat/refs/heads/master/scripts/simplex-chat-reproduce-builds-android.sh' + ``` + +2. Make it executable: + + ```sh + chmod +x simplex-chat-reproduce-builds-android.sh + ``` + +3. Execute the script with the required tag: + + ```sh + ./simplex-chat-reproduce-builds-android.sh 'v6.5.0-beta.3' + ``` + + The script executes these steps (please review the script to confirm): + + 1) Downloads and checks that APKs from GitHub are signed with valid key. + 2) Builds Android APKs in a docker container. + 3) Compares the releases by copying the signature from downloaded APKs to locally built APKs. + 4) If the resulting build is bit-by-bit identical, prints the message that this tag was reproduced. + + This will take a while. diff --git a/docs/TRANSLATIONS.md b/docs/TRANSLATIONS.md index d5c1cdef0b..2b1febb6f2 100644 --- a/docs/TRANSLATIONS.md +++ b/docs/TRANSLATIONS.md @@ -1,5 +1,5 @@ --- -title: Contributing translations to SimpleX Chat +title: Contributing SimpleX app translations revision: 19.03.2023 --- diff --git a/docs/WEBRTC.md b/docs/WEBRTC.md index 8ce31bf959..a48cd12b00 100644 --- a/docs/WEBRTC.md +++ b/docs/WEBRTC.md @@ -1,5 +1,5 @@ --- -title: Using custom WebRTC ICE servers in SimpleX Chat +title: Using custom WebRTC ICE servers revision: 31.01.2023 --- @@ -155,4 +155,3 @@ This is it - you now can make audio and video calls via your own server, without If results show `srflx` and `relay` candidates, everything is set up correctly! - diff --git a/docs/lang/cs/README.md b/docs/lang/cs/README.md index 7eab61395e..d1ff8a0eca 100644 --- a/docs/lang/cs/README.md +++ b/docs/lang/cs/README.md @@ -18,11 +18,11 @@   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) - 🖲 Chrání vaše zprávy a metadata - s kým a kdy mluvíte. - 🔐 Koncové šifrování s další vrstvou šifrování. -- 📱 Mobilní aplikace pro Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk)) a [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). +- 📱 Mobilní aplikace pro Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)) a [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). - 🚀 [TestFlight preview for iOS](https://testflight.apple.com/join/DWuT2LQu) s novými funkcemi o 1-2 týdny dříve - **omezeno na 10 000 uživatelů**! - 🖥 K dispozici jako terminálová (konzolová) [aplikace / CLI](#zap-quick-installation-of-a-terminal-app) v systémech Linux, MacOS, Windows. @@ -324,4 +324,4 @@ Jakákoli zjištění možných útoků korelace provozu umožňujících korelo   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) diff --git a/docs/lang/fr/README.md b/docs/lang/fr/README.md index 69401da5a2..d6bf517446 100644 --- a/docs/lang/fr/README.md +++ b/docs/lang/fr/README.md @@ -32,11 +32,11 @@   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) - 🖲 Protégez vos messages et vos métadonnées - avec qui vous parlez et quand. - 🔐 Chiffrement de bout en bout à double ratchet, avec couche de chiffrement supplémentaire. -- 📱 Apps mobiles pour Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk)) et [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). +- 📱 Apps mobiles pour Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)) et [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). - 🚀 [Bêta TestFlight pour iOS](https://testflight.apple.com/join/DWuT2LQu) avec les nouvelles fonctionnalités 1 à 2 semaines plus tôt - **limitée à 10 000 utilisateurs** ! - 🖥 Disponible en tant que [terminal (console) / CLI](#⚡-installation-rapide-dune-application-pour-terminal) sur Linux, MacOS, Windows. @@ -351,4 +351,4 @@ Veuillez traiter toute découverte d'une éventuelle attaque par corrélation de   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) diff --git a/docs/lang/pl/README.md b/docs/lang/pl/README.md index 23ca00c3e6..9f107dc825 100644 --- a/docs/lang/pl/README.md +++ b/docs/lang/pl/README.md @@ -32,11 +32,11 @@   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) - 🖲 Chroni Twoje wiadomości i metadane - z kim rozmawiasz i kiedy. - 🔐 Szyfrowanie end-to-end double ratchet, z dodatkową warstwą szyfrowania. -- 📱 Aplikacje mobilne dla Androida ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk)) oraz [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). +- 📱 Aplikacje mobilne dla Androida ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)) oraz [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). - 🚀 [TestFlight dla iOS](https://testflight.apple.com/join/DWuT2LQu) z nowymi funkcjami na tydzień-dwa wcześniej - **limitowane do 10,000 użytkowników**! - 🖥 Dostępny jako terminalowa (konsolowa) [aplikacja / CLI](#zap-quick-installation-of-a-terminal-app) na Linuxa, MacOSa, Windowsa. @@ -198,9 +198,9 @@ Twórca SimpleX Chat. ## Dlaczego prywatność ma znaczenie -Każdy powinien dbać o prywatność i bezpieczeństwo swojej komunikacji - nieszkodliwe rozmowy mogą narazić Cię na niebezpieczeństwo, nawet jeśli nie masz nic do ukrycia. +Każdy powinien dbać o prywatność i bezpieczeństwo swojej komunikacji - nieszkodliwe rozmowy mogą narazić Cię na niebezpieczeństwo, nawet jeśli nie masz nic do ukrycia. -Jedną z najbardziej wstrząsających historii jest doświadczenie [Mohamedou Ould Salahi](https://en.wikipedia.org/wiki/Mohamedou_Ould_Slahi). opisane w jego pamiętniku i pokazane w filmie Mauretańczyk (2021). Został on umieszczony w obozie Guantanamo, bez procesu, i był tam torturowany przez 15 lat po telefonie do swojego krewnego w Afganistanie, pod zarzutem udziału w atakach 9/11, mimo że przez poprzednie 10 lat mieszkał w Niemczech. +Jedną z najbardziej wstrząsających historii jest doświadczenie [Mohamedou Ould Salahi](https://en.wikipedia.org/wiki/Mohamedou_Ould_Slahi). opisane w jego pamiętniku i pokazane w filmie Mauretańczyk (2021). Został on umieszczony w obozie Guantanamo, bez procesu, i był tam torturowany przez 15 lat po telefonie do swojego krewnego w Afganistanie, pod zarzutem udziału w atakach 9/11, mimo że przez poprzednie 10 lat mieszkał w Niemczech. Używanie szyfrowanego komunikatora end-to-end nie jest wystarczające. Powinniśmy używać komunikatorów, które zapewniają prywatność naszym powiązaniom, czyli tym z kim jesteśmy jakkolwiek połączeni. @@ -432,4 +432,4 @@ Prosimy o traktowanie wszelkich ustaleń dotyczących możliwych ataków korelac   [iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu)   -[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk) diff --git a/website/langs/en.json b/website/langs/en.json index dc97d9ab66..eca5f5beb8 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -241,6 +241,7 @@ "docs-dropdown-11": "FAQ", "docs-dropdown-12": "Security", "docs-dropdown-14": "SimpleX for business", + "docs-dropdown-15": "Verify & reproduce builds", "newer-version-of-eng-msg": "There is a newer version of this page in English.", "click-to-see": "Click to see", "menu": "Menu", diff --git a/website/src/_data/docs_dropdown.json b/website/src/_data/docs_dropdown.json index 94bc69f8f3..172145d86a 100644 --- a/website/src/_data/docs_dropdown.json +++ b/website/src/_data/docs_dropdown.json @@ -32,6 +32,10 @@ "title": "docs-dropdown-9", "url": "/downloads/" }, + { + "title": "docs-dropdown-15", + "url": "/reproduce/" + }, { "title": "docs-dropdown-10", "url": "/transparency/" diff --git a/website/src/_data/docs_sidebar.json b/website/src/_data/docs_sidebar.json index e370ccc078..f9b4d15b54 100644 --- a/website/src/_data/docs_sidebar.json +++ b/website/src/_data/docs_sidebar.json @@ -28,6 +28,7 @@ "WEBRTC.md", "XFTP-SERVER.md", "DOWNLOADS.md", + "REPRODUCE.md", "TRANSPARENCY.md", "SECURITY.md", "FAQ.md" diff --git a/website/src/_includes/contact_page.html b/website/src/_includes/contact_page.html index b5f7442a75..f628180bba 100644 --- a/website/src/_includes/contact_page.html +++ b/website/src/_includes/contact_page.html @@ -21,7 +21,7 @@ - + @@ -30,7 +30,7 @@
- + @@ -92,7 +92,7 @@ diff --git a/website/src/css/doc.css b/website/src/css/doc.css index 937268b166..20599f0afb 100644 --- a/website/src/css/doc.css +++ b/website/src/css/doc.css @@ -268,7 +268,7 @@ header { } .dark #doc main aside ul li a.active { - color: #70F0F9; + color: white; } #doc main aside p { diff --git a/website/src/index.html b/website/src/index.html index 443b4a3302..c044d5d17a 100644 --- a/website/src/index.html +++ b/website/src/index.html @@ -88,7 +88,7 @@ active_home: true - +