diff --git a/SelfHosted/Privatebin.html b/SelfHosted/Privatebin.html index 87510ae..a57bfaf 100644 --- a/SelfHosted/Privatebin.html +++ b/SelfHosted/Privatebin.html @@ -2,7 +2,7 @@ title: PrivateBin description: Le meilleur moyen de partager vos secrets de façon sécurisé et avec une API ! published: true -date: 2021-05-30T17:28:25.751Z +date: 2021-06-15T08:36:13.885Z tags: editor: ckeditor dateCreated: 2021-05-24T10:34:57.623Z @@ -10,8 +10,139 @@ dateCreated: 2021-05-24T10:34:57.623Z
GitHub - PrivateBin/PrivateBin: A minimalist, open source online pastebin  where the server has zero knowledge of pasted data. Data is  encrypted/decrypted in the browser using 256 bits AES.

Présentation

+

PrivateBin est un pastebin en ligne minimaliste et open source où le serveur n'a aucune connaissance des données collées. + + Les données sont cryptées et décryptées dans le navigateur à l'aide de l'AES 256 bits en mode compteur Galois. + + Il s'agit d'un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. ZeroBin a été remanié pour permettre des extensions plus faciles et plus propres. 

+

PrivateBin a beaucoup plus de fonctionnalités que le ZeroBin original. Il est cependant toujours entièrement compatible avec le schéma de stockage de données ZeroBin. Par conséquent, de telles installations peuvent être mises à niveau vers PrivateBin sans perte de données.

+

Site : privatebin.info

+

Démo : privatebin.papamica.com

Installation

-

API

-

 

-

 

-

 

+

Vous pouvez passer par une installation standard via la documentation disponible sur leur site, le déployer directement depuis mon template d’application dans Portainer (tutoriel dispo ici) ou utiliser le docker-compose suivant : 

+
version: "2"
+services:
+  # PrivateBin : https://privatebin.info
+  privatebin:
+    image: jgeusebroek/privatebin
+    container_name: privatebin
+    restart: always
+    volumes:
+      - /apps/privatebin/data:/privatebin/data
+      - /apps/privatebin/cfg:/privatebin/cfg
+    environment:
+      hostname: 'privatebin'
+      name: 'privatebin'
+      
+    # Facultatif avec Traefik
+    #ports:
+      #- 8080:80
+
+    # Facultatif  
+    logging:
+      driver: loki
+      options:
+        loki-url: "$URL_LOKI"
+        loki-external-labels: service={{.Name}}
+    networks:
+      - proxy
+    labels:
+      - "traefik.enable=true"
+      - "traefik.http.routers.privatebin.entrypoints=http"
+      - "traefik.http.routers.privatebin.rule=Host(`$URL`)"
+      - "traefik.http.middlewares.privatebin-https-redirect.redirectscheme.scheme=https"
+      - "traefik.http.routers.privatebin.middlewares=$SERVICE-https-redirect"
+      - "traefik.http.routers.privatebin-secure.entrypoints=https"
+      - "traefik.http.routers.privatebin-secure.rule=Host(`$URL`)"
+      - "traefik.http.routers.privatebin-secure.tls=true"
+      - "traefik.http.routers.privatebin-secure.tls.certresolver=http"
+      - "traefik.docker.network=proxy"
+  
+networks:
+  proxy:
+    external:
+      name: proxy
+
+

Pensez à changer dans le docker-compose ou à définir les variables suivantes : URL_LOKI et URL en fonction de votre installation.

+
+

Votre Privatebin sera accessible directement depuis l’URL que vous lui aurais attribué avec Traefik ou depuis http://<server>:<port>.

+

API Python

+

Privatebin met à disposition une API bien utile pour l'intégrer dans vos scripts. La documentation est disponible ici : Github.com

+

Installation

+

Installez PrivateBinAPI avec la commande suivante : 

+
pip install PrivateBinAPI
+

Importez la librairie dans vos scripts :

+
import privatebinapi
+

Envoyer un Paste

+
response = privatebinapi.send("https://sitedupaste.com", text="Hello, world!")
+

Réponse :

+
{
+    "deletetoken": "< paste delete token >",
+    "full_url": "< direct link to paste> ",
+    "id": "< paste ID >",
+    "passcode": "< paste passcode >",
+    "status": 0,
+    "url": "/?< paste ID >"
+}
+

Ajouter une expiration

+

Il existe un nombre limité de délais d'expiration valides. Vous devez sélectionner l'un des éléments suivants :

+
("5min", "10min", "1hour", "1day", "1week", "1month", "1year", "never")
+

Par défaut, “1day” est sélectionné.

+
response = privatebinapi.send(
+     "https://sitedupaste.com",
+     text="Hello, world!",
+     expiration="5min"
+ )
+

Ajouter un mot de passe

+

Configurer un mot de passe à votre Paste est simple :

+
response = privatebinapi.send(
+     "https://sitedupaste.com",
+     text="Hello, world!",
+     password="Secure123!"
+ )
+

Choisir un format

+

Il n'y a que trois options valides pour ce paramètre : "plaintext", "syntaxhighlighting", and "markdown".

+

Par défaut, "plaintext" est sélectionné.

+
response = privatebinapi.send(
+     "https://sitedupaste.com",
+     text="Hello, world!",
+     formatting="markdown"
+ )
+

Supprimer après lecture

+

Si vous souhaitez qu'un Paste soit supprimé immédiatement après avoir été lu, passez à True le paramètre burn_after_reading.

+
response = privatebinapi.send(
+     "https://sitedupaste.com",
+     text="Hello, world!",
+     burn_after_reading=True
+ )
+

Récupérer un Paste

+

Obtenir un Paste à partir d'une instance de PrivateBin est très simple :

+
response = privatebinapi.get("https://sitedupaste.com/?fakePasteLink#1234567890")
+

Réponse :

+
{
+    "attachment": {
+        "content": b"< attachment content in bytes >",
+        "filename": "< name of attachment >"
+    },
+    "id": '< paste ID >",
+    "meta": {
+        "created": < UNIX timestamp >,
+        "time_to_live": < seconds until deletion >
+    },
+    "status": 0,
+    "text": "< text content of the paste >",
+    "url": "/?< paste ID >",
+    "v": < encryption version 1 or 2 >}
+}
+

Récupérer un Paste protégé par un mot de passe

+

Si le Paste est protégé par un mot de passe, utilisez le paramètre password.

+
response = privatebinapi.get(
+     "https://sitedupaste.com/?fakePasteLink#1234567890",
+     password="PAPAMICA123!"
+ )
+

Supprimer un Paste

+

Pour supprimer un Paste, vous avez besoin de son URL et de son token de suppression.

+
response = privatebinapi.delete(
+     "https://sitedupaste.com/?fakePasteLink#1234567890",
+     "fake1delete2token3"
+ )