# Service CTRLV Service de paste du chaton de Libre en communs. Responsable: Adrien Bourmault (@neox) # Installation Les données peuvent être stockées en SQL ou en fichier plat. Ici la solution retenue est d'utiliser des fichiers plats (voir [l'article sur wikipedia](https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_orient%C3%A9e_texte)). ## Prérequis S'assurer que certains paquets soient installés : ``` sudo apt install php7.4-gd ``` ## Déploiement du code Nous réalisons l'installation par clonage du dépôt Git : ``` cd /var/www/ git clone https://github.com/PrivateBin/PrivateBin ``` Créer une branche maison à partir de la dernière branche officielle : ``` cd /var/www/PrivateBin git checkout -b ctrlv.chalec.org-1.3.5 1.3.5 ``` Créer le dossier des données : ``` mkdir /var/www/PrivateBin/data chown www-data.www-data /var/www/PrivateBin/data ``` ## Configuration de nginx On suit les conventions du SI de Libre en Communs (voir documentation infrastructure), avec intégration dans statoolinfos. ``` server { # StatoolInfos. include /etc/nginx/statoolinfos.conf; set_real_ip_from 192.168.1.1; real_ip_header proxy_protocol; # SSL configuration # listen 0.0.0.0:443 ssl proxy_protocol; listen [::]:443 ssl; root /var/www/PrivateBin; ssl_certificate /etc/letsencrypt/live/ctrlv.chalec.org/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/ctrlv.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 # Add index.php to the list if you are using PHP index index.html index.htm index.php; server_name ctrlv.chalec.org; location /.well-known/host-meta { default_type 'application/xrd+xml'; add_header Access-Control-Allow-Origin '*' always; } location /.well-known/host-meta.json { default_type 'application/jrd+json'; add_header Access-Control-Allow-Origin '*' always; } location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ $uri.html $uri/index.php?q=$uri&$args =404; } ssi on; ssi_last_modified on; # pass PHP scripts to FastCGI server location ~ \.php$ { include snippets/fastcgi-php.conf; # With php-fpm (or other unix sockets): fastcgi_pass unix:/run/php/php7.4-fpm.sock; # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { listen 80; listen [::]:80; server_name ctrlv.chalec.org; return 302 https://ctrlv.chalec.org$request_uri; } ``` # Personnalisation ## Nom du service Modifier le fichier `/var/www/PrivateBin/cfg/conf.php` : ``` -; name = "PrivateBin" +name = "CTRLV Chalec" ``` ## Suppression des délais "1 an" et "jamais" Modifier le fichier `/var/www/PrivateBin/cfg/conf.php` : ``` -1year = 31536000 -never = 0 ``` # Patch pour les métriques Par défaut, PrivateBin ne permet pas de comptabiliser la création ou la destruction d'un pad. Un patch d'une quinzaine de lignes est nécessaire, remerciement à https://libre-service.eu pour la création de celui-ci : https://forge.devinsy.fr/libre-service.eu/paste.libre-service.eu-pastebin/commit/f70ef782294ac0b9d380c04157f1d7b2117c6b6b et on pensera à y modifier le chemin de stockage des métriques. # Mises à jour On récupère les mises à jour depuis le dépôt de PrivateBin : ``` git fetch origin ``` On crée une nouvelle branche correspondant à la nouvelle version à installer (qui apparaît dans les résultats du git fetch) avec x.x.x la version choisie, et *dérivant de la branche actuelle (la version actuellement déployée)* : ``` git branch ctrlv.chalec.org-x.x.x && git switch ctrlv.chalec.org-x.x.x ``` On fusionne la nouvelle version dans la branche : ``` git merge x.x.x ``` Et après avoir vérifié que rien n'est cassé (notamment la configuration), et résolu tout conflit... On profite ! :D