ports:web:element-web

Pour vous connecter aux serveurs Matrix, il vous faut un client.

Dans cet article, nous utiliseront le port www/element-web que nous ferons tourner sous nginx. Ce n'est qu'un jeu de Javascript. Pour pimenter le tout, nous allons régler nginx en mode paranoïaque.

C'est assez simple, il suffit d'installer le port, qui n'est, en fait, que le clone du site officiel qui va s'installer dans /usr/local/www/element.

Certificats

A l'aide de security/py-certbot-nginx, demandons un certificat pour le site reuz.lapinbilly.eu à Letsencrypt.

root@popeye:/# certbot certonly --webroot -w /usr/local/www/nginx/ -d reuz.lapinbilly.eu

Puis, utiliser des clefs robustes de type Diffie-Hellman:

root@popeye:/#openssl dhparam -out /usr/local/etc/nginx/dhparam.pem 2048

Element

La configuration est assez simple, il suffit d'en avoir une par défaut:

usr/local/www/element/config.json
root@popeye:~ # diff -u /usr/local/www/element/config.sample.json /usr/local/www/element/config.json 
--- /usr/local/www/element/config.sample.json	2020-03-04 13:59:59.000000000 +0100
+++ /usr/local/www/element/config.json	2020-04-12 17:47:58.575171000 +0200
@@ -1,8 +1,8 @@
 {
     "default_server_config": {
         "m.homeserver": {
-            "base_url": "https://matrix-client.matrix.org",
-            "server_name": "matrix.org"
+            "base_url": "https://kreuz.lapinbilly.eu",
+            "server_name": "kreuz.lapinbilly.eu"
         },
         "m.identity_server": {
             "base_url": "https://vector.im"

Voici une configuration pour notre jeu de javascript:

/usr/local/etc/nginx.conf
server {
		listen 443 ssl http2 ;
		listen [::]:443 ssl http2;
		server_name reuz.lapinbilly.eu;
		root /usr/local/www/element/;
		index index.html index.php index.htm;
 
		access_log /var/log/nginx/riot.access.log;
		error_log /var/log/nginx/riot.error.log;
 
		add_header X-Content-Type-Options nosniff;
		add_header X-XSS-Protection "1; mode=block";
		add_header X-Frame-Options "SAMEORIGIN" always;
		add_header Strict-Transport-Security "max-age=31536000";
		ssl_dhparam /usr/local/etc/nginx/dhparam.pem;
 
		ssl_protocols TLSv1.2 TLSv1.3;
		ssl_ecdh_curve X25519:P-521:P-384:P-256;
		ssl_prefer_server_ciphers on;
 
		ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384";
		ssl_session_cache shared:SSL:10m;
		ssl_session_timeout 15m;
		ssl_session_tickets off;
 
		ssl_certificate /usr/local/etc/letsencrypt/live/reuz.lapinbilly.eu/fullchain.pem;
		ssl_certificate_key /usr/local/etc/letsencrypt/live/reuz.lapinbilly.eu/privkey.pem;
 
		location / {
			try_files $uri $uri/ =404;
		}
 
		location = /robots.txt {
			allow all;
			log_not_found off;
			access_log off;
		}
 
		location = /favicon.ico {
			log_not_found off;
			access_log off;
		}
 
	}
  • ports/web/element-web.txt
  • Dernière modification: 2021/09/14 20:15
  • de david