<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.parinux.org/lib/exe/css.php?s=feed" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Wiki de Parinux si:logiciels</title>
    <subtitle></subtitle>
    <link rel="alternate" type="text/html" href="https://wiki.parinux.org/"/>
    <id>https://wiki.parinux.org/</id>
    <updated>2026-04-12T22:41:11+00:00</updated>
    <generator>FeedCreator 1.8 (info@mypapit.net)</generator>
    <link rel="self" type="application/atom+xml" href="https://wiki.parinux.org/feed.php" />
    <entry>
        <title>si:logiciels:biboumi</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/biboumi?rev=1745529753&amp;do=diff"/>
        <published>2025-04-24T21:22:33+00:00</published>
        <updated>2025-04-24T21:22:33+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/biboumi?rev=1745529753&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;biboumi&quot;&gt;biboumi&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Biboumi est une passerelle XMPP ↔ &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt; qui s&amp;#039;installe côté serveur XMPP et permet de rejoindre des salons &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt; avec un client XMPP standard (donc sans avoir besoin d&amp;#039;installer un client &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt; en plus d&amp;#039;un client XMPP déjà installé).
&lt;/p&gt;

&lt;p&gt;
Au démarrage biboumi se connecte à ejabberd sur un port TCP dédié en tant que composant XMPP et ejabberd proposera alors automatiquement aux clients un service supplémentaire de salons &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt;.
Pour que ça fonctionne ejabberd et biboumi doivent partager un secret.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;biboumi&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;biboumi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-528&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; biboumi&lt;/pre&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/biboumi/biboumi.cfg&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcbiboumibiboumicfg&quot;&gt;hostname=biboumi.parinux.org # le vhost XMPP dédié
password=xxxxxxxxxxxx # le secret partagé avec ejabberd
xmpp_server_ip=127.0.0.1 # l&#039;IP de ejabberd
port=8888 # le port d&#039;écoute côté ejabberd
db_name=/var/lib/biboumi/biboumi.sqlite
admin=pitchum@parinux.org
realname_customization=true
realname_from_jid=false
log_level=1
log_file=/var/log/biboumi/biboumi.log
ca_file=&lt;/pre&gt;

&lt;p&gt;
Puis
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /var/log/biboumi/
chown _biboumi: /var/log/biboumi&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Contournement spécifique&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Je soupçonne que c&amp;#039;est dû au fait que le noyau est trop vieux (3.16.x) même si j&amp;#039;ai pas trouvé d&amp;#039;info précise confirmant cette hypothèse.
Bref, le service biboumi n&amp;#039;arrive pas à se lancer et journalctl affiche :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;janv. 03 21:59:32 xmpp-1 systemd[1]: Starting Biboumi, XMPP to IRC gateway...
janv. 03 21:59:32 xmpp-1 systemd[7827]: biboumi.service: Failed to apply ambient capabilities (before UID change): Invalid argument
janv. 03 21:59:32 xmpp-1 systemd[7827]: biboumi.service: Failed at step CAPABILITIES spawning /usr/bin/biboumi: Invalid argument
janv. 03 21:59:32 xmpp-1 systemd[1]: biboumi.service: Main process exited, code=exited, status=218/CAPABILITIES&lt;/pre&gt;

&lt;p&gt;
Voici comment j&amp;#039;ai contourné ce problème :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp /lib/systemd/system/biboumi.service /etc/systemd/system/&lt;/pre&gt;

&lt;p&gt;
Puis j&amp;#039;ai ajouté ces 2 lignes dans &lt;em&gt;/etc/systemd/system/biboumi.service&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;[Service]
...
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
...&lt;/pre&gt;

&lt;p&gt;
Puis &lt;code&gt;systemctl daemon-reload&lt;/code&gt; et &lt;code&gt;systemctl restart biboumi&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;contournement du contournement&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
En fait, pour une raison que j&amp;#039;ignore, le contournement précédent n&amp;#039;a pas fonctionné lors du restart de biboumi par la suite.
J&amp;#039;ai donc mis en place un autre contournement à l&amp;#039;arrache :
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;identd_port=1113&lt;/code&gt; dans &lt;em&gt;biboumi.cfg&lt;/em&gt; et redirection iptables :113 → :1113 sur troll3.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;529-2541&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;interfacage_avec_ejabberd&quot;&gt;Interfaçage avec ejabberd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Activer l&amp;#039;écoute côté ejabberd&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Dans &lt;em&gt;/etc/ejabberd/ejabberd.yml&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;...
  - 
    port: 8888
    ip: &amp;quot;127.0.0.1&amp;quot; # l&amp;#039;interface sur laquelle ejabberd accepte les connexions de composants XMPP externes tels que biboumi mais pas seulement
    module: ejabberd_service
    access: all
    shaper: fast # je sais pas à quoi ça sert mais c&amp;#039;est dans la doc alors je le laisse
    hosts:
      &amp;quot;biboumi.parinux.org&amp;quot;:
        password: &amp;quot;xxxxxxxxxxxx&amp;quot; # le secret partagé avec biboumi
...&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -u ejabberd ejabberdctl reload_config&lt;/pre&gt;

&lt;p&gt;
Suite à quoi on doit voir une ligne comme celle-ci dans &lt;em&gt;/var/log/ejabberd/ejabberd.log&lt;/em&gt; : 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2019-01-03 21:38:59.735 [info] &amp;lt;0.720.0&amp;gt;@ejabberd_listener:init:143 Start accepting TCP connections at 127.0.0.1:8888 for ejabberd_service &lt;/pre&gt;

&lt;p&gt;
Et lorsque le service biboumi sera lancé on verra ceci dans les logs ejabber :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2019-01-03 21:56:45.767 [info] &amp;lt;0.737.0&amp;gt;@ejabberd_service:handle_auth_success:161 (tcp|&amp;lt;0.737.0&amp;gt;) Accepted external component handshake authentication for biboumi.parinux.org from 127.0.0.1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interfa\u00e7age avec ejabberd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interfacage_avec_ejabberd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2542-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;biboumi&quot;&gt;biboumi&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Biboumi est une passerelle XMPP ↔ &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt; qui s&amp;#039;installe côté serveur XMPP et permet de rejoindre des salons &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt; avec un client XMPP standard (donc sans avoir besoin d&amp;#039;installer un client &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt; en plus d&amp;#039;un client XMPP déjà installé).
&lt;/p&gt;

&lt;p&gt;
Au démarrage biboumi se connecte à ejabberd sur un port TCP dédié en tant que composant XMPP et ejabberd proposera alors automatiquement aux clients un service supplémentaire de salons &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt;.
Pour que ça fonctionne ejabberd et biboumi doivent partager un secret.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;biboumi&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;biboumi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-528&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; biboumi&lt;/pre&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/biboumi/biboumi.cfg&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcbiboumibiboumicfg&quot;&gt;hostname=biboumi.parinux.org # le vhost XMPP dédié
password=xxxxxxxxxxxx # le secret partagé avec ejabberd
xmpp_server_ip=127.0.0.1 # l&#039;IP de ejabberd
port=8888 # le port d&#039;écoute côté ejabberd
db_name=/var/lib/biboumi/biboumi.sqlite
admin=pitchum@parinux.org
realname_customization=true
realname_from_jid=false
log_level=1
log_file=/var/log/biboumi/biboumi.log
ca_file=&lt;/pre&gt;

&lt;p&gt;
Puis
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /var/log/biboumi/
chown _biboumi: /var/log/biboumi&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Contournement spécifique&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Je soupçonne que c&amp;#039;est dû au fait que le noyau est trop vieux (3.16.x) même si j&amp;#039;ai pas trouvé d&amp;#039;info précise confirmant cette hypothèse.
Bref, le service biboumi n&amp;#039;arrive pas à se lancer et journalctl affiche :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;janv. 03 21:59:32 xmpp-1 systemd[1]: Starting Biboumi, XMPP to IRC gateway...
janv. 03 21:59:32 xmpp-1 systemd[7827]: biboumi.service: Failed to apply ambient capabilities (before UID change): Invalid argument
janv. 03 21:59:32 xmpp-1 systemd[7827]: biboumi.service: Failed at step CAPABILITIES spawning /usr/bin/biboumi: Invalid argument
janv. 03 21:59:32 xmpp-1 systemd[1]: biboumi.service: Main process exited, code=exited, status=218/CAPABILITIES&lt;/pre&gt;

&lt;p&gt;
Voici comment j&amp;#039;ai contourné ce problème :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp /lib/systemd/system/biboumi.service /etc/systemd/system/&lt;/pre&gt;

&lt;p&gt;
Puis j&amp;#039;ai ajouté ces 2 lignes dans &lt;em&gt;/etc/systemd/system/biboumi.service&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;[Service]
...
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
...&lt;/pre&gt;

&lt;p&gt;
Puis &lt;code&gt;systemctl daemon-reload&lt;/code&gt; et &lt;code&gt;systemctl restart biboumi&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;contournement du contournement&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
En fait, pour une raison que j&amp;#039;ignore, le contournement précédent n&amp;#039;a pas fonctionné lors du restart de biboumi par la suite.
J&amp;#039;ai donc mis en place un autre contournement à l&amp;#039;arrache :
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;identd_port=1113&lt;/code&gt; dans &lt;em&gt;biboumi.cfg&lt;/em&gt; et redirection iptables :113 → :1113 sur troll3.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;529-2541&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;interfacage_avec_ejabberd&quot;&gt;Interfaçage avec ejabberd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Activer l&amp;#039;écoute côté ejabberd&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Dans &lt;em&gt;/etc/ejabberd/ejabberd.yml&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;...
  - 
    port: 8888
    ip: &amp;quot;127.0.0.1&amp;quot; # l&amp;#039;interface sur laquelle ejabberd accepte les connexions de composants XMPP externes tels que biboumi mais pas seulement
    module: ejabberd_service
    access: all
    shaper: fast # je sais pas à quoi ça sert mais c&amp;#039;est dans la doc alors je le laisse
    hosts:
      &amp;quot;biboumi.parinux.org&amp;quot;:
        password: &amp;quot;xxxxxxxxxxxx&amp;quot; # le secret partagé avec biboumi
...&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -u ejabberd ejabberdctl reload_config&lt;/pre&gt;

&lt;p&gt;
Suite à quoi on doit voir une ligne comme celle-ci dans &lt;em&gt;/var/log/ejabberd/ejabberd.log&lt;/em&gt; : 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2019-01-03 21:38:59.735 [info] &amp;lt;0.720.0&amp;gt;@ejabberd_listener:init:143 Start accepting TCP connections at 127.0.0.1:8888 for ejabberd_service &lt;/pre&gt;

&lt;p&gt;
Et lorsque le service biboumi sera lancé on verra ceci dans les logs ejabber :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2019-01-03 21:56:45.767 [info] &amp;lt;0.737.0&amp;gt;@ejabberd_service:handle_auth_success:161 (tcp|&amp;lt;0.737.0&amp;gt;) Accepted external component handshake authentication for biboumi.parinux.org from 127.0.0.1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interfa\u00e7age avec ejabberd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interfacage_avec_ejabberd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2542-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:codimd</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/codimd?rev=1745528853&amp;do=diff"/>
        <published>2025-04-24T21:07:33+00:00</published>
        <updated>2025-04-24T21:07:33+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/codimd?rev=1745528853&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;codimd&quot;&gt;CodiMD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/codimd/server&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server&quot; rel=&quot;ugc nofollow&quot;&gt;Dépôt github&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/setup/manual-setup.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/setup/manual-setup.md&quot; rel=&quot;ugc nofollow&quot;&gt;Manuel d&amp;#039;installation&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://demo.codimd.org&quot; class=&quot;urlextern&quot; title=&quot;https://demo.codimd.org&quot; rel=&quot;ugc nofollow&quot;&gt;Site de démo&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://social.codimd.org/mastodon&quot; class=&quot;urlextern&quot; title=&quot;https://social.codimd.org/mastodon&quot; rel=&quot;ugc nofollow&quot;&gt;Compte Mastodon&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://community.codimd.org/&quot; class=&quot;urlextern&quot; title=&quot;https://community.codimd.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Forum communautaire&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CodiMD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-328&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;connexion_au_conteneur&quot;&gt;Connexion au conteneur&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Se connecter au conteneur &lt;code&gt;codimd&lt;/code&gt; sur &lt;code&gt;troll3&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  sudo lxc-attach --name codimd&lt;/pre&gt;

&lt;p&gt;
Ou alors directement en SSH après avoir ajouté sa clef SSH dans `/root/.ssh/authorized_keys` du conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  ssh -J root@troll3.parinux.org root@192.168.1.86&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Connexion au conteneur&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;connexion_au_conteneur&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;329-618&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;maintenance&quot;&gt;Maintenance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Maintenance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;maintenance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;619-642&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;consulter_les_logs&quot;&gt;Consulter les logs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;journalctl | grep yarn&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Consulter les logs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;consulter_les_logs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;643-698&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;arreterdemarrer_le_service&quot;&gt;Arrêter/Démarrer le service&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Avec SystemD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su - codimd
systemctl --user start codimd # Démarrer le service
systemctl --user stop codimd # Arrêter le service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Arr\u00eater\/D\u00e9marrer le service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arreterdemarrer_le_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;699-876&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;installation_du_service_codimd&quot;&gt;Installation du service CodiMD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation du service CodiMD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_du_service_codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;877-921&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;installation_des_paquets&quot;&gt;Installation des paquets&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation des paquets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_des_paquets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;922-959&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;paquets_standards_sous_debian_stretch&quot;&gt;Paquets standards sous Debian Stretch&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install sqlite curl apt-transport-https git bzip2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Paquets standards sous Debian Stretch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;paquets_standards_sous_debian_stretch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;960-1071&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;paquets_non-standards&quot;&gt;Paquets non-standards&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;npm&quot;&gt;NPM&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
 il faut utiliser les backports:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get -t stretch-backport install npm&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;nodejs&quot;&gt;NodeJs&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
