Ir al contenido

Instalacion (tecnica)

Un solo .exe. No necesita internet, ni instalar Python, ni PostgreSQL, ni configurar nada a mano.


orion-server-X.Y.Z-setup.exe instala o actualiza según lo que encuentre. No hay que saber cuál es el caso: al abrirlo mira si el equipo ya tiene Orion y lo dice en la primera pantalla.

  • Servidor nuevo → pregunta licencia, dirección, carpeta de video y administrador.
  • Servidor que ya tiene Orion → no pregunta nada. Actualiza el programa y conserva base de datos, configuración, licencia y grabaciones.

Y además, un paquete ligero para el día a día

Sección titulada «Y además, un paquete ligero para el día a día»
Cuándo Tamaño Tarda
-setup.exe Siempre funciona 3.825 MB ~17 min
-actualizacion.exe Solo si ya hay Orion 63 MB 5 segundos

Hacen lo mismo al actualizar. El completo trae Python con CUDA, PostgreSQL, ffmpeg y los modelos —cosas que no cambian entre versiones y ocupan el 97% del paquete—, así que para publicar una corrección mover 63 MB en vez de 3,8 GB ahorra la mañana.

Use el ligero cuando lo tenga a mano; el completo nunca se equivoca.


Parte 1 — Generar el paquete (en el equipo de desarrollo)

Sección titulada «Parte 1 — Generar el paquete (en el equipo de desarrollo)»
Ventana de terminal
cd C:\Users\MSI\Desktop\orion\deploy\windows
# Publicar una corrección (lo habitual) — 6 segundos
.\compilar-servidor.ps1
.\empaquetar-servidor.ps1 -Actualizacion
# Servidor nuevo — ~11 minutos
.\empaquetar-servidor.ps1 -Compilando

Quedan en desktop-windows\server\build\.

Cada empaquetado incrementa la última cifra (1.0.0 → 1.0.1). Para cambiarlo:

Ventana de terminal
.\empaquetar-servidor.ps1 -Subir menor # 1.0.4 -> 1.1.0
.\empaquetar-servidor.ps1 -Subir mayor # 1.3.2 -> 2.0.0
.\empaquetar-servidor.ps1 -Version 2.1.0 # explícita
.\empaquetar-servidor.ps1 -Subir ninguna # repetir la misma

El número se escribe en el .iss antes de compilar, así queda dentro del .exe y no solo en su nombre.

Windows no admite un Setup.exe de más de ~4,2 GB (4.005 MB reales). Con compresión normal el paquete sale a 4.068 MB y hay que partirlo en varios archivos; con lzma2/max baja a 3.825 MB y cabe en uno solo.

Se probó lo de partirlo y salió mal en la primera instalación real: se copió solo el .exe al servidor y el instalador se quedó pidiendo “inserte el Disco 1” a mitad. Los 6 minutos extra de compresión compran que sea un único archivo, imposible de copiar a medias.

empaquetar-servidor.ps1 se niega a generar el instalador si detecta:

  • Que falta alguna de las cuatro piezas compiladas
  • Sourcemaps en dist\ (publicarían el código fuente del frontend)
  • Workers en .py sin compilar
  • Rutas de la máquina de compilación dentro del binario
  • Que el paquete llevaría algún archivo con secretos
  • Que faltan los modelos de IA
  • Que el binario no lleva la clave de licencias dentro

Esto existe porque ISCC no valida nada: empaqueta un binario de hace tres semanas sin una sola advertencia, y el error se descubre en la sede.

compilar-servidor.ps1 la busca en el panel (C:\Users\MSI\orion-data\panel\emisor.priv.pub) y la mete en el binario. Sin ella, Orion no verifica licencias y funciona sin restricciones — correcto para desarrollo, nunca para una sede.

No está cableada en el script a propósito: si algún día se regenera el par de claves, se recoge la nueva sola. Una constante en el código se quedaría desfasada en silencio y los servidores nuevos rechazarían todas las licencias.

Para compilar deliberadamente sin verificación:

Ventana de terminal
.\compilar-servidor.ps1 -SinLicencias

El empaquetado lo detecta igualmente y se niega, salvo que se use -Forzar.


Sistema Windows 10 1809 / Server 2019 o superior, 64 bits
Disco ~8 GB para el programa + lo que se destine a video
Permisos Administrador
GPU NVIDIA con CUDA solo si se instala el módulo de IA
Internet No hace falta

Los puertos que usa: 3081 (interfaz web) o 80/443 con dominio. PostgreSQL, el API y go2rtc solo escuchan en 127.0.0.1 y no se exponen.

1. Copie el .exe al servidor (USB o red).

2. Compruebe que llegó entero. Varios GB por USB se truncan más de lo que parece, y el síntoma es un error incomprensible a mitad de instalación — con PostgreSQL ya registrado como servicio, que es un estado incómodo del que salir:

