🖊️ Just a place to paste

Overview


Just a place to paste

Stargazers Issues License


API

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

POST /p/n - Post a new paste

GET /s - Get stats about the zer0bin instance

Public instances

Submit your public instance here!

Website Country Expiration Max paste size Version
zer0b.in (not up yet) ? 7 days 40,000 chars vx.x.x
stepbro.voring.me 🇺🇸 US 365 days 100,000 chars v0.1.0

Technologies used

Frontend:

Backend:

Instructions

Requirements

  • Rust >= 1.58.0
  • Postgresql >= 12.0
  • NodeJS >= 16.0
  • Nginx
  • *nix OS

Steps

  1. git clone https://github.com/Domterion/zer0bin && cd zer0bin
  2. cp example.nginx /etc/nginx/sites-avaliable/yoursite.tld, edit as appropriate, sudo cp /etc/nginx/sites-avaliable/yoursite.tld /etc/nginx/sites-enabled/yoursite.tld && systemctl nginx restart
  3. psql -d postgres
  4. CREATE DATABASE zer0bin; and \c zer0bin
  5. Paste contents of schema.sql and \q
  6. cd frontend
  7. cp config.example.json config.json and edit as appropriate
  8. npm i && npm run build
  9. cd ../backend
  10. cp config.example.json config.json and edit as appropriate
  11. cargo build --release
  12. ./target/release/backend (preferably in a tmux session)

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
Comments
  • 🐛 3 Mobile Complications; Crash Prone

    🐛 3 Mobile Complications; Crash Prone

    💡 Summary

    The site on a mobile interface serves many complications. These are some that I have collected throughout using zer0bin. All of these happen on their own with no real direct way of reproducing other than just using it. Most of my pastes are around 4000 characters, see Steps to Reproduce.

    • [ ] Text unselectable horizontal of context (top right) box.
    • [ ] Save button does not register for an amount of time.
    • [ ] Crashes browser often on page load/scroll and pre-confetti load.

    🥰 Expected Behavior

    Selection on specified area with no issues.

    Responsive save button.

    No lag or site-wide/browser wide crashes.

    🤬 Actual Behavior

    Selecting text to the left side of the context box, matching the height, will become unselectable.

    Save button pressed but does not register until a minute later, with element spam on UI creating lag along with confetti.

    Often following said above, site becomes unresponsive for a moment before loading a lagful ammount of confetti.

    📝 Steps to Reproduce

    1. Visit paste on mobile with about 4000 characters, what I used.
    2. Attempt basic usage on site: scrolling, selecting, interaction with buttons.
    3. 2 but browser.

    📌 Environment

    zer0bin version: Production as of right now; v1.1.1(?) Your OS: Android 11 Your browser: Chrome

    bug 
    opened by insyri 5
  • 🤔 replace Cartograph CF with a free font

    🤔 replace Cartograph CF with a free font

    I realize there is already a note about this in the repository. However, it simply messes with those who host without realizing they are using a font without a proper license. The font could be added in locally.

    wontfix 
    opened by nullobsi 3
  • 🚀

    🚀

    Details

    • Domain name: https://p.soopy.moe
    • What country is the server in: 🇭🇰 Hong Kong
    • What server hardware/provider is the server on: Personal infrastructure (old pc)
    • Are you using CloudFlare or any Google services (domain, DNS, etc): Cloudflare DNS, proxy disabled.
    • What version of zer0bin is it running: 1.1.1
    • Have you made any modifications to zer0bin? If so, what?: none
    • What are the ratelimits: 2 seconds between pastes, 5 pastes before getting 429'd
    • What is the expiration time of pastes: 365 days
    • What is the max paste size: 75k char limit
    public instance 
    opened by soopyc 1
  • 🚀

    🚀

    Details

    • Domain name: https://zbin.possums.xyz
    • What country is the server in: USA
    • What server hardware/provider is the server on: Local hardware (old laptop)
    • Are you using CloudFlare or any Google services (domain, DNS, etc): Cloudflare for domain + DNS
    • What version of zer0bin is it running: v1.1.1
    • Have you made any modifications to zer0bin? If so, what?: None
    • What are the ratelimits: 2 seconds between pastes, 5 pastes allowed before limiting
    • What is the expiration time of pastes: 180 days
    • What is the max paste size: 75000 chars
    public instance 
    opened by pupbrained 1
  • 🤦 Duplicate issue, ignore

    🤦 Duplicate issue, ignore

    Summary

    There should be a burn on read function, if the paste link is opened it will be automatically removed securely. Happy to help with the implementation :)

    duplicate 
    opened by teifler 1
  • 🙅 Server won't start due to no config

    🙅 Server won't start due to no config

    💡 Summary

    zer0bin does not start

    🥰 Expected Behavior

    /zer0bin/backend/target/release$ ./zer0bin-bin thread 'main' panicked at 'Failed to load config: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/config.rs:45:33 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

    🤬 Actual Behavior

    📝 Steps to Reproduce

    📌 Environment

    zer0bin version: 1.02

    Your OS: Debian Bullseye Your browser: Firefox

    I hope someone can help me with this Problem :)

    invalid 
    opened by DrSkyfaR 1
  • 🐛 API errors not handled

    🐛 API errors not handled

    💡 Summary

    API errors aren't being shown in the message box

    🥰 Expected Behavior

    Errors will be shown in the message box in the top right

    🤬 Actual Behavior

    API requests will silently fail with no notification to the user

    📝 Steps to Reproduce

    1. Open zer0bin
    2. Try creating a paste that exceeds the zer0bin instances max character count
    bug 
    opened by Domterion 1
  • ✨ CLI Client

    ✨ CLI Client

    Summary

    Either in bash or rust, just to post and view pastes with flag to change instance

    Proposed usage:

    zer0bin "hello" # returns https://zer0b.in/~/foobar
    zer0bin -f ./bar.txt # same as before but reads content from bar.txt
    zer0bin "Over 40k letters" # returns error: paste too large
    zer0bin -i stepbro.voring.me "hello" # returns https://stepbro.voring.me/~/foobar
    curl https://rawtext.com/example | zer0bin # returns paste from piped content
    
    feature request 
    opened by ThatOneCalculator 1
  • failed to load config from /root/zer0bin/frontend/vite.config.ts🐛

    failed to load config from /root/zer0bin/frontend/vite.config.ts🐛

    💡 Summary

    yarn run build doesnt work

    🥰 Expected Behavior

    yarn run build should work

    🤬 Actual Behavior

    `root@misc:~/zer0bin/frontend# yarn run build yarn run v1.22.19 $ vite build failed to load config from /root/zer0bin/frontend/vite.config.ts error during build: /root/zer0bin/frontend/vite.config.ts:58 api_url: JSON.stringify(env.ZEROBIN_API_URL ?? env.API_URL), ^

    SyntaxError: Unexpected token '?' at wrapSafe (internal/modules/cjs/loader.js:915:16) at Module._compile (internal/modules/cjs/loader.js:963:27) at Object.require.extensions. [as .ts] (/root/zer0bin/frontend/node_modules/vite/dist/node/chunks/dep-689425f3.js:62006:20) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at loadConfigFromBundledFile (/root/zer0bin/frontend/node_modules/vite/dist/node/chunks/dep-689425f3.js:62014:17) at loadConfigFromFile (/root/zer0bin/frontend/node_modules/vite/dist/node/chunks/dep-689425f3.js:61933:32) at processTicksAndRejections (internal/process/task_queues.js:97:5) error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. `

    📝 Steps to Reproduce

    1.Follow steps in the tutorial 2.configure everything 3.run yarn 4. run yarn run build 5. Boom

    📌 Environment

    zer0bin version: Newest Your OS:Ubuntu 22.04 LXC container Your browser: Firefox 107.0.1 (shouldn't matter in that report)

    bug 
    opened by OhaDerErste 1
  • ✨ Download/Raw button

    ✨ Download/Raw button

    Summary

    Similar to PasteBin, it would be useful to have a "Raw" and a "Download" option. Since the "save" icon is greyed out on a paste that already exists, it could be replaced with a download button and icon with a "raw" option placed somewhere else.

    feature request 
    opened by nullobsi 0
Releases(v1.0.1)
  • v1.0.1(Mar 24, 2022)

    It's here, the initial release! 🚀

    Instead of the changes for v1, let's just give the rundown of features!

    • ✨ Code highlighting and line numbers (default)
    • 📖 Markdown rendering (add --- or md to the start of your paste)
    • ‍🧑‍💻 CLI Client
    • 👀 View counter
    • ⌨️ Keybinds (Ctrl + S: save paste, Ctrl + N: new paste, Ctrl + D: duplicate paste)
    • 📱 Mobile-friendly UI
    • 🧈 Super smooth scrolling
    • 🖼️ Badge generation for stats (seen below)

    from README.md

    Thank you to all contributors and those that tested the release candidate!

    @Domterion @ThatOneCalculator @idanoo

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0-alpha(Mar 5, 2022)

    Updated a lot and we are closer to release!

    Changes

    • Ratelimits, for now this is only for the paste, /p, routes
    • Stats route to get basic stats about the instance
    • Frontend rewrite, now using parcel.js

    I may be forgetting stuff but that's fine

    and thanks to @ThatOneCalculator for their tremendous help with all stages of development

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1-alpha(Mar 1, 2022)

Owner
mellowmarshe
🦴 Developer interested in back-end systems and scalable software.
mellowmarshe
A simple clone of reddit r/place

Run First install rustup with instructions on Rustup. Then run it: cargo run Endpoints There is two endpoints, one for getting canvas and the other fo

Kaveh 1 Sep 12, 2022
Federated blogging application, thanks to ActivityPub (now on https://git.joinplu.me/ — this is just a mirror)

Plume Website — Documentation — Contribute — Instances list Plume is a federated blogging engine, based on ActivityPub. It is written in Rust, with th

Plume 1.9k Jan 8, 2023
Achieve it! How you ask? Well, it's pretty simple; just use greatness!

Greatness! Achieve it! How you ask? Well, it's pretty simple; just use greatness! Disclaimer I do not believe that greatness is the best. It fits a me

Isacc Barker (Milo Banks) 107 Sep 28, 2022
Just a bot for Neovim's Matrix room(s)

nvim-matrix-bot Currently just supports replying to messages with :h <some_doc> or similar in them with a link to the docs on Neovim's website. Plan i

null 8 Aug 6, 2022
Gnu-copypasta-maker - You'd just wanna interject for a moment!

GNU Copypasta Maker To compile, use make. To install, use sudo make install or if you are root make install To uninstall, use sudo make uninstall or i

Ahmet Efe AKYAZI 3 Jan 30, 2022
Just toying with rust, nothing to see here :)

Just toying with rust, nothing to see here :)

