Installation de PrivateBin sur Debian 9

1/52/53/54/55/5 (3 votes, moyenne: 3,00 sur 5)
Loading...
I

Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.


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 :

 

A propos de l'auteur

Nicolas Simond

Ingénieur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

Subscribe
Notify of
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

3 Commentaires
Plus récents
Plus anciens Populaires
Inline Feedbacks
View all comments
Mirabellette
6 années plus tôt

Merci pour l’article sur privatebin, très complet ! 🙂

Petite question, ne serait-ce pas plus sécurité d’ajouter l’option /bin/nologin dans le fichier /etc/passwd pour le user privatebin ?

Mirabellette
Reply to  Mirabellette
6 années plus tôt

Petit bémol cependant concernant l’installation. Le fichier INSTALL.MD recommande plusieurs façons d’augmenter la sécurité l’application. Notamment le déplacement des fichiers de privatebin à l’extérieur du fichier root., ce qui n’est pas fait ici :/