===== client element (ex -riot) ===== Pour vous connecter aux [[ports:web:matrix| serveurs Matrix]], il vous faut un client. Dans cet article, nous utiliseront le port [[https://www.freshports.org/www/element-web/|www/element-web]] que nous ferons tourner sous [[ports:nginx]]. Ce n'est qu'un jeu de //Javascript//. Pour pimenter le tout, nous allons régler [[ports:nginx]] en mode paranoïaque. ==== Installer ==== 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 [[https://www.freshports.org/security/py-certbot-nginx|security/py-certbot-nginx]], demandons un certificat pour le site reuz.lapinbilly.eu à [[https://letsencrypt.org/|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: 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" ==== Serveur Web ==== Voici une configuration pour notre jeu de javascript: server { http2 on; listen 443 ssl; listen [::]:443 ssl; 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; } }