La version &lt;code&gt;8.5&lt;/code&gt; ou supérieure étant requise, il passer par une installation manuelle en s’inspirant de &lt;a href=&quot;https://github.com/nodesource/distributions/blob/master/README.md#debmanual&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/nodesource/distributions/blob/master/README.md#debmanual&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
VERSION=node_13.x # Désignation de la version de NodeJS, ici la dernière au moment de l&amp;#039;écriture de ce wiki
DISTRO=stretch
echo &amp;quot;deb https://deb.nodesource.com/$VERSION $DISTRO main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/nodesource.list
echo &amp;quot;deb-src https://deb.nodesource.com/$VERSION $DISTRO main&amp;quot; &amp;gt;&amp;gt;  /etc/apt/sources.list.d/nodesource.list
apt-get update
apt-get install nodejs&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;yarn&quot;&gt;Yarn&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
D&amp;#039;après &lt;a href=&quot;https://classic.yarnpkg.com/en/docs/install/#debian-stable&quot; class=&quot;urlextern&quot; title=&quot;https://classic.yarnpkg.com/en/docs/install/#debian-stable&quot; rel=&quot;ugc nofollow&quot;&gt;cette procédure du projet yarn&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo &amp;quot;deb https://dl.yarnpkg.com/debian/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/yarn.list
apt update &amp;amp;&amp;amp; apt install yarn&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Paquets non-standards&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;paquets_non-standards&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1072-2203&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;creation_de_l_utilisateur_codimd&quot;&gt;Création de l&amp;#039;utilisateur CodiMD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Lancer la commande de création d&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt; avec son répertoire &lt;code&gt;/opt/codimd&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd -m -d /opt/codimd/ -s /bin/bash codimd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9ation de l&amp;#039;utilisateur CodiMD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creation_de_l_utilisateur_codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2204-2395&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;se_connecter_comme_utilisateur_codimd&quot;&gt;Se connecter comme utilisateur codimd&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Rester dans la session de l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt; pour la suite:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su - codimd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Se connecter comme utilisateur codimd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;se_connecter_comme_utilisateur_codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2396-2528&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;recuperation_du_depot_git&quot;&gt;Récupération du dépôt git&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Récupérer le dépôt git sous le répertoire &lt;code&gt;/opt/codimd/ &lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/codimd/server.git&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9ration du d\u00e9p\u00f4t git&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperation_du_depot_git&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2529-2688&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;installation_des_dependances_par_yarn&quot;&gt;Installation des dépendances par yarn&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Aller dans le dossier &lt;code&gt;server&lt;/code&gt; pour lancer l&amp;#039;installation de ces dépendances:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd server
bin/setup&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation des d\u00e9pendances par yarn&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_des_dependances_par_yarn&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2689-2848&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;configuration_generale_du_service&quot;&gt;Configuration générale du service&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Modifier le bloc &lt;code&gt;production&lt;/code&gt; du fichier &lt;code&gt;config.json&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  &amp;quot;production&amp;quot;: {
      &amp;quot;domain&amp;quot;: &amp;quot;codimd.parinux.org&amp;quot;,
      &amp;quot;email&amp;quot;: false,
      &amp;quot;allowEmailRegister&amp;quot;: false,
      &amp;quot;protocolUseSSL&amp;quot;: true,
      &amp;quot;loglevel&amp;quot;: &amp;quot;info&amp;quot;,
      &amp;quot;sessionSecret&amp;quot;: &amp;quot;&amp;lt;sessionSecret&amp;gt;&amp;quot;,
      &amp;quot;allowGravatar&amp;quot;: false,&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration g\u00e9n\u00e9rale du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_generale_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;2849-3214&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;configuration_de_l_acces_a_la_base_de_donnee&quot;&gt;Configuration de l&amp;#039;accès à la base de donnée&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de l&amp;#039;acc\u00e8s \u00e0 la base de donn\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_l_acces_a_la_base_de_donnee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;3215-3275&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;creation_de_l_utilisateur_sur_postgres&quot;&gt;Création de l&amp;#039;utilisateur sur Postgres&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Se connecter au conteneur &lt;code&gt;postgres&lt;/code&gt; et faire la création de l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su - postgres
createuser --pwprompt codimd # Attention à définir son mot de passe ensuite!
createdb -O codimd codimd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9ation de l&amp;#039;utilisateur sur Postgres&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creation_de_l_utilisateur_sur_postgres&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;3276-3543&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;configuration_du_service&quot;&gt;Configuration du service&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Sur le conteneur &lt;code&gt;codimd&lt;/code&gt;, modifier le bloc &lt;code&gt;db&lt;/code&gt; comme suit:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      &amp;quot;db&amp;quot;: {
          &amp;quot;password&amp;quot;: &amp;quot;&amp;lt;Mot de passe&amp;gt;&amp;quot;,
          &amp;quot;database&amp;quot;: &amp;quot;codimd&amp;quot;,
          &amp;quot;host&amp;quot;: &amp;quot;&amp;lt;Nom ou IP de la BDD&amp;gt;&amp;quot;,
          &amp;quot;port&amp;quot;: &amp;quot;5432&amp;quot;,
          &amp;quot;dialect&amp;quot;: &amp;quot;postgres&amp;quot;
          &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;3544-3857&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;mise_en_place_de_l_authentification_avec_keyclock&quot;&gt;Mise en place de l&amp;#039;authentification avec Keyclock&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Prendre cette &lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/keycloak.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/keycloak.md&quot; rel=&quot;ugc nofollow&quot;&gt;page&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en place de l&amp;#039;authentification avec Keyclock&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_place_de_l_authentification_avec_keyclock&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;3858-4023&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;configuration_de_authentification_saml&quot;&gt;Configuration de authentification SAML&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Prendre &lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/saml.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/saml.md&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Faire une conf adapté
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de authentification SAML&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_authentification_saml&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;4024-4199&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;configuration_de_authentification_ldap&quot;&gt;Configuration de authentification LDAP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
D&amp;#039;après cette page &lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/ldap-AD.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/ldap-AD.md&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;ldap&amp;quot;: {                                                                                          
    &amp;quot;url&amp;quot;: &amp;quot;ldap://&amp;lt;Adresse IP du serveur LDAP&amp;gt;:389&amp;quot;,
    &amp;quot;bindDn&amp;quot;: &amp;quot;uid=codimd,ou=applications,dc=parinux,dc=org&amp;quot;,                                      
    &amp;quot;bindCredentials&amp;quot;: &amp;quot;&amp;lt;Mot de passe de la branche&amp;gt;&amp;quot;,
    &amp;quot;searchBase&amp;quot;: &amp;quot;ou=people,dc=parinux,dc=org&amp;quot;,                                                   
    &amp;quot;searchFilter&amp;quot;: &amp;quot;(&amp;amp;(objectClass=inetOrgPerson)(|(uid={{username}})(mail={{username}})))&amp;quot;,      
    &amp;quot;usernameField&amp;quot;: &amp;quot;uid&amp;quot;,                                                                        
    &amp;quot;useridField&amp;quot;: &amp;quot;uid&amp;quot;                                                                           
    }&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de authentification LDAP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_authentification_ldap&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;4200-5097&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;compilation_du_front-end&quot;&gt;Compilation du front-end&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;yarn --cwd /opt/codimd/server --prod run build&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Compilation du front-end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compilation_du_front-end&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;5098-5184&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;lancement_du_serveur_en_mode_manuel&quot;&gt;Lancement du serveur en mode manuel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;yarn --cwd /opt/codimd/server --prod run start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lancement du serveur en mode manuel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lancement_du_serveur_en_mode_manuel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;5185-5283&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;lancement_du_serveur_avec_systemd&quot;&gt;Lancement du serveur avec SystemD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ce paragraphe s&amp;#039;est inspiré de &lt;a href=&quot;https://askubuntu.com/questions/676007/how-do-i-make-my-systemd-service-run-via-specific-user-and-start-on-boot&quot; class=&quot;urlextern&quot; title=&quot;https://askubuntu.com/questions/676007/how-do-i-make-my-systemd-service-run-via-specific-user-and-start-on-boot&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;. Le wiki de ArchLinux fourni &lt;a href=&quot;https://wiki.archlinux.org/index.php/Systemd/User&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.archlinux.org/index.php/Systemd/User&quot; rel=&quot;ugc nofollow&quot;&gt;une page détaillée&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Lancer sous root cette commande au préalable pour activer le lancement du service au boot:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;loginctl enable-linger codimd&lt;/pre&gt;

&lt;p&gt;
Ensuite, se connecter sous l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Créer d&amp;#039;abord le fichier &lt;code&gt;/opt/codimd/.config/systemd/user/codimd.service&lt;/code&gt; sous l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=CodiMD Server
After=network.target

[Service]
ExecStart=/usr/bin/yarn --cwd /opt/codimd/server --prod run start

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Ensuite, activer le service &lt;code&gt;codimd.service&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl --user enable codimd.service&lt;/pre&gt;

&lt;p&gt;
Il ne reste plus qu&amp;#039;à lancer le service:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl --user start codimd.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lancement du serveur avec SystemD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lancement_du_serveur_avec_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;5284-6249&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;voir_les_logs_du_service&quot;&gt;Voir les logs du service&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour avoir l&amp;#039;ensemble des logs du service:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;journalctl | grep yarn&lt;/pre&gt;

&lt;p&gt;
Pour des lignes sur une date particulière, avec l&amp;#039;exemple du 24 décembre 2020:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;journalctl | sed -n -e &amp;#039;/yarn/{/2020-12-24T/p; }&amp;#039;

# Même chose, mais avec une variable pour éviter d&amp;#039;éditer directement l&amp;#039;expression régulière
date=2020-12-24; journalctl | sed -n -e &amp;quot;/yarn/{/${date}T/p; }&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Voir les logs du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;voir_les_logs_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;6250-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;codimd&quot;&gt;CodiMD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/codimd/server&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server&quot; rel=&quot;ugc nofollow&quot;&gt;Dépôt github&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/setup/manual-setup.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/setup/manual-setup.md&quot; rel=&quot;ugc nofollow&quot;&gt;Manuel d&amp;#039;installation&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://demo.codimd.org&quot; class=&quot;urlextern&quot; title=&quot;https://demo.codimd.org&quot; rel=&quot;ugc nofollow&quot;&gt;Site de démo&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://social.codimd.org/mastodon&quot; class=&quot;urlextern&quot; title=&quot;https://social.codimd.org/mastodon&quot; rel=&quot;ugc nofollow&quot;&gt;Compte Mastodon&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://community.codimd.org/&quot; class=&quot;urlextern&quot; title=&quot;https://community.codimd.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Forum communautaire&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CodiMD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-328&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;connexion_au_conteneur&quot;&gt;Connexion au conteneur&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Se connecter au conteneur &lt;code&gt;codimd&lt;/code&gt; sur &lt;code&gt;troll3&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  sudo lxc-attach --name codimd&lt;/pre&gt;

&lt;p&gt;
Ou alors directement en SSH après avoir ajouté sa clef SSH dans `/root/.ssh/authorized_keys` du conteneur :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  ssh -J root@troll3.parinux.org root@192.168.1.86&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Connexion au conteneur&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;connexion_au_conteneur&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;329-618&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;maintenance&quot;&gt;Maintenance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Maintenance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;maintenance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;619-642&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;consulter_les_logs&quot;&gt;Consulter les logs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;journalctl | grep yarn&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Consulter les logs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;consulter_les_logs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;643-698&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;arreterdemarrer_le_service&quot;&gt;Arrêter/Démarrer le service&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Avec SystemD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su - codimd
systemctl --user start codimd # Démarrer le service
systemctl --user stop codimd # Arrêter le service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Arr\u00eater\/D\u00e9marrer le service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arreterdemarrer_le_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;699-876&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;installation_du_service_codimd&quot;&gt;Installation du service CodiMD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation du service CodiMD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_du_service_codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;877-921&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;installation_des_paquets&quot;&gt;Installation des paquets&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation des paquets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_des_paquets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;922-959&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;paquets_standards_sous_debian_stretch&quot;&gt;Paquets standards sous Debian Stretch&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install sqlite curl apt-transport-https git bzip2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Paquets standards sous Debian Stretch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;paquets_standards_sous_debian_stretch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;960-1071&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;paquets_non-standards&quot;&gt;Paquets non-standards&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;npm&quot;&gt;NPM&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
 il faut utiliser les backports:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get -t stretch-backport install npm&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;nodejs&quot;&gt;NodeJs&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
La version &lt;code&gt;8.5&lt;/code&gt; ou supérieure étant requise, il passer par une installation manuelle en s’inspirant de &lt;a href=&quot;https://github.com/nodesource/distributions/blob/master/README.md#debmanual&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/nodesource/distributions/blob/master/README.md#debmanual&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
VERSION=node_13.x # Désignation de la version de NodeJS, ici la dernière au moment de l&amp;#039;écriture de ce wiki
DISTRO=stretch
echo &amp;quot;deb https://deb.nodesource.com/$VERSION $DISTRO main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/nodesource.list
echo &amp;quot;deb-src https://deb.nodesource.com/$VERSION $DISTRO main&amp;quot; &amp;gt;&amp;gt;  /etc/apt/sources.list.d/nodesource.list
apt-get update
apt-get install nodejs&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;yarn&quot;&gt;Yarn&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
D&amp;#039;après &lt;a href=&quot;https://classic.yarnpkg.com/en/docs/install/#debian-stable&quot; class=&quot;urlextern&quot; title=&quot;https://classic.yarnpkg.com/en/docs/install/#debian-stable&quot; rel=&quot;ugc nofollow&quot;&gt;cette procédure du projet yarn&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo &amp;quot;deb https://dl.yarnpkg.com/debian/ stable main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list.d/yarn.list
apt update &amp;amp;&amp;amp; apt install yarn&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Paquets non-standards&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;paquets_non-standards&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1072-2203&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;creation_de_l_utilisateur_codimd&quot;&gt;Création de l&amp;#039;utilisateur CodiMD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Lancer la commande de création d&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt; avec son répertoire &lt;code&gt;/opt/codimd&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd -m -d /opt/codimd/ -s /bin/bash codimd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9ation de l&amp;#039;utilisateur CodiMD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creation_de_l_utilisateur_codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2204-2395&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;se_connecter_comme_utilisateur_codimd&quot;&gt;Se connecter comme utilisateur codimd&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Rester dans la session de l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt; pour la suite:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su - codimd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Se connecter comme utilisateur codimd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;se_connecter_comme_utilisateur_codimd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2396-2528&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;recuperation_du_depot_git&quot;&gt;Récupération du dépôt git&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Récupérer le dépôt git sous le répertoire &lt;code&gt;/opt/codimd/ &lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/codimd/server.git&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R\u00e9cup\u00e9ration du d\u00e9p\u00f4t git&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;recuperation_du_depot_git&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2529-2688&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;installation_des_dependances_par_yarn&quot;&gt;Installation des dépendances par yarn&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Aller dans le dossier &lt;code&gt;server&lt;/code&gt; pour lancer l&amp;#039;installation de ces dépendances:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd server
bin/setup&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation des d\u00e9pendances par yarn&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_des_dependances_par_yarn&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2689-2848&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;configuration_generale_du_service&quot;&gt;Configuration générale du service&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Modifier le bloc &lt;code&gt;production&lt;/code&gt; du fichier &lt;code&gt;config.json&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  &amp;quot;production&amp;quot;: {
      &amp;quot;domain&amp;quot;: &amp;quot;codimd.parinux.org&amp;quot;,
      &amp;quot;email&amp;quot;: false,
      &amp;quot;allowEmailRegister&amp;quot;: false,
      &amp;quot;protocolUseSSL&amp;quot;: true,
      &amp;quot;loglevel&amp;quot;: &amp;quot;info&amp;quot;,
      &amp;quot;sessionSecret&amp;quot;: &amp;quot;&amp;lt;sessionSecret&amp;gt;&amp;quot;,
      &amp;quot;allowGravatar&amp;quot;: false,&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration g\u00e9n\u00e9rale du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_generale_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;2849-3214&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;configuration_de_l_acces_a_la_base_de_donnee&quot;&gt;Configuration de l&amp;#039;accès à la base de donnée&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de l&amp;#039;acc\u00e8s \u00e0 la base de donn\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_l_acces_a_la_base_de_donnee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;3215-3275&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;creation_de_l_utilisateur_sur_postgres&quot;&gt;Création de l&amp;#039;utilisateur sur Postgres&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Se connecter au conteneur &lt;code&gt;postgres&lt;/code&gt; et faire la création de l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su - postgres
createuser --pwprompt codimd # Attention à définir son mot de passe ensuite!
createdb -O codimd codimd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9ation de l&amp;#039;utilisateur sur Postgres&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creation_de_l_utilisateur_sur_postgres&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;3276-3543&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;configuration_du_service&quot;&gt;Configuration du service&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Sur le conteneur &lt;code&gt;codimd&lt;/code&gt;, modifier le bloc &lt;code&gt;db&lt;/code&gt; comme suit:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      &amp;quot;db&amp;quot;: {
          &amp;quot;password&amp;quot;: &amp;quot;&amp;lt;Mot de passe&amp;gt;&amp;quot;,
          &amp;quot;database&amp;quot;: &amp;quot;codimd&amp;quot;,
          &amp;quot;host&amp;quot;: &amp;quot;&amp;lt;Nom ou IP de la BDD&amp;gt;&amp;quot;,
          &amp;quot;port&amp;quot;: &amp;quot;5432&amp;quot;,
          &amp;quot;dialect&amp;quot;: &amp;quot;postgres&amp;quot;
          &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;3544-3857&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;mise_en_place_de_l_authentification_avec_keyclock&quot;&gt;Mise en place de l&amp;#039;authentification avec Keyclock&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Prendre cette &lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/keycloak.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/keycloak.md&quot; rel=&quot;ugc nofollow&quot;&gt;page&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mise en place de l&amp;#039;authentification avec Keyclock&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mise_en_place_de_l_authentification_avec_keyclock&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;3858-4023&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;configuration_de_authentification_saml&quot;&gt;Configuration de authentification SAML&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Prendre &lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/saml.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/saml.md&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Faire une conf adapté
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de authentification SAML&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_authentification_saml&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;4024-4199&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;configuration_de_authentification_ldap&quot;&gt;Configuration de authentification LDAP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
D&amp;#039;après cette page &lt;a href=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/ldap-AD.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/codimd/server/blob/master/docs/guides/auth/ldap-AD.md&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;ldap&amp;quot;: {                                                                                          
    &amp;quot;url&amp;quot;: &amp;quot;ldap://&amp;lt;Adresse IP du serveur LDAP&amp;gt;:389&amp;quot;,
    &amp;quot;bindDn&amp;quot;: &amp;quot;uid=codimd,ou=applications,dc=parinux,dc=org&amp;quot;,                                      
    &amp;quot;bindCredentials&amp;quot;: &amp;quot;&amp;lt;Mot de passe de la branche&amp;gt;&amp;quot;,
    &amp;quot;searchBase&amp;quot;: &amp;quot;ou=people,dc=parinux,dc=org&amp;quot;,                                                   
    &amp;quot;searchFilter&amp;quot;: &amp;quot;(&amp;amp;(objectClass=inetOrgPerson)(|(uid={{username}})(mail={{username}})))&amp;quot;,      
    &amp;quot;usernameField&amp;quot;: &amp;quot;uid&amp;quot;,                                                                        
    &amp;quot;useridField&amp;quot;: &amp;quot;uid&amp;quot;                                                                           
    }&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de authentification LDAP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_authentification_ldap&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;4200-5097&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;compilation_du_front-end&quot;&gt;Compilation du front-end&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;yarn --cwd /opt/codimd/server --prod run build&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Compilation du front-end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compilation_du_front-end&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;5098-5184&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;lancement_du_serveur_en_mode_manuel&quot;&gt;Lancement du serveur en mode manuel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;yarn --cwd /opt/codimd/server --prod run start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lancement du serveur en mode manuel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lancement_du_serveur_en_mode_manuel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;5185-5283&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;lancement_du_serveur_avec_systemd&quot;&gt;Lancement du serveur avec SystemD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ce paragraphe s&amp;#039;est inspiré de &lt;a href=&quot;https://askubuntu.com/questions/676007/how-do-i-make-my-systemd-service-run-via-specific-user-and-start-on-boot&quot; class=&quot;urlextern&quot; title=&quot;https://askubuntu.com/questions/676007/how-do-i-make-my-systemd-service-run-via-specific-user-and-start-on-boot&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;. Le wiki de ArchLinux fourni &lt;a href=&quot;https://wiki.archlinux.org/index.php/Systemd/User&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.archlinux.org/index.php/Systemd/User&quot; rel=&quot;ugc nofollow&quot;&gt;une page détaillée&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Lancer sous root cette commande au préalable pour activer le lancement du service au boot:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;loginctl enable-linger codimd&lt;/pre&gt;

