===== 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;
}
}