149 lines
3.9 KiB
Markdown
149 lines
3.9 KiB
Markdown
# 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"
|
|
```
|
|
|
|
# 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
|
|
|
|
|
|
# Mises à jour
|
|
|
|
On récupère les mises à jour depuis le dépôt de PrivateBin :
|
|
|
|
```
|
|
git fetch
|
|
```
|
|
|
|
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
|
|
```
|
|
|
|
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
|