InsightFace Server con Docker: inicio rápido
Inicia InsightFace Server en CPU o CUDA con Docker, instala un modelo con licencia, ejecuta la primera búsqueda 1:N exacta y protege el servicio.

Qué vas a construir
Usa los archivos Compose del repositorio para CPU o CUDA 12: descarga la imagen, instala un modelo e inicia el servicio. La detección de vida es opcional y está desactivada por defecto.
Antes de empezar
- Linux x86_64 con Docker Engine, Docker Compose y Git. Conserva server/config/server.toml, incluido en el repositorio.
- Para CUDA 12: GPU NVIDIA compatible, NVIDIA Driver y NVIDIA Container Toolkit. El host no necesita CUDA Toolkit, cuDNN, ONNX Runtime, Python ni OpenCV.
- Acceso de red para descargar el contenedor e instalar el modelo. Después, el arranque normal puede mantenerse sin conexión.
Iniciar con CPU o CUDA 12
Ejecuta uno de los bloques desde la raíz del repositorio. Se usa directamente el archivo Compose incluido, que determina la imagen que se descarga. Si ya tienes el repositorio actualizado, omite git clone.
Abre http://SERVER:18097/ para CPU o http://SERVER:18098/ para CUDA 12. --accept-license acepta las condiciones del modelo; revísalas antes de ejecutar el comando.
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180Completar el primer flujo Collection → Person → Search

