3.5 KiB
title: OTS (One Time Secret) created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, file-sharing, secrets, one-time, encryption] confidence: high contested: false sources: [https://selfh.st/apps/?tag=File+Sharing, https://github.com/Lukaeses/ots]
📁 OTS (One Time Secret)
Service de partage de secrets éphémères type PrivNote, basé sur le projet original
onetimesecret, avec destruction après lecture.
📋 Informations Générales
| Attribut | Valeur |
|---|---|
| Nom | OTS (One Time Secret) |
| Slug | ots |
| Description | Partage de secrets one-time, destruction après première lecture |
| Site officiel | https://onetimesecret.com |
| Repository | https://github.com/Lukaeses/ots |
| Stars | 756 ⭐ |
| Licence | MIT |
| Langage principal | Ruby |
| Catégorie | File Sharing (secrets éphémères) |
| Tags | [catalogue, file-sharing, secrets, one-time, encryption] |
📝 Description
OTS (One Time Secret) est une implémentation open source du concept popularisé par le service public onetimesecret.com. L'idée est de permettre de transmettre une information sensible (mot de passe, clé API, URL privée) via un canal non chiffré (chat, email, SMS) sans que l'information ne persiste.
Le secret est chiffré côté serveur, l'URL générée n'est valable qu'une seule fois : dès que le destinataire l'ouvre, le secret est révélé puis immédiatement détruit. L'émetteur peut optionnellement recevoir une notification par email confirmant la lecture. Une variante permet aussi de recevoir le secret via email sans connaître l'URL directement (l'URL est envoyée au destinataire).
OTS se distingue de Cryptgeon et Hemmelig par le fait qu'il ne chiffre pas côté client : le chiffrement se fait sur le serveur, ce qui implique une confiance dans l'opérateur. En contrepartie, l'API est plus simple et l'intégration avec des outils tiers (CLI, plugins) plus aisée. Convient pour un usage interne d'équipe de confiance.
🚀 Installation
Via Docker (recommandé)
# docker-compose.yml
services:
ots:
image: ghcr.io/lukaeses/ots:latest
container_name: ots
restart: unless-stopped
ports:
- "3000:3000"
environment:
- REDIS_URL=redis://redis:6379
- SECRET_KEY=changeme
depends_on:
- redis
redis:
image: redis:7-alpine
volumes:
- ots_redis:/data
volumes:
ots_redis:
Installation manuelle
git clone https://github.com/Lukaeses/ots.git
cd ots
bundle install
ruby app.rb
⚙️ Configuration
- Backend Redis (ou filesystem) pour la persistance
- TTL par défaut des secrets
- Personnalisation des templates d'email
- Branding (logo, couleur)
🔗 Alternatives
- FlashPaper — PrivNote-like, plus minimaliste
- PrivateBin — pastebin chiffré, plus complet
- Hemmelig — chiffré E2E, support fichiers
🔒 Sécurité
- Chiffrement serveur AES-256 du secret au repos
- Destruction après première lecture garantie
- Aucune persistance après expiration
- HTTPS obligatoire (le secret transite par URL)
📚 Ressources
🔗 Pages Liées
- cat-file-sharing (n'existe pas encore, OK)
- app-flashpaper
- app-privatebin
- app-traefik
- recettes-docker-compose
- securisation-home-lab