InsightFace 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
Use os ficheiros Compose do repositório para CPU ou CUDA 12: transfira a imagem, instale um modelo e inicie o serviço. A deteção de vivacidade é opcional e está desativada por predefinição.
Antes de começar
- Linux x86_64 com Docker Engine, Docker Compose e Git. Mantenha server/config/server.toml, incluído no repositório.
- 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.
Iniciar com CPU ou CUDA 12
Execute um dos blocos na raiz do repositório. O ficheiro Compose incluído é usado diretamente e determina a imagem a transferir. Se já tiver o repositório atualizado, ignore git clone.
Abra http://SERVER:18097/ para CPU ou http://SERVER:18098/ para CUDA 12. --accept-license aceita os termos do modelo; leia-os antes de executar o 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 180Concluir 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, WebP ou BMP 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.
Opcional: ativar a deteção RGB de vivacidade
Numa instalação nova, acrescente --enable-liveness ao comando de instalação do modelo. Os modelos necessários são verificados e a ativação é guardada antes do primeiro arranque.
Num serviço em execução, use o comando correspondente abaixo e reinicie depois. A instalação normal e models addons install liveness não ativam a funcionalidade.
Reinicie o serviço após uma instalação bem-sucedida. up -d por si só não recarrega os ajustes de um contentor existente. A funcionalidade está desativada por predefinição; o registo tem o ajuste separado 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 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.
São suportados buffalo_l, buffalo_m, buffalo_s, buffalo_sc, antelopev2, raccoon_s e raccoon_l. O Server usa apenas deteção e reconhecimento do Raccoon, sem o verificador do PrivateFrame. Mudar de modelo exige uma Collection compatível e novo registo ou migração dos dados.
- Sem --accept-license, a ferramenta mostra os termos e sai sem baixar.
- Guarde os modelos, o manifesto e a licença assinada juntos no diretório persistente de modelos.
- Contate o InsightFace antes de uso comercial ou se os termos públicos não cobrirem claramente o escopo.
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 -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 180Persistir, fazer backup e parar com segurança
Mantenha /data, modelos e server/config persistentes. Copie SQLite e os recortes em conjunto sem escritas, ou use um instantâneo seguro para SQLite. Proteja-os como dados biométricos e ative autenticação por chave API e HTTPS antes de expor o serviço.
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.
Ambos os contentores usam root (0:0), uma única montagem /models gravável e um diretório de configuração gravável. Os diretórios de modelos e addons/ são criados conforme necessário. Não é preciso fornecer UID/GID do anfitrião nem ajustar permissões. O sistema de ficheiros raiz do contentor continua só de leitura.
- 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 downAtualizar a instalação
Pare as escritas e faça uma cópia da base de dados e dos recortes. Atualize os ficheiros de implementação e integre os seus ajustes, preservando server/config/server.toml, modelos, nomes originais do projeto e volume, portas e chave API. Use o ficheiro Compose correspondente e acrescente os ficheiros de personalização e o nome do projeto quando necessário.
Transfira ambas as imagens e recrie o Server. restart não aplica novas imagens nem montagens. Verifique estado, fornecedor de execução, dados existentes e uma pesquisa conhecida. O mesmo modelo e contrato de embeddings preservam as amostras; mudar de modelo exige uma migração separada. Atualize também o SDK a partir do mesmo repositório atualizado.
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 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.
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.
- Confirme no System que CPUExecutionProvider ou CUDAExecutionProvider corresponde ao Compose escolhido.
- Verifique o pacote e a licença em server/.models e a existência de server/config/server.toml. Transferências e gravação de ajustes exigem diretórios montados com escrita.
- 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