Skip to content
Snippets Groups Projects

4.1: Installation de Element Web

:globe_with_meridians: Choix du serveur web

Tout d'abord, nous devons choisir le serveur web que l'on souhaite installer entre Apache et nginx.

nginx semble être le meilleur choix pour déployer Element Web en raison de sa simplicité, de ses performances optimisées pour le service de fichiers statiques, et de sa faible consommation de ressources. Il est généralement plus adapté à des applications nécessitant un haut débit et une gestion efficace des connexions simultanées.

Cependant, si vous avez des besoins spécifiques en matière de configuration ou de flexibilité (par exemple, gestion avancée des redirections via .htaccess), Apache pourrait être un bon choix.

En résumé, voici un tableau récapitulatif pour vous aider à choisir :

Critère nginx Apache
Performance Très performant, gestion haute charge Moins performant, surtout en haute charge
Flexibilité Moins flexible, mais suffisant pour les fichiers statiques Très flexible avec modules et .htaccess
Simplicité Plus simple à configurer et gérer Plus complexe à configurer
Sécurité Plus sécurisé par défaut Peut être aussi sécurisé, mais nécessite plus d’attention
Documentation Bonne documentation, communauté active Très large communauté, excellente documentation

Nous allons donc ici installer nginx.

Nous avons déjà précédemment installé un serveur nginx sur notre machine virtuelle, pour vérifier:

user@matrix $ sudo nginx -version
nginx version: nginx/1.22.1

Si aucun serveur nginx n'est installé (bash: nginx: command not found), veuillez consulter la procédure 3.1: Mise en place de l'accès au service HTTP sur la VM.

:package: Installer le package element-web

Pour installer le package element-web, exécutez les commandes suivantes dans le terminal de votre machine virtuelle:

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

Maintenant que element-web est installé, vous devez maintenant rendre accessible le serveur Element Web sur le port 8080 de la machine virtuelle, en reliant element-web au serveur nginx.

Pour cela, rendez vous dans /etc/element-web puis modifiez le fichier config.json avec le contenu suivant:

"default_server_config": {
        "m.homeserver": {
            "base_url": "http://localhost:8008", # URL du serveur Synapse
            "server_name": "localhost"
        }

Ensuite, dans /etc/nginx/sites-available, créez le fichier element avec le contenu suivant:

server {
    listen 8080;
    server_name matrix;

    root /usr/share/element-web;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    # Configuration de la sécurité et des headers
    location /_matrix/ {
        proxy_pass http://localhost:8008/; # Remplacez par l'adresse de votre service Synapse
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}  

Vous devez maintenant lier le site au dossier sites-enabled de nginx, en créant un lien symbolique de votre configuration nginx pour Element vers sites-enabled:

user@matrix $ sudo ln -s /etc/nginx/sites-available/element-web /etc/nginx/sites-enabled/

Vérifiez la configuration de nginx au cas où il y aurait des erreurs:

user@matrix $ sudo nginx -t

Puis redémarrez le service nginx:

user@matrix $ sudo systemctl restart nginx

Désormais, sur le port 8080 de la machine virtuelle, le serveur Element Web est en ligne.

Vous devez désormais ajouter cette ligne à votre config ssh sur la machine hôte, dans la section dédiée à la connection ssh à la machine virtuelle:

    LocalForward 0.0.0.0:8080 10.42.154.1:8080

Ainsi, après s'être connecté à la machine virtuelle via ssh, et avoir rentré http://localhost:8080 dans un navigateur web sur votre machine hôte, votre instance d'Element sera disponible.

:books: Plus d'informations sur les outils mentionnés dans cette procédure: