Ir al contenido
← Todas las entradas

tapeshelf en tu propio servidor

tapeshelf es código abierto con licencia AGPL-3.0, y la app que funciona en tapeshelf.com es la misma que podrás ejecutar en tu propio servidor. El repositorio público y la guía de instalación todavía no están publicados. Mientras tanto, te contamos cómo será tener tu propia instancia, para que decidas si te interesa y vayas pensando en un servidor.

Un solo stack

Una instancia es un único stack de Docker Compose:

navegador ──HTTPS──► Caddy ─── la app web, cabeceras de seguridad
                       └── /api, /ws ──► api ──► Postgres, Redis
                                         worker (ffmpeg) ──► Postgres, Redis
navegador ──► almacenamiento compatible con S3: subidas, segmentos de video, imágenes
  • Caddy sirve la app web y reenvía el tráfico de la API y de WebSocket. Obtiene y renueva por sí mismo un certificado de Let’s Encrypt. Si ya usas un proxy inverso, Caddy puede ir detrás de él sin TLS.
  • api es todo lo que hace la app: cuentas, estantes, comprobaciones de acceso, solicitudes e intercambios, enlaces temporales y la entrega de las claves de los videos.
  • worker es el mismo código lanzado como segundo proceso, en una imagen con ffmpeg. Limpia y convierte lo que se sube, cifra las copias para streaming, genera los fotogramas y las vistas previas, procesa las ediciones y envía los correos y las notificaciones.
  • Postgres guarda los datos. Redis guarda las colas de tareas y las cachés de corta duración.
  • Un contenedor migrate de un solo uso se ejecuta en cada arranque. Aplica las migraciones de la base de datos, crea la cuenta de administrador a partir de tu configuración y prepara los buckets: lectura pública sin listado para las imágenes, una regla de limpieza para las subidas abandonadas y CORS para tu dominio.
  • Un servicio backup vuelca la base de datos en tu bucket una vez al día y conserva los últimos 14 volcados.

El video nunca pasa por la API. Los navegadores suben directamente al almacenamiento y reproducen los segmentos directamente desde él, así que el almacenamiento necesita una dirección propia a la que puedan llegar los navegadores. Es la única parte que requiere pensarlo un poco. Puedes conectar tapeshelf a un servicio compatible con S3 que ya uses o ejecutar el almacenamiento en el mismo stack.

Qué necesitarás

  • Un servidor Linux con Docker y el plugin Compose. Dos núcleos de CPU y 4 GB de RAM son un mínimo razonable.
  • Espacio en disco para los archivos temporales del worker: unas dos veces y media el tamaño del video más grande, por cada uno que se procese en paralelo.
  • Un dominio que apunte al servidor, con los puertos 80 y 443 abiertos.
  • Una cuenta SMTP para el correo: confirmaciones, restablecimiento de contraseñas y notificaciones.
  • Si quieres, tu propio cliente OAuth de Google para «Iniciar sesión con Google», y claves de Cloudflare Turnstile para el captcha en registros repetidos y nuevos invitados.

Convertir video es la parte pesada. Un video H.264 de hasta 1080p que pasa algunas comprobaciones más solo necesita reempaquetarse, y eso lleva unos segundos. Una conversión completa en un servidor pequeño de dos núcleos tarda más o menos lo que dura el video, a veces más. Quien lo sube ve el progreso en directo y puede seguir usando el sitio.

El secreto que no debes perder

Toda la configuración está en un único archivo de entorno: la contraseña de la base de datos, los secretos de sesión, las credenciales del almacenamiento, el SMTP y la clave maestra de la que sale la clave de cifrado de cada video. Lo explicamos en «Cómo cifra tapeshelf los videos». En producción, la API se niega a arrancar con los valores de muestra del archivo de ejemplo.

Guarda la clave maestra en un gestor de contraseñas en cuanto la generes. Si se pierde, ninguno de los videos subidos volverá a reproducirse, y restaurar la base de datos no servirá de nada. Los códigos de la app de autenticación para la verificación en dos pasos también dejarán de funcionar, porque sus secretos están sellados con ella.

En qué se diferencia de tapeshelf.com

Una instancia propia no tiene planes ni pagos. No hay Free ni Pro, ni pestaña «Plan», ni invitaciones a pasarse a Pro, ni página de espera antes de las descargas. En detalle:

  • Sin límites salvo los que pongas. Por defecto no hay tope para el tamaño de los videos ni de los estantes. Como administrador, puedes fijar un límite por video y otro por estante, iguales para todos.
  • Las descargas empiezan al instante, a toda velocidad, directamente desde el almacenamiento.
  • Lo que en tapeshelf.com es Pro, aquí lo tienen todos. Es decir, el editor de video, la página oculta y las contraseñas en los enlaces temporales. Los videos eliminados se pueden restaurar durante 90 días.
  • La protección contra abusos se mantiene. El límite diario de solicitudes (30 videos por defecto, ajustable) y los límites de frecuencia de la API protegen el servidor, así que siguen ahí.
  • Tu nombre, tus reglas. La instancia tiene su propio nombre y su correo de contacto, y muestra tus condiciones de uso y tu política de privacidad a partir de archivos que tú proporcionas. Los visitantes ven primero una página sencilla para iniciar sesión.

Todo lo demás es la misma app: estantes con pilas y categorías, subidas que se reanudan, la vista previa de 16 fotogramas, reproducción cifrada, solicitudes e intercambios de varias rondas, intercambios con invitados, enlaces temporales, amigos y chat, verificación en dos pasos (obligatoria para el administrador), notificaciones, la app en 20 idiomas, denuncias y un panel de administración.

Ten en cuenta que cada instancia es una isla. Las personas que están en ella comparten e intercambian solo entre sí, nunca con cuentas de tapeshelf.com ni de otras instancias.

Actualizaciones y copias de seguridad

Para actualizar, basta con descargar la nueva versión y reiniciar el stack. Las migraciones se aplican al arrancar, y un video que se estaba procesando vuelve a empezar. Aun así, haz una copia de seguridad antes de una actualización importante.

Los volcados diarios de la base de datos llegan solos a tu bucket. Los videos ya están en el almacenamiento, y sus claves salen de la clave maestra. Así que las tres cosas que hay que proteger son el bucket, los volcados de la base de datos y esa clave.

La licencia, en un párrafo

Puedes ejecutar tapeshelf, estudiarlo y modificarlo. Si lo modificas y dejas que otras personas usen tu versión modificada a través de una red, la AGPL te obliga a ofrecerles el código fuente de esa versión. Para usarlo sin cambios, para ti, tu familia o tus amigos, basta con conservar la licencia junto al programa.

Cuándo

Pronto publicaremos el repositorio, imágenes de contenedor listas para usar y una guía de instalación que cubre el almacenamiento, el correo, las copias de seguridad y la solución de problemas. La página sobre el servidor propio y este blog lo anunciarán ese mismo día, y el canal RSS es la forma más fácil de no perdérselo. Mientras tanto, tapeshelf.com es la manera más rápida de probar la app, y en la página de precios tienes los detalles.