Show HN: Pbnj – A minimal, self-hosted pastebin you can deploy in 60 seconds

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!

pbnj.sh

60 points

bhavnicksm

a day ago


18 comments

indigodaddy a day 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 :) )

  • mubou2 6 hours ago

    People don't usually expose self-hosted services directly to the internet, even if they have a login page. You use a reverse proxy, that way they can be HTTPS, share port 443, and use subdomains (Caddy makes this really easy). And then adding auth becomes trivial, and you can even put your services behind some SSO sign-in if you want to.

    If possible though it's best to use a VPN so that nothing needs to be accessible from the internet at all (not to mention then you can access your NAS shares w/o needing a web UI). That's why I actually prefer when self-hosted apps don't have their own auth system, or at least let me disable it. If everything's internal only, I don't need it anyway.

  • thunderbong 21 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 20 hours ago

      Ah, well that's kinda perfect actually

  • 0_____0 a day 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 21 hours ago

Hey there, first of all congratulations, it's really nice and minimal and Illove it!

But Cloudflare is not self hosting!

  • bhavnicksm 16 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 21 hours ago

HOWTO without CloudFlare, is it possible?

  • bhavnicksm 16 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 16 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 21 hours ago

    pnpm run build

    should do it

    • davidcollantes 20 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 20 hours ago
        3 more

        - 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 19 hours ago
          2 more

          That gave me some other errors. I am giving up. Thanks for helping!

          • Numerlor 18 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 19 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.