En Collections crea un ID estable, por ejemplo employees. Elige un perfil anunciado por System, ajusta capacity al presupuesto de memoria y empieza con el umbral de coseno bruto predeterminado 0,4. Una Collection queda vinculada a identidad y digest del modelo, dimensión, preprocesamiento y perfil de detección.
En People selecciona la Collection y registra una Person con una o más imágenes JPEG, PNG, WebP o BMP nítidas. standard review es un buen inicio: exige exactamente un rostro utilizable y comprueba tamaño, confianza, nitidez, brillo y pose. Los lotes permiten éxito parcial; revisa cada motivo de rechazo.
En Search elige la misma Collection y sube otra foto de esa Person. Los resultados se ordenan por similitud de coseno bruta y la puntuación de una Person es la mejor de sus FaceSamples. La similitud no es probabilidad. Ninguna coincidencia devuelve correctamente una lista vacía.
- Los originales no se conservan por defecto. El almacenamiento opcional guarda un recorte JPEG 112×112 del cuadro, no el original ni la entrada alineada de reconocimiento.
- Las muestras aceptadas se confirman en SQLite y se añaden al índice exacto en memoria antes de responder con éxito. Tras reiniciar, se reconstruye desde SQLite.
- Detect sin rostro es un resultado vacío válido; Compare devuelve 422 face_not_found si un lado no tiene un rostro utilizable.
Opcional: activar la detección de vida RGB
En una instalación nueva, añade --enable-liveness al comando de instalación del modelo. Verifica los modelos necesarios y guarda la activación antes del primer inicio.
Para un servicio en ejecución, usa el comando correspondiente de abajo y reinícialo después. La instalación normal y models addons install liveness no activan la función.
Reinicia el servicio tras una instalación correcta. up -d por sí solo no recarga la configuración de un contenedor existente. La función está desactivada por defecto y el registro tiene su propio ajuste liveness_on_registration.
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cpu.yml restart serverdocker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cuda12.yml restart serverEntender el límite de la licencia del modelo
El código fuente del Server y el SDK de Python usan la licencia MIT, pero los archivos y pesos de modelos no están cubiertos por ella. Los paquetes públicos de InsightFace, incluido buffalo_l, se limitan generalmente a investigación académica no comercial salvo autorización comercial independiente de InsightFace; autohospedar el Server no concede derechos comerciales sobre el modelo.
La instalación escribe manifest.json y MODEL.LICENSE firmado en server/.models. verify valida identidad, firma, fechas y autorización vigente. La licencia identifica el modelo y su uso permitido: es una credencial de cumplimiento, no DRM ni una suma de comprobación de los archivos.
Se admiten buffalo_l, buffalo_m, buffalo_s, buffalo_sc, antelopev2, raccoon_s y raccoon_l. Server usa solo detección y reconocimiento de Raccoon, sin su verificador de PrivateFrame. Cambiar de modelo exige una Collection compatible y volver a registrar o migrar los datos.
- Sin --accept-license, la herramienta muestra los términos y sale sin descargar.
- Mantén juntos los modelos, el manifiesto y la licencia firmada en el directorio persistente.
- Consulta con InsightFace antes de uso comercial o si el alcance no está claramente cubierto por los términos públicos.
Proteger el servicio antes de exponerlo a la red
Los archivos Compose desactivan la autenticación para evaluación aislada. Antes de que accedan otras personas o redes, actívala, guarda una clave API larga y aleatoria en el entorno de secretos y reinicia la pila elegida. La interfaz web puede conservar la clave solo en memoria durante la pestaña actual.
Termina HTTPS en un proxy inverso fiable, permite solo los orígenes necesarios en vez de CORS amplio, aplica límites de tasa, cuerpo y tiempo y restringe Docker, /data, /models y copias. Nunca registres imágenes, embeddings, credenciales RTSP ni claves API.
- La primera fase tiene una única clave sin roles; no es autorización multiinquilino y no incluye cuentas ni RBAC.
- Arrancar después el mismo volumen con otro INSIGHTFACE_API_KEY rota intencionadamente la clave activa.
- El Server no ofrece TLS integrado ni una capa de cumplimiento legal; el tratamiento lícito y los controles son responsabilidad del operador.
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180Conservar datos, hacer copias y detener con seguridad
Conserva /data, modelos y server/config. Respalda SQLite y los recortes juntos sin escrituras, o con una instantánea segura para SQLite. Protégelos como datos biométricos y activa autenticación por API key y HTTPS antes de exponer el servicio.
Usa el comando down completo de la pila arrancada. down normal elimina contenedores y red, pero conserva el volumen. Nunca añadas -v: docker compose down -v elimina permanentemente el volumen de datos.
Ambos contenedores se ejecutan como root (0:0), con un único montaje /models y el directorio de configuración escribibles. Los directorios de modelos y addons/ se crean cuando hacen falta. No se requieren UID/GID del equipo ni ajustes manuales de permisos. El sistema de archivos raíz del contenedor sigue siendo de solo lectura.
- Antes de actualizar, crea una instantánea segura, conserva /models y las licencias y prueba la nueva imagen primero con una copia de los datos.
- Después comprueba migraciones, /v1/health, contrato del modelo y una búsqueda conocida.
- Eliminar un FaceSample borra embedding y recorte opcional; una Collection no vacía exige confirmación force.
docker compose -f server/deploy/compose.cpu.yml downdocker compose -f server/deploy/compose.cuda12.yml downActualizar el despliegue
Detén las escrituras y respalda la base de datos y los recortes. Actualiza los archivos de despliegue e incorpora tus ajustes, conservando server/config/server.toml, modelos, nombres originales del proyecto y volumen, puertos y API key. Usa el archivo Compose correspondiente y añade tus archivos de personalización y nombre de proyecto cuando proceda.
Descarga ambas imágenes y recrea Server. restart no aplica imágenes ni montajes nuevos. Comprueba salud, proveedor, datos existentes y una búsqueda conocida. El mismo modelo y contrato de embeddings conservan las muestras; cambiar de modelo requiere una migración aparte. Actualiza el SDK desde el mismo repositorio actualizado.
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18097/v1/healthdocker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18098/v1/healthDiagnosticar fallos de arranque y solicitudes
Empieza por health y revisa System, estado del contenedor y logs de la pila elegida. En CUDA, el fallo de arranque es deliberado si fallan Driver, GPU, sesiones, CUDAExecutionProvider, auditoría del proveedor o calentamiento; no existe retorno silencioso a CPU.
Cada respuesta lleva x-request-id y los errores incluyen request_id. Conserva ese valor con los logs pertinentes. 401 unauthorized suele indicar clave ausente o rotada; 409 collection_model_mismatch, otro contrato de modelo; 422 face_not_found, que no se seleccionó un rostro utilizable.
CUDA debe informar CUDAExecutionProvider. El arranque valida GPU, Driver, CUDA/cuDNN/ONNX Runtime, sesiones reales de detector y reconocedor, ubicación del proveedor e inferencia de calentamiento. Si algo falla, termina en vez de pasar silenciosamente a CPU.
- Confirma en System que CPUExecutionProvider o CUDAExecutionProvider coincide con el Compose elegido.
- Comprueba el paquete y la licencia verificados en server/.models y la existencia de server/config/server.toml. Las descargas y el guardado requieren montajes de directorios escribibles.
- En CUDA corrige Driver, visibilidad de GPU o NVIDIA Container Toolkit; no esperes un fallback a CPU.
curl -fsS http://127.0.0.1:18097/v1/health
docker compose -f server/deploy/compose.cpu.yml ps
docker compose -f server/deploy/compose.cpu.yml logs --tail=200 servercurl -fsS http://127.0.0.1:18098/v1/health
docker compose -f server/deploy/compose.cuda12.yml ps
docker compose -f server/deploy/compose.cuda12.yml logs --tail=200 server¿Necesitas ayuda con el despliegue en producción?
Contacta con InsightFace para licencias de modelos, optimización de runtime y soporte de despliegue en tu hardware objetivo.
Enviar consulta empresarial