Skip to content

Installation et déploiement de PrivateBin avec Docker Compose

Envoyer un mot de passe ou une clé par mail ou messagerie, c'est le laisser traîner indéfiniment dans des boîtes qu'on ne contrôle pas. PrivateBin répond à ce besoin très concret : un pastebin où le serveur ne voit jamais le contenu en clair. Le texte est chiffré dans votre navigateur avant l'envoi, et la clé de déchiffrement ne quitte jamais l'URL que vous partagez. Ajoutez une expiration ou une auto-destruction à la première lecture, et le secret disparaît vraiment.

Le secret est dans le # de l'URL

La clé de déchiffrement vit dans la partie « ancre » de l'URL (après le #) — celle que les serveurs et les logs ne voient pas. C'est ce qui rend PrivateBin zero-knowledge : même l'administrateur de l'instance ne peut pas lire vos pastes. Conséquence pratique : si vous perdez le lien complet, le contenu est irrécupérable. C'est une fonctionnalité, pas un bug.


Prérequis

Avant de commencer, assurez-vous que :

  • Docker et Docker Compose installés — voir Installation Docker
  • Vous avez une connexion internet pour télécharger les images Docker
  • Les ports nécessaires sont ouverts sur votre machine (ici le port 9160)

1⃣ Configuration du service PrivateBin

Le service utilise l’image Docker privatebin/nginx-fpm-alpine:latest, qui combine Nginx et PHP-FPM pour exécuter PrivateBin.

Points clés

  • Port d’accès : Le port 9160 de l’hôte est mappé au port 8080 du conteneur.
  • Volumes Docker : Plusieurs volumes Docker assurent la persistance des données et fichiers temporaires, évitant toute perte à chaque redémarrage.
  • Variables d’environnement : Vous pouvez définir un mot de passe d’administration via la variable PRIVATEBIN_PASSWORD.
  • Redémarrage automatique : Le conteneur redémarre automatiquement en cas d’erreur ou d’arrêt.

2⃣ Lancement du service

Étapes

  1. Placez le fichier docker-compose.yml (exemple en fin de doc) dans un répertoire dédié.

  2. Ouvrez un terminal dans ce répertoire et exécutez :

docker-compose up -d

Cette commande va télécharger l’image, créer les volumes et lancer le conteneur en arrière-plan.

  1. Vérifiez que le conteneur est bien lancé :
docker-compose ps

Le conteneur privatebin doit apparaître avec le port 9160 exposé.


3⃣ Accès à l’interface PrivateBin

Ouvrez votre navigateur et rendez-vous à l’adresse suivante :

http://localhost:9160

4⃣ Personnalisation

  • Mot de passe administrateur : Modifiez la variable PRIVATEBIN_PASSWORD dans le fichier docker-compose.yml pour définir un mot de passe sécurisé.
  • Modification du port : Changez la ligne ports dans le fichier docker-compose.yml si le port 9160 est déjà utilisé.
  • Volumes : Les volumes assurent la persistance des données et doivent être conservés pour garder vos données intactes.

5⃣ Gestion du conteneur

Action Commande
Arrêter le service docker-compose down
Visualiser les logs docker-compose logs -f
Redémarrer le service docker-compose restart

6⃣ Volumes Docker utilisés

Volume Description
privatebin_data Données principales de PrivateBin
privatebin_var_lib_nginx_tmp Fichiers temporaires Nginx
privatebin_tmp Répertoire temporaire général
privatebin_srv_data Données spécifiques aux services
privatebin_run Fichiers temporaires runtime

7⃣ Sécurité

  • Changez impérativement la variable PRIVATEBIN_PASSWORD pour un mot de passe fort.
  • Gardez vos volumes Docker pour préserver vos données.

8⃣ Exemple de fichier docker-compose.yml

version: '3.8'

services:
  privatebin:
    image: privatebin/nginx-fpm-alpine:latest
    volumes:
      - privatebin_data:/data
      - privatebin_var_lib_nginx_tmp:/var/lib/nginx/tmp
      - privatebin_tmp:/tmp
      - privatebin_srv_data:/srv/data
      - privatebin_run:/run
    environment:
      - PRIVATEBIN_PASSWORD=<votre_mot_de_passe>
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/srv/bin
      - CONFIG_PATH=/srv/cfg
    working_dir: /var/www
    restart: always
    ports:
      - "9160:8080"

volumes:
  privatebin_data:
  privatebin_var_lib_nginx_tmp:
  privatebin_tmp:
  privatebin_srv_data:
  privatebin_run:

En résumé

Avec PrivateBin, vous offrez à vos proches, collègues ou à vous-même un moyen simple de partager un secret sans le confier à un géant du cloud. Le chiffrement se fait chez le client, l'expiration nettoie derrière vous, et votre serveur ne garde que du texte illisible. Pour du partage ponctuel et sensible, c'est l'outil qu'on regrette de ne pas avoir eu plus tôt.