Saltar al contenido
TubePress — gratuito, autoalojado & con mantenimiento activo
Medios y transcodificación

Almacenamiento y entrega de medios

Almacenamiento local, servidores de almacenamiento externos (S3, FTP, WebDAV) y el proxy de medios seguro.

TubePress guarda cada vídeo subido, sus versiones transcodificadas y sus recursos de vista previa en disco, y puede transferirlos de forma transparente a uno o más servidores de almacenamiento externos. Esta página explica dónde viven los archivos, cómo el sistema de almacenamientos de medios los distribuye entre backends, y cómo los medios llegan a los espectadores sin exponer los archivos originales.

El almacenamiento se configura en /admin/settings?tab=storage. Puedes ejecutar todo desde el disco local, o añadir backends FTP, compatibles con S3 y WebDAV y dejar que TubePress los vaya llenando en orden.

Cómo TubePress almacena los medios

Las subidas residen en public/uploads/. Cada vídeo tiene su propia carpeta — el video_folder del vídeo — que contiene el archivo fuente original junto a cada versión que produce el transcodificador y los pequeños recursos que necesita el reproductor:

public/uploads/
  videos/
    a1b2c3d4.../        one folder per video (video_folder)
      video.mp4         original upload (source)
      video_1080p.mp4   processed source rendition
      video_720p.mp4    transcoded rendition
      video_480p.mp4    transcoded rendition
      timeline.vtt      scrub-preview sprite map
      preview.mp4       hover-preview clip
  thumbnails/           poster images
  watermark/            watermark PNG
  intros/               pre-roll / post-roll clips
  branding/             logo, favicon, background

El transcodificador descubre el archivo fuente buscando el archivo video_<height>p.mp4 más alto, con recurso alternativo a un video.mp4, .webm o .ogg sin procesar. Las versiones de menor calidad se escriben en la misma carpeta, de modo que un único directorio contiene todo lo que necesita un vídeo. Consulta Transcodificación para ver cómo se generan esas versiones.

El almacenamiento local es un área temporal cuando hay un CDN configurado. Con un almacenamiento predeterminado externo, cada subida se procesa localmente y luego se elimina del servidor de la aplicación una vez que está de forma segura en el backend — el directorio local videos/ solo contiene elementos que aún se están subiendo o transcodificando.

Servidores de almacenamiento externos

El sistema de almacenamientos de medios te permite registrar cualquier número de backends. Los nuevos vídeos siempre van al almacenamiento predeterminado; cuando un almacenamiento supera su umbral de disco, TubePress cambia automáticamente las nuevas subidas al siguiente disponible. Los vídeos existentes continúan sirviéndose desde donde fueron escritos, ya que cada vídeo registra su propio storage_id.

Se admiten cuatro tipos de backend — nada más:

TipoPara qué usarloCampos de conexión
LocalUn servidor único, o para comenzarNinguno — servido desde public/uploads
FTPVPS de almacenamiento económico o seedboxHost, puerto (21), usuario, contraseña, ruta remota, SSL/TLS, pasivo
S3AWS S3, DigitalOcean Spaces, Backblaze, MinIOClave de acceso, secreto, bucket, región, endpoint, prefijo
WebDAVNextcloud y otros hosts WebDAVURL WebDAV, usuario, contraseña

Cada almacenamiento remoto también tiene algunos ajustes operativos:

URL de medios
La dirección HTTP pública desde la que los visitantes cargan los archivos — no la dirección de control FTP/S3.
Estado
Activo (recibe nuevos vídeos), Solo lectura (sirve solo archivos existentes) o Desactivado (sin conexión).
Uso máximo de disco
50–99% (predeterminado 90). Cuando se alcanza, las nuevas subidas cambian automáticamente al siguiente almacenamiento.
URLs seguras
Firma los enlaces de medios con un token de caducidad — ver Entrega segura de medios a continuación.

