Vous trouverez ci-dessous quelques notes vous permettant de répliquer l'installation de ces services sur vos propres machines, et qui sait, peut être, devenir vous même un vrai chaton.
https://github.com/getgrav/grav
Grav est un CMS (Content Management System), c'est-à-dire un système qui permet d'éditer facilement le contenu et l'organisation de pages html. Il sert de support aux quelques pages d'accueil de chaton.sequanux.org. Ce logiciel est développé Trilby Media et est proposé sous licence MIT. Sa particularité est d'être flat file, c'est-à-dire de ne pas fonctionner couplé à une base de données. Il en résulte une grande facilité d'installation.
Site du projet: https://getgrav.org/ Dépôt logiciel: https://github.com/getgrav/grav Documentation officielle: https://learn.getgrav.org/16/basics/installation
La présente installation a suivi à la lettre le tutoriel proposé sur le site doc.ubuntu-fr.org en 2018. Celui reste valable en 2020. Les étapes ci-dessous ne vont faire que résumer et paraphraser ce tutoriel...
Nous partons du principe que le serveur web est déjà en place, et que l'hôte est créé également. La racine de l'hôte pointe vers /var/www/grav .
Il faut donc, en premier lieu, télécharger la dernière version de Grav:
wget -O grav-admin.zip https://getgrav.org/download/core/grav-admin/latest
puis la décompresser à la racine de l'hôte:
sudo unzip grav-admin.zip -d /var/www
sudo mv /var/www/grav-admin /var/www/grav
Il faut corriger les droits de fichiers mis en place:
sudo chown $USER:www-data /var/www/grav -R
sudo chmod -rwx,u+rwX,g+rwX /var/www/grav -R
Et c'est presque tout ! Le site est accessible, tout comme l'administration (à URL/admin
). Puisque nous avons choisi la version de grav avec l'interface d'administration, toutes les manipulations telles que la création d'un nouvel utilisateur ou l'édition des pages (avec le formatage markdown) se feront depuis des menus très clair.
Si votre site disparaît après la première nuit, c'est qu'il y a un problème avec la mise en cache automatique des contenus. Il faudra copier ces commandes dans un fichier bash et l'éxécuter pour résoudre le problème (source:
#!/bin/sh
chown -R joeblow:staff .
find . -type f -exec chmod 664 {} \;
find ./bin -type f -exec chmod 775 {} \;
find . -type d -exec chmod 775 {} \;
find . -type d -exec chmod +s {} \;
Il faut remplacer joeblow:staff par les propriétaires du dossier www.
https://github.com/jitsi/jitsi-meet
Jitsi est une application de messagerie instantanée, voix sur IP et visioconférence sous licence libre Apache License 2.0
La procédure d’install rapide disponible sur https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md est tout à fait fonctionnelle mais nous avons dû faire quelques ajustements par rapport à notre configuration initiale notamment au niveau du reverse proxy. En effet le serveur sur lequel nous souhaitons installer Jitsi nous sert actuellement de serveur web pour le site https://sequanux.org et c’est au logiciel Apache que cette tâche est confiée, c'est donc Apache qui nous servira également de reverse proxy et non Nginx.
La procédure qui est décrite ici est donc spécifique à notre environnement de départ (Debian GNU/Linux 10+ Apache) et a pour but l'installation de Jitsi qui sera accessible via l’url https://visio.sequanux.org
On vérifie notre notre hostname
cat /etc/hostname
qui nous renvoie notre HOSTNAME
On édite le fichier /etc/hosts pour y ajouter :
127.0.0.1 localhost visio.sequanux.org
On vérifie au passage qu’on a bien une entrée du type
127.0.0.1 HOSTNAME
comme ce n’ést pas le cas, on la rajoute vite vite vite.
On ajoute le dépôt jitsi
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
On récupère et on installe le certificat
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
On ajoute des règles de parefeu pour ouvrir les ports 80 TCP, 443 TCP et 10000 UDP sur le serveur
On installe les paquets et leurs dépendances :
apt-get update
apt-get install apt-transport-https jitsi-meet
Durant l’installation on est invité à saisir le nom de domaine de notre instance jitsi : visio.sequanux.org
À la question du certificat de sécurité on laisse jitsi utiliser un certificat auto-signé, nous générerons un certificat LetsEncrypt plus tard pour notre domaine.
Remarque : Jitisi utilise un reverse proxy pour se connecter à l’application, nginx ou apache sont capables d’assurer cette tâche :
On ajoute au début du fichier /etc/jitsi/videobridge/sip-communicator.properties
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=xxx.xxx.xxx.xxx
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=yyy.yyy.yyy.yyy
en remplaçant :
Pour la création du certificat SSL nous avons déjà comme prérequis :
On lance donc la créationdu certificat SSL :
certbot-auto --apache -d visio.sequanux.org --rsa-key-size 4096
On crée et on édite notre fichier vhost pour apache /etc/apache2/sites-available/visio.conf :
<VirtualHost *:80>
ServerName visio.sequanux.org
Redirect permanent / https://visio.sequanux.org/
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{SERVER_NAME} =visio.sequanux.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerName visio.sequanux.org
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLEngine on
SSLProxyEngine on
SSLCipherSuite "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:
EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED"
SSLHonorCipherOrder on
Header set Strict-Transport-Security "max-age=31536000"
DocumentRoot "/usr/share/jitsi-meet"
<Directory "/usr/share/jitsi-meet">
Options Indexes MultiViews Includes FollowSymLinks
AddOutputFilter Includes html
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorDocument 404 /static/404.html
Alias "/config.js" "/etc/jitsi/meet/visio.sequanux.org-config.js"
<Location /config.js>
Require all granted
</Location>
Alias "/external_api.js" "/usr/share/jitsi-meet/libs/external_api.min.js"
<Location /external_api.js>
Require all granted
</Location>
ProxyPreserveHost on
ProxyPass /http-bind http://localhost:5280/http-bind/
ProxyPassReverse /http-bind http://localhost:5280/http-bind/
RewriteEngine on
RewriteRule ^/([a-zA-Z0-9]+)$ /index.html
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/visio.sequanux.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/visio.sequanux.org/privkey.pem
</VirtualHost>
On recharge les fichiers de configuration apache :
systemctl reload apache2.service
Et voilà, on a notre instance jitsi fonctionnelle : https://visio.sequanux.org
https://framagit.org/fiat-tux/hat-softwares/lufi
https://github.com/ether/etherpad-lite
Etherpad est un logiciel libre sous licence Apache qui permet l'éditeur de texte en mode collaboratif en temps réel. Plusieurs utilisateurs peuvent donc saisir/corriger/supprimer le texte en même temps !
On décrit ici l'installation d'Etherpad sur un système GNU/Linux Debian 10 sur lequel apache et mariadb sont déjà installés et configurés. Les DNS sont ok avec un sous-domaine pad.sequanux.org pointant vers le serveur.
On édite le fichier /etc/hosts pour y ajouter :
127.0.0.1 pad.sequanux.org
On commence par installer nodejs, npm
apt-get install nodejs npm
On crée un utilisateur système dédié :
useradd -mU etherpad
On clone le dépôt etherpad-lite et déplacer le répertoire dans /var/www
git clone git://github.com/ether/etherpad-lite.git
mv etherpad-lite /var/www/
On change le propriétaire du répertoire :
chown -R etherpad:etherpad /var/www/etherpad-lite
On installe le reste des dépendances
cd /var/www/etherpad-lite
su -c './bin/installDeps.sh' etherpad
Pour l'import/export au format odt on utilisera abiword
apt-get install abiword
On crée un user avec un mot de passe, une base, on donne les privilèges
On crée un vhost en écoute sur le port 80
<VirtualHost *:80>
ServerName pad.sequanux.org
ProxyPass / http://127.0.1.1:9001/
ProxyPassReverse / http://127.0.1.1:9001/
ProxyRequests Off
RewriteEngine on
RewriteCond %{SERVER_NAME} =pad.sequanux.org
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
On créé un certificat ssl avec letsencrypt
On ajoute un vhost en écoute sur le port 443
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName pad.sequanux.org
ProxyVia On
ProxyRequests Off
ProxyPreserveHost on
<Location />
ProxyPass http://127.0.1.1:9001/ retry=0 timeout=30
ProxyPassReverse http://127.0.1.1:9001/
</Location>
<Location /socket.io>
RewriteEngine On
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://127.0.1.1:9001/socket.io/$1 [P,L]
ProxyPass http://127.0.1.1:9001/socket.io retry=0 timeout=30
ProxyPassReverse http://127.0.1.1:9001/socket.io
</Location>
<Proxy *>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Proxy>
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /chemin/de/notre/fichier/fullchain.pem
SSLCertificateKeyFile /chemin/de/notre/fichier/privkey.pem
ErrorLog ${APACHE_LOG_DIR}/error_pad.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_pad.log combined
</VirtualHost>
</IfModule>
On modifie le fichier de configuration d'etherpad /var/www/etherpad-lite/settings.json :
On commente la section nrelative à la base de données "dirty"
/*
"dbType": "dirty",
"dbSettings": {
"filename": "var/dirty.db"
},
*/
On configure l'accès à la base mysql
"dbType" : "mysql",
"dbSettings" : {
"user": "bdd_user",
"host": "localhost",
"port": 3306,
"password": "user_passwd",
"database": "nom-de-la-base",
"charset": "utf8mb4"
},
Pour les autres paramètres, le fichier est assez bien commenté pour savoir à quoi on s'attaque
On lance etherpad par l'utilisateur dédié :
su -c 'sh /var/www/etherpad-lite/bin/run.sh' etherpad
On vérifie dasn le navigateur si on a quelque chose....
Afin de rendre le lancement d'etherpad automatique après reboot du système on peut créer un service. On crée le fichier /etc/systemd/system/etherpad-lite.service
Description=etherpad-lite (real-time collaborative document editing)
After=syslog.target network.target
Requires=mariadb.service
[Service]
Type=simple
User=etherpad
Group=etherpad
Environment=NODE_ENV=production
ExecStart=/var/www/etherpad-lite/bin/run.sh
[Install]
WantedBy=multi-user.target
On active le service au démarrage du système :
systemctl enable etherpad-lite.service
https://github.com/PrivateBin/PrivateBin