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

5.3 KiB


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é)

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

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

Pages Liées