Instalacion (tecnica)
Un solo .exe. No necesita internet, ni instalar Python, ni PostgreSQL, ni
configurar nada a mano.
Un solo .exe sirve para todo
Sección titulada «Un solo .exe sirve para todo»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)»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 -CompilandoQuedan en desktop-windows\server\build\.
La versión sube sola
Sección titulada «La versión sube sola»Cada empaquetado incrementa la última cifra (1.0.0 → 1.0.1). Para cambiarlo:
.\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 mismaEl número se escribe en el .iss antes de compilar, así queda dentro del
.exe y no solo en su nombre.
Por qué el completo tarda 17 minutos
Sección titulada «Por qué el completo tarda 17 minutos»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.
Qué comprueba antes de empaquetar
Sección titulada «Qué comprueba antes de empaquetar»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
.pysin 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.
La clave de licencias se incrusta sola
Sección titulada «La clave de licencias se incrusta sola»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:
.\compilar-servidor.ps1 -SinLicenciasEl empaquetado lo detecta igualmente y se niega, salvo que se use -Forzar.
Parte 2 — Instalar en el servidor
Sección titulada «Parte 2 — Instalar en el servidor»Requisitos
Sección titulada «Requisitos»| 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:
Get-FileHash orion-server-1.0.0-setup.exe -Algorithm SHA256Debe 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
Qué hace por dentro
Sección titulada «Qué hace por dentro»- Instala PostgreSQL 16 como servicio de Windows
- Crea la base de datos y su usuario
- 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 - Configura Caddy para servir la interfaz
- Abre en el firewall solo el puerto de la web
- Registra el arranque automático al encender el equipo, sin que nadie inicie sesión
- Arranca todo y siembra el administrador
Después de instalar
Sección titulada «Después de instalar»Dónde está cada cosa
Sección titulada «Dónde está cada cosa»| 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 |
Los registros se mantienen solos
Sección titulada «Los registros se mantienen solos»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)”.
Manejo diario
Sección titulada «Manejo diario»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:
& "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.
Actualizar
Sección titulada «Actualizar»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.
Qué trae cada uno
Sección titulada «Qué trae cada uno»| 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.
Si algo falla
Sección titulada «Si algo falla»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 |
Casos concretos
Sección titulada «Casos concretos»No se puede entrar desde otro equipo de la red. Compruebe la IP con la que se instaló:
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.