README: https://github.com/rouralberto/simple-ots
1.1K
A lightweight and secure "One Time Secret" solution for sharing sensitive information safely.
Configure your reverse proxy (e.g., nginx, Caddy, Traefik) with TLS 1.3 for strong transport security.
Simple-OTS implements zero-knowledge encryption:
#key), which is never sent to the serversequenceDiagram
participant B as Browser
participant S as Server
B->>B: 1. Generate AES-256 key
B->>B: 2. Encrypt secret with key
B->>S: POST /write/ (ciphertext only)
S->>S: 3. Store ciphertext
S-->>B: uuid
B->>B: 4. Share URL (?read=uuid#key)
Note over B: Key never sent to server
Note over S: Server has no key
The easiest way to get started is using Docker:
# Pull the image
docker pull roura/simple-ots
# Run the container
docker run -p 80:80 roura/simple-ots
Or using the provided Docker Compose file:
# Clone the repository
git clone https://github.com/rouralberto/simple-ots.git
cd simple-ots
# Start the service
docker-compose up -d
Then navigate to http://localhost in your browser.
Important: The entire URL including the #key fragment must be shared. Without the key, the secret cannot be decrypted.
To restrict who can create secrets, set the AUTH_IPS environment variable to a comma-separated list of allowed IP addresses:
environment:
AUTH_IPS: 1.1.1.1,8.8.8.8
To persist secrets across container restarts, mount a volume for the database:
volumes:
- ./data:/var/www/db
To set up a development environment:
# Clone the repository
git clone https://github.com/rouralberto/simple-ots.git
cd simple-ots
# Edit docker-compose.yml to mount your local directory
# Start the container
docker-compose up
This project is licensed under the terms of the LICENSE file included in the repository.
Contributions are welcome! Feel free to open issues or submit pull requests.
Content type
Image
Digest
sha256:86df9a1a9…
Size
170.9 MB
Last updated
7 months ago
docker pull roura/simple-ots