Ctrl K
ComunidadGuías…
✓ ficha editorial verificadaGoaes256encryptiongolangone-time-secret

OTS - One-Time-Secret Sharing Platform

OTS es una plataforma open source de intercambio de One-Time-Secrets desarrollada por Luzifer Knut Ahlers. Los secretos se cifran con AES-256 simétrico en el navegador antes de ser enviados al servidor, garantizando que la infraestructura nunca pueda acceder al contenido descifrado. Última versión estable: v1.22.0 (27 sep 2026). Soporta despliegue nativo y Docker Compose con Redis/Valkey para persistencia.

OTS - One-Time-Secret Sharing Platform

Plataforma open source de intercambio de secretos con cifrado AES-256 en el navegador

¿Qué es OTS?

OTS (One-Time-Secret) es una plataforma open source desarrollada por Luzifer Knut Ahlers para compartir secretos de forma segura. Los datos se cifran con AES-256 simétrico en el navegador del cliente antes de ser transmitidos al servidor, garantizando que la infraestructura backend nunca pueda acceder al contenido descifrado.

Última versión estable: v1.22.0 (27 sep 2026) | Releases oficiales

La plataforma genera automáticamente una URL única que contiene el ID del secreto y la contraseña de acceso, permitiendo compartir información sensible sin exponerla en tránsito.

Arquitectura y Seguridad

  • Cifrado: AES-256 simétrico en el navegador (client-side encryption) - los secretos se cifran antes de salir del cliente
  • Almacenamiento: Memoria RAM o Redis/Valkey para persistencia configurable
  • Protocolo: HTTP/HTTPS con soporte completo para proxy inverso (nginx, caddy)
  • Licencia: Apache-2.0 - permite uso comercial y modificación
  • Lenguaje: Go (Golang) - compilado estáticamente o dinámicamente
  • Frontend: Vue.js 3 con componentes reactivos optimizados

Características Principales

  • Cifrado en el navegador antes del envío al servidor - privacidad garantizada
  • Secretos con ID único y contraseña de acceso generada automáticamente
  • Expiración configurable de secretos (por defecto: 168 horas / 7 días)
  • Soporte para personalización vía YAML (--customize=path/to/customize.yaml)
  • Interfaz web autocontenida con logo y branding personalizado
  • API REST para creación de secretos (/api/create) con autenticación opcional
  • CLI oficial: ots-cli para automatización y scripting
  • Soporte multilenguaje con i18n (v1.22.0 incluye vue-i18n v11.4.12)

Casos de Uso

  • Compartir credenciales: contraseñas, tokens API, claves SSH entre equipos
  • Datos sensibles: información médica, financiera, legal confidencial
  • Documentación confidencial: manuales internos, especificaciones técnicas
  • Comercio electrónico: compartir datos de pago temporalmente con clientes
  • Desarrollo: compartir credenciales de entorno entre equipos DevOps
  • Soporte técnico: enviar información sensible a usuarios sin riesgo

Instalación y Despliegue

Docker Compose (Recomendado para Producción)

version: '3.8'
services:
  ots-app:
    image: ghcr.io/luzifer/ots:v1.22.0
    restart: always
    environment:
      - REDIS_URL=redis://valkey:6379/0
      - SECRET_EXPIRY="604800"
      - STORAGE_TYPE=redis
    depends_on:
      - valkey
    ports:
      - "3000:3000"
  valkey:
    image: docker.io/valkey/valkey:9.1.2-alpine
    restart: always
    volumes:
      - ./data:/data

Despliegue Nativo con Go

Requisitos: Node.js LTS y Go instalado localmente (Go 1.21+ recomendado).

# Construcción local dinámica
make build-local
# O estáticamente para despliegues sin dependencias:
CGO_ENABLED=0 make build-local

Para producción, usar compilación estática con CGO_ENABLED=0 reduce el tamaño del binario y elimina dependencias de librerías C.

Configuración Detallada

VariableDescripciónValor por defecto
REDIS_URLConexión a Redis/Valkey para persistenciaredis://default:password@host:6379/0
SECRET_EXPIRYExpiración en segundos (0 = indefinida)604800 (168h / 1 semana)
STORAGE_TYPEmétodo de almacenamientoredis o mem
CUSTOMIZERuta al archivo YAML de personalización/etc/ots/customize.yaml
LISTENInterfaz y puerto de escucha0.0.0.0:3000

Personalización Avanzada

---
appLogo: 'applogo.png'
overlayFSPath: '/etc/ots/assets'
customize:
  - name: "Custom Theme"
    value: "theme-dark.css"

Opciones disponibles en la Wiki oficial incluyen branding completo, temas CSS y configuración de API.

Consideraciones de Seguridad

  • HTTPS obligatorio: Configurar proxy inverso (nginx) con Let's Encrypt para cifrado en tránsito
  • Credenciales API: Autenticación básica en /api/create (--instance -u usuario:password)
  • Secretos de Redis: Usar credenciales seguras y ACLs modernos (Redis v6+)
  • Expiración automática: Configurar SECRET_EXPIRY para limitar ventana de acceso
  • CORS: Configurar headers CORS adecuados en proxy inverso

Backup y Persistencia

Montar volumen en Redis: ./data:/data. Para producción, considerar snapshots periódicos del volumen de datos con herramientas como rsync o scripts personalizados.

# Snapshot manual de persistencia
tar -czf backup-ots-$(date +%Y%m%d).tar.gz ./data/

OTS-CLI Oficial

# Crear secreto con autenticación
ots-cli create --instance https://ots.fyi -u myuser:mypass "mi secreto aquí"
# Listar secretos activos
ots-cli list --instance https://ots.fyi
# Eliminar secreto por ID
ots-cli delete --instance https://ots.fyi --id secret-id-123

Descargar binarios oficiales en Releases GitHub.

Alternativas Reales

  • Onetimesecret (entaracorp): Versión comercial con características adicionales y soporte empresarial
  • Pass: Para gestión de contraseñas local sin servidor, basado en GPG
  • DuckDNS + scripts personalizados: Soluciones DIY para casos específicos de autohospedaje

Preguntas Frecuentes

¿Puede el servidor leer los secretos?

No. El cifrado AES-256 ocurre en el navegador antes del envío. El servidor solo almacena datos cifrados y nunca puede descifrarlos sin la contraseña de acceso.

¿Qué es mejor: Redis o memoria?

Redis/Valkey permite persistencia de datos entre reinicios y múltiples instancias. Memoria es más simple pero pierde todos los datos al reiniciar el servicio.

¿Cómo expirar secretos automáticamente?

Configurar SECRET_EXPIRY en segundos (ej: 604800 = 1 semana) o usar Redis TTL para control granular por secreto.

¿Es seguro compartir secretos públicos?

No recomendado. Los secretos deben compartirse solo con destinatarios específicos que conozcan la contraseña de acceso generada.

Relacionado en HostingByte

Alternativas y comparativas · Guías de HostingByte

Fuentes verificadas

Fuentes y verificación
Quality gate 100/100 · información trazable para SEO/GEO
Fuente 1 ↗Fuente 2 ↗Fuente 3 ↗Fuente 4 ↗Fuente 5 ↗Fuente 6 ↗Fuente 7 ↗Fuente 8 ↗Fuente 9 ↗Fuente 10 ↗
Citación para IA y agentes
Resumen citable, canonical y fuentes verificadas en texto plano.
llms.txt de esta ficha →