&lt;p&gt;
Ensuite, se connecter sous l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Créer d&amp;#039;abord le fichier &lt;code&gt;/opt/codimd/.config/systemd/user/codimd.service&lt;/code&gt; sous l&amp;#039;utilisateur &lt;code&gt;codimd&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=CodiMD Server
After=network.target

[Service]
ExecStart=/usr/bin/yarn --cwd /opt/codimd/server --prod run start

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Ensuite, activer le service &lt;code&gt;codimd.service&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl --user enable codimd.service&lt;/pre&gt;

&lt;p&gt;
Il ne reste plus qu&amp;#039;à lancer le service:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl --user start codimd.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lancement du serveur avec SystemD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lancement_du_serveur_avec_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;5284-6249&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;voir_les_logs_du_service&quot;&gt;Voir les logs du service&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour avoir l&amp;#039;ensemble des logs du service:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;journalctl | grep yarn&lt;/pre&gt;

&lt;p&gt;
Pour des lignes sur une date particulière, avec l&amp;#039;exemple du 24 décembre 2020:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;journalctl | sed -n -e &amp;#039;/yarn/{/2020-12-24T/p; }&amp;#039;

# Même chose, mais avec une variable pour éviter d&amp;#039;éditer directement l&amp;#039;expression régulière
date=2020-12-24; journalctl | sed -n -e &amp;quot;/yarn/{/${date}T/p; }&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Voir les logs du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;voir_les_logs_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;6250-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:ejabberd</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/ejabberd?rev=1745530280&amp;do=diff"/>
        <published>2025-04-24T21:31:20+00:00</published>
        <updated>2025-04-24T21:31:20+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/ejabberd?rev=1745530280&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ejabberd&quot;&gt;ejabberd&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Le service XMPP de Parinux utilise le logiciel ejabberd (mais pas seulement, autour il y a d&amp;#039;autres logiciels comme &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/biboumi&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:biboumi&quot; data-wiki-id=&quot;si:logiciels:biboumi&quot;&gt;biboumi&lt;/a&gt;, &lt;a href=&quot;https://wiki.parinux.org/si/conversejs&quot; class=&quot;wikilink2&quot; title=&quot;si:conversejs&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;si:conversejs&quot;&gt;conversejs&lt;/a&gt;, &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/movim&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:movim&quot; data-wiki-id=&quot;si:logiciels:movim&quot;&gt;movim&lt;/a&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ejabberd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ejabberd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-211&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;deploiement_initial&quot;&gt;Déploiement initial&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour mémoire voici comment il a été déployé dans le conteneur LXC nommé &lt;em&gt;xmpp-1&lt;/em&gt; sur &lt;a href=&quot;https://wiki.parinux.org/si/machines/troll3&quot; class=&quot;wikilink1&quot; title=&quot;si:machines:troll3&quot; data-wiki-id=&quot;si:machines:troll3&quot;&gt;troll3&lt;/a&gt;.
Un second conteneur LXC nommé &lt;em&gt;xmpp-2&lt;/em&gt; a été créé sur &lt;a href=&quot;https://wiki.parinux.org/si/machines/troll4&quot; class=&quot;wikilink1&quot; title=&quot;si:machines:troll4&quot; data-wiki-id=&quot;si:machines:troll4&quot;&gt;troll4&lt;/a&gt; dans l&amp;#039;espoir de mettre en place un cluster ejabberd un jour… à l&amp;#039;heure où j&amp;#039;écris ces lignes c&amp;#039;est resté au stade d&amp;#039;espoir.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; ejabberd erlang-p1-pgsql&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;TODO pitchum : à détailler, extrait de la configuration, notamment les modules activés et l&amp;#039;interfaçage LDAP&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;D\u00e9ploiement initial&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;deploiement_initial&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;212-759&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;maintenance&quot;&gt;Maintenance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Maintenance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;maintenance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;760-784&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;logs&quot;&gt;Logs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pour consulter les logs avec de jolies couleurs :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt; &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ejabberd&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ejabberd.log &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; ccze &lt;span class=&quot;re5&quot;&gt;-A&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Il se peut que les logs soient peu détaillés.
Si besoin, modifier la variable &lt;em&gt;loglevel&lt;/em&gt; dans le fichier &lt;em&gt;/etc/ejabberd/ejabberd.yml&lt;/em&gt; pour passer en debug (temporairement hein, parce que ça floode vite) et taper ensuite :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; ejabberd ejabberdctl reload_config&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;785-1211&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;sauvegardes&quot;&gt;Sauvegardes&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Les seules données utiles à sauvegarder sont :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; la configuration &lt;em&gt;/etc/ejabberd/ejabberd.yml&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; un bout de configuration dans &lt;em&gt;/etc/default/ejabberd&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; le contenu de la base de données postgresql&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;em&gt;TODO pitchum : à détailler, pg_dump toussa&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegardes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegardes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1212-1497&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;rechargerrelancer_le_service&quot;&gt;Recharger/Relancer le service&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Certaines modifications de configuration sont prises en compte après un simple reload (sans interruption de service donc), mais d&amp;#039;autres nécessiteront carrément un restart.
Pour le savoir, lancer un reload et observer les logs, en général il y a un message explicite indiquant que ce n&amp;#039;est pas suffisant et qu&amp;#039;il faudra faire un restart.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; pour un simple reload : &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; ejabberd ejabberdctl reload_config&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; pour un restart : &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; systemctl restart ejabberd&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Recharger\/Relancer le service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rechargerrelancer_le_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1498-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ejabberd&quot;&gt;ejabberd&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Le service XMPP de Parinux utilise le logiciel ejabberd (mais pas seulement, autour il y a d&amp;#039;autres logiciels comme &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/biboumi&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:biboumi&quot; data-wiki-id=&quot;si:logiciels:biboumi&quot;&gt;biboumi&lt;/a&gt;, &lt;a href=&quot;https://wiki.parinux.org/si/conversejs&quot; class=&quot;wikilink2&quot; title=&quot;si:conversejs&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;si:conversejs&quot;&gt;conversejs&lt;/a&gt;, &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/movim&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:movim&quot; data-wiki-id=&quot;si:logiciels:movim&quot;&gt;movim&lt;/a&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ejabberd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ejabberd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-211&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;deploiement_initial&quot;&gt;Déploiement initial&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Pour mémoire voici comment il a été déployé dans le conteneur LXC nommé &lt;em&gt;xmpp-1&lt;/em&gt; sur &lt;a href=&quot;https://wiki.parinux.org/si/machines/troll3&quot; class=&quot;wikilink1&quot; title=&quot;si:machines:troll3&quot; data-wiki-id=&quot;si:machines:troll3&quot;&gt;troll3&lt;/a&gt;.
Un second conteneur LXC nommé &lt;em&gt;xmpp-2&lt;/em&gt; a été créé sur &lt;a href=&quot;https://wiki.parinux.org/si/machines/troll4&quot; class=&quot;wikilink1&quot; title=&quot;si:machines:troll4&quot; data-wiki-id=&quot;si:machines:troll4&quot;&gt;troll4&lt;/a&gt; dans l&amp;#039;espoir de mettre en place un cluster ejabberd un jour… à l&amp;#039;heure où j&amp;#039;écris ces lignes c&amp;#039;est resté au stade d&amp;#039;espoir.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; ejabberd erlang-p1-pgsql&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;TODO pitchum : à détailler, extrait de la configuration, notamment les modules activés et l&amp;#039;interfaçage LDAP&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;D\u00e9ploiement initial&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;deploiement_initial&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;212-759&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;maintenance&quot;&gt;Maintenance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Maintenance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;maintenance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;760-784&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;logs&quot;&gt;Logs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pour consulter les logs avec de jolies couleurs :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt; &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ejabberd&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ejabberd.log &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; ccze &lt;span class=&quot;re5&quot;&gt;-A&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Il se peut que les logs soient peu détaillés.
Si besoin, modifier la variable &lt;em&gt;loglevel&lt;/em&gt; dans le fichier &lt;em&gt;/etc/ejabberd/ejabberd.yml&lt;/em&gt; pour passer en debug (temporairement hein, parce que ça floode vite) et taper ensuite :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; ejabberd ejabberdctl reload_config&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;785-1211&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;sauvegardes&quot;&gt;Sauvegardes&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Les seules données utiles à sauvegarder sont :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; la configuration &lt;em&gt;/etc/ejabberd/ejabberd.yml&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; un bout de configuration dans &lt;em&gt;/etc/default/ejabberd&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; le contenu de la base de données postgresql&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;em&gt;TODO pitchum : à détailler, pg_dump toussa&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sauvegardes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sauvegardes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1212-1497&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;rechargerrelancer_le_service&quot;&gt;Recharger/Relancer le service&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Certaines modifications de configuration sont prises en compte après un simple reload (sans interruption de service donc), mais d&amp;#039;autres nécessiteront carrément un restart.
Pour le savoir, lancer un reload et observer les logs, en général il y a un message explicite indiquant que ce n&amp;#039;est pas suffisant et qu&amp;#039;il faudra faire un restart.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; pour un simple reload : &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; ejabberd ejabberdctl reload_config&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; pour un restart : &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; systemctl restart ejabberd&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Recharger\/Relancer le service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rechargerrelancer_le_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1498-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:etherpad</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/etherpad?rev=1745528966&amp;do=diff"/>
        <published>2025-04-24T21:09:26+00:00</published>
        <updated>2025-04-24T21:09:26+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/etherpad?rev=1745528966&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;etherpad&quot;&gt;Etherpad&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Etherpad&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etherpad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-24&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;liste_des_commandes&quot;&gt;liste des commandes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
installation de etherpad dans /home/etherpad-mypads
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /home/etherpad-mypads

git clone https://github.com/ether/etherpad-lite.git

cd /home/etherpad-mypads/etherpad-lite&lt;/pre&gt;

&lt;p&gt;
pour faire de l&amp;#039;export dans divers format
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install libreoffice&lt;/pre&gt;

&lt;p&gt;
liste des modules etherpad du service mes-bn.parinux.org :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;author_hover
mypads
comments_page
countable
delete_empty_pads
font_color
font_family
headings2
markdown
pads_stats
page_view
spellcheck
subscript_and_superscript
table_of_contents
warn_too_much_chars&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liste des commandes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;liste_des_commandes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;25-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;etherpad&quot;&gt;Etherpad&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Etherpad&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etherpad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-24&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;liste_des_commandes&quot;&gt;liste des commandes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
installation de etherpad dans /home/etherpad-mypads
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /home/etherpad-mypads

git clone https://github.com/ether/etherpad-lite.git

cd /home/etherpad-mypads/etherpad-lite&lt;/pre&gt;

&lt;p&gt;
pour faire de l&amp;#039;export dans divers format
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install libreoffice&lt;/pre&gt;

&lt;p&gt;
liste des modules etherpad du service mes-bn.parinux.org :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;author_hover
mypads
comments_page
countable
delete_empty_pads
font_color
font_family
headings2
markdown
pads_stats
page_view
spellcheck
subscript_and_superscript
table_of_contents
warn_too_much_chars&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liste des commandes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;liste_des_commandes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;25-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:lstu</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/lstu?rev=1745529688&amp;do=diff"/>
        <published>2025-04-24T21:21:28+00:00</published>
        <updated>2025-04-24T21:21:28+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/lstu?rev=1745529688&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;p&gt;
Installation du raccourcisseur d&amp;#039;url
&lt;/p&gt;

&lt;p&gt;
Installation des paquets :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install build-essential libssl-dev zlib1g-dev sudo git
sudo apt-get install libpng-dev
sudo cpan Carton
sudo apt-get install memcached
sudo apt-get install libmariadbd-dev&lt;/pre&gt;

&lt;p&gt;
Ajout d&amp;#039;un utilisateur dédié
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd lstu
groupadd lstu
mkdir -p /var/www/lstu
chown -R lstu:lstu /var/www/lstu
usermod -d /var/www/lstu/ lstu&lt;/pre&gt;

&lt;p&gt;
Récupération du dépôt via git
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://framagit.org/luc/lstu.git&lt;/pre&gt;

&lt;p&gt;
mise à jour 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd  /var/www/lstu
git pull&lt;/pre&gt;

&lt;p&gt;
Installation des dépendance
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su lstu -s /bin/bash
carton install
carton install --deployment  --without=test --without=sqlite --without=postgresql --without=ldap &lt;/pre&gt;

&lt;p&gt;
test du service ou mode manuel
start
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;carton exec hypnotoad   script/lstu&lt;/pre&gt;

&lt;p&gt;
stop
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;carton exec hypnotoad  -s  script/lstu&lt;/pre&gt;

&lt;p&gt;
Paramétrage de la configuration LDAP 
&lt;/p&gt;

&lt;p&gt;
démarrage auto
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp utilities/lstu@.service /etc/systemd/system/

vérification des chemins et utilisateurs dans : 
&amp;lt;code&amp;gt;
vim /etc/systemd/system/lstu.service&lt;/pre&gt;

&lt;p&gt;
utilisation du service
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload
systemctl enable lstu.service
systemctl start lstu.service
systemctl status lstu.service&lt;/pre&gt;

&lt;p&gt;
vérification du pid
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ls -la  /var/www/lstu/script/hypnotoad.pid&lt;/pre&gt;

&lt;p&gt;
au cas ou
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown -R  lstu:www-data /var/www/lstu/script/
chmod -R 774 /var/www/lstu/script/&lt;/pre&gt;

&lt;p&gt;
entrées dans le Vhost Nginx
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; location / {
        error_page 404 = /oauth2/auth ;
        proxy_pass http://192.168.1.72:8080;
        proxy_set_header Host      $host;
        proxy_http_version 1.1;
        }

location /oauth2/ {
proxy_pass   http://127.0.0.1:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP   $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Auth-Request-Redirect $request_uri;
# or, if you are handling multiple domains:
# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
}

location = /oauth2/auth {
proxy_pass   http://127.0.0.1:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
# nginx auth_request includes headers but not body
proxy_set_header Content-Length   &amp;quot;&amp;quot;;
proxy_pass_request_body   off;
}

location  = / {
        auth_request /oauth2/auth;
        error_page 401 = /oauth2/sign_in;
# # pass information via X-User and X-Email headers to backend,
# # requires running with --set-xauthrequest flag
        auth_request_set $user   $upstream_http_x_auth_request_user;
        auth_request_set $email  $upstream_http_x_auth_request_email;
        proxy_set_header X-User  $user;
        proxy_set_header X-Email $email;
# if you enabled --pass-access-token, this will pass the token to the backend
        auth_request_set $token  $upstream_http_x_auth_request_access_token;
        proxy_set_header X-Access-Token $token;
# if you enabled --cookie-refresh, this is needed for it to work with auth_request
        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header Set-Cookie $auth_cookie;
# When using the --set-authorization-header flag, some provider&amp;#039;s cookies can exceed the 4kb
# limit and so the OAuth2 Proxy splits these into multiple parts.
# Nginx normally only copies the first `Set-Cookie` header from the auth_request to the response,
# so if your cookies are larger than 4kb, you will need to extract additional cookies manually.
        auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;
# Extract the Cookie attributes from the first Set-Cookie header and append them
# to the second part ($upstream_cookie_* variables only contain the raw cookie content)
        if ($auth_cookie ~* &amp;quot;(; .*)&amp;quot;) {
                set $auth_cookie_name_0 $auth_cookie;
        set $auth_cookie_name_1 &amp;quot;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;quot;;
        }
# Send both Set-Cookie headers now if there was a second part
        if ($auth_cookie_name_upstream_1) {
        add_header Set-Cookie $auth_cookie_name_0;
        add_header Set-Cookie $auth_cookie_name_1;
        }
        proxy_pass http://192.168.1.72:8080;
#       proxy_pass http://127.0.0.1:3000/;
        proxy_set_header Host      $host;
        proxy_http_version 1.1;
    }&lt;/pre&gt;
</content>
        <summary>
&lt;p&gt;
Installation du raccourcisseur d&amp;#039;url
&lt;/p&gt;

&lt;p&gt;
Installation des paquets :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install build-essential libssl-dev zlib1g-dev sudo git
sudo apt-get install libpng-dev
sudo cpan Carton
sudo apt-get install memcached
sudo apt-get install libmariadbd-dev&lt;/pre&gt;

&lt;p&gt;
Ajout d&amp;#039;un utilisateur dédié
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd lstu
groupadd lstu
mkdir -p /var/www/lstu
chown -R lstu:lstu /var/www/lstu
usermod -d /var/www/lstu/ lstu&lt;/pre&gt;

&lt;p&gt;
Récupération du dépôt via git
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://framagit.org/luc/lstu.git&lt;/pre&gt;

&lt;p&gt;
mise à jour 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd  /var/www/lstu
git pull&lt;/pre&gt;

&lt;p&gt;
Installation des dépendance
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su lstu -s /bin/bash
carton install
carton install --deployment  --without=test --without=sqlite --without=postgresql --without=ldap &lt;/pre&gt;

&lt;p&gt;
test du service ou mode manuel
start
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;carton exec hypnotoad   script/lstu&lt;/pre&gt;

&lt;p&gt;
stop
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;carton exec hypnotoad  -s  script/lstu&lt;/pre&gt;

&lt;p&gt;
Paramétrage de la configuration LDAP 
&lt;/p&gt;

&lt;p&gt;
démarrage auto
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp utilities/lstu@.service /etc/systemd/system/

vérification des chemins et utilisateurs dans : 
&amp;lt;code&amp;gt;
vim /etc/systemd/system/lstu.service&lt;/pre&gt;

&lt;p&gt;
utilisation du service
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload
systemctl enable lstu.service
systemctl start lstu.service
systemctl status lstu.service&lt;/pre&gt;

&lt;p&gt;
vérification du pid
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ls -la  /var/www/lstu/script/hypnotoad.pid&lt;/pre&gt;

&lt;p&gt;
au cas ou
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown -R  lstu:www-data /var/www/lstu/script/
chmod -R 774 /var/www/lstu/script/&lt;/pre&gt;

&lt;p&gt;
entrées dans le Vhost Nginx
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; location / {
        error_page 404 = /oauth2/auth ;
        proxy_pass http://192.168.1.72:8080;
        proxy_set_header Host      $host;
        proxy_http_version 1.1;
        }

location /oauth2/ {
proxy_pass   http://127.0.0.1:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP   $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Auth-Request-Redirect $request_uri;
# or, if you are handling multiple domains:
# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
}

location = /oauth2/auth {
proxy_pass   http://127.0.0.1:4180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
# nginx auth_request includes headers but not body
proxy_set_header Content-Length   &amp;quot;&amp;quot;;
proxy_pass_request_body   off;
}

location  = / {
        auth_request /oauth2/auth;
        error_page 401 = /oauth2/sign_in;
# # pass information via X-User and X-Email headers to backend,
# # requires running with --set-xauthrequest flag
        auth_request_set $user   $upstream_http_x_auth_request_user;
        auth_request_set $email  $upstream_http_x_auth_request_email;
        proxy_set_header X-User  $user;
        proxy_set_header X-Email $email;
# if you enabled --pass-access-token, this will pass the token to the backend
        auth_request_set $token  $upstream_http_x_auth_request_access_token;
        proxy_set_header X-Access-Token $token;
# if you enabled --cookie-refresh, this is needed for it to work with auth_request
        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header Set-Cookie $auth_cookie;
# When using the --set-authorization-header flag, some provider&amp;#039;s cookies can exceed the 4kb
# limit and so the OAuth2 Proxy splits these into multiple parts.
# Nginx normally only copies the first `Set-Cookie` header from the auth_request to the response,
# so if your cookies are larger than 4kb, you will need to extract additional cookies manually.
        auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;
# Extract the Cookie attributes from the first Set-Cookie header and append them
# to the second part ($upstream_cookie_* variables only contain the raw cookie content)
        if ($auth_cookie ~* &amp;quot;(; .*)&amp;quot;) {
                set $auth_cookie_name_0 $auth_cookie;
        set $auth_cookie_name_1 &amp;quot;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;quot;;
        }
# Send both Set-Cookie headers now if there was a second part
        if ($auth_cookie_name_upstream_1) {
        add_header Set-Cookie $auth_cookie_name_0;
        add_header Set-Cookie $auth_cookie_name_1;
        }
        proxy_pass http://192.168.1.72:8080;
#       proxy_pass http://127.0.0.1:3000/;
        proxy_set_header Host      $host;
        proxy_http_version 1.1;
    }&lt;/pre&gt;
</summary>
    </entry>
    <entry>
        <title>si:logiciels:lufi</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/lufi?rev=1745530231&amp;do=diff"/>
        <published>2025-04-24T21:30:31+00:00</published>
        <updated>2025-04-24T21:30:31+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/lufi?rev=1745530231&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;lufi&quot;&gt;Lufi&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Vhost pour le service Fichiers de Parinux
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lufi&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lufi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-64&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;port_80_avec_let_s_encrypt&quot;&gt;Port 80 avec let&amp;#039;s encrypt&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;
server {
listen  192.168.1.60:80;
server_tokens off;


server_name fichiers.parinux.org echanges.parinux.org transfert.parinux.org onenagros.parinux.org fichierslourds.parinux.org ;
access_log /var/log/nginx/fichiers-access.log;
error_log /var/log/nginx/fichiers-error.log;

	location ~ /.well-known/acme-challenge/ {
# Set correct content type. According to this:
# https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29
# Current specification requires &amp;quot;text/plain&amp;quot; or no content header at all.
# It seems that &amp;quot;text/plain&amp;quot; is a safe option.
	default_type &amp;quot;text/plain&amp;quot;;
# This directory must be the same as in /etc/letsencrypt/cli.ini
# as &amp;quot;webroot-path&amp;quot; parameter. Also don&amp;#039;t forget to set &amp;quot;authenticator&amp;quot; parameter
# there to &amp;quot;webroot&amp;quot;.
# Do NOT use alias, use root! Target directory is located here:
# /var/www/common/letsencrypt/.well-known/acme-challenge/
	root /var/www/letsencrypt;
	}
	location / {
		return 301 https://transfert.parinux.org$request_uri;
                proxy_pass http://192.168.1.82/;
                proxy_set_header Host  $host;
                proxy_http_version 1.1;
	}
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Port 80 avec let&amp;#039;s encrypt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;port_80_avec_let_s_encrypt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;65-1263&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;port_443_et_sso_via_oauth2_proxy&quot;&gt;Port 443 et SSO via Oauth2 Proxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
on peut concaténer partial|r|download
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server {
    listen 192.168.1.60:443;
    server_name fichiers.parinux.org echanges.parinux.org transfert.parinux.org fichierslourds.parinux.org  onenagros.parinux.org ;
    access_log /var/log/nginx/fichiers-access.log;
    error_log /var/log/nginx/fichiers-error.log;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/fichiers.parinux.org/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/fichiers.parinux.org/privkey.pem;
  server_tokens off;

        index index index.html index.htm index.nginx-debian.html;


 ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES512+EECDH:AES512+EDH;
 ssl_dhparam /etc/nginx/ssl/dhparam.pem;

add_header Strict-Transport-Security &amp;quot;max-age=15552000;preload&amp;quot;;

 ssl_session_cache shared:SSL:1m;
 ssl_session_timeout  5m;
 ssl_protocols TLSv1.2;

 ssl_prefer_server_ciphers on;


    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options &amp;quot;SAMEORIGIN&amp;quot;;
    add_header X-XSS-Protection &amp;quot;1; mode=block&amp;quot;;
#    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

location /r {
        proxy_pass http://192.168.1.82:8081;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;

        }


location /partial {
        proxy_pass http://192.168.1.82:8081;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;


        }

location /download {
        proxy_pass http://192.168.1.82:8081;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;


        }

location ~* ^/(img|css|font|js)/ {
        proxy_pass http://192.168.1.82:8081;
        proxy_set_header Host      $host;
        proxy_http_version 1.1;
        add_header Expires &amp;quot;Thu, 31 Dec 2037 23:55:55 GMT&amp;quot;;
        add_header Cache-Control &amp;quot;public, max-age=315360000&amp;quot;;
}

location /oauth2/ {
	proxy_pass   http://192.168.1.82:4180;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP   $remote_addr;
	proxy_set_header X-Scheme $scheme;
	proxy_set_header X-Auth-Request-Redirect $request_uri;
	# or, if you are handling multiple domains:
	# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
	}

location = /oauth2/auth {
	proxy_pass   http://192.168.1.82:4180;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Scheme $scheme;
	# nginx auth_request includes headers but not body
	proxy_set_header Content-Length   &amp;quot;&amp;quot;;
	proxy_pass_request_body   off;
	}

location   / {
	auth_request /oauth2/auth;
	error_page 401 = /oauth2/sign_in;

	# # pass information via X-User and X-Email headers to backend,
	# # requires running with --set-xauthrequest flag
	auth_request_set $user   $upstream_http_x_auth_request_user;
	auth_request_set $email  $upstream_http_x_auth_request_email;
	proxy_set_header X-User  $user;
	proxy_set_header X-Email $email;

	# if you enabled --pass-access-token, this will pass the token to the backend
	auth_request_set $token  $upstream_http_x_auth_request_access_token;
	proxy_set_header X-Access-Token $token;

	# if you enabled --cookie-refresh, this is needed for it to work with auth_request
	auth_request_set $auth_cookie $upstream_http_set_cookie;
	add_header Set-Cookie $auth_cookie;

	# When using the --set-authorization-header flag, some provider&amp;#039;s cookies can exceed the 4kb
	# limit and so the OAuth2 Proxy splits these into multiple parts.
	# Nginx normally only copies the first `Set-Cookie` header from the auth_request to the response,
	# so if your cookies are larger than 4kb, you will need to extract additional cookies manually.
	auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;

	# Extract the Cookie attributes from the first Set-Cookie header and append them
	# to the second part ($upstream_cookie_* variables only contain the raw cookie content)
	if ($auth_cookie ~* &amp;quot;(; .*)&amp;quot;) {
		set $auth_cookie_name_0 $auth_cookie;
	set $auth_cookie_name_1 &amp;quot;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;quot;;
	}

	# Send both Set-Cookie headers now if there was a second part
	if ($auth_cookie_name_upstream_1) {
	add_header Set-Cookie $auth_cookie_name_0;
	add_header Set-Cookie $auth_cookie_name_1;
	}

         # HTTPS only header, improves security
         #add_header Strict-Transport-Security &amp;quot;max-age=15768000&amp;quot;;

         # Adapt this to your configuration (port, subdirectory (see below))
         proxy_pass  http://192.168.1.82:8081;

         # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection &amp;quot;upgrade&amp;quot;;
         proxy_http_version 1.1;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         # If you want to log the remote port of the file senders, you&amp;#039;ll need that
         proxy_set_header X-Remote-Port $remote_port;
         proxy_set_header X-Forwarded-Proto $scheme;

         # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
         proxy_redirect     off;
    }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Port 443 et SSO via Oauth2 Proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;port_443_et_sso_via_oauth2_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1264-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;lufi&quot;&gt;Lufi&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Vhost pour le service Fichiers de Parinux
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lufi&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lufi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-64&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;port_80_avec_let_s_encrypt&quot;&gt;Port 80 avec let&amp;#039;s encrypt&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;
server {
listen  192.168.1.60:80;
server_tokens off;


server_name fichiers.parinux.org echanges.parinux.org transfert.parinux.org onenagros.parinux.org fichierslourds.parinux.org ;
access_log /var/log/nginx/fichiers-access.log;
error_log /var/log/nginx/fichiers-error.log;

	location ~ /.well-known/acme-challenge/ {
# Set correct content type. According to this:
# https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29
# Current specification requires &amp;quot;text/plain&amp;quot; or no content header at all.
# It seems that &amp;quot;text/plain&amp;quot; is a safe option.
	default_type &amp;quot;text/plain&amp;quot;;
# This directory must be the same as in /etc/letsencrypt/cli.ini
# as &amp;quot;webroot-path&amp;quot; parameter. Also don&amp;#039;t forget to set &amp;quot;authenticator&amp;quot; parameter
# there to &amp;quot;webroot&amp;quot;.
# Do NOT use alias, use root! Target directory is located here:
# /var/www/common/letsencrypt/.well-known/acme-challenge/
	root /var/www/letsencrypt;
	}
	location / {
		return 301 https://transfert.parinux.org$request_uri;
                proxy_pass http://192.168.1.82/;
                proxy_set_header Host  $host;
                proxy_http_version 1.1;
	}
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Port 80 avec let&amp;#039;s encrypt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;port_80_avec_let_s_encrypt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;65-1263&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;port_443_et_sso_via_oauth2_proxy&quot;&gt;Port 443 et SSO via Oauth2 Proxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
on peut concaténer partial|r|download
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server {
    listen 192.168.1.60:443;
    server_name fichiers.parinux.org echanges.parinux.org transfert.parinux.org fichierslourds.parinux.org  onenagros.parinux.org ;
    access_log /var/log/nginx/fichiers-access.log;
    error_log /var/log/nginx/fichiers-error.log;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/fichiers.parinux.org/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/fichiers.parinux.org/privkey.pem;
  server_tokens off;

        index index index.html index.htm index.nginx-debian.html;


 ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES512+EECDH:AES512+EDH;
 ssl_dhparam /etc/nginx/ssl/dhparam.pem;

add_header Strict-Transport-Security &amp;quot;max-age=15552000;preload&amp;quot;;

 ssl_session_cache shared:SSL:1m;
 ssl_session_timeout  5m;
 ssl_protocols TLSv1.2;

 ssl_prefer_server_ciphers on;


    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options &amp;quot;SAMEORIGIN&amp;quot;;
    add_header X-XSS-Protection &amp;quot;1; mode=block&amp;quot;;
#    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

location /r {
        proxy_pass http://192.168.1.82:8081;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;

        }


location /partial {
        proxy_pass http://192.168.1.82:8081;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;


        }

location /download {
        proxy_pass http://192.168.1.82:8081;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;


        }

location ~* ^/(img|css|font|js)/ {
        proxy_pass http://192.168.1.82:8081;
        proxy_set_header Host      $host;
        proxy_http_version 1.1;
        add_header Expires &amp;quot;Thu, 31 Dec 2037 23:55:55 GMT&amp;quot;;
        add_header Cache-Control &amp;quot;public, max-age=315360000&amp;quot;;
}

location /oauth2/ {
	proxy_pass   http://192.168.1.82:4180;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP   $remote_addr;
	proxy_set_header X-Scheme $scheme;
	proxy_set_header X-Auth-Request-Redirect $request_uri;
	# or, if you are handling multiple domains:
	# proxy_set_header X-Auth-Request-Redirect $scheme://$host$request_uri;
	}

location = /oauth2/auth {
	proxy_pass   http://192.168.1.82:4180;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Scheme $scheme;
	# nginx auth_request includes headers but not body
	proxy_set_header Content-Length   &amp;quot;&amp;quot;;
	proxy_pass_request_body   off;
	}

location   / {
	auth_request /oauth2/auth;
	error_page 401 = /oauth2/sign_in;

	# # pass information via X-User and X-Email headers to backend,
	# # requires running with --set-xauthrequest flag
	auth_request_set $user   $upstream_http_x_auth_request_user;
	auth_request_set $email  $upstream_http_x_auth_request_email;
	proxy_set_header X-User  $user;
	proxy_set_header X-Email $email;

	# if you enabled --pass-access-token, this will pass the token to the backend
	auth_request_set $token  $upstream_http_x_auth_request_access_token;
	proxy_set_header X-Access-Token $token;

	# if you enabled --cookie-refresh, this is needed for it to work with auth_request
	auth_request_set $auth_cookie $upstream_http_set_cookie;
	add_header Set-Cookie $auth_cookie;

	# When using the --set-authorization-header flag, some provider&amp;#039;s cookies can exceed the 4kb
	# limit and so the OAuth2 Proxy splits these into multiple parts.
	# Nginx normally only copies the first `Set-Cookie` header from the auth_request to the response,
	# so if your cookies are larger than 4kb, you will need to extract additional cookies manually.
	auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;

	# Extract the Cookie attributes from the first Set-Cookie header and append them
	# to the second part ($upstream_cookie_* variables only contain the raw cookie content)
	if ($auth_cookie ~* &amp;quot;(; .*)&amp;quot;) {
		set $auth_cookie_name_0 $auth_cookie;
	set $auth_cookie_name_1 &amp;quot;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;quot;;
	}

	# Send both Set-Cookie headers now if there was a second part
	if ($auth_cookie_name_upstream_1) {
	add_header Set-Cookie $auth_cookie_name_0;
	add_header Set-Cookie $auth_cookie_name_1;
	}

         # HTTPS only header, improves security
         #add_header Strict-Transport-Security &amp;quot;max-age=15768000&amp;quot;;

         # Adapt this to your configuration (port, subdirectory (see below))
         proxy_pass  http://192.168.1.82:8081;

         # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection &amp;quot;upgrade&amp;quot;;
         proxy_http_version 1.1;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         # If you want to log the remote port of the file senders, you&amp;#039;ll need that
         proxy_set_header X-Remote-Port $remote_port;
         proxy_set_header X-Forwarded-Proto $scheme;

         # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
         proxy_redirect     off;
    }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Port 443 et SSO via Oauth2 Proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;port_443_et_sso_via_oauth2_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1264-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:lufim</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/lufim?rev=1745529669&amp;do=diff"/>
        <published>2025-04-24T21:21:09+00:00</published>
        <updated>2025-04-24T21:21:09+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/lufim?rev=1745529669&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;p&gt;
COnfig vhost pour lufim en SSO via oauth2proxy
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;location / {
        proxy_pass http://192.168.1.84:8080;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;

        }&lt;/pre&gt;

&lt;p&gt;
et pour la partie accueil qui est authentifier le même vhost que lstu avec juste
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;location = / {
        auth_request /oauth2/auth;
        error_page 401 = /oauth2/sign_in;
        # # pass information via X-User and X-Email headers to backend,
        # # requires running with --set-xauthrequest flag
        auth_request_set $user   $upstream_http_x_auth_request_user;
        auth_request_set $email  $upstream_http_x_auth_request_email;
        proxy_set_header X-User  $user;
        proxy_set_header X-Email $email;

        # if you enabled --pass-access-token, this will pass the token to the backend
        auth_request_set $token  $upstream_http_x_auth_request_access_token;
        proxy_set_header X-Access-Token $token;

        # if you enabled --cookie-refresh, this is needed for it to work with auth_request
        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header Set-Cookie $auth_cookie;

        # When using the --set-authorization-header flag, some provider&amp;#039;s cookies can exceed the 4kb
        # limit and so the OAuth2 Proxy splits these into multiple parts.
        # Nginx normally only copies the first `Set-Cookie` header from the auth_request to the response,
        # so if your cookies are larger than 4kb, you will need to extract additional cookies manually.
        auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;

        # Extract the Cookie attributes from the first Set-Cookie header and append them
        # to the second part ($upstream_cookie_* variables only contain the raw cookie content)
        if ($auth_cookie ~* &amp;quot;(; .*)&amp;quot;) {
                set $auth_cookie_name_0 $auth_cookie;
        set $auth_cookie_name_1 &amp;quot;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;quot;;
        }

        # Send both Set-Cookie headers now if there was a second part
        if ($auth_cookie_name_upstream_1) {
        add_header Set-Cookie $auth_cookie_name_0;
        add_header Set-Cookie $auth_cookie_name_1;
        }

         # HTTPS only header, improves security
         #add_header Strict-Transport-Security &amp;quot;max-age=15768000&amp;quot;;

         # Adapt this to your configuration (port, subdirectory (see below))
         proxy_pass  http://192.168.1.84:8080;

         # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection &amp;quot;upgrade&amp;quot;;
         proxy_http_version 1.1;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         # If you want to log the remote port of the file senders, you&amp;#039;ll need that
         proxy_set_header X-Remote-Port $remote_port;
         proxy_set_header X-Forwarded-Proto $scheme;

         # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
         proxy_redirect     off;
    }
&lt;/pre&gt;
</content>
        <summary>
&lt;p&gt;
COnfig vhost pour lufim en SSO via oauth2proxy
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;location / {
        proxy_pass http://192.168.1.84:8080;
        # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &amp;quot;upgrade&amp;quot;;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the file senders, you&amp;#039;ll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
        proxy_redirect     off;

        }&lt;/pre&gt;

&lt;p&gt;
et pour la partie accueil qui est authentifier le même vhost que lstu avec juste
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;location = / {
        auth_request /oauth2/auth;
        error_page 401 = /oauth2/sign_in;
        # # pass information via X-User and X-Email headers to backend,
        # # requires running with --set-xauthrequest flag
        auth_request_set $user   $upstream_http_x_auth_request_user;
        auth_request_set $email  $upstream_http_x_auth_request_email;
        proxy_set_header X-User  $user;
        proxy_set_header X-Email $email;

        # if you enabled --pass-access-token, this will pass the token to the backend
        auth_request_set $token  $upstream_http_x_auth_request_access_token;
        proxy_set_header X-Access-Token $token;

        # if you enabled --cookie-refresh, this is needed for it to work with auth_request
        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header Set-Cookie $auth_cookie;

        # When using the --set-authorization-header flag, some provider&amp;#039;s cookies can exceed the 4kb
        # limit and so the OAuth2 Proxy splits these into multiple parts.
        # Nginx normally only copies the first `Set-Cookie` header from the auth_request to the response,
        # so if your cookies are larger than 4kb, you will need to extract additional cookies manually.
        auth_request_set $auth_cookie_name_upstream_1 $upstream_cookie_auth_cookie_name_1;

        # Extract the Cookie attributes from the first Set-Cookie header and append them
        # to the second part ($upstream_cookie_* variables only contain the raw cookie content)
        if ($auth_cookie ~* &amp;quot;(; .*)&amp;quot;) {
                set $auth_cookie_name_0 $auth_cookie;
        set $auth_cookie_name_1 &amp;quot;auth_cookie_name_1=$auth_cookie_name_upstream_1$1&amp;quot;;
        }

        # Send both Set-Cookie headers now if there was a second part
        if ($auth_cookie_name_upstream_1) {
        add_header Set-Cookie $auth_cookie_name_0;
        add_header Set-Cookie $auth_cookie_name_1;
        }

         # HTTPS only header, improves security
         #add_header Strict-Transport-Security &amp;quot;max-age=15768000&amp;quot;;

         # Adapt this to your configuration (port, subdirectory (see below))
         proxy_pass  http://192.168.1.84:8080;

         # Really important! Lufi uses WebSocket, it won&amp;#039;t work without this
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection &amp;quot;upgrade&amp;quot;;
         proxy_http_version 1.1;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         # If you want to log the remote port of the file senders, you&amp;#039;ll need that
         proxy_set_header X-Remote-Port $remote_port;
         proxy_set_header X-Forwarded-Proto $scheme;

         # We expect the downstream servers to redirect to the right hostname, so don&amp;#039;t do any rewrites here.
         proxy_redirect     off;
    }
&lt;/pre&gt;
</summary>
    </entry>
    <entry>
        <title>si:logiciels:matrix</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/matrix?rev=1745529329&amp;do=diff"/>
        <published>2025-04-24T21:15:29+00:00</published>
        <updated>2025-04-24T21:15:29+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/matrix?rev=1745529329&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;matrixinstance_sur_troll3&quot;&gt;Matrix: instance sur &amp;#039;&amp;#039;troll3&amp;#039;&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Matrix: instance sur &amp;#039;&amp;#039;troll3&amp;#039;&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;matrixinstance_sur_troll3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-47&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;conteneur_lxc&quot;&gt;Conteneur LXC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Nom: &lt;code&gt;matrix&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ports de sortie: &lt;code&gt;8448&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Conteneur LXC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conteneur_lxc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;48-128&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;documentations&quot;&gt;Documentations&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/synapse&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse&quot; rel=&quot;ugc nofollow&quot;&gt;Page officielle&lt;/a&gt; sur le serveur &lt;code&gt;synapse&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/matrix-synapse-ldap3&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-synapse-ldap3&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le plugin officielle pour LDAP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur la configuration d&amp;#039;une fédération&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/vector-im/riot-web/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vector-im/riot-web/&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le client &lt;code&gt;riot&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/matrix-appservice-irc&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-appservice-irc&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le bridge &lt;code&gt;&lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/matrix-bifrost&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-bifrost&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le bridge &lt;code&gt;XMPP&lt;/code&gt; (expérimental)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;129-727&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;installation_et_configuration_du_serveur_synapse&quot;&gt;Installation et configuration du serveur &amp;#039;synapse&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation et configuration du serveur &amp;#039;synapse&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_et_configuration_du_serveur_synapse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;728-792&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;prerequis&quot;&gt;Prérequis&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suivre les instructions a partir du &lt;a href=&quot;https://matrix-org.github.io/synapse/latest/setup/installation.html#debianubuntu&quot; class=&quot;urlextern&quot; title=&quot;https://matrix-org.github.io/synapse/latest/setup/installation.html#debianubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;paragraphe de la procédure officielle&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pr\u00e9requis&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;prerequis&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;793-982&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;installation_des_paquets&quot;&gt;Installation des paquets&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;apt-get install  matrix-synapse python-matrix-synapse-ldap3&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation des paquets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_des_paquets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;983-1085&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;pendant_l_installation_du_paquet_matrix-synapse&quot;&gt;Pendant l&amp;#039;installation du paquet &amp;#039;matrix-synapse&amp;#039;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Procédure peut-être à revoir
&lt;/p&gt;

&lt;p&gt;
Mettre le nom du serveur conformement au parametre SRV. Le nom mis ici est &lt;code&gt;parinux.org&lt;/code&gt;. Voir le paragraphe concernant &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/matrix#configuration-du-dns&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:matrix&quot; data-wiki-id=&quot;si:logiciels:matrix&quot;&gt;la configuration du DNS&lt;/a&gt; pour plus de details.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/configuration-synapse.png?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:configuration-synapse.png&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/configuration-synapse.png?w=200&amp;amp;tok=b91950&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Desactiver l&amp;#039;envoi de statistiques a l&amp;#039;attention des developpeurs.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/configuration-synapse_desactiver-envoi-stats.png?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:configuration-synapse_desactiver-envoi-stats.png&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/configuration-synapse_desactiver-envoi-stats.png?w=200&amp;amp;tok=688254&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pendant l&amp;#039;installation du paquet &amp;#039;matrix-synapse&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pendant_l_installation_du_paquet_matrix-synapse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1086-1557&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;configuration_du_serveur_synapse&quot;&gt;Configuration du serveur &amp;#039;synapse&amp;#039;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Fichier de configuration: &lt;code&gt;/etc/matrix-synapse/homeserver.yaml&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Paragraphe contenant les parametres pour LDAP:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# password_providers:
     - module: &amp;quot;ldap_auth_provider.LdapAuthProvider&amp;quot; &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration du serveur &amp;#039;synapse&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_du_serveur_synapse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1558-1800&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;configuration_de_la_base_de_donnee&quot;&gt;Configuration de la base de donnée&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Voir &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/postgres.rst&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/postgres.rst&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Paquets à installer:
&lt;code&gt;python-psycopg2 libpq-dev&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Modifier ensuite la section &lt;code&gt;database&lt;/code&gt; dans &lt;code&gt;/etc/matrix-synapse/homeserver.yaml&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;database:
    name: psycopg2
    args:
        user: synapse_user
        password: &amp;lt;pass&amp;gt;
        database: synapse
        host: &amp;lt;host&amp;gt;
        cp_min: 5
        cp_max: 10&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de la base de donn\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_la_base_de_donnee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1801-2272&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;configuration_du_dns&quot;&gt;Configuration du DNS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La configuration est faite d&amp;#039;apres les instructions de &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; rel=&quot;ugc nofollow&quot;&gt;ce paragraphe&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration du DNS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_du_dns&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2273-2447&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;idealement&quot;&gt;Idéalement&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Record SRV à mettre, en tenant compte que &lt;code&gt;parinux.org&lt;/code&gt; est le nom utilise pour communiquer avec la fédération et &lt;code&gt;synapse.parinux.org&lt;/code&gt; est l&amp;#039;adresse effective du serveur &lt;code&gt;synapse&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;_matrix._tcp.parinux.org 3600 IN SRV 10 0 8448 synapse.parinux.org.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Id\u00e9alement&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;idealement&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2448-2736&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;pour_un_test&quot;&gt;Pour un test&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Record SRV à mettre en attendant:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;_matrix._tcp.matrix.parinux.org 3600 IN SRV 10 0 443 matrix.parinux.org.&lt;/pre&gt;

&lt;p&gt;
Commande &lt;code&gt;dig &lt;/code&gt; à faire passer pour voir le changement:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dig @parinux.org -t srv _matrix._tcp.matrix.parinux.org&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pour un test&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pour_un_test&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2737-2993&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;reverse_proxy&quot;&gt;Reverse Proxy&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
D&amp;#039;après la &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md&quot; rel=&quot;ugc nofollow&quot;&gt;doc officielle&lt;/a&gt;, la configuration du reverse proxy s&amp;#039;effectue comme suit pour un &lt;code&gt;nginx&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  server {
      listen 443 ssl;
      listen [::]:443 ssl;
      server_name matrix.parinux.org;

      location /_matrix {
          proxy_pass http://&amp;lt;adresse du conteneur LXC&amp;gt;:8448;
          proxy_set_header X-Forwarded-For $remote_addr;
      }
  }&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;En l&amp;#039;état actuelle, un utilisateur d&amp;#039;un serveur de la fédération ne peut pas joindre un salon de l&amp;#039;instance de parinux: &lt;code&gt;Invalid signature for server matrix.org with key ed25519:auto: Unable to verify signature for matrix.org &lt;/code&gt;. Ce bug a déjà été &lt;a href=&quot;https://github.com/matrix-org/synapse/issues/4858&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/issues/4858&quot; rel=&quot;ugc nofollow&quot;&gt;constatée&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Reverse Proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reverse_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2994-3802&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;configuration_de_la_voip&quot;&gt;Configuration de la VoIP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut d&amp;#039;abord installer &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/turn-howto.rst&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/turn-howto.rst&quot; rel=&quot;ugc nofollow&quot;&gt;un serveur TURN&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de la VoIP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_la_voip&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;3803-3957&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;demarrer_le_serveur&quot;&gt;Demarrer le serveur&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl start matrix-synapse.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Demarrer le serveur&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;demarrer_le_serveur&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;3958-4031&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;redirection_de_port&quot;&gt;Redirection de port&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Redirection de port du reverse proxy sur le port &lt;code&gt;8008&lt;/code&gt; du conteneur.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Redirection de port&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;redirection_de_port&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;4032-4137&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;procedure_de_debug&quot;&gt;Procedure de debug&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Voir cette &lt;a href=&quot;https://github.com/matrix-org/matrix-synapse-ldap3#troubleshooting-and-debugging&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-synapse-ldap3#troubleshooting-and-debugging&quot; rel=&quot;ugc nofollow&quot;&gt;page&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Le fichier de debug est &lt;code&gt;/etc/matrix-synapse/conf.d/ldap_debug.yaml&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Procedure de debug&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;procedure_de_debug&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;4138-4345&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit18&quot; id=&quot;installation_et_configuration_du_client_riot&quot;&gt;Installation et configuration du client &amp;#039;riot&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ajouter la ligne suivante dans le fichier &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;deb https://packages.riot.im/debian stretch main&lt;/pre&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Faire un paquet debian &lt;code&gt;riot-webapp&lt;/code&gt; à partir des &lt;a href=&quot;https://github.com/vector-im/riot-web/releases&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vector-im/riot-web/releases&quot; rel=&quot;ugc nofollow&quot;&gt;releases github&lt;/a&gt;. Voir aussi le &lt;a href=&quot;https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/riot&quot; class=&quot;urlextern&quot; title=&quot;https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/riot&quot; rel=&quot;ugc nofollow&quot;&gt;PKGBUILD&lt;/a&gt; d&amp;#039;Archlinux.
&lt;/p&gt;

&lt;p&gt;
Installation des paquets (serveur web):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install nginx&lt;/pre&gt;

&lt;p&gt;
Mettre en place le répertoir &lt;code&gt;webapps&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir -p /opt/webapps/riot/versions&lt;/pre&gt;

&lt;p&gt;
Télécharger et importer de la clé publique
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://packages.riot.im/riot-release-key.asc
gpg --import riot-release-key.asc&lt;/pre&gt;

&lt;p&gt;
 Télécharger l&amp;#039;archive, sa signature associée, puis vérifier
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/vector-im/riot-web/releases/download/v1.2.2/riot-v1.2.2.tar.gz{.asc,}
gpg --verify riot-v1.2.2.tar.gz{.asc,}&lt;/pre&gt;

&lt;p&gt;
Extraire la dernière version stable de l&amp;#039;archive issue de &lt;a href=&quot;https://github.com/vector-im/riot-web/releases&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vector-im/riot-web/releases&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt; dans &lt;code&gt;/opt/webapps/riot/versions&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -C /opt/webapps/riot/versions -xvf riot-v1.2.2.tar.gz&lt;/pre&gt;

&lt;p&gt;
Faire un lien symbolique
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ln -s /opt/webapps/riot/versions/riot-v1.2.2 /opt/webapps/riot/main&lt;/pre&gt;

&lt;p&gt;
Renommer le fichier &lt;code&gt;config.json&lt;/code&gt; en &lt;code&gt;config.matrix.parinux.org.json&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mv /opt/webapps/riot/main/{config.json,config.matrix.parinux.org.json}&lt;/pre&gt;

&lt;p&gt;
Activer le service
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl status nginx&lt;/pre&gt;

&lt;p&gt;
Le fichier de configuration du client &lt;code&gt;riot&lt;/code&gt; se trouve dans le fichier &lt;code&gt;/etc/nginx/conf.d/riot.conf&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation et configuration du client &amp;#039;riot&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_et_configuration_du_client_riot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;4346-5899&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit19&quot; id=&quot;tests&quot;&gt;Tests&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tests&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tests&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;5900-5919&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;federation&quot;&gt;Fédération&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Aller sur le site &lt;a href=&quot;https://matrix.org/federationtester/&quot; class=&quot;urlextern&quot; title=&quot;https://matrix.org/federationtester/&quot; rel=&quot;ugc nofollow&quot;&gt;Federation Tester&lt;/a&gt; pour vérifier si la fédération est activée.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;F\u00e9d\u00e9ration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;federation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;5920-6070&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;clients&quot;&gt;Clients&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Prendre un &lt;a href=&quot;https://riot.im/download/desktop/&quot; class=&quot;urlextern&quot; title=&quot;https://riot.im/download/desktop/&quot; rel=&quot;ugc nofollow&quot;&gt;client riot&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;ouvrir, puis cliquer sur &lt;code&gt;Changer&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion1-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion1-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion1-indic.jpg?w=200&amp;amp;tok=26f8b4&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Modifier le champs &lt;code&gt;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; du serveur d&amp;#039;accueil&lt;/code&gt; en &lt;code&gt;&lt;a href=&quot;https://matrix.parinux.org&quot; class=&quot;urlextern&quot; title=&quot;https://matrix.parinux.org&quot; rel=&quot;ugc nofollow&quot;&gt;https://matrix.parinux.org&lt;/a&gt;&lt;/code&gt;, puis cliquer sur &lt;code&gt;Suivant&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion2-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion2-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion2-indic.jpg?w=200&amp;amp;tok=aed595&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Mettre ses identifiants LDAP en remplissant les champs &lt;code&gt;Nom d&amp;#039;utilisateur&lt;/code&gt; et &lt;code&gt;Mot de passe&lt;/code&gt;, puis cliquer sur &lt;code&gt;Se connecter&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion3-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion3-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion3-indic.jpg?w=200&amp;amp;tok=9f5121&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
La fenêtre d&amp;#039;une connexion réussie ressemble à ça
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion4-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion4-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion4-indic.jpg?w=200&amp;amp;tok=d86d0e&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Clients&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;clients&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;6071-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;matrixinstance_sur_troll3&quot;&gt;Matrix: instance sur &amp;#039;&amp;#039;troll3&amp;#039;&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Matrix: instance sur &amp;#039;&amp;#039;troll3&amp;#039;&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;matrixinstance_sur_troll3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-47&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;conteneur_lxc&quot;&gt;Conteneur LXC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Nom: &lt;code&gt;matrix&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ports de sortie: &lt;code&gt;8448&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Conteneur LXC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;conteneur_lxc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;48-128&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;documentations&quot;&gt;Documentations&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/synapse&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse&quot; rel=&quot;ugc nofollow&quot;&gt;Page officielle&lt;/a&gt; sur le serveur &lt;code&gt;synapse&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/matrix-synapse-ldap3&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-synapse-ldap3&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le plugin officielle pour LDAP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur la configuration d&amp;#039;une fédération&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/vector-im/riot-web/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vector-im/riot-web/&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le client &lt;code&gt;riot&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/matrix-appservice-irc&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-appservice-irc&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le bridge &lt;code&gt;&lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/matrix-org/matrix-bifrost&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-bifrost&quot; rel=&quot;ugc nofollow&quot;&gt;Page&lt;/a&gt; sur le bridge &lt;code&gt;XMPP&lt;/code&gt; (expérimental)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;129-727&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;installation_et_configuration_du_serveur_synapse&quot;&gt;Installation et configuration du serveur &amp;#039;synapse&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation et configuration du serveur &amp;#039;synapse&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_et_configuration_du_serveur_synapse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;728-792&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;prerequis&quot;&gt;Prérequis&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suivre les instructions a partir du &lt;a href=&quot;https://matrix-org.github.io/synapse/latest/setup/installation.html#debianubuntu&quot; class=&quot;urlextern&quot; title=&quot;https://matrix-org.github.io/synapse/latest/setup/installation.html#debianubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;paragraphe de la procédure officielle&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pr\u00e9requis&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;prerequis&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;793-982&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;installation_des_paquets&quot;&gt;Installation des paquets&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;apt-get install  matrix-synapse python-matrix-synapse-ldap3&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation des paquets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_des_paquets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;983-1085&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;pendant_l_installation_du_paquet_matrix-synapse&quot;&gt;Pendant l&amp;#039;installation du paquet &amp;#039;matrix-synapse&amp;#039;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Procédure peut-être à revoir
&lt;/p&gt;

&lt;p&gt;
Mettre le nom du serveur conformement au parametre SRV. Le nom mis ici est &lt;code&gt;parinux.org&lt;/code&gt;. Voir le paragraphe concernant &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/matrix#configuration-du-dns&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:matrix&quot; data-wiki-id=&quot;si:logiciels:matrix&quot;&gt;la configuration du DNS&lt;/a&gt; pour plus de details.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/configuration-synapse.png?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:configuration-synapse.png&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/configuration-synapse.png?w=200&amp;amp;tok=b91950&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Desactiver l&amp;#039;envoi de statistiques a l&amp;#039;attention des developpeurs.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/configuration-synapse_desactiver-envoi-stats.png?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:configuration-synapse_desactiver-envoi-stats.png&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/configuration-synapse_desactiver-envoi-stats.png?w=200&amp;amp;tok=688254&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pendant l&amp;#039;installation du paquet &amp;#039;matrix-synapse&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pendant_l_installation_du_paquet_matrix-synapse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1086-1557&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;configuration_du_serveur_synapse&quot;&gt;Configuration du serveur &amp;#039;synapse&amp;#039;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Fichier de configuration: &lt;code&gt;/etc/matrix-synapse/homeserver.yaml&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Paragraphe contenant les parametres pour LDAP:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# password_providers:
     - module: &amp;quot;ldap_auth_provider.LdapAuthProvider&amp;quot; &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration du serveur &amp;#039;synapse&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_du_serveur_synapse&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1558-1800&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;configuration_de_la_base_de_donnee&quot;&gt;Configuration de la base de donnée&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Voir &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/postgres.rst&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/postgres.rst&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Paquets à installer:
&lt;code&gt;python-psycopg2 libpq-dev&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Modifier ensuite la section &lt;code&gt;database&lt;/code&gt; dans &lt;code&gt;/etc/matrix-synapse/homeserver.yaml&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;database:
    name: psycopg2
    args:
        user: synapse_user
        password: &amp;lt;pass&amp;gt;
        database: synapse
        host: &amp;lt;host&amp;gt;
        cp_min: 5
        cp_max: 10&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de la base de donn\u00e9e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_la_base_de_donnee&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1801-2272&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;configuration_du_dns&quot;&gt;Configuration du DNS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
La configuration est faite d&amp;#039;apres les instructions de &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/federate.md&quot; rel=&quot;ugc nofollow&quot;&gt;ce paragraphe&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration du DNS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_du_dns&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2273-2447&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;idealement&quot;&gt;Idéalement&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Record SRV à mettre, en tenant compte que &lt;code&gt;parinux.org&lt;/code&gt; est le nom utilise pour communiquer avec la fédération et &lt;code&gt;synapse.parinux.org&lt;/code&gt; est l&amp;#039;adresse effective du serveur &lt;code&gt;synapse&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;_matrix._tcp.parinux.org 3600 IN SRV 10 0 8448 synapse.parinux.org.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Id\u00e9alement&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;idealement&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2448-2736&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;pour_un_test&quot;&gt;Pour un test&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Record SRV à mettre en attendant:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;_matrix._tcp.matrix.parinux.org 3600 IN SRV 10 0 443 matrix.parinux.org.&lt;/pre&gt;

&lt;p&gt;
Commande &lt;code&gt;dig &lt;/code&gt; à faire passer pour voir le changement:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dig @parinux.org -t srv _matrix._tcp.matrix.parinux.org&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pour un test&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pour_un_test&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2737-2993&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;reverse_proxy&quot;&gt;Reverse Proxy&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
D&amp;#039;après la &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md&quot; rel=&quot;ugc nofollow&quot;&gt;doc officielle&lt;/a&gt;, la configuration du reverse proxy s&amp;#039;effectue comme suit pour un &lt;code&gt;nginx&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  server {
      listen 443 ssl;
      listen [::]:443 ssl;
      server_name matrix.parinux.org;

      location /_matrix {
          proxy_pass http://&amp;lt;adresse du conteneur LXC&amp;gt;:8448;
          proxy_set_header X-Forwarded-For $remote_addr;
      }
  }&lt;/pre&gt;

&lt;p&gt;
&lt;em&gt;En l&amp;#039;état actuelle, un utilisateur d&amp;#039;un serveur de la fédération ne peut pas joindre un salon de l&amp;#039;instance de parinux: &lt;code&gt;Invalid signature for server matrix.org with key ed25519:auto: Unable to verify signature for matrix.org &lt;/code&gt;. Ce bug a déjà été &lt;a href=&quot;https://github.com/matrix-org/synapse/issues/4858&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/issues/4858&quot; rel=&quot;ugc nofollow&quot;&gt;constatée&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Reverse Proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reverse_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2994-3802&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;configuration_de_la_voip&quot;&gt;Configuration de la VoIP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Il faut d&amp;#039;abord installer &lt;a href=&quot;https://github.com/matrix-org/synapse/blob/master/docs/turn-howto.rst&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/synapse/blob/master/docs/turn-howto.rst&quot; rel=&quot;ugc nofollow&quot;&gt;un serveur TURN&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration de la VoIP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_de_la_voip&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;3803-3957&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;demarrer_le_serveur&quot;&gt;Demarrer le serveur&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl start matrix-synapse.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Demarrer le serveur&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;demarrer_le_serveur&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;3958-4031&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;redirection_de_port&quot;&gt;Redirection de port&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Redirection de port du reverse proxy sur le port &lt;code&gt;8008&lt;/code&gt; du conteneur.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Redirection de port&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;redirection_de_port&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;4032-4137&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;procedure_de_debug&quot;&gt;Procedure de debug&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Voir cette &lt;a href=&quot;https://github.com/matrix-org/matrix-synapse-ldap3#troubleshooting-and-debugging&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/matrix-org/matrix-synapse-ldap3#troubleshooting-and-debugging&quot; rel=&quot;ugc nofollow&quot;&gt;page&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Le fichier de debug est &lt;code&gt;/etc/matrix-synapse/conf.d/ldap_debug.yaml&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Procedure de debug&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;procedure_de_debug&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;4138-4345&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit18&quot; id=&quot;installation_et_configuration_du_client_riot&quot;&gt;Installation et configuration du client &amp;#039;riot&amp;#039;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ajouter la ligne suivante dans le fichier &lt;code&gt;/etc/apt/sources.list&lt;/code&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;deb https://packages.riot.im/debian stretch main&lt;/pre&gt;

&lt;p&gt;
&lt;img src=&quot;https://wiki.parinux.org/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Faire un paquet debian &lt;code&gt;riot-webapp&lt;/code&gt; à partir des &lt;a href=&quot;https://github.com/vector-im/riot-web/releases&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vector-im/riot-web/releases&quot; rel=&quot;ugc nofollow&quot;&gt;releases github&lt;/a&gt;. Voir aussi le &lt;a href=&quot;https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/riot&quot; class=&quot;urlextern&quot; title=&quot;https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/riot&quot; rel=&quot;ugc nofollow&quot;&gt;PKGBUILD&lt;/a&gt; d&amp;#039;Archlinux.
&lt;/p&gt;

&lt;p&gt;
Installation des paquets (serveur web):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install nginx&lt;/pre&gt;

&lt;p&gt;
Mettre en place le répertoir &lt;code&gt;webapps&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir -p /opt/webapps/riot/versions&lt;/pre&gt;

&lt;p&gt;
Télécharger et importer de la clé publique
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://packages.riot.im/riot-release-key.asc
gpg --import riot-release-key.asc&lt;/pre&gt;

&lt;p&gt;
 Télécharger l&amp;#039;archive, sa signature associée, puis vérifier
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/vector-im/riot-web/releases/download/v1.2.2/riot-v1.2.2.tar.gz{.asc,}
gpg --verify riot-v1.2.2.tar.gz{.asc,}&lt;/pre&gt;

&lt;p&gt;
Extraire la dernière version stable de l&amp;#039;archive issue de &lt;a href=&quot;https://github.com/vector-im/riot-web/releases&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vector-im/riot-web/releases&quot; rel=&quot;ugc nofollow&quot;&gt;cette page&lt;/a&gt; dans &lt;code&gt;/opt/webapps/riot/versions&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -C /opt/webapps/riot/versions -xvf riot-v1.2.2.tar.gz&lt;/pre&gt;

&lt;p&gt;
Faire un lien symbolique
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ln -s /opt/webapps/riot/versions/riot-v1.2.2 /opt/webapps/riot/main&lt;/pre&gt;

&lt;p&gt;
Renommer le fichier &lt;code&gt;config.json&lt;/code&gt; en &lt;code&gt;config.matrix.parinux.org.json&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mv /opt/webapps/riot/main/{config.json,config.matrix.parinux.org.json}&lt;/pre&gt;

&lt;p&gt;
Activer le service
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl status nginx&lt;/pre&gt;

&lt;p&gt;
Le fichier de configuration du client &lt;code&gt;riot&lt;/code&gt; se trouve dans le fichier &lt;code&gt;/etc/nginx/conf.d/riot.conf&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation et configuration du client &amp;#039;riot&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_et_configuration_du_client_riot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;4346-5899&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit19&quot; id=&quot;tests&quot;&gt;Tests&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tests&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tests&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;5900-5919&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;federation&quot;&gt;Fédération&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Aller sur le site &lt;a href=&quot;https://matrix.org/federationtester/&quot; class=&quot;urlextern&quot; title=&quot;https://matrix.org/federationtester/&quot; rel=&quot;ugc nofollow&quot;&gt;Federation Tester&lt;/a&gt; pour vérifier si la fédération est activée.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;F\u00e9d\u00e9ration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;federation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;5920-6070&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;clients&quot;&gt;Clients&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Prendre un &lt;a href=&quot;https://riot.im/download/desktop/&quot; class=&quot;urlextern&quot; title=&quot;https://riot.im/download/desktop/&quot; rel=&quot;ugc nofollow&quot;&gt;client riot&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
L&amp;#039;ouvrir, puis cliquer sur &lt;code&gt;Changer&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion1-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion1-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion1-indic.jpg?w=200&amp;amp;tok=26f8b4&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Modifier le champs &lt;code&gt;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; du serveur d&amp;#039;accueil&lt;/code&gt; en &lt;code&gt;&lt;a href=&quot;https://matrix.parinux.org&quot; class=&quot;urlextern&quot; title=&quot;https://matrix.parinux.org&quot; rel=&quot;ugc nofollow&quot;&gt;https://matrix.parinux.org&lt;/a&gt;&lt;/code&gt;, puis cliquer sur &lt;code&gt;Suivant&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion2-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion2-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion2-indic.jpg?w=200&amp;amp;tok=aed595&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Mettre ses identifiants LDAP en remplissant les champs &lt;code&gt;Nom d&amp;#039;utilisateur&lt;/code&gt; et &lt;code&gt;Mot de passe&lt;/code&gt;, puis cliquer sur &lt;code&gt;Se connecter&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion3-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion3-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion3-indic.jpg?w=200&amp;amp;tok=9f5121&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
La fenêtre d&amp;#039;une connexion réussie ressemble à ça
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.parinux.org/_detail/si/connexion4-indic.jpg?id=si%3Alogiciels%3Amatrix&quot; class=&quot;media&quot; title=&quot;si:connexion4-indic.jpg&quot;&gt;&lt;img src=&quot;https://wiki.parinux.org/_media/si/connexion4-indic.jpg?w=200&amp;amp;tok=d86d0e&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Clients&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;clients&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;6071-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:movim</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/movim?rev=1745529057&amp;do=diff"/>
        <published>2025-04-24T21:10:57+00:00</published>
        <updated>2025-04-24T21:10:57+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/movim?rev=1745529057&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;movim&quot;&gt;Movim&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Movim est une appli Web de microblogging et de discussion, un peu comme Mastodon, Diaspora, …
La particularité de Movim c&amp;#039;est d&amp;#039;être basé sur le protocole XMPP.
&lt;/p&gt;

&lt;p&gt;
Chez parinux le serveur XMPP est &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/ejabberd&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:ejabberd&quot; data-wiki-id=&quot;si:logiciels:ejabberd&quot;&gt;ejabberd&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-249&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;maintenance&quot;&gt;Maintenance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Maintenance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;maintenance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;250-274&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;logs_utiles&quot;&gt;Logs utiles&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;journalctl &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;journalctl &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; php7.3-fpm&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim.access.log&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logs utiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logs_utiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;275-447&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;relancer_movim&quot;&gt;Relancer Movim&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl restart movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Relancer Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;relancer_movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;448-516&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;donnees_a_sauvegarder&quot;&gt;Données à sauvegarder&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Movim ne stocke que très peu de données qui méritent d&amp;#039;être sauvegardées.
L&amp;#039;essentiel de données visibles dans Movim sont en réalité publiées sur les serveurs XMPP.
La base de données SQL utilisée par Movim sert essentiellement de cache pour éviter de solliciter systématiquement les serveurs XMPP.
&lt;/p&gt;

&lt;p&gt;
Les seules données originales produites par Movim sont les paramètres de configuration qui sont stockés dans la table &lt;em&gt;configuration&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Donn\u00e9es \u00e0 sauvegarder&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;donnees_a_sauvegarder&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;517-1005&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;mettre_a_jour&quot;&gt;Mettre à jour&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Si une nouvelle version est disponible au téléchargement au format &lt;em&gt;.tar.gz&lt;/em&gt; voici la procédure simple et générique pour mettre à jour Movim.
&lt;/p&gt;

&lt;p&gt;
Avant toute chose jeter un œil sur la &lt;a href=&quot;https://github.com/movim/movim/wiki/Install-Movim#update&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/movim/movim/wiki/Install-Movim#update&quot; rel=&quot;ugc nofollow&quot;&gt;page officielle&lt;/a&gt; au cas où il y aurait une procédure particulière pour cette version.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;upstream
curl &lt;span class=&quot;re5&quot;&gt;-JOLs&lt;/span&gt; https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;github.com&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;archive&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;x.xx.x.tar.gz
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; ..
&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xavf upstream&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;x.xx.x.tar.gz
&lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; db.inc.php movim-x.xx.x&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; public_html &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; movim-x.xx.x public_html
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; public_html
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim composer &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim php vendor&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;phinx migrate
systemctl restart movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mettre \u00e0 jour&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mettre_a_jour&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1006-1714&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Même s&amp;#039;il existe enfin un paquet Debian pour movim, il est loin d&amp;#039;être parfait et l&amp;#039;installation à l&amp;#039;ancienne se passe bien alors voici comment j&amp;#039;ai fait.
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;J&amp;#039;ai essayé de faire marcher movim avec MySQL car on avait déjà un serveur MySQL opérationnel que j&amp;#039;aurais aimé utiliser, mais Movim fonctionne vraiment très mal avec MySQL, dès l&amp;#039;installation.
Donc j&amp;#039;ai craqué et j&amp;#039;ai installé un postgresql en local (sans chercher à voir si on avait déjà un postgresql quelque part, mais c&amp;#039;est pas grave, si besoin on déplacera la BDD là où il faut).&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1715-2305&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;pre-requis_apt&quot;&gt;Pré-requis APT&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; apache2 php-fpm php-pgsql \
 php-curl php-gd php-mbstring php-xml \
 composer php-symfony&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pr\u00e9-requis APT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pre-requis_apt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2306-2454&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;creer_un_utilisateur_systeme_dedie&quot;&gt;Créer un utilisateur système dédié&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;useradd &lt;span class=&quot;re5&quot;&gt;--system&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--create-home&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--shell&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nologin movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9er un utilisateur syst\u00e8me d\u00e9di\u00e9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creer_un_utilisateur_systeme_dedie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2455-2600&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;preparer_une_base_de_donnees&quot;&gt;Préparer une base de données&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Installer postgresql si besoin :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; postgresql&lt;/pre&gt;

&lt;p&gt;
Puis créer un utilisateur et une base dédiés à Movim.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; postgres createuser &lt;span class=&quot;re5&quot;&gt;--pwprompt&lt;/span&gt; movim
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; postgres createdb &lt;span class=&quot;re5&quot;&gt;-O&lt;/span&gt; movim movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pr\u00e9parer une base de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;preparer_une_base_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2601-2883&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;deployer_le_code_de_movim&quot;&gt;Déployer le code de Movim&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim
&lt;span class=&quot;kw2&quot;&gt;mkdir&lt;/span&gt; upstream
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; upstream
curl &lt;span class=&quot;re5&quot;&gt;-JOLs&lt;/span&gt; https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;github.com&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;archive&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;0.14.1.tar.gz
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; ..
&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xavf upstream&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim-0.14.1.tar.gz
&lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; movim-0.14.1 public_html
&lt;span class=&quot;kw2&quot;&gt;chown&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-R&lt;/span&gt; movim: &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;public_html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; public_html
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim composer &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;db.example.inc.php config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;db.inc.php
edit config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;db.inc.php
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim php vendor&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;phinx migrate&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;D\u00e9ployer le code de Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;deployer_le_code_de_movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2884-3329&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;re_initialiser_le_compte_admin_movim&quot;&gt;(Ré)initialiser le compte admin Movim&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim php daemon.php config &lt;span class=&quot;re5&quot;&gt;--username&lt;/span&gt;=admin &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt;=v3rys3cr3t&lt;/pre&gt;

&lt;p&gt;
Ce compte admin permet alors de faire quelques réglages sur la &lt;a href=&quot;https://movim.parinux.org/?admin&quot; class=&quot;urlextern&quot; title=&quot;https://movim.parinux.org/?admin&quot; rel=&quot;ugc nofollow&quot;&gt;page d&amp;#039;admin Movim&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;(R\u00e9)initialiser le compte admin Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;re_initialiser_le_compte_admin_movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;3330-3595&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;creer_un_service_systemd&quot;&gt;Créer un service systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/systemd/system/movim.service&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcsystemdsystemmovimservice&quot;&gt;[Unit]
Description=Movim, kick ass social network
After=network.target
&amp;nbsp;
[Service]
Type=simple
ExecStart=/usr/bin/php daemon.php start --url=https://movim.parinux.org/ --port=8080 --interface=0.0.0.0
User=movim
WorkingDirectory=/var/www/movim/public_html
StandardOutput=syslog
SyslogIdentifier=movim
PIDFile=/run/movim.pid
&amp;nbsp;
[Install]
WantedBy=default.target&lt;/pre&gt;

&lt;p&gt;
On prévient systemd qu&amp;#039;il y a du nouveau :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl daemon-reload&lt;/pre&gt;

&lt;p&gt;
On lance movim une première en vérifiant son status avant et après parce qu&amp;#039;on aime bien ça :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl status movim
systemctl start movim
systemctl status movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9er un service systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creer_un_service_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;3596-4374&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;configurer_apache_et_php-fpm&quot;&gt;Configurer apache et php-fpm&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/apache2/sites-available/movim.conf&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcapache2sites-availablemovimconf&quot;&gt;&amp;lt;VirtualHost *:80&amp;gt;
  ServerName movim.parinux.org
  DocumentRoot /var/www/movim/public_html
&amp;nbsp;
  ProxyPreserveHost On
  &amp;lt;LocationMatch .*\.php&amp;gt;
    SetHandler &amp;quot;proxy:unix:/run/php/movim.sock|fcgi://localhost/&amp;quot;
  &amp;lt;/LocationMatch&amp;gt;
  ProxyPass /ws/ ws://localhost:8080/
&amp;nbsp;
  LogFormat &amp;quot;%{X-Forwarded-For}i %l %u %t \&amp;quot;%r\&amp;quot; %&amp;gt;s %b \&amp;quot;%{Referer}i\&amp;quot; \&amp;quot;%{User-Agent}i\&amp;quot;&amp;quot; proxy
  CustomLog /var/log/apache2/movim.access.log proxy
  ErrorLog /var/log/apache2/movim.error.log
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Activer cette config :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;a2ensite movim.conf&lt;/pre&gt;

&lt;p&gt;
Activer quelques modules apache :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;a2enmod proxy_wstunnel fcgi&lt;/pre&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/php/7.3/fpm/pool.d/movim.conf&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcphp73fpmpooldmovimconf&quot;&gt;[movim]
user = movim
group = movim
listen = /run/php/movim.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3&lt;/pre&gt;

&lt;p&gt;
Et relancer php-fpm :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl restart php7.3-fpm&lt;/pre&gt;

&lt;p&gt;
Et vérifier que le fichier &lt;em&gt;/run/php/movim.sock&lt;/em&gt; est bien présent et appartient à www-data:www-data.
&lt;/p&gt;

&lt;p&gt;
Relancer apache :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl restart apache2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configurer apache et php-fpm&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configurer_apache_et_php-fpm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;4375-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;movim&quot;&gt;Movim&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Movim est une appli Web de microblogging et de discussion, un peu comme Mastodon, Diaspora, …
La particularité de Movim c&amp;#039;est d&amp;#039;être basé sur le protocole XMPP.
&lt;/p&gt;

&lt;p&gt;
Chez parinux le serveur XMPP est &lt;a href=&quot;https://wiki.parinux.org/si/logiciels/ejabberd&quot; class=&quot;wikilink1&quot; title=&quot;si:logiciels:ejabberd&quot; data-wiki-id=&quot;si:logiciels:ejabberd&quot;&gt;ejabberd&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-249&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;maintenance&quot;&gt;Maintenance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Maintenance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;maintenance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;250-274&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;logs_utiles&quot;&gt;Logs utiles&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;journalctl &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;journalctl &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; php7.3-fpm&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim.access.log&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logs utiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logs_utiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;275-447&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;relancer_movim&quot;&gt;Relancer Movim&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl restart movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Relancer Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;relancer_movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;448-516&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;donnees_a_sauvegarder&quot;&gt;Données à sauvegarder&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Movim ne stocke que très peu de données qui méritent d&amp;#039;être sauvegardées.
L&amp;#039;essentiel de données visibles dans Movim sont en réalité publiées sur les serveurs XMPP.
La base de données SQL utilisée par Movim sert essentiellement de cache pour éviter de solliciter systématiquement les serveurs XMPP.
&lt;/p&gt;

&lt;p&gt;
Les seules données originales produites par Movim sont les paramètres de configuration qui sont stockés dans la table &lt;em&gt;configuration&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Donn\u00e9es \u00e0 sauvegarder&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;donnees_a_sauvegarder&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;517-1005&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;mettre_a_jour&quot;&gt;Mettre à jour&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Si une nouvelle version est disponible au téléchargement au format &lt;em&gt;.tar.gz&lt;/em&gt; voici la procédure simple et générique pour mettre à jour Movim.
&lt;/p&gt;

&lt;p&gt;
Avant toute chose jeter un œil sur la &lt;a href=&quot;https://github.com/movim/movim/wiki/Install-Movim#update&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/movim/movim/wiki/Install-Movim#update&quot; rel=&quot;ugc nofollow&quot;&gt;page officielle&lt;/a&gt; au cas où il y aurait une procédure particulière pour cette version.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;upstream
curl &lt;span class=&quot;re5&quot;&gt;-JOLs&lt;/span&gt; https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;github.com&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;archive&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;x.xx.x.tar.gz
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; ..
&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xavf upstream&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;x.xx.x.tar.gz
&lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; db.inc.php movim-x.xx.x&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; public_html &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; movim-x.xx.x public_html
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; public_html
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim composer &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim php vendor&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;phinx migrate
systemctl restart movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mettre \u00e0 jour&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mettre_a_jour&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1006-1714&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Même s&amp;#039;il existe enfin un paquet Debian pour movim, il est loin d&amp;#039;être parfait et l&amp;#039;installation à l&amp;#039;ancienne se passe bien alors voici comment j&amp;#039;ai fait.
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;J&amp;#039;ai essayé de faire marcher movim avec MySQL car on avait déjà un serveur MySQL opérationnel que j&amp;#039;aurais aimé utiliser, mais Movim fonctionne vraiment très mal avec MySQL, dès l&amp;#039;installation.
Donc j&amp;#039;ai craqué et j&amp;#039;ai installé un postgresql en local (sans chercher à voir si on avait déjà un postgresql quelque part, mais c&amp;#039;est pas grave, si besoin on déplacera la BDD là où il faut).&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1715-2305&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;pre-requis_apt&quot;&gt;Pré-requis APT&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; apache2 php-fpm php-pgsql \
 php-curl php-gd php-mbstring php-xml \
 composer php-symfony&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pr\u00e9-requis APT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pre-requis_apt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2306-2454&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;creer_un_utilisateur_systeme_dedie&quot;&gt;Créer un utilisateur système dédié&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;useradd &lt;span class=&quot;re5&quot;&gt;--system&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--create-home&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--shell&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nologin movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9er un utilisateur syst\u00e8me d\u00e9di\u00e9&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creer_un_utilisateur_systeme_dedie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2455-2600&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;preparer_une_base_de_donnees&quot;&gt;Préparer une base de données&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Installer postgresql si besoin :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;apt &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt; postgresql&lt;/pre&gt;

&lt;p&gt;
Puis créer un utilisateur et une base dédiés à Movim.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; postgres createuser &lt;span class=&quot;re5&quot;&gt;--pwprompt&lt;/span&gt; movim
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; postgres createdb &lt;span class=&quot;re5&quot;&gt;-O&lt;/span&gt; movim movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pr\u00e9parer une base de donn\u00e9es&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;preparer_une_base_de_donnees&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2601-2883&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;deployer_le_code_de_movim&quot;&gt;Déployer le code de Movim&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim
&lt;span class=&quot;kw2&quot;&gt;mkdir&lt;/span&gt; upstream
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; upstream
curl &lt;span class=&quot;re5&quot;&gt;-JOLs&lt;/span&gt; https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;github.com&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;archive&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;0.14.1.tar.gz
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; ..
&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xavf upstream&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim-0.14.1.tar.gz
&lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; movim-0.14.1 public_html
&lt;span class=&quot;kw2&quot;&gt;chown&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-R&lt;/span&gt; movim: &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;movim&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;public_html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; public_html
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim composer &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;db.example.inc.php config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;db.inc.php
edit config&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;db.inc.php
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim php vendor&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;phinx migrate&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;D\u00e9ployer le code de Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;deployer_le_code_de_movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2884-3329&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;re_initialiser_le_compte_admin_movim&quot;&gt;(Ré)initialiser le compte admin Movim&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; movim php daemon.php config &lt;span class=&quot;re5&quot;&gt;--username&lt;/span&gt;=admin &lt;span class=&quot;re5&quot;&gt;--password&lt;/span&gt;=v3rys3cr3t&lt;/pre&gt;

&lt;p&gt;
Ce compte admin permet alors de faire quelques réglages sur la &lt;a href=&quot;https://movim.parinux.org/?admin&quot; class=&quot;urlextern&quot; title=&quot;https://movim.parinux.org/?admin&quot; rel=&quot;ugc nofollow&quot;&gt;page d&amp;#039;admin Movim&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;(R\u00e9)initialiser le compte admin Movim&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;re_initialiser_le_compte_admin_movim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;3330-3595&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;creer_un_service_systemd&quot;&gt;Créer un service systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/systemd/system/movim.service&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcsystemdsystemmovimservice&quot;&gt;[Unit]
Description=Movim, kick ass social network
After=network.target
&amp;nbsp;
[Service]
Type=simple
ExecStart=/usr/bin/php daemon.php start --url=https://movim.parinux.org/ --port=8080 --interface=0.0.0.0
User=movim
WorkingDirectory=/var/www/movim/public_html
StandardOutput=syslog
SyslogIdentifier=movim
PIDFile=/run/movim.pid
&amp;nbsp;
[Install]
WantedBy=default.target&lt;/pre&gt;

&lt;p&gt;
On prévient systemd qu&amp;#039;il y a du nouveau :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl daemon-reload&lt;/pre&gt;

&lt;p&gt;
On lance movim une première en vérifiant son status avant et après parce qu&amp;#039;on aime bien ça :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl status movim
systemctl start movim
systemctl status movim&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cr\u00e9er un service systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creer_un_service_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;3596-4374&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;configurer_apache_et_php-fpm&quot;&gt;Configurer apache et php-fpm&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/apache2/sites-available/movim.conf&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcapache2sites-availablemovimconf&quot;&gt;&amp;lt;VirtualHost *:80&amp;gt;
  ServerName movim.parinux.org
  DocumentRoot /var/www/movim/public_html
&amp;nbsp;
  ProxyPreserveHost On
  &amp;lt;LocationMatch .*\.php&amp;gt;
    SetHandler &amp;quot;proxy:unix:/run/php/movim.sock|fcgi://localhost/&amp;quot;
  &amp;lt;/LocationMatch&amp;gt;
  ProxyPass /ws/ ws://localhost:8080/
&amp;nbsp;
  LogFormat &amp;quot;%{X-Forwarded-For}i %l %u %t \&amp;quot;%r\&amp;quot; %&amp;gt;s %b \&amp;quot;%{Referer}i\&amp;quot; \&amp;quot;%{User-Agent}i\&amp;quot;&amp;quot; proxy
  CustomLog /var/log/apache2/movim.access.log proxy
  ErrorLog /var/log/apache2/movim.error.log
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Activer cette config :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;a2ensite movim.conf&lt;/pre&gt;

&lt;p&gt;
Activer quelques modules apache :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;a2enmod proxy_wstunnel fcgi&lt;/pre&gt;

&lt;p&gt;
Créer le fichier &lt;em&gt;/etc/php/7.3/fpm/pool.d/movim.conf&lt;/em&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code file etcphp73fpmpooldmovimconf&quot;&gt;[movim]
user = movim
group = movim
listen = /run/php/movim.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3&lt;/pre&gt;

&lt;p&gt;
Et relancer php-fpm :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl restart php7.3-fpm&lt;/pre&gt;

&lt;p&gt;
Et vérifier que le fichier &lt;em&gt;/run/php/movim.sock&lt;/em&gt; est bien présent et appartient à www-data:www-data.
&lt;/p&gt;

&lt;p&gt;
Relancer apache :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl restart apache2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configurer apache et php-fpm&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configurer_apache_et_php-fpm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;4375-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:nextcloud</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/nextcloud?rev=1745529293&amp;do=diff"/>
        <published>2025-04-24T21:14:53+00:00</published>
        <updated>2025-04-24T21:14:53+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/nextcloud?rev=1745529293&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;p&gt;
installation des paquets 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; apt install  php7.0-xml php7.0-mysqlnd php7.0-ldap php7.0-gd php7.0-zip php7.0-imagick php7.0-mbstring php7.0-json php7.0-curl php7.0-cli php7.0-fpm nginx-full php7.0-bz2 php7.0-intl wget&lt;/pre&gt;

&lt;p&gt;
téléchargement de nextcloud
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
cd /var/www
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
adduser  --disabled-login  --disabled-password nextcloud
chown -R nextcloud:www-data /var/www/nextcloud
chmod -R 750 /var/www/nextcloud&lt;/pre&gt;

&lt;p&gt;
coté DB
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mysql -u root -p&lt;/pre&gt;

&lt;p&gt;
création de l&amp;#039;utilisateur nextcloud et de la base
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;CREATE DATABASE nextcloud;
CREATE USER &amp;quot;nextcloud&amp;quot;@&amp;quot;XXXXXXXX&amp;quot; ;
SET password FOR &amp;quot;nextcloud&amp;quot;@&amp;quot;XXXXX&amp;quot; = password(&amp;#039;mon_password&amp;#039;);
GRANT ALL PRIVILEGES ON nextcloud.* TO &amp;quot;nextcloud&amp;quot;@&amp;quot;XXXXXXX&amp;quot; IDENTIFIED BY &amp;quot;mon_password&amp;quot;;
FLUSH PRIVILEGES;&lt;/pre&gt;

&lt;p&gt;
Ajout de la fonctionnalité édition de documents collabora online
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ajout d&amp;#039;un dépôt tiers debian
deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian9 ./&lt;/pre&gt;

&lt;p&gt;
modification du fichier xml pour le chemin des certificats, il est aussi possible de passer en mode non SSL
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vim /etc/loolwsd/loolwsd.xml&lt;/pre&gt;

&lt;p&gt;
dans la section 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssl desc=&amp;quot;SSL settings&amp;quot;&lt;/pre&gt;

&lt;p&gt;
ajouter le chemin des 3 fichiers (key, cert et ca), ces 3 fichiers doivent être lisible par l&amp;#039;utilisation lool
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;cert_file_path desc=&amp;quot;Path to the cert file&amp;quot; relative=&amp;quot;false&amp;quot;&amp;gt;/etc/loolwsd/cert.pem&amp;lt;/cert_file_path&amp;gt;
&amp;lt;key_file_path desc=&amp;quot;Path to the key file&amp;quot; relative=&amp;quot;false&amp;quot;&amp;gt;/etc/loolwsd/key.pem&amp;lt;/key_file_path&amp;gt;
&amp;lt;ca_file_path desc=&amp;quot;Path to the ca file&amp;quot; relative=&amp;quot;false&amp;quot;&amp;gt;/etc/loolwsd/ca-chain.cert.pem&amp;lt;/ca_file_path&amp;gt;&lt;/pre&gt;

&lt;p&gt;
positonner les droits sur les 3 fichiers
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown lool:lool chemin-du-fichier&lt;/pre&gt;

&lt;p&gt;
relancer loolwsd
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl restart loolwsd
systemctl status loolwsd&lt;/pre&gt;

&lt;p&gt;
Extensions disponible dans le Nuage de Parinux
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Accessibility&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Activity &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AppOrder&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Auditing&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bookmarks&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Calendar (caldav)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Collaborative tags &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Comments&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Contacts (cardav)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Default encryption module &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Draw.io &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Federation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Parage interne et par courriel&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Gallery&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GpxPod &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LDAP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Log Reader &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Markdown Editor &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;del&gt;  * Mindmaps (cartes mentales)&lt;/del&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Notes &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Notifications&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PDF Viewer&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Poll (sondage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Quotas Warning&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; QuickNotes (petit papier sur un mur)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Share By Email&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Talk (visio spreedme)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Vidéo Player&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Collabora Online&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
        <summary>
&lt;p&gt;
installation des paquets 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; apt install  php7.0-xml php7.0-mysqlnd php7.0-ldap php7.0-gd php7.0-zip php7.0-imagick php7.0-mbstring php7.0-json php7.0-curl php7.0-cli php7.0-fpm nginx-full php7.0-bz2 php7.0-intl wget&lt;/pre&gt;

&lt;p&gt;
téléchargement de nextcloud
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
cd /var/www
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
adduser  --disabled-login  --disabled-password nextcloud
chown -R nextcloud:www-data /var/www/nextcloud
chmod -R 750 /var/www/nextcloud&lt;/pre&gt;

&lt;p&gt;
coté DB
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mysql -u root -p&lt;/pre&gt;

&lt;p&gt;
création de l&amp;#039;utilisateur nextcloud et de la base
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;CREATE DATABASE nextcloud;
CREATE USER &amp;quot;nextcloud&amp;quot;@&amp;quot;XXXXXXXX&amp;quot; ;
SET password FOR &amp;quot;nextcloud&amp;quot;@&amp;quot;XXXXX&amp;quot; = password(&amp;#039;mon_password&amp;#039;);
GRANT ALL PRIVILEGES ON nextcloud.* TO &amp;quot;nextcloud&amp;quot;@&amp;quot;XXXXXXX&amp;quot; IDENTIFIED BY &amp;quot;mon_password&amp;quot;;
FLUSH PRIVILEGES;&lt;/pre&gt;

&lt;p&gt;
Ajout de la fonctionnalité édition de documents collabora online
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ajout d&amp;#039;un dépôt tiers debian
deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian9 ./&lt;/pre&gt;

&lt;p&gt;
modification du fichier xml pour le chemin des certificats, il est aussi possible de passer en mode non SSL
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vim /etc/loolwsd/loolwsd.xml&lt;/pre&gt;

&lt;p&gt;
dans la section 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssl desc=&amp;quot;SSL settings&amp;quot;&lt;/pre&gt;

&lt;p&gt;
ajouter le chemin des 3 fichiers (key, cert et ca), ces 3 fichiers doivent être lisible par l&amp;#039;utilisation lool
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;cert_file_path desc=&amp;quot;Path to the cert file&amp;quot; relative=&amp;quot;false&amp;quot;&amp;gt;/etc/loolwsd/cert.pem&amp;lt;/cert_file_path&amp;gt;
&amp;lt;key_file_path desc=&amp;quot;Path to the key file&amp;quot; relative=&amp;quot;false&amp;quot;&amp;gt;/etc/loolwsd/key.pem&amp;lt;/key_file_path&amp;gt;
&amp;lt;ca_file_path desc=&amp;quot;Path to the ca file&amp;quot; relative=&amp;quot;false&amp;quot;&amp;gt;/etc/loolwsd/ca-chain.cert.pem&amp;lt;/ca_file_path&amp;gt;&lt;/pre&gt;

&lt;p&gt;
positonner les droits sur les 3 fichiers
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown lool:lool chemin-du-fichier&lt;/pre&gt;

&lt;p&gt;
relancer loolwsd
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl restart loolwsd
systemctl status loolwsd&lt;/pre&gt;

&lt;p&gt;
Extensions disponible dans le Nuage de Parinux
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Accessibility&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Activity &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AppOrder&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Auditing&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bookmarks&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Calendar (caldav)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Collaborative tags &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Comments&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Contacts (cardav)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Default encryption module &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Draw.io &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Federation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Parage interne et par courriel&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Gallery&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GpxPod &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LDAP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Log Reader &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Markdown Editor &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;del&gt;  * Mindmaps (cartes mentales)&lt;/del&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Notes &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Notifications&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PDF Viewer&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Poll (sondage)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Quotas Warning&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; QuickNotes (petit papier sur un mur)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Share By Email&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Talk (visio spreedme)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Vidéo Player&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Collabora Online&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
</summary>
    </entry>
    <entry>
        <title>si:logiciels:oauth2proxy</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/oauth2proxy?rev=1745530381&amp;do=diff"/>
        <published>2025-04-24T21:33:01+00:00</published>
        <updated>2025-04-24T21:33:01+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/oauth2proxy?rev=1745530381&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;oauth2_proxy&quot;&gt;Oauth2 proxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd /opt
wget https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v7.0.1/oauth2-proxy-v7.0.1.linux-amd64.tar.gz
tar xvfz oauth2-proxy-v7.0.1.linux-amd64.tar.gz
ln -s /opt/oauth2-proxy-v7.0.1.linux-amd64 /opt/oauth2-proxy&lt;/pre&gt;

&lt;p&gt;
création du fichier de conf dans /opt/keycloak.cfg
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;provider = &amp;quot;oidc&amp;quot;
redirect_url = &amp;quot;https://transfert-images.parinux.org/oauth2/callback&amp;quot;
oidc_issuer_url = &amp;quot;https://sso.parinux.org/auth/realms/master&amp;quot;
upstreams = [
    &amp;quot;https://transfert-images.parinux.org&amp;quot;
]
email_domains = [
    &amp;quot;*&amp;quot;
]
client_id = &amp;quot;IDKeycloakduclient&amp;quot;
client_secret = &amp;quot;secretdukeycloakpourceclient&amp;quot;
pass_access_token = true
cookie_secret = &amp;quot;uncookiede32caractéres&amp;quot;
skip_provider_button = true&lt;/pre&gt;

&lt;p&gt;
Tester votre fichier de conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/oauth2-proxy/oauth2-proxy --config=/opt/keycloak.cfg&lt;/pre&gt;

&lt;p&gt;
corriger les soucis
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Oauth2 proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;oauth2_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-881&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;creation_du_service&quot;&gt;création du service&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Création du fichier /etc/systemd/system/oauth2-proxy.service
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=oauth2-proxy daemon service
After=syslog.target network.target

[Service]
User=www-data
Group=www-data

ExecStart=/opt/oauth2-proxy/oauth2-proxy --config=/opt/keycloak.cfg
ExecReload=/bin/kill -HUP $MAINPID

KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

&lt;p&gt;
si le reverse proxy n&amp;#039;est pas sur le même serveur il faut qu&amp;#039;il y ait :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ExecStart=/opt/oauth2-proxy/oauth2-proxy --config=/opt/keycloak.cfg --http-address=0.0.0.0:4180&lt;/pre&gt;

&lt;p&gt;
le mettre en exécutable, permettre son lancement, son état et le lancer
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod +x/etc/systemd/system/oauth2-proxy.service
systemctl enable oauth2-proxy.service
systemctl status oauth2-proxy.service
systemctl start oauth2-proxy.service&lt;/pre&gt;

&lt;p&gt;
doc
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#config-file&quot; class=&quot;urlextern&quot; title=&quot;https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#config-file&quot; rel=&quot;ugc nofollow&quot;&gt;https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#config-file&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://devopsloggers.com/2020/05/30/oauth2_proxy-google-authentication-using-nginx-on-ubuntu-18-04/&quot; class=&quot;urlextern&quot; title=&quot;https://devopsloggers.com/2020/05/30/oauth2_proxy-google-authentication-using-nginx-on-ubuntu-18-04/&quot; rel=&quot;ugc nofollow&quot;&gt;https://devopsloggers.com/2020/05/30/oauth2_proxy-google-authentication-using-nginx-on-ubuntu-18-04/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;cr\u00e9ation du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creation_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;882-&amp;quot;} --&gt;</content>
        <summary>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;oauth2_proxy&quot;&gt;Oauth2 proxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd /opt
wget https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v7.0.1/oauth2-proxy-v7.0.1.linux-amd64.tar.gz
tar xvfz oauth2-proxy-v7.0.1.linux-amd64.tar.gz
ln -s /opt/oauth2-proxy-v7.0.1.linux-amd64 /opt/oauth2-proxy&lt;/pre&gt;

&lt;p&gt;
création du fichier de conf dans /opt/keycloak.cfg
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;provider = &amp;quot;oidc&amp;quot;
redirect_url = &amp;quot;https://transfert-images.parinux.org/oauth2/callback&amp;quot;
oidc_issuer_url = &amp;quot;https://sso.parinux.org/auth/realms/master&amp;quot;
upstreams = [
    &amp;quot;https://transfert-images.parinux.org&amp;quot;
]
email_domains = [
    &amp;quot;*&amp;quot;
]
client_id = &amp;quot;IDKeycloakduclient&amp;quot;
client_secret = &amp;quot;secretdukeycloakpourceclient&amp;quot;
pass_access_token = true
cookie_secret = &amp;quot;uncookiede32caractéres&amp;quot;
skip_provider_button = true&lt;/pre&gt;

&lt;p&gt;
Tester votre fichier de conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/oauth2-proxy/oauth2-proxy --config=/opt/keycloak.cfg&lt;/pre&gt;

&lt;p&gt;
corriger les soucis
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Oauth2 proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;oauth2_proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-881&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;creation_du_service&quot;&gt;création du service&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Création du fichier /etc/systemd/system/oauth2-proxy.service
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=oauth2-proxy daemon service
After=syslog.target network.target

[Service]
User=www-data
Group=www-data

ExecStart=/opt/oauth2-proxy/oauth2-proxy --config=/opt/keycloak.cfg
ExecReload=/bin/kill -HUP $MAINPID

KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target
&lt;/pre&gt;

&lt;p&gt;
si le reverse proxy n&amp;#039;est pas sur le même serveur il faut qu&amp;#039;il y ait :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ExecStart=/opt/oauth2-proxy/oauth2-proxy --config=/opt/keycloak.cfg --http-address=0.0.0.0:4180&lt;/pre&gt;

&lt;p&gt;
le mettre en exécutable, permettre son lancement, son état et le lancer
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod +x/etc/systemd/system/oauth2-proxy.service
systemctl enable oauth2-proxy.service
systemctl status oauth2-proxy.service
systemctl start oauth2-proxy.service&lt;/pre&gt;

&lt;p&gt;
doc
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#config-file&quot; class=&quot;urlextern&quot; title=&quot;https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#config-file&quot; rel=&quot;ugc nofollow&quot;&gt;https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#config-file&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://devopsloggers.com/2020/05/30/oauth2_proxy-google-authentication-using-nginx-on-ubuntu-18-04/&quot; class=&quot;urlextern&quot; title=&quot;https://devopsloggers.com/2020/05/30/oauth2_proxy-google-authentication-using-nginx-on-ubuntu-18-04/&quot; rel=&quot;ugc nofollow&quot;&gt;https://devopsloggers.com/2020/05/30/oauth2_proxy-google-authentication-using-nginx-on-ubuntu-18-04/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;cr\u00e9ation du service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;creation_du_service&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;882-&amp;quot;} --&gt;</summary>
    </entry>
    <entry>
        <title>si:logiciels:scrumblr</title>
        <link rel="alternate" type="text/html" href="https://wiki.parinux.org/si/logiciels/scrumblr?rev=1745529704&amp;do=diff"/>
        <published>2025-04-24T21:21:44+00:00</published>
        <updated>2025-04-24T21:21:44+00:00</updated>
        <id>https://wiki.parinux.org/si/logiciels/scrumblr?rev=1745529704&amp;do=diff</id>
        <author>
            <name>Anonymous</name>
            <email>anonymous@undisclosed.example.com</email>
        </author>
        <category  term="si:logiciels" />
        <content>
&lt;p&gt;
Installation de Sccrumblr alias mur de petit papiers (notes)
&lt;/p&gt;

&lt;p&gt;
installation de nodejs et DB redis local
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install curl
curl -sL https://deb.nodesource.com/setup_8.x |  bash -
apt-get install -y nodejs
apt-get install redis-server
service redis start&lt;/pre&gt;

&lt;p&gt;
ajout d&amp;#039;un utilisateur
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;adduser --no-create-home --home /var/www/scrumblr --disabled-login --gecos &amp;quot;Scrumblr&amp;quot; scrumblr&lt;/pre&gt;

&lt;p&gt;
clonage du dépôt
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/www/
git clone https://github.com/aliasaria/scrumblr.git&lt;/pre&gt;

&lt;p&gt;
droit sur le dossier
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown scrumblr: -R /var/www/scrumblr&lt;/pre&gt;

&lt;p&gt;
installation
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/www/scrumblr
su scrumblr -s /bin/bash
npm install
&lt;/pre&gt;

&lt;p&gt;
ajout d&amp;#039;un la fonction export/import
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git remote add fork https://github.com/ldidry/scrumblr/
git fetch fork
git pull fork master
git config --global user.email  &amp;quot;admin@parinux.org&amp;quot;
git config --global user.name &amp;quot;parinux&amp;quot;
git pull fork master&lt;/pre&gt;

&lt;p&gt;
Création  du service 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vim /etc/systemd/system/scrumblr.service

[Unit]
Description=Scrumblr service
Documentation=https://github.com/aliasaria/scrumblr/
Requires=network.target
Requires=redis-server.service
After=network.target
After=redis-server.service

[Service]
Type=simple
User=scrumblr
WorkingDirectory=/var/www/scrumblr
ExecStart=/usr/bin/node server.js --port 4242

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
usage du service 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl daemon-reload
sudo systemctl enable scrumblr.service
sudo systemctl start scrumblr.service
sudo systemctl daemon-reload&lt;/pre&gt;
</content>
        <summary>
&lt;p&gt;
Installation de Sccrumblr alias mur de petit papiers (notes)
&lt;/p&gt;

&lt;p&gt;
installation de nodejs et DB redis local
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install curl
curl -sL https://deb.nodesource.com/setup_8.x |  bash -
apt-get install -y nodejs
apt-get install redis-server
service redis start&lt;/pre&gt;

&lt;p&gt;
ajout d&amp;#039;un utilisateur
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;adduser --no-create-home --home /var/www/scrumblr --disabled-login --gecos &amp;quot;Scrumblr&amp;quot; scrumblr&lt;/pre&gt;

&lt;p&gt;
clonage du dépôt
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/www/
git clone https://github.com/aliasaria/scrumblr.git&lt;/pre&gt;

&lt;p&gt;
droit sur le dossier
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown scrumblr: -R /var/www/scrumblr&lt;/pre&gt;

&lt;p&gt;
installation
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /var/www/scrumblr
su scrumblr -s /bin/bash
npm install
&lt;/pre&gt;

&lt;p&gt;
ajout d&amp;#039;un la fonction export/import
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git remote add fork https://github.com/ldidry/scrumblr/
git fetch fork
git pull fork master
git config --global user.email  &amp;quot;admin@parinux.org&amp;quot;
git config --global user.name &amp;quot;parinux&amp;quot;
git pull fork master&lt;/pre&gt;

&lt;p&gt;
Création  du service 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vim /etc/systemd/system/scrumblr.service

[Unit]
Description=Scrumblr service
Documentation=https://github.com/aliasaria/scrumblr/
Requires=network.target
Requires=redis-server.service
After=network.target
After=redis-server.service

[Service]
Type=simple
User=scrumblr
WorkingDirectory=/var/www/scrumblr
ExecStart=/usr/bin/node server.js --port 4242

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
usage du service 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl daemon-reload
sudo systemctl enable scrumblr.service
sudo systemctl start scrumblr.service
sudo systemctl daemon-reload&lt;/pre&gt;
</summary>
    </entry>
</feed>
