← Voltar aos guias
InsightFace ServerDockerReconhecimento facialCUDAAuto-hospedado

Server com Docker: início rápido

Inicie o InsightFace Server em CPU ou CUDA com Docker, instale um modelo licenciado, execute a primeira pesquisa 1:N exata e proteja o serviço.

10 min de leitura
Painel do InsightFace Server com status do serviço, modelo, banco e runtime
Confirme no Dashboard e System que tudo está pronto antes do cadastro.

O que você vai construir

O InsightFace Server reúne detecção, comparação, cadastro, pesquisa exata 1:N de pessoas, Web UI multilíngue, REST API, SQLite e inferência local em um serviço auto-hospedado. Imagens, embeddings, modelos e índices podem permanecer na sua infraestrutura.

Este início rápido parte de um checkout InsightFace completo e termina em uma pesquisa funcional. Também cobre limites essenciais antes da produção: autorização do modelo, autenticação, HTTPS, persistência, parada segura e diagnóstico CUDA fail-fast.

O Server é uma alternativa voltada à privacidade para fluxos comuns, não um substituto compatível com AWS Rekognition. Não implementa AWS IAM, SigV4, semântica de Region, TLS integrado, contas ou RBAC.

Antes de começar

  • Checkout completo do InsightFace em Linux x86_64 com Docker Engine e Docker Compose.
  • Para CUDA 12: GPU NVIDIA compatível, NVIDIA Driver e NVIDIA Container Toolkit. O host não precisa de CUDA Toolkit, cuDNN, ONNX Runtime, Python ou OpenCV.
  • Acesso à rede para baixar o contêiner e instalar o modelo. Depois disso, a inicialização normal pode ficar offline.
  • Autorização para tratar biometria e políticas documentadas de consentimento, acesso, retenção, exclusão, backup e resposta a incidentes.

1. Escolher CPU ou CUDA e instalar o modelo

Execute na raiz de um checkout completo e escolha uma única pilha Compose. CPU é o caminho mais simples e publica a porta 18097. CUDA publica 18098 e exige Driver compatível e NVIDIA Container Toolkit; não instale CUDA ou cuDNN no host para este contêiner.

Os comandos usam de propósito --accept-license sem interação e verificam buffalo_l logo depois. Execute somente após sua organização revisar e aceitar os termos. O instalador também aceita buffalo_m, buffalo_sc e antelopev2.

  • Turing, Ampere, Ada e Hopper exigem Driver R535 ou posterior; Blackwell e RTX série 50 exigem 570.26 ou posterior. Recomenda-se R580 estável ou posterior.
  • As imagens públicas não contêm modelos, dados de clientes, chaves API ou configuração de produção.
  • Não misture Compose de CPU e CUDA: imagens, portas, providers e volumes nomeados são separados.
CPU: baixar, aceitar licença, instalar e verificar
mkdir -p server/.models
docker compose -f server/deploy/compose.cpu.yml pull
docker compose -f server/deploy/compose.cpu.yml \
  run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cpu.yml \
  run --rm models verify buffalo_l
CUDA 12: baixar, aceitar licença, instalar e verificar
mkdir -p server/.models
docker compose -f server/deploy/compose.cuda12.yml pull
docker compose -f server/deploy/compose.cuda12.yml \
  run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cuda12.yml \
  run --rm models verify buffalo_l

2. Entender o limite da licença do modelo

O código-fonte do Server e o SDK Python usam a licença MIT, mas arquivos e pesos de modelos não são cobertos por ela. Os pacotes públicos do InsightFace, incluindo buffalo_l, em geral se limitam à pesquisa acadêmica não comercial sem autorização comercial separada do InsightFace; auto-hospedar não concede direitos comerciais.

A instalação grava manifest.json e MODEL.LICENSE assinado em server/.models. verify valida identidade, assinatura, validade e autorização atual. A licença identifica modelo e uso permitido; é uma credencial de conformidade, não DRM nem checksum dos arquivos.

  • Sem --accept-license, a ferramenta mostra os termos e sai sem baixar.
  • Mantenha modelo, manifest e licença juntos e monte /models como somente leitura na operação normal.
  • Contate o InsightFace antes de uso comercial ou se os termos públicos não cobrirem claramente o escopo.

3. Iniciar o serviço e confirmar prontidão

Inicie apenas a pilha instalada. Abra http://SERVER:18097/ para CPU ou http://SERVER:18098/ para CUDA. Depois de health, confira em Dashboard ou System se serviço, banco, modelo e execution provider estão prontos antes de cadastrar.

CUDA deve informar CUDAExecutionProvider. A inicialização valida GPU, Driver, CUDA/cuDNN/ONNX Runtime, sessões reais do detector e reconhecedor, placement do provider e warm-up. Em caso de falha, encerra em vez de voltar silenciosamente à CPU.

