Familiarise yourself with the Important Security Notes before starting, they apply to all installation methods.
_Note: that for the security of your chats will need to serve Element over HTTPS. Major browsers also do not allow you to use VoIP/video chats over HTTP, as WebRTC is only usable over HTTPS. There are some exceptions like when using localhost, which is considered a secure context and thus allowed._
element-x.x.x directory to an appropriate nameconfig.sample.json to config.json and
modifying it. See the configuration docs for details.Releases are signed using gpg and the OpenPGP standard, and can be checked against the public key located at https://packages.element.io/element-release-key.asc.
Element Web is now also available as a Debian package for Debian and Ubuntu based systems.
sudo apt install -y wget apt-transport-https
sudo wget -O /usr/share/keyrings/element-io-archive-keyring.gpg https://packages.element.io/debian/element-io-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/element-io-archive-keyring.gpg] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
sudo apt update
sudo apt install element-web
Configure the app by modifying /etc/element-web/config.json. See the configuration docs for details.
Then point your chosen web server (e.g. Caddy, Nginx, Apache, etc) at the /usr/share/element-web webroot.
The Docker image can be used to serve element-web as a web server. The easiest way to use it is to use the prebuilt image:
docker run -p 80:80 vectorim/element-web
To supply your own custom config.json, map a volume to /app/config.json. For example,
if your custom config was located at /etc/element-web/config.json then your Docker command
would be:
docker run -p 80:80 -v /etc/element-web/config.json:/app/config.json vectorim/element-web
To build the image yourself:
git clone https://github.com/element-hq/element-web.git element-web
cd element-web
git checkout master
docker build .
If you're building a custom branch, or want to use the develop branch, check out the appropriate element-web branch and then run:
docker build -t \
--build-arg USE_CUSTOM_SDKS=true \
--build-arg REACT_SDK_REPO="https://github.com/matrix-org/matrix-react-sdk.git" \
--build-arg REACT_SDK_BRANCH="develop" \
--build-arg JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git" \
--build-arg JS_SDK_BRANCH="develop" \
.
The provided element-web docker image can also be run from within a Kubernetes cluster. See the Kubernetes example for more details.