Ventana de terminal
Get-FileHash orion-server-1.0.0-setup.exe -Algorithm SHA256

Debe coincidir con el .sha256 que lo acompaña.

3. Ejecútelo como administrador y siga el asistente:

Pantalla Qué preguntar
Licencia La clave que entregó Intunet (se puede dejar en blanco)
Acceso Red local (lo normal) o dominio público con HTTPS
Dirección en la red Ya viene rellenada; confírmela
Carpeta de datos Dónde se graba el video (solo con VMS)
Administrador Correo y contraseña del primer usuario

4. Listo. Al terminar muestra la dirección: http://192.168.x.x:3081

  1. Instala PostgreSQL 16 como servicio de Windows
  2. Crea la base de datos y su usuario
  3. Genera secretos únicos de este servidor (JWT, clave interna, contraseña de la base de datos). No vienen dentro del .exe: si fueran fijos, quien tuviera el instalador podría firmar sesiones válidas en cualquier sede
  4. Configura Caddy para servir la interfaz
  5. Abre en el firewall solo el puerto de la web
  6. Registra el arranque automático al encender el equipo, sin que nadie inicie sesión
  7. Arranca todo y siembra el administrador

Programa C:\Program Files\Orion
Datos y video C:\ProgramData\Orion\data (o la carpeta elegida)
Registros C:\ProgramData\Orion\logs
Configuración C:\ProgramData\Orion\config

No hay que vaciarlos nunca a mano:

  • Cada archivo se rota al llegar a 20 MB
  • Se guardan las 3 últimas generaciones de cada uno
  • Si la carpeta pasa de 500 MB, se borran los más antiguos

Medido: unos 2,6 MB/día con 3 cámaras; del orden de 30 MB/día con 36. Sin rotación serían ~11 GB al año — la retención del modo NVR poda grabaciones, no logs.

En el menú Inicio hay un acceso directo “Registros (logs)”.

Desde el menú Inicio: Consola de Servidor (panel de administración), Estado del servidor, Arrancar y Parar Orion.

Para ver el estado desde una consola:

Ventana de terminal
& "C:\Program Files\Orion\scripts\status-orion.ps1"

Muestra los servicios, los streams activos, cuántos workers de IA están vivos y el tamaño de los registros.


Cualquiera de los dos .exe vale. Cópielo al servidor y ejecútelo como administrador; ninguno pregunta nada al detectar que Orion ya está instalado.

  • -actualizacion.exe (63 MB, 5 s) — el habitual.
  • -setup.exe (3.825 MB) — el mismo que instala de cero. Al encontrar Orion lo dice en la primera pantalla y se salta todas las preguntas.

No pregunta nada. Para los servicios, reemplaza el código, aplica el SQL de mantenimiento y vuelve a arrancar. Si el API no responde en 60 segundos, avisa en vez de terminar diciendo que todo fue bien.

Conserva la base de datos, la configuración y las grabaciones: los datos viven en ProgramData, fuera de lo que el instalador toca.

El paquete de actualización, si no encuentra Orion instalado, avisa y sale — solo trae el código propio, sin PostgreSQL ni Python. Para ese caso está el -setup.exe, que sirve para los dos.

Los dos conservan los datos igual; la única diferencia es que el completo son 3,8 GB para cambiar lo mismo que cambian 63 MB.

Completo Actualización
Backend, web, consola, workers
Scripts y SQL
PostgreSQL, ffmpeg, go2rtc, Caddy
Python con CUDA
Modelos de IA

Los workers solo se actualizan si el servidor tiene el módulo de IA instalado.


Empiece siempre por C:\ProgramData\Orion\logs:

Archivo Qué contiene
instalacion.log Todo lo que hizo el instalador
orion-api.err.log Errores del backend
caddy.err.log Errores de la interfaz web
orion-<worker>.err.log Errores de cada worker de IA
workers-supervisor.log Qué workers se arrancaron y cuáles se cayeron
rotacion.log Qué logs se rotaron o se borraron

No se puede entrar desde otro equipo de la red. Compruebe la IP con la que se instaló:

Ventana de terminal
Select-String -Path "C:\ProgramData\Orion\config\orion.env" -Pattern "PUBLIC_URL"

Si es la equivocada (pasa si el servidor tiene varias tarjetas de red), reinstale confirmando la IP correcta en el asistente.

Las páginas de IA salen vacías. Mire si los workers están vivos con status-orion.ps1. Si dice «módulo desactivado», se instaló sin el módulo de IA; si dice «el entorno de Python no está instalado», falta ese componente.

El instalador avisa de puertos ocupados. Ya hay otro PostgreSQL, un IIS en el 443, u otra instalación de Orion. Compruébelo antes de continuar: si el puerto está tomado, Orion no podrá arrancar.