Files
wiki/Catalogue-Self-Hosted/apps/app-privatebin.md
T
2026-06-09 18:40:21 +02:00

130 lines
5.3 KiB
Markdown

---
title: PrivateBin
created: 2026-06-08
updated: 2026-06-08
type: app
tags: [catalogue, pastebin, self-hosted]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=33, https://github.com/PrivateBin/PrivateBin]
---
# 📋 PrivateBin
> **PrivateBin** est le pastebin de référence pour la confidentialité : chiffrement côté client (AES-256), burn-after-reading, mot de passe, et zéro connaissance côté serveur.
## 📋 Informations Générales
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://privatebin.info |
| **GitHub** | https://github.com/PrivateBin/PrivateBin |
| **License** | Zlib |
| **Langage principal** | PHP |
| **Étoiles GitHub** | 8 359 |
| **Dernière MAJ** | 2026-05-26 |
| **Catégorie** | [[cat-pastebin]] |
## 📝 Description
PrivateBin est né en 2016 comme un fork sécurisé du défunt ZeroBin. C'est aujourd'hui **la référence** du pastebin chiffré côté client : le texte est chiffré dans le navigateur (JavaScript) en AES-256-GCM avant d'être envoyé au serveur, qui ne stocke donc jamais de contenu en clair. Même l'administrateur de l'instance ne peut pas lire les pastes.
Le projet est volontairement minimaliste : un simple fichier `index.php` exécuté par PHP-FPM, des fichiers JSON pour la persistance, et un client JavaScript qui fait tout le travail cryptographique. Cette simplicité se traduit par une **surface d'attaque minuscule** et un audit de sécurité facile. Les fonctionnalités incluent : burn-after-reading (le paste disparaît après la première lecture), expiration temporelle, mot de passe, syntax highlighting pour 150+ langages, formatage Markdown, et téléchargements de fichiers (jusqu'à ~10 MB selon config).
L'UI web est sobre, sans tracking ni analytics. Le projet est audité régulièrement (Elifacta Security en 2024) et respecte les bonnes pratiques cryptographiques modernes (PBKDF2 pour les mots de passe, IV aléatoires, Web Crypto API). C'est le choix **le plus recommandé** pour partager du code ou des secrets temporairement sans dépendre d'un service tiers.
## 🚀 Installation
### Docker Compose (recommandé)
```yaml
services:
privatebin:
image: privatebin/nginx-fpm-alpine
container_name: privatebin
restart: unless-stopped
networks:
- web
- internal
environment:
- PB_PASSWORD_LENGTH=64
- PB_PASTE_COMPRESSION=1
- PB_PASTE_EXPIRATION_OPTIONS=5min,10min,1hour,1day,1week,1month,1year,never
- PB_PASTE_EXPIRATION_DEFAULT=1week
- PB_PASTE_MAX_LENGTH=1000000
- PB_FILEUPLOAD_MAX=10
labels:
- "traefik.enable=true"
- "traefik.http.routers.privatebin.rule=Host(`paste.example.com`)"
- "traefik.http.routers.privatebin.tls.certresolver=letsencrypt"
- "traefik.http.services.privatebin.loadbalancer.server.port=8080"
volumes:
- privatebin-data:/srv/data
- privatebin-cfg:/srv/cfg
networks:
web:
external: true
internal:
volumes:
privatebin-data:
privatebin-cfg:
```
### Installation manuelle (LAMP)
1. `git clone https://github.com/PrivateBin/PrivateBin.git` dans le DocumentRoot.
2. Configurer Nginx + PHP-FPM 8.2+.
3. Éditer `cfg/conf.php` selon vos besoins.
4. Donner les droits d'écriture à PHP sur `data/`.
## ⚙️ Configuration
- `PB_PASSWORD_LENGTH` : longueur du sel (64 par défaut, sécurisé).
- `PB_PASTE_EXPIRATION_OPTIONS` : durées proposées à l'utilisateur.
- `PB_PASTE_EXPIRATION_DEFAULT` : durée par défaut.
- `PB_FILEUPLOAD_MAX` : taille max d'upload (10 MB recommandé).
- Activer **Clacks** (header X-Clacks-Overhead) en hommage à Terry Pratchett.
## 🔄 Alternatives
### Open Source
- [[app-paaster]] — TypeScript moderne, E2E, UX soignée, plus jeune.
- [[app-chiyogami]] — Go + E2E, interface moderne.
- [[app-opengist]] — Go, pastebin + snippets Git-like, multi-user.
- [[app-wastebin]] — Go, minimaliste, pas de chiffrement E2E.
- [[app-pastefy]] — Java, multi-user, organisation.
### Propriétaires (ce que cette app remplace)
- **pastebin.com** — historique, propriété d'EA, fermé en 2024, UI vieillissante.
- **dpaste.org** — simple, pas d'auth, pas de chiffrement.
- **ghostbin.org** — fermé, signal de la fragilité de ces services.
- **hastebin.com** — simple, pas de chiffrement.
- **gist.github.com** — privé par défaut si compte GH, sinon public.
## 🔐 Sécurité
- **E2E par défaut** : le serveur ne voit jamais le contenu en clair.
- **CSP headers** : PrivateBin applique un Content-Security-Policy strict.
- **HTTPS obligatoire** : le chiffrement côté client perd toute valeur en HTTP.
- **Burn-after-read** : utiliser pour les secrets et credentials temporaires.
- **Updates PHP** : rester sur PHP 8.2+ pour les correctifs de sécurité upstream.
- **Audit** : le projet a été audité par Elifacta Security (rapport public).
## 📚 Ressources
- Site officiel : https://privatebin.info
- Code source : https://github.com/PrivateBin/PrivateBin
- Documentation : https://github.com/PrivateBin/PrivateBin/wiki
- Instances publiques : https://privatebin.info/directory/
- Audit sécurité : https://github.com/PrivateBin/PrivateBin/wiki/Security
- Forum : https://github.com/PrivateBin/PrivateBin/discussions
## Pages Liées
- [[cat-pastebin|Pastebin]] — Catégorie complète
- [[app-paaster]] — Voisin E2E moderne
- [[app-opengist]] — Voisin multi-user
- [[recettes-docker-compose]] — Templates Docker