Self-hosted Privnote alternative: one-time secret sharing with Cryptgeon

Everyone has sent a password over the internet and immediately regretted the trail it left. The usual fix is a burn-after-reading link from a site like Privnote: paste your secret, get a URL, and it deletes itself after someone reads it. It works, but there's an uncomfortable detail at the center of it. You're handing your plaintext secret to a server you don't own and trusting it to encrypt honestly, delete promptly, and never peek. Cryptgeon is the same idea, built so that trust isn't required -- and you can run it yourself.
What Cryptgeon is
Cryptgeon is a self-hosted service for sharing secure, one-time notes and files. You write a note (or drop in a file), it hands you a link, and the moment that link is opened the note is destroyed. So far, exactly like Privnote. The difference is architectural: the encryption happens entirely in your browser before anything is sent, and the decryption key lives in the URL fragment -- the part after the `#` that browsers never transmit to the server. The server only ever holds an opaque encrypted blob it has no way to read.
This isn't a stripped-down demo. It's a small, fast application (Rust backend, Svelte frontend) that does the whole job: text and files, view-count or time-based expiry, optional passwords, size limits, and theming. Privnote gates custom branding and an API behind its paid "Business" tier. Cryptgeon just includes all of it, because there's no upsell -- it's your server.
The features that actually matter
- End-to-end encryption by design. Content is encrypted in the browser with AES-GCM and a 256-bit key, and that key rides in the URL fragment that never reaches the server. Even you, the operator, only ever see ciphertext -- there is no "admin view" of a note, because the data to build one doesn't exist server-side.
- Burn after reading. A note is deleted the instant it's viewed. You can allow more than one read if you need to, but the default is a single open and then it's gone for good.
- Time-based expiration. Set a lifetime in minutes, hours, or days. When it lapses the note is destroyed whether or not anyone opened it -- useful for secrets that shouldn't linger even unread.
- Files, not just text. Share a file the same way you share a note, encrypted identically, up to a size limit you set. Good for a key file, a certificate, or a config you don't want sitting in a chat log.
- Optional password. Add a password separate from the link, folded into the decryption, so an intercepted URL alone isn't enough to open the note.
- No accounts, nothing on disk. There's no registration and no user database. Encrypted notes live only in Redis, in memory -- there's no growing archive of everyone's secrets to leak or subpoena.
- Branding, limits, and an API. Environment variables set the title, page name, on-page text, and theme, plus the max size, view count, and expiration. A REST API -- with an official command-line client on top of it -- automates note creation from scripts, so a deploy pipeline can generate a one-time secret and hand it off without a human copying anything. That's again the kind of thing hosted services reserve for their paid plan.
Why self-host it instead of the hosted version
Your secrets never touch someone else's server as plaintext. With Cryptgeon that's true by construction, not by promise -- but self-hosting closes the last gap. You control the machine, the logs, and the retention, so "the server can't read it" isn't a policy page you're taking on faith.
The cost doesn't scale with people. Hosted burn-note services charge per user or per seat for teams and meter the useful features. Cryptgeon is a single small container plus Redis. One instance serves your whole company, your clients, and your side projects for the price of the resources it sips.
Control and branding are yours. Put it on your own domain, match your colors, set your own limits, and wire it into scripts through the API. It becomes *your* secret-sharing tool that colleagues and clients recognize, not a generic third-party link that always looks faintly like phishing.
Who it's for
IT and security teams who hand out credentials, recovery codes, and API keys all day and need those handoffs to leave no residue in Slack or email. Agencies and freelancers passing logins to clients who want the exchange to look professional and on-brand rather than routed through an unfamiliar website. Privacy-minded individuals sending a Wi-Fi password, a document, or a note to a partner or family member and preferring it not live forever on a stranger's server.
The honest setup notes
Running it yourself is real work, and we'd rather say so. Cryptgeon stores everything in Redis, which is in-memory: you need to size that memory to your traffic and configure eviction sensibly, because when Redis is full, it's full. It's ephemeral by design -- a restart that loses Redis loses in-flight notes, which is usually fine for one-time secrets but worth understanding before you rely on it. And you're on the hook for keeping the container updated, sitting it behind HTTPS (encryption in the browser assumes the page itself arrived untampered), and watching the size and expiration limits so nobody parks giant files in your memory store.
None of it is exotic, but it's a standing responsibility -- a service to patch, a backing store to watch, a reverse proxy to keep honest. Or let us run it. We handle the container, the Redis instance, the TLS, and the updates, and you get a working secret-sharer on your domain without owning the plumbing.
Deploy it in one click
Rolling your own means a Docker host, a Redis container tuned for memory and eviction, a reverse proxy with a real certificate, the environment variables for your limits and branding, and a plan for keeping all of it current. It's an afternoon the first time and a recurring chore after that.
On Caliber Node it's a button. You deploy Cryptgeon in one click, and it comes up already behind HTTPS on a domain, with Redis provisioned, sensible limits set, and updates handled. You still get full ownership -- real logs, SFTP access, and your configuration is yours -- without assembling the stack by hand. When a new version ships, updating is managed rather than a manual pull-and-pray.
First run
- Open your Cryptgeon URL -- there's no login, you land straight on the compose screen.
- Type your note, or switch to file mode and drop in the file you want to share.
- Choose how it dies: after a number of views, or after a time limit -- and optionally add a password.
- Click create, then copy the generated one-time link.
- Send the link through one channel and the password, if you set one, through another. It self-destructs the first time it's opened.
That's the entire loop, and it's fast enough to become the reflex you reach for instead of pasting a password into chat.
The bigger picture
Sharing a secret is one of the most sensitive things you do online, and it's strange how casually we outsource it. A burn-after-reading link is only as trustworthy as whoever runs the server behind it. Cryptgeon flips that: the server is built so it *can't* betray you, and when you host it yourself, there's no "whoever" left to trust. Owning this small category of tool means the next password, key, or private document you send leaves no copy on anyone's machine but your own.
Deploy Cryptgeon in a few minutes →
One-click self-hosted apps, managed for you -- real logs, SFTP, and your data always exportable. Never a black box.