Saltar al contenido principal

Seguridad y publicación

Principios básicos

PlexSub almacena datos operativos, usuarios, credenciales de integraciones y configuración sensible. Toda instalación debe tratarse como sensible.

Nunca publiques:

  • .env
  • API keys
  • Tokens de Plex
  • Credenciales SMTP
  • Claves Web Push privadas
  • Backups
  • Dumps de base de datos
  • Cookies
  • Certificados privados
  • Claves SSH

HTTPS

Si PlexSub se expone fuera de tu red local, usa HTTPS. Configura:

  • APP_BASE_URL con la URL pública HTTPS.
  • FORCE_SECURE_COOKIES=1.
  • TRUST_PROXY_LEVEL=1 solo si hay un proxy inverso o túnel de confianza delante.

Si no hay proxy delante, deja TRUST_PROXY_LEVEL=0.

Proxy inverso

Cuando uses Nginx, Caddy, Traefik, Cloudflare Tunnel u otro proxy:

  1. Publica solo el puerto necesario.
  2. Mantén la app escuchando internamente en 5000.
  3. Pasa cabeceras estándar de proxy.
  4. Usa HTTPS hacia el usuario final.
  5. Revisa cookies después del primer login.

Secretos

APP_SETTINGS_ENCRYPTION_KEY es crítica. Si la pierdes, puedes dejar inaccesibles credenciales cifradas almacenadas en base de datos.

Buenas prácticas:

  • Guárdala fuera del servidor si es posible.
  • No la subas a Git.
  • No la cambies sin plan de rotación.
  • Haz copia segura junto a los procedimientos de restauración.

Copias fuera del servidor

Un backup que solo vive en el mismo servidor no protege contra pérdida del host.

Recomendación:

  1. Copia PostgreSQL.
  2. Copia uploads si los usas.
  3. Copia .env de forma segura.
  4. Copia la clave APP_SETTINGS_ENCRYPTION_KEY.
  5. Guarda una copia fuera del servidor.
  6. Prueba restauración periódicamente.

Prueba de restauración

El repo incluye docker-compose.restore-test.yml para pruebas de restauración. Usa imágenes controladas mediante:

  • PLEXSUB_RESTORE_POSTGRES_IMAGE
  • PLEXSUB_RESTORE_APP_IMAGE

La prueba debe validar que:

  • PostgreSQL arranca.
  • La app arranca.
  • La app puede leer la base restaurada.
  • El login y las pantallas principales funcionan.

Checklist antes de publicar

  • .env no está en Git.
  • APP_BASE_URL apunta a la URL final.
  • HTTPS activo.
  • Cookies seguras activas.
  • Proxy configurado y revisado.
  • Backups configurados.
  • Restauración probada.
  • Servicios externos diagnosticados.
  • No hay tokens en documentación, logs compartidos ni tickets.