Alexander Schüssler 1 Feb 24, 2022
A simple library with just one struct which is used to wrap around pointers

A simple library with just one struct which is used to wrap around pointers. This can be used to create pointers and share them across threads without the hassle of synchronization if you really do not care about that.

null 1 Apr 11, 2022
Just a personal Rust Playground to play around and understand the language.

Rust Proactive Introduction The code is a bit messy but it serves just as a personal Rust Playground to play around and understand the language. You c

Fernando Cejas 3 Dec 21, 2022
simple lottery maker made with rust, just web framework

Toy project for fun It's just for fun! making plausible lottery numbers for Korea made with rust This lottery web framework generates and presents pla

yacho (bakjuna) 4 Nov 24, 2023
🖊️ // Just a place to paste

Just a place to paste Features ✨ Code highlighting and line numbers (default) ?? Markdown rendering (click the button) ?? Single-view pastes (click th

zer0bin 68 Dec 28, 2022
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
An API Wrapper for https://paste.myst.rs written in rust

PasteMyst.RS pastemyst-rs is an api wrapper for pastemyst written in Rust. ⚠ This package is under development ⚠ Sample usage To get a paste from past

ANF Studios 14 Nov 28, 2021
A mini paste bin and url shortener written in rust without databases.

pb Build $ cargo build --release Environment Variables PB_DATA: /some/path (Default: ./pb_data) PB_SITE: Url of your site. (Default: http://localhost:

Edward P 5 Jul 26, 2022
A CLI companion tool for paste.misterio.me, allowing you to easily upload and manage your pastes

This is a CLI companion tool for paste.misterio.me, allowing you to easily upload and manage your pastes, as well as download any pastes you want.

Gabriel Fontes 1 Jan 26, 2022
A CLI tool to copy-paste different Ipsums from your terminal

Lorem clipsum Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Project Built With Usage Contributing Contact Ab

Schrödinger Hat 9 May 30, 2023
SQLite extension for working with operating system's clipboard (copy/paste functions)

SQLite extension for working with operating system's clipboard This extension adds the following functions to SQLite: Copy Paste Long name CLIPBOARD_C

Sergey Khabibullin 4 Jun 12, 2023
Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. After all it's just a cat.

Bongo Copy Cat Introduction Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. Afte

Abhijeet Singh 4 Jan 23, 2023
A simple menu to keep all your most used one-liners and scripts in one place

Dama Desktop Agnostic Menu Aggregate This program aims to be a hackable, easy to use menu that can be paired to lightweight window managers in order t

null 47 Jul 23, 2022
in-place allocation-reusing queues for Rust

FAQs Q: Why did you make this? A: For tracing, I wanted to be able to send formatted log lines to a dedicated worker thread that writes them to a file

Eliza Weisman 141 Jan 3, 2023
A place for the community to upload example Scrypto code

community-scrypto A place for the community to upload example Scrypto code. Please fork from main, work out of a sub-directory of your choosing, and t

Radix DLT 80 Dec 13, 2022