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.

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.
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_lmkdir -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_l2. 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.
docker compose -f server/deploy/compose.cpu.yml up -d
curl -fsS http://127.0.0.1:18097/v1/healthdocker compose -f server/deploy/compose.cuda12.yml up -d
curl -fsS http://127.0.0.1:18098/v1/health4. Concluir o primeiro fluxo Collection → Person → Search

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.
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cpu.yml up -dexport INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cuda12.yml up -d6. 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.
docker compose -f server/deploy/compose.cpu.yml downdocker compose -f server/deploy/compose.cuda12.yml down7. 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.
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 serverPrecisa 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