Bonjour à tous,

Aujourd’hui, on va voir comment installer PrivateBin sur Debian 9 avec NGINX et PHP7. On va évidemment passer un coup de Let’s Encrypt sur la chose.

 

C’est quoi PrivateBin ?

PrivateBin est un clone de PasteBin, utilisé pour partager du texte ou du code, autohébergé où le serveur n’a pas connaissance du texte qui est partagé dans l’outil.

Toutes les données sont chiffrées et déchiffrées par le navigateur en utilisant AES-256 GCM.

 

Prérequis :

 

 

Préparation de l’installation :

Créez d’abord un utilisateur Linux pour l’application et ajoutez-le dans le groupe www-data :

useradd privatebin
usermod -a -G www-data privatebin

 

Téléchargez l’archive de PrivateBin :

cd /var/www/
wget https://github.com/PrivateBin/PrivateBin/archive/1.1.1.tar.gz
tar xf 1.1.1.tar.gz && rm 1.1.1.tar.gz
mv PrivateBin-1.1.1 privatebin
chown privatebin:www-data -R /var/www/privatebin

 

Créez un nouveau pool fpm :

nano /etc/php/7.0/fpm/pool.d/privatebin.conf

 

Et remplissez avec les informations suivantes :

[privatebin]

listen = /var/lib/php7.0-fpm/privatebin.sock
listen.owner = privatebin
listen.group = www-data
listen.mode = 0660

user = privatebin
group = www-data

pm = dynamic
pm.max_children = 32
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 16
pm.max_requests = 40000

chdir = /

pm.status_path = /status

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

Et redémarrez le service pour appliquer les modifications :

service php7.0-fpm restart

 

Maintenant, on va créer un vhost de base :

nano /etc/nginx/sites-enabled/privatebin.vhost

 

Ajoutez la configuration suivante :

server {
        listen 62.210.106.114:80;
        listen [2001:bc8:3d8b:100::100]:80;

        server_name paste.yaute.ninja;

        root /var/www/privatebin/;

        index index.php;

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/lib/php7.0-fpm/privatebin.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

        location ~ ^/.well-known/acme-challenge/* {
                allow all;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

}

 

Maintenant, redémarrez NGINX :

service nginx restart

 

Créez le répertoire pour les certificats Let’s Encrypt :

mkdir -p /etc/letsencrypt/live-ecdsa/paste.yaute.ninja
cd /etc/letsencrypt/live-ecdsa/paste.yaute.ninja
mkdir letmp

 

Maintenant, créez la clé privée pour votre certificat en indiquant la courbe que vous souhaitez utiliser :

openssl ecparam -genkey -name secp384r1 > privkey-p384.pem

 

Maintenant, créez un CSR, indiquez votre domaine correctement :

openssl req -new -sha256 -key privkey-p384.pem -subj "/CN=paste.yaute.ninja" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:paste.yaute.ninja")) -outform der -out csr-p384.der

 

Rendez-vous dans le dossier temporaire « letmp » et créez votre certificat avec Let’s Encrypt (ça serra aussi les commandes pour renouveller le certificat) :

cd letmp
/etc/letsencrypt/letsencrypt-auto certonly -a webroot --email yolo@caramail.coucou --webroot-path /var/www/privatebin/ --csr /etc/letsencrypt/live-ecdsa/paste.yaute.ninja/csr-p384.der --renew-by-default --agree-tos
cat 0001* > /etc/letsencrypt/live-ecdsa/paste.yaute.ninja/chain.pem

 

Maintenant, modifiez le vhost :

cd /tmp 
wget https://raw.githubusercontent.com/stylersnico/my-webserver/master/etc/nginx/sites-enabled/privatebin.vhost
echo privatebin.vhost > /etc/nginx/sites-enabled/privatebin.vhost

 

Maintenant, redémarrez nginx :

service nginx restart

Installation de PrivateBin :

C’est très simple, rendez vous dans le dossier hébergeant la configuration et modifiez le fichier de configuration par défaut :

cd /var/www/privatebin/cfg
cp conf.sample.php conf.php
nano conf.php

 

Accédez à l’URL de votre installation et profitez 🙂

En bonus, vous pouvez :