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
TextureGAN in Pytorch

TextureGAN This code is our PyTorch implementation of TextureGAN [Project] [Arxiv] TextureGAN is a generative adversarial network conditioned on sketc

Patsorn 147 Dec 14, 2022
This repository contains the code and models necessary to replicate the results of paper: How to Robustify Black-Box ML Models? A Zeroth-Order Optimization Perspective

Black-Box-Defense This repository contains the code and models necessary to replicate the results of our recent paper: How to Robustify Black-Box ML M

OPTML Group 2 Oct 05, 2022
Testability-Aware Low Power Controller Design with Evolutionary Learning, ITC2021

Testability-Aware Low Power Controller Design with Evolutionary Learning This repo contains the source code of Testability-Aware Low Power Controller

Lee Man 1 Dec 26, 2021
Deep Learning GPU Training System

DIGITS DIGITS (the Deep Learning GPU Training System) is a webapp for training deep learning models. The currently supported frameworks are: Caffe, To

NVIDIA Corporation 4.1k Jan 03, 2023
AI-Bot - 一个基于watermelon改造的OpenAI-GPT-2的智能机器人

AI-Bot 一个基于watermelon改造的OpenAI-GPT-2的智能机器人 在Binder上直接运行测试 目前有两种实现方式 TF2的GPT-2 TF

9 Nov 16, 2022
Adjusting for Autocorrelated Errors in Neural Networks for Time Series

Adjusting for Autocorrelated Errors in Neural Networks for Time Series This repository is the official implementation of the paper "Adjusting for Auto

Fan-Keng Sun 51 Nov 05, 2022
Segmentation models with pretrained backbones. Keras and TensorFlow Keras.

Python library with Neural Networks for Image Segmentation based on Keras and TensorFlow. The main features of this library are: High level API (just

Pavel Yakubovskiy 4.2k Jan 09, 2023
tf2onnx - Convert TensorFlow, Keras and Tflite models to ONNX.

tf2onnx converts TensorFlow (tf-1.x or tf-2.x), tf.keras and tflite models to ONNX via command line or python api.

Open Neural Network Exchange 1.8k Jan 08, 2023
Intrinsic Image Harmonization

Intrinsic Image Harmonization [Paper] Zonghui Guo, Haiyong Zheng, Yufeng Jiang, Zhaorui Gu, Bing Zheng Here we provide PyTorch implementation and the

VISION @ OUC 44 Dec 21, 2022
Hard cater examples from Hopper ICLR paper

CATER-h Honglu Zhou*, Asim Kadav, Farley Lai, Alexandru Niculescu-Mizil, Martin Renqiang Min, Mubbasir Kapadia, Hans Peter Graf (*Contact: honglu.zhou

NECLA ML Group 6 May 11, 2021
Code for the paper "Unsupervised Contrastive Learning of Sound Event Representations", ICASSP 2021.

Unsupervised Contrastive Learning of Sound Event Representations This repository contains the code for the following paper. If you use this code or pa

Eduardo Fonseca 81 Dec 22, 2022
OneShot Learning-based hotword detection.

EfficientWord-Net Hotword detection based on one-shot learning Home assistants require special phrases called hotwords to get activated (eg:"ok google

ANT-BRaiN 102 Dec 25, 2022
Just Go with the Flow: Self-Supervised Scene Flow Estimation

Just Go with the Flow: Self-Supervised Scene Flow Estimation Code release for the paper Just Go with the Flow: Self-Supervised Scene Flow Estimation,

Himangi Mittal 50 Nov 22, 2022
Load What You Need: Smaller Multilingual Transformers for Pytorch and TensorFlow 2.0.

Smaller Multilingual Transformers This repository shares smaller versions of multilingual transformers that keep the same representations offered by t

Geotrend 79 Dec 28, 2022
PyTorch Code for NeurIPS 2021 paper Anti-Backdoor Learning: Training Clean Models on Poisoned Data.

Anti-Backdoor Learning PyTorch Code for NeurIPS 2021 paper Anti-Backdoor Learning: Training Clean Models on Poisoned Data. The Anti-Backdoor Learning

Yige-Li 51 Dec 07, 2022
FairEdit: Preserving Fairness in Graph Neural Networks through Greedy Graph Editing

FairEdit Relevent Publication FairEdit: Preserving Fairness in Graph Neural Networks through Greedy Graph Editing

5 Feb 04, 2022
Deep Multi-Magnification Network for multi-class tissue segmentation of whole slide images

Deep Multi-Magnification Network This repository provides training and inference codes for Deep Multi-Magnification Network published here. Deep Multi

Computational Pathology 12 Aug 06, 2022
[NeurIPS 2020] Code for the paper "Balanced Meta-Softmax for Long-Tailed Visual Recognition"

Balanced Meta-Softmax Code for the paper Balanced Meta-Softmax for Long-Tailed Visual Recognition Jiawei Ren, Cunjun Yu, Shunan Sheng, Xiao Ma, Haiyu

Jiawei Ren 65 Dec 21, 2022
PyTorch implementation of "Conformer: Convolution-augmented Transformer for Speech Recognition" (INTERSPEECH 2020)

PyTorch implementation of Conformer: Convolution-augmented Transformer for Speech Recognition. Transformer models are good at capturing content-based

Soohwan Kim 565 Jan 04, 2023
Automatic Idiomatic Expression Detection

IDentifier of Idiomatic Expressions via Semantic Compatibility (DISC) An Idiomatic identifier that detects the presence and span of idiomatic expressi

5 Jun 09, 2022