Iniciar CPU e verificar health
docker compose -f server/deploy/compose.cpu.yml up -d
curl -fsS http://127.0.0.1:18097/v1/health
Iniciar CUDA 12 e verificar health
docker compose -f server/deploy/compose.cuda12.yml up -d
curl -fsS http://127.0.0.1:18098/v1/health

4. Concluir o primeiro fluxo Collection → Person → Search

Tela Collections do InsightFace Server para gerenciar coleções faciais pesquisáveis
Crie uma Collection vinculada ao modelo antes de cadastrar Persons e FaceSamples.

Em Collections, crie um ID estável como employees. Escolha um perfil anunciado por System, defina capacity conforme a memória e comece no threshold cosseno bruto padrão 0,4. A Collection fica vinculada à identidade e digest do modelo, dimensão, pré-processamento e perfil de detecção.

Em People, selecione a Collection e cadastre uma Person com uma ou mais imagens JPEG, PNG ou WebP nítidas. standard review é um bom começo: exige exatamente um rosto utilizável e verifica tamanho, confiança, nitidez, brilho e pose. Lotes aceitam sucesso parcial; examine cada motivo de rejeição.

Em Search, escolha a mesma Collection e envie outra foto da Person. Resultados são ordenados por similaridade cosseno bruta e a nota da Person é a maior entre os FaceSamples. Similaridade não é probabilidade. Nenhum match retorna corretamente uma lista vazia.

  • Uploads originais não são retidos por padrão. O armazenamento opcional salva crop JPEG 112×112 da caixa, não o original nem a entrada alinhada de reconhecimento.
  • Amostras aceitas são confirmadas no SQLite e entram no índice exato em memória antes da resposta. Após reiniciar, ele é reconstruído do SQLite.
  • Detect sem rosto é resultado vazio válido; Compare retorna 422 face_not_found se um lado não tiver rosto utilizável.

5. Proteger antes de expor à rede

Os arquivos Compose desativam autenticação para avaliação isolada. Antes do acesso por outras pessoas ou redes, ative-a, coloque uma chave API longa e aleatória no ambiente secreto e reinicie a pilha escolhida. A Web UI pode manter a chave apenas na memória da aba atual.

Termine HTTPS em reverse proxy confiável, permita apenas origins necessários em vez de CORS amplo, imponha limites de taxa, corpo e tempo e restrinja Docker, /data, /models e backups. Nunca registre imagens, embeddings, credenciais RTSP ou chaves.

  • A fase um tem uma chave sem papéis; não é autorização multi-tenant e não há contas nem RBAC.
  • Iniciar depois o mesmo volume com outro INSIGHTFACE_API_KEY gira intencionalmente a chave ativa.
  • O Server não traz TLS nem camada jurídica de conformidade; processamento lícito e controles são responsabilidade do operador.
CPU: ativar autenticação antes de iniciar
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
CUDA 12: ativar autenticação antes de iniciar
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cuda12.yml up -d

6. Persistir, fazer backup e parar com segurança

SQLite em /data é a fonte durável; índices exatos em memória são descartáveis. Compose monta modelos como somente leitura e guarda /data em volume nomeado. Faça backup conjunto do SQLite e dos crops com escritas paradas ou snapshot seguro para SQLite.

Use o comando down completo da pilha iniciada. down normal remove contêineres e rede, mas preserva o volume. Nunca acrescente -v: docker compose down -v exclui permanentemente o volume de dados.

  • Antes de atualizar, crie snapshot seguro, preserve /models e licenças e teste a nova imagem com uma cópia.
  • Depois confira migrations, /v1/health, contrato do modelo e uma pesquisa conhecida.
  • Excluir FaceSample remove embedding e crop; Collection não vazia exige confirmação force.
Parar CPU sem excluir o volume
docker compose -f server/deploy/compose.cpu.yml down
Parar CUDA sem excluir o volume
docker compose -f server/deploy/compose.cuda12.yml down

7. Diagnosticar falhas de início e requisição

Comece por health e examine System, status do contêiner e logs da pilha. Em CUDA, a falha de início é intencional se Driver, GPU, sessões, CUDAExecutionProvider, auditoria ou warm-up falharem; não existe retorno silencioso à CPU.

Toda resposta leva x-request-id e erros incluem request_id. Guarde-o com os logs correspondentes. 401 unauthorized costuma indicar chave ausente ou girada; 409 collection_model_mismatch, outro contrato; 422 face_not_found, nenhum rosto utilizável.

  • Confirme no System que CPUExecutionProvider ou CUDAExecutionProvider corresponde ao Compose escolhido.
  • Verifique pacote e licença assinada em server/.models e /models somente leitura.
  • Em CUDA corrija Driver, visibilidade da GPU ou NVIDIA Container Toolkit; não espere fallback à CPU.
Health, status e logs recentes de 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 server
Health, status e logs recentes de CUDA 12
curl -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

Precisa de ajuda com implantação em produção?

Fale com a InsightFace sobre licenciamento de modelos, otimização de runtime e suporte para o hardware alvo.

Enviar consulta corporativa