---
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é)
```yaml
# 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
```bash
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
- [Site officiel du projet initial](https://onetimesecret.com)
- [Documentation OTS](https://github.com/Lukaeses/ots#readme)
- [API publique onetimesecret.com](https://docs.onetimesecret.com/)

## 🔗 Pages Liées
- [[cat-file-sharing]] (n'existe pas encore, OK)
- [[app-flashpaper]]
- [[app-privatebin]]
- [[app-traefik]]
- [[recettes-docker-compose]]
- [[securisation-home-lab]]
