Instalación
Instalación con Docker
El repositorio de despliegue descarga imágenes precompiladas de Docker Hub. No hace falta el código fuente para poner el producto en marcha.
Requisitos
- Servidor Linux con Docker Engine y Docker Compose v2
- Los puertos indicados más abajo disponibles
- Espacio en disco para el archivo: la grabación ocupará todo el que se le dé
Puesta en marcha
git clone https://github.com/treealarm/ta_install
cd ta_install
# edite .env — véase la sección siguiente
docker compose --env-file .env up -d
El primer arranque tarda mientras se descargan las imágenes. Cuando termine, abra:
http://<servidor>:5134
Ajustes que debe cambiar
Todo está en .env.
| Variable | Valor por defecto | Por qué importa |
|---|---|---|
VMS_MEDIAMTX_PUBLISH_PASS | change_me_publish | Cámbielo. Con el valor por defecto cualquiera puede publicar en su servidor multimedia |
VMS_MEDIAMTX_READ_PASS | change_me_read | Cámbielo. Con el valor por defecto cualquiera puede tomar directamente el flujo de cualquier cámara |
POSTGRES_PASSWORD | postgres | Cámbielo |
VMS_STORAGE_BASE_PATH | /data/media_storage | Apúntelo al volumen donde deben guardarse las grabaciones |
WEB_VMS_PORT | 5134 | Cámbielo si el puerto está ocupado |
pgAdmin viene con [email protected] / admin123: cambie esas credenciales o elimine el servicio si
no lo necesita.
Puertos
| Puerto | Para qué |
|---|---|
5134/tcp | Interfaz web y API REST |
8554/tcp | RTSP |
8889/tcp | Señalización WebRTC |
8189/udp | Medios WebRTC. Este va directo al navegador: si está bloqueado, el vídeo en directo no se reproducirá |
5432/tcp | PostgreSQL |
5050/tcp | pgAdmin |
50051/tcp | gRPC del grabador |
50005/tcp | Dapr placement |
Añadir la primera cámara
No hay nada preconfigurado. En el primer arranque se crean automáticamente un volumen de almacenamiento por defecto, un enrutador multimedia por defecto y tres perfiles de grabación; el resto queda de su parte.
Abra la interfaz web y añada una cámara mediante descubrimiento ONVIF o introduciendo una URL RTSP. Para activar la detección: Admin → Analytics, añada una vigilancia para la cámara y el flujo y elija las clases. No hace falta armarla: armar controla la grabación por alarma, no si el sistema mira la imagen.
Autenticación
Por defecto KEYCLOAK_URL está vacía: no hay pantalla de acceso y la interfaz queda abierta a
cualquiera que llegue a ella. Rellénela para activar el inicio de sesión único, los roles y los
permisos por cámara.
Keycloak no forma parte de este despliegue. El fichero compose no incluye ningún servicio
Keycloak: debe desplegarlo usted y apuntar KEYCLOAK_URL, KEYCLOAK_REALM_NAME y
KEYCLOAK_CLIENT_ID hacia él.
Detener
docker compose --env-file .env down
Las grabaciones, los recortes de detección y la base de datos viven en ./data en el servidor y
sobreviven a este comando. Añadir -v los borra.
Aceleración por hardware
La recompresión del archivo y la transcodificación en directo de HEVC a H.264 se ejecutan sobre la
GPU integrada cuando la hay. Ninguna la exige —la ruta por CPU funciona—, pero la transcodificación
en directo midió un 43% menos de CPU por flujo sobre VA-API, y ese es el mayor coste sostenido del
grabador. Hace falta pasar /dev/dri al contenedor; el repositorio de despliegue incluye
docker-compose.gpu.yml.example justo para eso.
Nota de licencia sobre el detector incluido
La imagen de analítica incluye una exportación de YOLO11 para detección de personas y vehículos. Ultralytics YOLO11 se distribuye bajo AGPL-3.0, y eso no se ha resuelto todavía frente a la cláusula de uso en red de AGPL para despliegues distribuidos. Si eso le afecta, aclare la licencia o sustituya el detector por uno con licencia permisiva. El detector de rostros (OMZ face-detection-0205) es Apache-2.0.
📩 ¿Atascado, o necesita el código fuente? Contacte con nosotros