# paste.es — Compartición de secretos cifrados Servicio de compartición de secretos efímeros y cifrados para el público hispanohablante, alojado y patrocinado por [cloudhost.es](https://cloudhost.es). > Basado en [Hemmelig](https://github.com/HemmeligOrg/Hemmelig.app) v7 — arquitectura de cifrado de conocimiento cero. --- ## Cómo funciona 1. Escribe tu secreto en [paste.es](https://paste.es) 2. Configura la expiración, límite de vistas y contraseña opcional 3. Comparte el enlace generado con el destinatario 4. El secreto se elimina automáticamente tras ser leído o al expirar **Arquitectura de conocimiento cero:** Todo el cifrado ocurre en tu navegador. El servidor solo almacena datos cifrados y nunca ve tus secretos ni las claves de descifrado. Los datos son completamente efímeros. --- ## Características - **Cifrado AES-256-GCM del lado del cliente** — tus datos se cifran antes de salir del navegador - **Secretos autodestructivos** — expiración configurable y límite de vistas - **Sin recopilación de datos** — sin analíticas, sin registros de IP, sin rastreo - **Protección por contraseña** — capa de seguridad adicional opcional - **Restricción por IP** — limita el acceso a rangos de IP específicos - **Subida de archivos** — comparte archivos cifrados (usuarios autenticados) - **Editor de texto enriquecido** — da formato a tus secretos - **Códigos QR** — compartición fácil desde móvil - **Soporte multiidioma** — interfaz disponible en 10 idiomas (español por defecto) - **Notificaciones webhook** — recibe notificaciones cuando se ven o eliminan secretos --- ## Inicio rápido ### Docker Compose (recomendado) ```bash git clone https://devops.cloudhost.es/Malin/paste.es.git cd paste.es # Copia y edita el fichero de entorno cp .env.example .env # Edita .env con tus valores (ver sección Configuración) # Construye y arranca docker compose up -d --build ``` El servicio quedará disponible en `http://localhost:3000`. ### Docker (imagen directa) ```bash docker run -d \ --name paste-es \ -p 3000:3000 \ -v paste-data:/app/database \ -v paste-uploads:/app/uploads \ -e DATABASE_URL="file:/app/database/paste.db" \ -e BETTER_AUTH_SECRET="$(openssl rand -base64 32)" \ -e BETTER_AUTH_URL="https://paste.es" \ -e HEMMELIG_INSTANCE_NAME="paste.es" \ ghcr.io/cloudhost-es/paste.es:latest ``` --- ## Configuración Copia `.env.example` a `.env` y ajusta los valores: ```bash cp .env.example .env ``` ### Variables requeridas | Variable | Descripción | |----------------------|------------------------------------------------------| | `DATABASE_URL` | Ruta a la base de datos SQLite | | `BETTER_AUTH_SECRET` | Clave secreta para las sesiones (mín. 32 caracteres) | | `BETTER_AUTH_URL` | URL pública de tu instancia | ### Generar secretos seguros ```bash openssl rand -base64 32 ``` Consulta [docs/env.md](docs/env.md) para la referencia completa de variables de entorno. --- ## Desarrollo local ```bash # Instalar dependencias npm install # Iniciar el servidor de desarrollo (API + cliente en terminales separadas) npm run dev:api # Terminal 1 — API en :3000 npm run dev # Terminal 2 — cliente Vite con HMR ``` --- ## Despliegue en producción ### Detrás de un proxy inverso (Nginx / Caddy) El servicio escucha en el puerto `3000`. Configura tu proxy para que apunte a él: **Nginx:** ```nginx server { listen 443 ssl; server_name paste.es; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` **Caddy:** ```caddyfile paste.es { reverse_proxy localhost:3000 } ``` ### Primer uso — crear cuenta de administrador Tras el primer arranque, visita `https://paste.es/setup` para crear la cuenta de administrador y configurar la instancia. --- ## Documentación - [Variables de entorno](docs/env.md) — referencia completa de configuración - [Docker](docs/docker.md) — guía de despliegue con Docker - [Helm / Kubernetes](docs/helm.md) — despliegue con Helm - [Cifrado](docs/encryption.md) — cómo funciona el cifrado del lado del cliente - [Login social](docs/social-login.md) — configuración de OAuth (GitHub, Google, etc.) - [Peticiones de secretos](docs/secret-request.md) — solicita secretos a otros de forma segura - [Webhooks](docs/webhook.md) — notificaciones de eventos - [Health checks](docs/health.md) — sondas de disponibilidad para orquestación - [Métricas Prometheus](docs/metrics.md) — monitorización con Prometheus - [API REST](docs/api.md) — referencia de la API y especificación OpenAPI - [CLI](docs/cli.md) — interfaz de línea de comandos para automatización - [Tests E2E](docs/e2e.md) — pruebas end-to-end con Playwright --- ## Alojamiento y patrocinio paste.es está alojado y patrocinado por **[CloudHost.es](https://cloudhost.es)**, empresa española de alojamiento web comprometida con la privacidad y la seguridad de los datos. --- ## Créditos paste.es está basado en [Hemmelig](https://github.com/HemmeligOrg/Hemmelig.app) por Bjarne Øverli, publicado bajo la O'Saasy License Agreement. Consulta [LICENSE](LICENSE) para más detalles.