Instalación
Esta página lleva un servidor limpio a una instalación de StreamVault Engine emitiendo y con su licencia activada.
Toda la instalación la hace sve, la herramienta que vive en el servidor. No hay
instalador gráfico y no lo va a haber: actualizar o reinstalar desde el panel exigiría dar
acceso a Docker a un proceso expuesto a internet, y un fallo en ese proceso sería control
total de su máquina. Por eso instalar y actualizar piden una sesión en el servidor.
Antes de empezar
Necesita tres cosas:
-
Un servidor limpio, sin nada más corriendo en los puertos 80 y 443.
-
Su clave de licencia, seis grupos de cinco caracteres. Se la dio su proveedor:
9F2K7-M4XQ8-3TRWZ-P6HDY-C5NJ2-8VBRTNo lleva ningún prefijo ni marca del producto. Si la suya empieza por letras que parecen un nombre, no es una clave de este producto.
-
Salida a internet desde el servidor. El motor la necesita para descargar sus imágenes, para activar la licencia y para renovarla cada pocas horas. Sus espectadores no necesitan internet: se conectan a este servidor.
Una clave se activa una sola vez y queda ligada a ese servidor. Si va a instalar para probar y luego mover a la máquina definitiva, dígalo antes de activar: mover una instalación es un paso que existe, pero es más cómodo no tener que darlo.
Requisitos del servidor
| Mínimo | Recomendado | |
|---|---|---|
| Sistema | Ubuntu 22.04, 24.04 o 26.04 · Debian 12 o 13 | Ubuntu 24.04 |
| Arquitectura | x86_64 | x86_64 |
| Núcleos | 2 | 4 o más |
| Memoria | 4 GB | 8 GB o más |
Disco libre en / | — | 50 GB o más |
| Puertos libres | 80 y 443 | 80 y 443 |
Otras distribuciones pueden funcionar, pero solo se prueba en Ubuntu y Debian.
El disco es lo que más sorprende: los segmentos de vídeo en emisión se escriben en disco constantemente y ocupan sitio mientras están vivos. 50 GB no es para guardar nada, es para trabajar.
Tarjeta gráfica. Opcional. Con una NVIDIA, el motor puede transcodificar por hardware si su licencia incluye esa función; sin ella, transcodifica por procesador. La detecta sola, no hay que configurar nada.
Adaptadores DVB. Opcionales. Si el servidor tiene /dev/dvb, el instalador activa la
capa correspondiente.
Comprobar el servidor antes de nada
Hay un guion que revisa todo lo anterior, instala Docker si falta y le dice si este servidor sirve. No instala el motor y no necesita su clave:
curl -fsSL https://streamvault.fyi/install.sh | sudo bash
Termina con un resumen de sistema, recursos, GPU y puertos. Si sale algún error en rojo, ese servidor no cumple: arréglelo antes de seguir.
Paso 1 · Instalar
Un solo comando, en el directorio donde vaya a instalar:
sudo mkdir -p /opt/streamvault/deploy && cd /opt/streamvault/deploy
curl -fsSL https://sync.streamvault.fyi/install.sh | sudo sh -s -- --key 9F2K7-M4XQ8-3TRWZ-P6HDY-C5NJ2-8VBRT
Sustituya la clave del ejemplo por la suya.
No hace falta traer nada a mano. Su clave de licencia es la credencial de todo: con ella se descargan la herramienta, el paquete de la versión y las imágenes. Una licencia suspendida no descarga nada, que es exactamente lo que se compra.
El otro guion, el de
https://streamvault.fyi/install.sh, no instala: es una comprobación previa del servidor que termina pidiéndole que nos envíe el resumen, y ni siquiera acepta--key. Para instalar, el desync..
Qué hace ese comando
Ese guion no instala nada por sí mismo: comprueba lo imprescindible, descarga la
herramienta sve usando su clave de licencia como credencial, verifica su suma de
comprobación y le cede el trabajo. Toda la lógica está en sve, que está probada y sabe
volver atrás; un instalador en shell que hiciera lo mismo sería una segunda
implementación, sin pruebas, que divergiría a la primera versión.
Si prefiere no encadenar curl con un intérprete —una precaución razonable—, léalo antes:
curl -fsSL https://sync.streamvault.fyi/install.sh -o install.sh
less install.sh
sudo sh install.sh --key 9F2K7-M4XQ8-3TRWZ-P6HDY-C5NJ2-8VBRT
Qué hace, en orden
- Comprueba todo antes de tocar nada: root, clave presente,
curlydockerinstalados,docker composev2 disponible, arquitectura x86_64. Todo junto y de una vez: descubrir que falta Docker después de haber escrito ficheros deja a medias una máquina que estaba limpia. - Descarga
svedesync.streamvault.fyiautenticándose con su clave, comprueba elsha256pidiéndolo en una petición aparte, y la instala en/usr/local/bin/sve. - Llama a
sve install --key …, que a partir de aquí hace el resto:- Comprobaciones previas: que no hay ya un
.env(si lo hay, esa instalación ya existe y lo que toca essve update). - Trae el paquete de la versión publicada (
deploy-X.Y.Z.tar.gz, unos kilobytes) y lo desempaqueta: la definición de los servicios, las capas opcionales, la plantilla de configuración y la clave pública con la que se verifican las imágenes. Se instala la versión del paquete, que es la que su proveedor ha publicado, no la de la herramienta. - Escribe el
.envpartiendo de.env.example, generando contraseña de base de datos, secreto de sesiones y contraseña inicial del panel. Se parte del ejemplo y no de una plantilla interna para que las variables nuevas de versiones futuras lleguen con su comentario y su valor por omisión. - Decide las capas: mira si hay
/dev/nvidiactly/dev/dvby añade solo las capas que correspondan. Van separadas porque declarar una tarjeta que no existe impide que el contenedor arranque; si estuviera todo en un fichero, la instalación más común sería justo la que no levanta. - Crea el árbol de datos en
/opt/streamvault/datay se lo asigna al usuario con el que corren los contenedores. Lo crea el instalador porque los contenedores no corren como root y no pueden crear nada bajo/opt. - Entra al registro de imágenes con su clave de licencia. La clave es la credencial: una licencia suspendida no descarga imágenes, que es exactamente lo que se compra con la suscripción.
- Descarga las imágenes. Esto tarda; son varios gigabytes.
- Arranca y espera a que todos los servicios queden sanos.
- Activa la licencia contra la API que acaba de levantar.
- Comprobaciones previas: que no hay ya un
Al terminar imprime la dirección del panel, el usuario admin y una contraseña. La
contraseña se enseña una sola vez y el panel obliga a cambiarla al entrar.
Ensayarlo sin arrancar nada
Si quiere ver qué haría antes de hacerlo:
sudo sve install --key 9F2K7-M4XQ8-3TRWZ-P6HDY-C5NJ2-8VBRT --dry-run
Escribe el .env, crea los directorios, dice qué capas aplicarían — y se para ahí, sin
descargar ni arrancar nada.
Opciones
| Opción | Para qué |
|---|---|
--key CLAVE | Su clave de licencia. Obligatoria. |
--domain ejemplo.com | El nombre público. Vacío significa que se entra por IP. |
--data-dir RUTA | Dónde viven los datos. Por omisión /opt/streamvault/data. |
--no-gpu | No usar la tarjeta gráfica aunque la haya. |
--no-dvb | No usar los adaptadores DVB aunque los haya. |
--dry-run | Preparar y explicar, sin arrancar nada. |
--dir RUTA | El directorio del paquete. Por omisión, el actual. |
Paso 2 · Entrar al panel
Con la instalación terminada:
http://LA-IP-DE-SU-SERVIDOR:8080
También responde en el puerto 80. El panel y la API se sirven por el mismo origen: no hace falta un segundo nombre ni un segundo certificado para empezar, y el panel funciona igual entrando por IP que por nombre.
Entre con admin y la contraseña que imprimió el instalador, y cámbiela — el panel se lo
va a pedir de todas formas.
Compruebe que todo está donde debe:
sudo sve status
Enseña la versión instalada, el estado de la licencia con su fecha de validez, si hay una versión más nueva publicada, y una línea por servicio con su salud.
Paso 3 · Nombre y certificado (opcional, después)
Se puede operar por IP indefinidamente. Cuando quiera un nombre con TLS: apunte el dominio
a este servidor, deje el certificado donde SVE_CERTS_DIR indique, añada
docker-compose.tls.yml a COMPOSE_FILE en el .env y rellene SVE_DOMAIN y
SVE_PUBLIC_BASE_URL. A partir de ahí escucha también en 443 y 8443.
El bloque de HTTPS solo se genera si hay certificado legible, a propósito: nginx se niega a arrancar si le faltan los ficheros de un certificado que declara, y una instalación sin certificado —la mayoría al principio— se quedaría sin servidor entero por un bloque que no usa.
Si algo falla
«esto tiene que correr como root: use sudo»
Falta sudo. El instalador escribe en /usr/local/bin y en /opt, y necesita leer datos
del hardware que solo root puede leer.
«hace falta 'docker' y no esta instalado» o «hace falta el complemento docker compose (v2)»
Instálelo y vuelva a lanzar. El guion de comprobación previa
(curl -fsSL https://streamvault.fyi/install.sh | sudo bash) lo instala si falta.
«el servidor no acepto esa clave»
Tres causas, en orden de probabilidad:
- Un error al teclear. La clave lleva un dígito de control precisamente para atrapar eso antes de gastar un intento; si se equivocó al copiar, ni siquiera llega a intentarlo.
- La clave ya se activó en otro servidor. Cada clave vale para una instalación.
- La licencia está suspendida o ha vencido. Pregunte a su proveedor.
Hay un límite de intentos: diez activaciones por hora y por clave. Si se pasa, espere; no insista, porque veinte fallos en 24 horas bloquean la clave hasta revisión.
«no se pudo hablar con sync.streamvault.fyi»
Este servidor no tiene salida a internet, o algo la filtra. Compruebe:
curl -sS -o /dev/null -w '%{http_code}\n' https://sync.streamvault.fyi/v1/public/health
«en . no hay ningun docker-compose.yml: descomprima ahi el paquete de la version»
Está ejecutando el instalador fuera del directorio del paquete. Vaya al directorio
deploy/ que salió al descomprimir deploy-X.Y.Z.tar.gz y vuelva a lanzarlo, o use
--dir para señalarlo.
«ya hay un .env: esta instalacion existe, use sve update»
Este servidor ya tiene una instalación. No la sobrescriba: si quiere ponerla al día, use
sve update. Si de verdad quiere empezar de cero, eso es borrar los datos de esa
instalación y es una decisión distinta.
Las imágenes tardan muchísimo o se cortan
Son varios gigabytes. Si se corta, vuelva a lanzar el mismo comando: Docker reanuda las capas que ya bajaron. Nada se ha borrado.
«no quedó sano» al esperar el arranque
La instalación sigue en pie: no se deshace media hora de descarga por un servicio que tarda. Mire qué pasa:
sudo sve doctor
sudo sve logs api
El arranque en frío de una instalación con muchos canales incluye migraciones y arranque escalonado, y se le dan cinco minutos.
«la instalación está en marcha, pero la licencia no se activó»
Es el caso previsto: el motor está funcionando y solo falta la activación. Entre al panel y actívela en Sistema → Licencia pegando la misma clave.
Si el error dice pin_required, su licencia es de plan enterprise y necesita además un
PIN de seis dígitos que le llega por un canal distinto del correo. Ese caso solo se puede
completar desde el panel.
Una vez activada, sve status dice que la licencia no vale
La licencia se ata a esta máquina por varios datos de hardware. Uno de ellos vive en un
fichero que sve install prepara antes del primer arranque, porque los contenedores no
corren como root y no pueden leerlo del sistema. Para comprobar que el motor lo ve:
# Tiene que ser un FICHERO. Si dice "directory", ese es el problema.
docker compose exec api ls -ld /host/dmi.txt
# Y traer algo.
docker compose exec api cat /host/dmi.txt
Que salga vacío no es un fallo: hay máquinas virtuales que no exponen esos datos. La
licencia se ata igual, con un dato menos. Que salga un directorio sí lo es, y solo
puede pasar en instalaciones hechas antes de la 1.12.2: pare la pila, borre ese
directorio, ejecute sve install de nuevo o cree el fichero a mano, y vuelva a levantar.
Y ahora
- Comprobar que las imágenes son las que decimos. Cada imagen va firmada y su
inventario de dependencias también, y la clave pública viene en el paquete
(
keys/cosign.pub): la comprobación se hace desde su máquina, contra el registro, sin preguntarnos nada. - Programar copias de seguridad.
sve backupvuelca la base de datos entera. Lo que hay que conservar de verdad es la base de datos y sus ficheros de vídeo; el resto se reconstruye solo. - Mantener el sistema al día. Vea Actualizar.