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
9160de l’hôte est mappé au port8080du 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¶
-
Placez le fichier
docker-compose.yml(exemple en fin de doc) dans un répertoire dédié. -
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.
- 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_PASSWORDdans le fichierdocker-compose.ymlpour définir un mot de passe sécurisé. - Modification du port : Changez la ligne
portsdans le fichierdocker-compose.ymlsi le port9160est 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_PASSWORDpour 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.