52 points by bhavnicksm 15 hours ago|15 comments
I'm sure folks here have seen pastebins a thousand times. There's no innovation left in this space – and that's kind of the point.

When I wanted to self-host a pastebin, every option I found was too much. Git-based version control, OAuth, elaborate admin panels. I just wanted something I could deploy in under a minute with a CLI that actually works.

So I built pbnj (yes, like the sandwich).

What it is:

- A minimal, beautiful pastebin with syntax highlighting for 100+ languages

- One-click deploy to Cloudflare (free tier gives you ~100,000 pastes)

- CLI-first: pbnj file.py → get a URL, copied to clipboard

- Memorable URLs: crunchy-peanut-butter-sandwich instead of x7f9a2

- Private pastes with optional secret keys

- Web UI for when you're not in a terminal

What it isn't:

- No accounts, no OAuth, no git integration

- No multi-user support (fork it and run your own)

- No expiring pastes, no folders, no comments

- Not trying to replace Gist or be a "platform"

Why not just use Gist? Maybe you want to own your data. Maybe you enjoy self-hosting things. Or maybe you're a little autistic like me and just like having your own stuff.

Live demo: https://pbnj.sh GitHub: https://github.com/bhavnicksm/pbnj CLI: npm install -g @pbnjs/cli

If this scratches an itch for you, I'd appreciate a star on GitHub. Happy to answer any questions!

indigodaddy 13 hours ago
This is really well done, but the problem I have with (most) selfhosted bins is that anyone can use it, and I don’t want to be responsible for the content that might show up.

This is super neat though, and could almost be used as a blog replacement (if of course I could prevent others from using it/posting to it :) )

thunderbong 12 hours ago
Usually, for these kind of programs, I put them behind a proxy with basic auth.

Also, when I tried to add something on the demo site, it asked me for an auth key.

Looking at the code, the package.json file has an entry for AUTH_KEY (in the Cloudflare config) to prevent random people from pasting stuff.

indigodaddy 11 hours ago
Ah, well that's kinda perfect actually
0_____0 12 hours ago
I'm planning to set up a VPN into my home network for stuff like this. Services, NAS, etc. that I want remote access to but don't want exposed to the deep dark ocean of the internet.
Tt6000 11 hours ago
Hey there, first of all congratulations, it's really nice and minimal and Illove it!

But Cloudflare is not self hosting!

bhavnicksm 6 hours ago
Yes, that's quite fair re:Cloudflare!

I couldn't find the right words to describe this, in comparison to something like Github Gist. I suppose "Own-your-data" since the D1 db generated is yours completely.

Happy to change the branding to be more reflective of this!

davidcollantes 12 hours ago
HOWTO without CloudFlare, is it possible?
bhavnicksm 6 hours ago
Hey!

Right now, some things are somewhat hard-coded to be Cloudflare compatible. If someone's willing, you can just deploy this without Cloudflare, but you'd need to dig into the code a little.

In the future releases, I'll make it possible to host it on VPCs and release a Dockerfile along with it, so that should help a little.

Thanks for checking the project out!

som 7 hours ago
I use CloudFlare a lot for "self hosting" .. but I also run an old pi from home with Bun in place of workers. Suprisingly compatible and low lift.

Not exactly "without CloudFlare", but for true compat you can probably also self host workerd itself which is open source: github.com/cloudflare/workerd

thunderbong 11 hours ago
pnpm run build

should do it

davidcollantes 11 hours ago
That creates `dist` with:

404.png .assetsignore _astro/ bread.png favicon.png favicon.svg jelly.png lock.png logo.png og-image.png pbnj.png peanut.png _routes.json styles/ _worker.js/

In it. What comes next?

catapart 10 hours ago
- navigate to dist directory

- run pnpm dlx http-serve

- navigate to one of the provided ip addresses

(this uses the tunnl.gg service and is not necessary for local network access)

- [optional, for access via internet] run ssh -t -R 80:[provided ip address including port] proxy.tunnl.gg

davidcollantes 10 hours ago
That gave me some other errors. I am giving up. Thanks for helping!
Numerlor 9 hours ago
Fwiw if you want a simple pastebin, I've been running pinnwand for a couple years without any issues off of a single short docker compose file, I think running it on host also shouldn't be complicated
mervz 9 hours ago
Crazy that people really need instructions on how to self-host stuff these days... this stuff used to be something most devs could figure out.