status/README.md

4.2 KiB

Service STATUS

Service d'information sur l'état des service du Chalec, le chaton de Libre en communs, basé sur le logiciel libre TinyStatus : https://github.com/bderenzo/tinystatus

Équipe : neox + Cpm. Anciennement : n/a.

Date création : octobre 2022.

Installation

Prérequis système

Vérifier que le fichier /etc/hosts.deny ne bloque pas les connexions ssh :

#sshd: ALL

NGinx

Installer les paquets :

apt-get install nginx python3-certbot-nginx

Ouvrir les ports http (80) et https (443) :

ufw allow 'Nginx HTTP'
ufw allow 'Nginx HTTPS'
ufw allow 444

Configurer a minima le site web dans /etc/nginx/sites-available/status.chalec.org :

server
{
    listen 80;
    listen [::]:80;

    server_name status.chalec.org; 

    access_log /var/log/nginx/status.chalec.org-access.log;
    error_log /var/log/nginx/status.chalec.org-error.log;
}

Activer la configuration :

cd /etc/nginx/sites-enabled/
ln -s ../sites-available/status.chalec.org

Vérifier que c'est bon et recharger :

nginx -t && systemctl reload nginx

Configurer le certificat SSl :

certbot --nginx 

Créer un fichier générique cat /etc/nginx/statoolinfos.conf qui sera includé plus tard :

   location /.well-known/statoolinfos/ 
   {
       types 
       {
            text/plain    properties;
       }

       alias /srv/statoolinfos/well-known/statoolinfos/;
       autoindex on;
   }

Mettre beau le fichier /etc/nginx/sites-enabled/status.chalec.org :

server
{
    listen 80;
    listen [::]:80;

    server_name status.chalec.org;

    access_log /var/log/nginx/status.chalec.org-access.log;
    error_log /var/log/nginx/status.chalec.org-error.log;

    #return 302 https://$host$request_uri;
    return 302 https://status.chalec.org$request_uri;
}

server
{
    set_real_ip_from  192.169.1.1;
    real_ip_header proxy_protocol;
    listen [::]:443 ssl;
    listen 444 ssl proxy_protocol;

    server_name status.chalec.org;

    access_log /var/log/nginx/status.chalec.org-access.log;
    error_log /var/log/nginx/status.chalec.org-error.log;

    ssl_certificate /etc/letsencrypt/live/status.chalec.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/status.chalec.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # StatoolInfos.
    include /etc/nginx/statoolinfos.conf;

    root /var/www/status.chalec.org;
    location = / 
    {
            index index.html;
    }
 
}

Vérifier que c'est bon et recharger :

nginx -t && systemctl reload nginx

Déploiement de l'application

Prodécure de référence : https://github.com/bderenzo/tinystatus#setup

Créer le dossier web cible :

mkdir -p /var/www/status.chalec.org/
chown www-data /var/www/status.chalec.org/

Récupérer l'application :

cd /srv/
git clone https://github.com/bderenzo/tinystatus.git 

Préparer l'espace de configuration :

mkdir /etc/tinystatus/
cd /srv/tinystatus/
cp *csv /etc/tinystatus/

Paramétrer les éléments à surveiller, en éditant le fichier /etc/tinystatus/checks.csv :

http,   200,  Site web Chalec,       https://www.chalec.org/
http,   200,  Service Audio,         https://audio.chalec.org/
http,   200,  Service Ctrlv,         https://ctrlv.chalec.org/
http,   200,  Service Forge,         https://forge.chalec.org/
http,   200,  Service Libreverse,    https://libreverse.chalec.org/
http,   200,  Service Pad,           https://pad.chalec.org/
http,   200,  Service XMPP,          https://xmpp.chalec.org/
http,   200,  Service Stats,         https://stats.chalec.org/

Programmer un cron dans /etc/cron.d/tinystatus :

*/5 * * * * root /srv/tinystatus/tinystatus /etc/tinystatus/checks.csv /etc/tinystatus/incidents.txt > /var/www/status.chalec.org/index.html

Personnaliser le UserAgent

Important de mettre un UserAgent identifiable en tant que bot. Éditer le fichier /srv/tinystatus/tinystatus :

-useragent="User-Agent: Mozilla/5.0 (X11; Linux x86_64; Debian) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
+useragent="User-Agent: TinyStatus bot"