[READ-ONLY] Mirror of https://github.com/thoda-dev/shhh. Self-hostable zero-knowledge pastebin for secrets that expire on their own
docker end-to-end-encryption nuxt nuxtjs pastebin secrets selft-hosted zero-knowledge
shhh apps docs content index.md
2.6 kB
Markdown


seo: title: shhh — self-hosted zero-knowledge pastebin description: Share secrets that expire on their own. The server stores ciphertext and nothing else — the decryption key lives in the URL fragment and never reaches it. Self-hostable with Docker in one command. #

::u-page-hero #title Say it once. We'll forget.

#description A self-hostable, zero-knowledge pastebin for sharing secrets — text and files — that expire on their own.

The server stores ciphertext and nothing else. The decryption key lives in the URL fragment, which browsers never send.

#links :::u-button #

color: neutral size: xl to: /getting-started/introduction trailing-icon: i-lucide-arrow-right #

Get started :::

:::u-button #

color: neutral icon: i-simple-icons-github size: xl to: https://github.com/thoda-dev/shhh variant: outline #

Source ::: ::

::u-page-section #title Built for the "send me the password" moment

#features :::u-page-feature #

icon: i-lucide-lock-keyhole #

#title [Zero-knowledge]{.text-primary} by design

#description AES-256-GCM in the browser. The key travels in the URL fragment, which is never transmitted. A database dump reveals nothing. :::

:::u-page-feature #

icon: i-lucide-timer #

#title Expiry that [actually expires]{.text-primary}

#description Every paste has a deadline and, optionally, a maximum number of reads. The counter is decremented atomically — a one-read link really is read once. :::

:::u-page-feature #

icon: i-lucide-eye-off #

#title Link previews [don't burn it]{.text-primary}

#description Reading is two steps: metadata first, ciphertext only on an explicit click. Chat unfurlers and antivirus scanners that follow the link don't consume it. :::

:::u-page-feature #

icon: i-lucide-sliders-horizontal #

#title [Every limit]{.text-primary} is yours

#description Retention, sizes, quotas, rate limits, who may register — all configured from the admin dashboard, none baked into the code. :::

:::u-page-feature #

icon: i-lucide-container #

#title [One command]{.text-primary} to deploy

#description Docker Compose with PostgreSQL included, migrations applied on boot, health endpoint ready for your monitoring. :::

:::u-page-feature #

icon: i-lucide-shield-check #

#title Abuse protection [that layers]{.text-primary}

#description Turnstile, per-IP and per-account rate limits, instance quotas, automatic probe banning, optional enforced 2FA. ::: ::