Paaster is a secure by default end-to-end encrypted pastebin built with the objective of simplicity.

Overview

Follow the development of our desktop client here

Paaster

Paaster is a secure by default end-to-end encrypted pastebin built with the objective of simplicity.

Preview

Video of paaster in action! Mobile preview

Features

Looking to build a client for paaster?

Check out our Integration documentation

Security

What is E2EE?

E2EE or end to end encryption is a zero trust encryption methodology. When you paste code into paaster the code is encrypted locally with a secret generated on your browser. This secret is never shared with the server & only people you share the link with can view the paste.

Can I trust a instance of paaster not hosted by me?

No. Anyone could modify the functionality of paaster to expose your secret key to the server. We recommend using a instance you host or trust.

How are client secrets stored?

Client-sided secrets are stored in localStorage on paste creation (for paste history.) Anything else would be retrievable by the server or be overly complicated. This does make paaster vulnerable to malicious javascript being executed, but this would require malicious javascript to be present when the svelte application is built. If this was the case you'd have bigger issues, like the module just reading all inputs & getting the plain text paste.

How are client secrets transported?

Paaster uses URI fragments to transport secrets, according to the Mozilla foundation URI fragments aren't meant to be sent to the server. Bitwarden also has a article covering this usage here.

How are server secrets stored?

Server-sided secrets are stored in localStorage on paste creation, allowing you to modify or delete pastes later on. Server-sided secrets are generated on the server using the python secrets module & are stored in the database using bcrypt hashing.

Cipher

paaster is built using the forge module, using AES-256 in CBC mode with PKCS7 padding & PBKDF2 key derivation at 50,000 iterations. More details are located in our Integration documentation.

Shortcuts

  • Ctrl+V - Paste code.
  • Ctrl+S - Download code as file.
  • Ctrl+A - Copy all code to clipboard.
  • Ctrl+X - Copy URL to clipboard.

Requesting features

  • Open a new issue to request a feature (one issue per feature.)

What we won't add

  • Paste editing.
    • paaster isn't a text editor, it's a pastebin.
  • Paste button.
    • paaster isn't a text editor, when code is inputted it will always be automatically uploaded.
  • Optional encryption.
    • paaster will never have opt-in / opt-out encryption, encryption will always be present.

Setup

Production with Docker

  • git clone --branch Production https://github.com/WardPearce/paaster
  • Configure docker-compose.yml
  • Proxy exposed ports using Nginx (or whatever reverse proxy you prefer.)
  • FRONTEND_PROXIED should be the proxied address for "paaster_frontend". E.g. for paaster.io this is "https://paaster.io"
  • VITE_BACKEND should be the proxied address for "paaster_starlette". E.g. for paaster.io this is "https://api.paaster.io"
  • sudo docker-compose build; sudo docker-compose up -d

Using Rclone

Using rclone with Docker Compose

Basically the most important part is to install fuse, create /var/lib/docker-plugins/rclone/config & /var/lib/docker-plugins/rclone/cache, install the docker plugin docker plugin install rclone/docker-volume-rclone:amd64 args="-v" --alias rclone --grant-all-permissions, configure the rclone.conf for the storage service you want to use & then configure your docker compose to use the rclone volume. Example rclone docker compose.

Production without docker

This setup is not recommended & requires more research / knowledge.

  • git clone --branch Production https://github.com/WardPearce/paaster.
  • cd paaster-frontend
  • Create .env
    • VITE_NAME - The name displayed on the website.
    • VITE_BACKEND - The URL of the API.
  • Install nodejs
    • npm install
    • npm run build
  • Serve files generated in dist with Nginx (or whatever reverse proxy you use.)
  • cd paaster-backend
  • Install Python 3.7+
    • pip3 install -r requirements.txt
    • Configure main.py following the guide for uvicorn.
  • Pass environmental variables
    • REDIS_HOST
    • REDIS_PORT
    • MONGO_IP
    • MONGO_PORT
    • MONGO_DB
    • FRONTEND_PROXIED - The URL of the Frontend.
  • Proxy port with Nginx (or whatever reverse proxy you use.)

Development

  • git clone https://github.com/WardPearce/paaster.
  • cd paaster-frontend
  • Create .env
    • VITE_NAME - The name displayed on the website.
    • VITE_BACKEND - The URL of the API.
  • Install nodejs
    • npm install
    • npm run dev
  • cd paaster-backend
  • Pass environmental variables
    • REDIS_HOST
    • REDIS_PORT
    • MONGO_IP
    • MONGO_PORT
    • MONGO_DB
    • FRONTEND_PROXIED - The URL of the Frontend.
  • Install Python 3.7+
    • pip3 install -r requirements.txt
    • Run main.py
Owner
Ward
Privacy advocate & open source developer
Ward
Customer Segmentation using RFM

Customer-Segmentation-using-RFM İş Problemi Bir e-ticaret şirketi müşterilerini segmentlere ayırıp bu segmentlere göre pazarlama stratejileri belirlem

Nazli Sener 7 Dec 26, 2021
Official PyTorch implementation of DD3D: Is Pseudo-Lidar needed for Monocular 3D Object detection? (ICCV 2021), Dennis Park*, Rares Ambrus*, Vitor Guizilini, Jie Li, and Adrien Gaidon.