Añadir un backend de almacenamiento

  1. Abre el editor de almacenamiento. Ve a /admin/settings?tab=storage y haz clic en Add Storage.
  2. Elige un tipo y nómbralo. Elige Local, FTP, S3 o WebDAV. El formulario cambia para mostrar solo los campos que ese tipo necesita.
  3. Introduce la URL de medios y las credenciales. Establece la URL de medios pública, luego el host/claves/ruta del backend. Deja una contraseña en blanco al editar para conservar la almacenada.
  4. Establece las opciones operativas. Elige el estado, el umbral de uso máximo de disco y si deseas firmar las URLs.
  5. Prueba y guarda. Al guardar, se ejecuta primero una prueba de conexión (y una comprobación del script del monitor si proporcionaste uno). Corrige cualquier comprobación fallida, luego guarda. Opcionalmente, márcalo como predeterminado para que las nuevas subidas vayan allí.
URL de medios vs. dirección de control. La URL de medios es lo que los navegadores obtienen (por ejemplo, https://cdn.example.com). No es el endpoint FTP/S3 — confundirlas es la causa más común de reproducción rota tras un cambio.

El monitor de almacenamiento

Para backends remotos, TubePress puede rastrear el espacio en disco y el estado de salud usando un pequeño script PHP que instalas en el servidor de almacenamiento. En el panel Supervisión de disco del editor de almacenamiento, haz clic en Descargar script del monitor (servido desde /api/storage-monitor-download), súbelo a tu servidor remoto, luego pega su URL pública de vuelta en el campo URL del script del monitor.

Una vez conectado, el editor muestra el uso de disco en tiempo real y la última hora de comprobación, y el umbral de cambio automático usa esas lecturas para saber cuándo un backend está lleno. El script está protegido para que solo tu CMS pueda consultarlo.

Vale la pena hacerlo en cada servidor CDN. Sin el monitor, TubePress no puede leer el uso de disco remoto, por lo que el cambio automático por uso máximo solo puede actuar sobre los almacenamientos que puede medir.

Entrega segura de medios

Cuando las URLs seguras están activadas para un almacenamiento, TubePress nunca entrega una ruta de archivo directa. En su lugar, firma un enlace corto y de duración limitada enrutado a través de /media/:

/media/{token}/{expires}/{path}
token
Un HMAC-SHA256 de 16 caracteres de la ruta y la caducidad, firmado con el secreto privado de ese almacenamiento.
expires
Una marca de tiempo Unix; cuando transcurre, el enlace devuelve 403. La duración predeterminada es de seis horas.
path
El archivo en uploads/videos/… que se solicita.

El token se recalcula y verifica en el lado del servidor en cada solicitud. Para un almacenamiento local, TubePress transmite el archivo directamente con soporte de rango HTTP (para que la búsqueda funcione); para un almacenamiento remoto, verifica el token y luego emite una redirección 302 al archivo en tu CDN. El vídeo sin procesar también tiene límite de velocidad en la capa del servidor web: el editor de almacenamiento genera un fragmento nginx listo para pegar que limita el streaming después de los primeros megabytes, al tiempo que permite que los trabajadores de transcodificación descarguen a velocidad completa con una clave.

Los tokens están vinculados a la ruta, la caducidad y el secreto. Rotar el secreto de un almacenamiento invalida todos los enlaces existentes, y los enlaces caducados dejan de funcionar por sí solos. Combina las URLs seguras con el fragmento de límite de velocidad para una barrera anti-scraping efectiva. Consulta Seguridad.

CDN & Cloudflare

TubePress está diseñado para funcionar cómodamente detrás de Cloudflare. Hay dos aspectos importantes:

  • Las subidas por fragmentos superan el límite de 100 MB. Los resultados de transcodificación se transmiten de vuelta al CMS en piezas a través de /api/transcode-upload-chunk, por lo que las solicitudes individuales se mantienen por debajo del límite de 100 MB del nivel gratuito de Cloudflare, independientemente del tamaño de la versión.
  • Recursos con caché larga e invalidación de caché. Los recursos estáticos se sirven con cabeceras de caché largas e inmutables y se invalidan con una consulta de versión en cada lanzamiento, por lo que un proxy puede almacenar en caché de forma agresiva sin servir nunca un archivo desactualizado.

El fragmento nginx por almacenamiento añade cabeceras expires sensatas para vídeo y la ubicación interna opcional /media/ utilizada por la entrega local segura, para que puedas incluirlo directamente en la configuración de tu sitio.

Próximos pasos

¿Todavía con dudas?

Abre un ticket desde tu panel y nuestro equipo te ayudará.

Prueba la demo en vivo → Descargar TubePress →