ports:web:matrix

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
ports:matrix [2020/04/23 22:04] – [Mise en Service] zorroports:web:matrix [2023/06/03 21:56] – [La jail] david
Ligne 1: Ligne 1:
 +<jumbotron>
 ====== Papoter avec Matrix ====== ====== Papoter avec Matrix ======
- 
  
 **Matrix** est un protocole de bavardage, assez proche de //irc//, qui permet de créer des salons et surtout de chiffrer de bout en bout. **Matrix** est un protocole de bavardage, assez proche de //irc//, qui permet de créer des salons et surtout de chiffrer de bout en bout.
  
 Cet article va vous décrire l'installation d'un [[https://matrix.org/|serveur Matrix]], dans une [[jails:zfs|jail]]. Cet article va vous décrire l'installation d'un [[https://matrix.org/|serveur Matrix]], dans une [[jails:zfs|jail]].
 +</jumbotron>
  
 Vous devez vous préparer à fournir les [[https://www.freebsd.org/doc/handbook/ports.html|ports]] suivants: Vous devez vous préparer à fournir les [[https://www.freebsd.org/doc/handbook/ports.html|ports]] suivants:
Ligne 11: Ligne 12:
   - un mécanisme pour fournir des clefs pour https, ici [[https://www.freshports.org/security/py-certbot-nginx|py-certbot-nginx]];   - un mécanisme pour fournir des clefs pour https, ici [[https://www.freshports.org/security/py-certbot-nginx|py-certbot-nginx]];
  
-Ainsi qu'un serveur de base de données [[https://www.postgresql.org/|PostgreSQL]], installée dans une [[ports::postgresql|jail]], pour cet exemple.+Ainsi qu'un serveur de base de données [[https://www.postgresql.org/|PostgreSQL]], installée dans une [[ports:db:postgresql|jail]], pour cet exemple.
  
 ===== La jail ===== ===== La jail =====
Ligne 22: Ligne 23:
  ip4.addr = "lo1|192.168.0.11";          # IP address of the jail  ip4.addr = "lo1|192.168.0.11";          # IP address of the jail
         mount.devfs;  # /dev/random pour SSL         mount.devfs;  # /dev/random pour SSL
 +        mount.fdescfs;          # améliore les performances de python
  path ="/jails/matrix";                  # Path to the jail  path ="/jails/matrix";                  # Path to the jail
  exec.start = "/bin/sh /etc/rc";         # Start command  exec.start = "/bin/sh /etc/rc";         # Start command
Ligne 32: Ligne 34:
  
 <file ini matrix/etc/rc.conf.local> <file ini matrix/etc/rc.conf.local>
-hostname="matrix"+hostname = "matrix"
 </file> </file>
 +
 +On assure le démarrage au reboot:
 +<code bash>
 +sysrc jail_enable  = "YES"
 +sysrc jail_list   += "matrix"
 +</code>
 +
  
 ===== La base de donnée ===== ===== La base de donnée =====
Ligne 59: Ligne 68:
 Créez une entrée DNS, ici ''kreuz.lapinbilly.eu'', pour votre serveur et rediriger le tout vers la //jail// ''matrix''. Créez une entrée DNS, ici ''kreuz.lapinbilly.eu'', pour votre serveur et rediriger le tout vers la //jail// ''matrix''.
  
-Obtenez un certificat SSL.+Obtenez un certificat **SSL**.
 <code bash> <code bash>
 root@popeye:/jails# certbot certonly --nginx -d kreuz.lapinbilly.eu root@popeye:/jails# certbot certonly --nginx -d kreuz.lapinbilly.eu
 </code> </code>
  
-Rediriger les requètes vers votre //jail//+Rediriger les requêtes vers votre //jail//, pour cela, on va définir un fichier dédié pour //nginx//.
-<code bash /usr/local/etc/nginx/nginx.conf>+
  
 +<file nginx /usr/local/etc/nginx/matrix.conf [highlight_lines_extra="8"]>
 +ssl_certificate /usr/local/etc/letsencrypt/live/kreuz.lapinbilly.eu/fullchain.pem;
 +ssl_certificate_key /usr/local/etc/letsencrypt/live/kreuz.lapinbilly.eu/privkey.pem;
 +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";
 +location ~ ^(/_matrix|/_synapse/client) {
 +        proxy_pass http://192.168.0.20:8008;
 +        proxy_set_header X-Forwarded-For $remote_addr;
 +        proxy_set_header X-Forwarded-Proto $scheme;
 +        proxy_set_header Host $host; 
 +        client_max_body_size 50M;
 +        proxy_http_version 1.1;
 +}
 +</file>
 +
 +Et l'utiliser dans nos [[:ports:nginx#serveur|serveurs nginx]]
 +
 +<file nginx /usr/local/etc/nginx/nginx.conf [highlight_lines_extra="5,11"]>
    server {    server {
             listen 443 ssl http2 ;             listen 443 ssl http2 ;
             listen [::]:443 ssl http2 ;             listen [::]:443 ssl http2 ;
             server_name kreuz.lapinbilly.eu;             server_name kreuz.lapinbilly.eu;
-     add_header X-Content-Type-Options nosniff; +            include matrix.conf;
-     add_header X-XSS-Protection "1; mode=block"; +
-     add_header X-Frame-Options "SAMEORIGIN" always; +
-     add_header Strict-Transport-Security "max-age=31536000"; +
-            ssl_certificate /usr/local/etc/letsencrypt/live/kreuz.lapinbilly.eu/fullchain.pem; +
-            ssl_certificate_key /usr/local/etc/letsencrypt/live/kreuz.lapinbilly.eu/privkey.pem; +
- +
-            location /_matrix { +
-                    proxy_pass http://192.168.0.11:8008; +
-                    proxy_set_header X-Forwarded-For $remote_addr; +
-            }+
     }     }
     server {     server {
Ligne 87: Ligne 105:
             listen [::]:8448 ssl http2 default_server;             listen [::]:8448 ssl http2 default_server;
             server_name kreuz.lapinbilly.eu;             server_name kreuz.lapinbilly.eu;
-     add_header X-Content-Type-Options nosniff; +            include matrix.conf;
-     add_header X-XSS-Protection "1; mode=block"; +
-     add_header X-Frame-Options "SAMEORIGIN" always; +
-     add_header Strict-Transport-Security "max-age=31536000"; +
-            ssl_certificate /usr/local/etc/letsencrypt/live/kreuz.lapinbilly.eu/fullchain.pem; +
-            ssl_certificate_key /usr/local/etc/letsencrypt/live/kreuz.lapinbilly.eu/privkey.pem; +
- +
-            location /_matrix { +
-                    proxy_pass http://192.168.0.11:8008; +
-                    proxy_set_header X-Forwarded-For $remote_addr; +
-            }+
     }     }
-</code> +</file>
-Le serveur en ''8448'', ne sert que si vous voulez rejoindre une fédération.+
  
-===== Installer =====+<note important> 
 +Le serveur en ''8448'', ne sert que si vous voulez rejoindre une fédération. N'oubliez pas d'ouvrir le pare-feu sur ce port. 
 +</note>
  
 +
 +===== Installer =====
  
 Installez le port [[https://www.freshports.org/net-im/py-matrix-synapse/|net-im/py-matrix-synapse]] dans la //jail// ''matrix'': Installez le port [[https://www.freshports.org/net-im/py-matrix-synapse/|net-im/py-matrix-synapse]] dans la //jail// ''matrix'':
Ligne 111: Ligne 122:
 root@popeye:# sysrc -j matrix synapse_enable="YES" root@popeye:# sysrc -j matrix synapse_enable="YES"
 </code> </code>
 +
 +Vous allez probablement devoir [[https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/|administrer ce serveur]], le chemin le plus court est d'utiliser [[https://www.freshports.org/ftp/curl/|curl]]. 
  
 Le port va créer un utilisateur et groupe ''synapse'', ainsi qu'un [[https://www.freebsd.org/doc/handbook/configtuning-starting-services.html|script de démarrage]] du même nom. Le port va créer un utilisateur et groupe ''synapse'', ainsi qu'un [[https://www.freebsd.org/doc/handbook/configtuning-starting-services.html|script de démarrage]] du même nom.
- 
  
 Construisez le  serveur: Construisez le  serveur:
Ligne 121: Ligne 133:
 python3.7 -m synapse.app.homeserver --server-name kreuz.lapinbilly.eu --config-path homeserver.yaml --generate-config --report-stats=no python3.7 -m synapse.app.homeserver --server-name kreuz.lapinbilly.eu --config-path homeserver.yaml --generate-config --report-stats=no
 </code> </code>
 +
 +Assurez vous l'utilisateur ''synapse'' ait la permission de lire ces fichiers et d'écrire dans ce répertoire.
 +Au besoin, créer la hierarchie ''media_store'':
 +<code bash>
 +mkdir -p /usr/local/etc/matrix-synapse/media_store/local_content
 +mkdir -p /usr/local/etc/matrix-synapse/media_store/local_thumbnails
 +mkdir -p /usr/local/etc/matrix-synapse/media_store/remote_content
 +mkdir -p /usr/local/etc/matrix-synapse/media_store/remote_thumbnail
 +chown -R synapse /usr/local/etc/matrix-synapse/media_store
 +chown synapse /usr/local/etc/matrix-synapse
 +</code>
 +
  
 ==== Configurer ==== ==== Configurer ====
Ligne 160: Ligne 184:
 </code> </code>
  
 +Réglez la [journalisation](https://github.com/matrix-org/synapse/blob/develop/docs/sample_log_config.yaml) pour que le fichier soit produit dans ''/var/log/''
 +<file ini serveur-name.log.config>
 +filename: /var/log/matrix-synapse/homeserver.log
 +</file>
 +
 +Autorisez le nettoyage des journaux par newsyslog(8):
 +<file bash /etc/newsyslog.conf.d/matrix.conf>
 +/var/log/matrix-synapse/homeserver.log    synapse:wheel   640  7    1000     J
 +</file>
 ==== Mise en Service ==== ==== Mise en Service ====
  
Ligne 242: Ligne 275:
 root     syslogd    58747 5  dgram  /var/run/log root     syslogd    58747 5  dgram  /var/run/log
 root     syslogd    58747 6  dgram  /var/run/logpriv root     syslogd    58747 6  dgram  /var/run/logpriv
 +</code>
 +
 +=== Chef ===
 +
 +
 +Déclarez vous en tant qu'administrateur sur le serveur, une fois votre compte créé:
 +<code bash>
 +$ psql 
 +psql (11.17)
 +Type "help" for help.
 +
 +
 +postgres=# \c synapse
 +You are now connected to database "synapse" as user "postgres".
 +synapse=# UPDATE users SET admin = 1 WHERE name ='patron:kreuz.lapinbilly.eu'
 +synapse-# 
 </code> </code>
  
Ligne 263: Ligne 312:
 </code> </code>
  
-<callout type="success" icon=true>+<note>
 Une exemple par la pratique: [[https://reuz.lapinbilly.eu/#/room/#bistrot:kreuz.lapinbilly.eu|kreuz.lapinbilly.eu]] Une exemple par la pratique: [[https://reuz.lapinbilly.eu/#/room/#bistrot:kreuz.lapinbilly.eu|kreuz.lapinbilly.eu]]
-</callout>+</note>
 ===== Papoter ===== ===== Papoter =====
  
-Pour papoter il vous faut un [[https://about.riot.im/|client]] et ajouter des utilisateurs, selon la procédure [[ports:matrix#Démarrage|indiquée précédemment]].+Pour papoter il vous faut un [[https://about.riot.im/|client]] et ajouter des utilisateurs, selon la procédure [[ports:web:matrix#Démarrage|indiquée précédemment]].
  
-Tant que vous y êtes, créez votre [[:ports:riot-web|propre client]].+Tant que vous y êtes, créez votre [[ports:web:element-web|propre client]].
  
  
Ligne 288: Ligne 337:
 Donnez le à manger à Nginx, sous votre serveur ''https'' (443) par défaut. Il ne s'agit pas nécessairement de votre serveur **matrix**. Donnez le à manger à Nginx, sous votre serveur ''https'' (443) par défaut. Il ne s'agit pas nécessairement de votre serveur **matrix**.
  
-<file javascript /usr/local/etc/nginx/nginx.conf>+<file nginx /usr/local/etc/nginx/nginx.conf>
                  location /.well-known/matrix/ {                  location /.well-known/matrix/ {
                         root /usr/local/www/;                         root /usr/local/www/;
Ligne 314: Ligne 363:
 } }
 </file> </file>
 +
 +===== Administrer =====
 +
 +L'[[https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/|API]] est une interface Web à laquelle vous faites digérer du ''Json''. Par exemple, supprimer un salon:
 +
 +<code bash>
 + curl --header "Authorization: Bearer Token_en_general_super_long" -X DELETE 'http://127.0.0.1:8008/_synapse/admin/v2/rooms/\!AYMErYZsVkpvmBlNkg:kreuz.lapinbilly.eu' -d '{"room_name":"newtest", "message":"salon precedent supprime."}'
 +</code>
 +
 +Le token est donné par votre profil utilisateur, sous ''element-web'', il se trouve à la rubrique ''aide et a propos''.
 +
 +
 +
 +
 +
  
  
  • ports/web/matrix.txt
  • Dernière modification : 2023/06/03 21:59
  • de david