DD3D: "Is Pseudo-Lidar needed for Monocular 3D Object detection?" Install // Datasets // Experiments // Models // License // Reference Full video Offi

Toyota Research Institute - Machine Learning 364 Dec 27, 2022
Code for the SIGIR 2022 paper "Hybrid Transformer with Multi-level Fusion for Multimodal Knowledge Graph Completion"

MKGFormer Code for the SIGIR 2022 paper "Hybrid Transformer with Multi-level Fusion for Multimodal Knowledge Graph Completion" Model Architecture Illu

ZJUNLP 68 Dec 28, 2022
Demo for the paper "Overlap-aware low-latency online speaker diarization based on end-to-end local segmentation"

Streaming speaker diarization Overlap-aware low-latency online speaker diarization based on end-to-end local segmentation by Juan Manuel Coria, Hervé

Juanma Coria 187 Jan 06, 2023
Implementation of "Learning Multi-Granular Hypergraphs for Video-Based Person Re-Identification"

hypergraph_reid Implementation of "Learning Multi-Granular Hypergraphs for Video-Based Person Re-Identification" If you find this help your research,

62 Dec 21, 2022
A python implementation of Physics-informed Spline Learning for nonlinear dynamics discovery

PiSL A python implementation of Physics-informed Spline Learning for nonlinear dynamics discovery. Sun, F., Liu, Y. and Sun, H., 2021. Physics-informe

Fangzheng (Andy) Sun 8 Jul 13, 2022
Keep CALM and Improve Visual Feature Attribution

Keep CALM and Improve Visual Feature Attribution Jae Myung Kim1*, Junsuk Choe1*, Zeynep Akata2, Seong Joon Oh1† * Equal contribution † Corresponding a

NAVER AI 90 Dec 07, 2022
Tensorflow Implementation of the paper "Spectral Normalization for Generative Adversarial Networks" (ICML 2017 workshop)

tf-SNDCGAN Tensorflow implementation of the paper "Spectral Normalization for Generative Adversarial Networks" (https://www.researchgate.net/publicati

Nhat M. Nguyen 248 Nov 25, 2022
Graph Convolutional Networks in PyTorch

Graph Convolutional Networks in PyTorch PyTorch implementation of Graph Convolutional Networks (GCNs) for semi-supervised classification [1]. For a hi

Thomas Kipf 4.5k Dec 31, 2022
Animatable Neural Radiance Fields for Modeling Dynamic Human Bodies

To make the comparison with Animatable NeRF easier on the Human3.6M dataset, we save the quantitative results at here, which also contains the results of other methods, including Neural Body, D-NeRF,

ZJU3DV 359 Jan 08, 2023
CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Generation

CPT This repository contains code and checkpoints for CPT. CPT: A Pre-Trained Unbalanced Transformer for Both Chinese Language Understanding and Gener

fastNLP 341 Dec 29, 2022
Parameter Efficient Deep Probabilistic Forecasting

PEDPF Parameter Efficient Deep Probabilistic Forecasting (PEDPF) is a repository containing code to run experiments for several deep learning based pr

Olivier Sprangers 10 Jun 13, 2022
Hierarchical Cross-modal Talking Face Generation with Dynamic Pixel-wise Loss (ATVGnet)

Hierarchical Cross-modal Talking Face Generation with Dynamic Pixel-wise Loss (ATVGnet) By Lele Chen , Ross K Maddox, Zhiyao Duan, Chenliang Xu. Unive

Lele Chen 218 Dec 27, 2022
Single Image Random Dot Stereogram for Tensorflow

TensorFlow-SIRDS Single Image Random Dot Stereogram for Tensorflow SIRDS is a means to present 3D data in a 2D image. It allows for scientific data di

Greg Peatfield 5 Aug 10, 2022
Code in PyTorch for the convex combination linear IAF and the Householder Flow, J.M. Tomczak & M. Welling

VAE with Volume-Preserving Flows This is a PyTorch implementation of two volume-preserving flows as described in the following papers: Tomczak, J. M.,

Jakub Tomczak 87 Dec 26, 2022
DI-smartcross - Decision Intelligence Platform for Traffic Crossing Signal Control

DI-smartcross DI-smartcross - Decision Intelligence Platform for Traffic Crossin

OpenDILab 213 Jan 02, 2023
Video Instance Segmentation with a Propose-Reduce Paradigm (ICCV 2021)

Propose-Reduce VIS This repo contains the official implementation for the paper: Video Instance Segmentation with a Propose-Reduce Paradigm Huaijia Li

DV Lab 39 Nov 23, 2022
PromptDet: Expand Your Detector Vocabulary with Uncurated Images

PromptDet: Expand Your Detector Vocabulary with Uncurated Images Paper Website Introduction The goal of this work is to establish a scalable pipeline

103 Dec 20, 2022
Unoffical reMarkable AddOn for Firefox.

reMarkable for Firefox (Download) This repo converts the offical reMarkable Chrome Extension into a Firefox AddOn published here under the name "Unoff

Jelle Schutter 45 Nov 28, 2022
Buffon’s needle: one of the oldest problems in geometric probability

Buffon-s-Needle Buffon’s needle is one of the oldest problems in geometric proba

3 Feb 18, 2022