Repolode
onetimesecret

onetimesecret/onetimesecret

Share passwords and sensitive text through single-use links that self-destruct after one view, keeping them out of chat logs and inboxes.

Open-source alternative to:Privnote

Stars
2,989
Forks
457
Open issues
256
Last commit
5 hours ago

What is it?

Onetime Secret lets you share sensitive information such as passwords through a link that can be opened only once. Messages sent over email or chat often persist in many places, so the content is exposed long after it was meant to be read. A one-time link removes itself after it is viewed, so only the intended recipient sees the contents.

The project is written in Ruby and uses Redis for storage. It can be run quickly with Docker by pointing it at a Redis instance and setting a persistent secret key. For production, the self-hosting setup adds a reverse proxy, PostgreSQL and RabbitMQ, plus authentication options including MFA and WebAuthn. A hosted version is available at onetimesecret.com.

The code is released under the MIT license.

Key features

  • 01Links can be viewed only once and self-destruct after viewing.
  • 02Runs with Docker and Redis for a quick start.
  • 03Supports a full self-hosted setup with PostgreSQL and RabbitMQ.
  • 04Offers authentication options including MFA and WebAuthn.
  • 05Includes a command-line tool for managing accounts.

Use cases

  • Sending a password to a colleague over chat without leaving it in message history.
  • Sharing credentials or API keys by email with a link that expires after one view.
  • Hosting a private secret-sharing service for a team or organization.

Quick start

  1. 1

    Start Redis

    docker run -p 6379:6379 -d redis:trixie
  2. 2

    Generate and store a persistent secret key (back it up)

    openssl rand -hex 32 > .ots_secret && chmod 600 .ots_secret
  3. 3

    Run Onetime Secret with Docker

    docker run -p 3000:3000 -d --name onetimesecret --add-host=host.docker.internal:host-gateway -e REDIS_URL=redis://host.docker.internal:6379/0 -e SECRET="$(cat .ots_secret)" -e HOST=localhost:3000 -e SSL=false onetimesecret/onetimesecret:v0.26.14
  4. 4

    Create an admin account at localhost:3000 via the CLI

    docker exec onetimesecret bin/ots customers create me@example.com --role colonel

Things to know

  • Losing the SECRET key makes existing secrets unreadable, so it must be backed up.
  • Production use requires SSL and self-hosting hardening; full authentication needs PostgreSQL and RabbitMQ.

In collections

Topics

FAQ

What is onetimesecret?
Share passwords and sensitive text through single-use links that self-destruct after one view, keeping them out of chat logs and inboxes. Onetime Secret lets you share sensitive information such as passwords through a link that can be opened only once. Messages sent over email or chat often persist in many places, so the content is exposed long after it was meant to be read. A one-time link removes itself after it is viewed, so only the intended recipient sees the contents.
Is onetimesecret free to use? What license does it have?
onetimesecret is open source under the MIT license. Check the license terms before using it in commercial products.
Is onetimesecret still maintained?
Actively maintained. The last commit to onetimesecret was on Nov 7, 2026.
What can I use onetimesecret for?
Sending a password to a colleague over chat without leaving it in message history. Sharing credentials or API keys by email with a link that expires after one view. Hosting a private secret-sharing service for a team or organization.
How do I install onetimesecret?
Start Redis: docker run -p 6379:6379 -d redis:trixie Generate and store a persistent secret key (back it up): openssl rand -hex 32 > .ots_secret && chmod 600 .ots_secret Run Onetime Secret with Docker: docker run -p 3000:3000 -d --name onetimesecret --add-host=host.docker.internal:host-gateway -e REDIS_URL=redis://host.docker.internal:6379/0 -e SECRET="$(cat .ots_secret)" -e HOST=localhost:3000 -e SSL=false onetimesecret/onetimesecret:v0.26.14 Create an admin account at localhost:3000 via the CLI: docker exec onetimesecret bin/ots customers create me@example.com --role colonel
Where can I get onetimesecret?
The source code and installation instructions are on GitHub: https://github.com/onetimesecret/onetimesecret

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects