This repository builds a mirror of Element Desktop with default homeserver different from matrix.org.
The Element mirror created with this repository supports autoupdating on MacOS and Windows (as usual Element do). It can be installed on the same device with usual Element.
Builds are signed only on MacOS.
To build your version of Element with this repository, you should
- Own a storage on Exoscale (you can switch to other s3-compatible storages)
- Own an account on Apple Developer
- Copy this repository and set 14 secrets as described below
- Run one github action (descibed below)
-
USER_HOMESERVER
- the server you want users to connect to. Example:matrix.org
. -
USER_UPDATE_FOLDER
- the folder on your storage you want to store updates in. You don't need to create this folder manually - it will be created automatically. Example:https://packages.element.io/desktop/update/
.
Both these secrets will be visible to users.
API
- the root of your storage. Example:sos-de-fra-1.exo.io
.API_BUCKET_NAME
- path from the root of your storage to the folder with updates. It should hold thathttps://API/API_BUCKET_NAME/update/ = USER_UPDATE_FOLDER
.API_ACCESS_KEY
API_SECRET_KEY
These are access and secret key for account with write access on your storage.
NAMING_APP_NAME_SUFFIX
NAMING_APP_DATA_NAME_SUFFIX
These are used in naming part. NAMING_APP_NAME_SUFFIX
is user-visible, NAMING_APP_DATA_NAME_SUFFIX
is more system-related. Your version of Element will be called Element${NAMING_APP_NAME_SUFFIX}
.
Note that NAMING_APP_NAME_SUFFIX
should begin with space if you want to add space after Element
in the title.
Do not leave any of these empty if you expect user using both usual Element and your version of Element. Do not use other characters than latin letters, digits, spaces, dashes, brackets and interpuncts in NAMING_APP_NAME_SUFFIX
. Do not use other characters than latin letters, digits and dashes in NAMING_APP_DATA_NAME_SUFFIX
.
Signing is required for autoupdates on macOS. Also it makes it easier to enter the app for the first time on macOS. Windows and Linux are less sensitive to signing.
APPLE_CSC_LINK
- your Developer ID Certificate in base64 format.APPLE_CSC_KEY_PASSWORD
- password from your certificate.APPLE_ID
- your Apple ID.APPLE_ID_PASSWORD
- your App Specific Password for App Store Connect.APPLE_TEAM_ID
- your Developer Team ID.NAMING_APP_ID
- CFBundleIdentifier of your app.
These all are required to sign your app.
APPLE_ID
and APPLE_ID_PASSWORD
are your Apple ID and your App Specific Password for App Store Connect.
APPLE_TEAM_ID
is your Developer Team ID. You can find it here.
Open this link to register NAMING_APP_ID
. Click on plus near Identifiers
and follow instructions after it. NAMING_APP_ID
is used for builds on other platforms, too.
To get values of the other secrets, follow these steps (src1, src2):
- Open this link
- Click the plus near "Certificates"
- Select "Developer ID Certificate", press "Continue"
- Open Keychain Access on your Mac
- Select "Keychain Access" - "Certificate Assistant" - "Request a Certificate from a Certificate Authority"
- Enter your email and choose key name, leave the last field empty
- Click "Saved to disk", "Continue"
- Load the just generated code signing request in the browser (the page opened after step 3)
- Click "Continue"
- Download the ".cer" certificate on your device
- Click on it twice to import it to your Keychain
- Enter "Keychain Access", select "login" on the left and category "My Certificates"
- Find your new certificate, click on it and select "Export"
- Select format ".p12"
- Create a name and a password for your certificate in ".p12" format (password shouldn't be empty)
- Export your certificate in ".p12" format
- Run "base64 -w 0 path/to/your/certificate_in.p12" in terminal
- Set secret
APPLE_CSC_LINK
(in your copy of this repository) as the output of the previous step - Set secret
APPLE_CSC_KEY_PASSWORD
as the password you created in step 15
After correctly setting 14 secrets as described above in your copy of this repository go to GitHub Actions page of your repository.
Run action Check New Version
with option Build the latest version anyway
on. It will build the latest version of Element Desktop with your homeserver. Installers will be added to Github Releases in your repository and to your storage.
Each day at 2:00 UTC your repository will check if new version of Element is available and will build it if required.
If you want to generate download links, run action Generate Links
with version of Element you just build. These links would be added to the corresponding Release.