mirror of https://github.com/zer0bin-dev/zer0bin
d043839fc9 | ||
---|---|---|
.github/ISSUE_TEMPLATE | ||
backend | ||
frontend | ||
.gitignore | ||
.prettierrc.json | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
Cartograph.md | ||
LICENSE | ||
README.md | ||
example.nginx |
README.md
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.7.0 | 🇺🇸 US |
Technologies used
Frontend:
Backend:
Misc:
(Sorta) made with Skill Icons
API
- GET
/api/p/:id
- Get a paste by ID - POST
/api/p/n
- Post a new paste - GET
/api/s
- Get stats about the instance
Self-host instructions
Requirements
- 🦀 Rust ≥ 1.58.0
- 🐈 Yarn ≥ 1.0.0
- 🐘 PostgreSQL ≥ 9.6
- 🦝 Nginx ≥ 1.18.0
- 🌾 Brotli plugin recommended
- 🐧 Linux or 😈 FreeBSD
- 🌄 Domain with SSL
Steps
Please run each command one at a time!
# export EDITOR=nano
git clone https://github.com/zer0bin-dev/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
yarn && yarn 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 |
logging.on_post_paste | true or false | Log on new paste is made |
logging.on_get_paste | true or false | Log on paste get |
Benchmarks
Measured with Lighthouse and Firefox Network Performance Analysis
Contributing
See CONTRIBUTING.md