Skip to content

zer0bin-dev/zer0bin

Repository files navigation



Just a place to paste

Stargazers Issues License


API

GET /api/p/:id - Get a paste by ID

GET /api/p/r/:id - Get raw content of paste by ID

POST /api/p/n - Post a new paste

GET /api/s - Get stats about the instance

Public instances

Submit your public instance here!

Website Expiration Max paste size Version Country
zer0b.in (not up yet) 7 days 40,000 chars vx.x.x ?
stepbro.voring.me 365 days 69,000 chars v0.3.0 πŸ‡ΊπŸ‡Έ US

Technologies used

Frontend:

Backend:

Self-host instructions

Requirements

  • πŸ¦€ Rust β‰₯ 1.58.0
    • 🚒 Cargo β‰₯ 1.58.0
  • 🐒 NodeJS β‰₯ 16.0
    • πŸš€ NPM β‰₯ 8.0.0
  • 🐘 Postgresql β‰₯ 12.0
  • 🦝 Nginx β‰₯ 1.18.0
  • πŸŒ„ Domain with SSL
  • 🐧 *nix OS

Steps

# export EDITOR=nano
git clone https://github.com/Domterion/zer0bin && cd zer0bin
$EDITOR example.nginx # Edit as appropriate
mv example.nginx yourdomain.tld
sudo cp ./yourdomain.tld /etc/nginx/sites-available
sudo cp ./yourdomain.tld /etc/nginx/sites-enabled
systemctl nginx restart # Or whichever process manager you use
cd frontend
cp config.example.json config.json
$EDITOR config.json # Edit as appropriate
npm i && npm run build
cd ../backend
psql -f schema.sql -U postgres zer0bin
cp config.example.json config.json
$EDITOR config.json # Edit as appropriate
cargo build --release
./target/release/zer0bin-bin # Preferably in a tmux session or as a service

Configuration

Key Values Description
server.backend_host 127.0.0.1 or 0.0.0.0 The host to run the backend on
server.backend_port Any open port The port to run the backend on
pastes.character_limit Number up to 2^64 - 1 The amount of characters allowed in a single paste
pastes.days_til_expiration Number up to 2^63 or -1 The days till a paste is to expire. If set to -1 then pastes will never expire
pastes.id_length Number up to 2^64 - 1 The length of the ID for each paste
databases.postgres_uri PostreSQL Connection URI The URI to use when connecting to a PostgreSQL database
ratelimits.seconds_in_between_pastes Number up to 2^64 - 1 The seconds between paste uploads
ratelimits.allowed_pastes_before_ratelimit Number up to 2^32 - 1 Amount of requests that can be made before they are blocked and have to wait

Benchmarks

This is on a paste with 200 lines!

Lighthouse

Lighthouse

Firefox network

Firefox Network