Docker
Faca deployment do FoxIDs no Docker Desktop numa maquina de desenvolvimento ou teste.
Esta e uma descricao de como fazer um deployment predefinido e iniciar sessao pela primeira vez.
Uma instalação FoxIDs é autónoma, tem poucas dependências externas e consegue obter um uptime muito elevado com pouco esforço.
O FoxIDs e atualizado atualizando as duas Docker images www.foxids.com/foxids:x.x.x e www.foxids.com/foxidscontrol:x.x.x
para uma nova versao. As novas releases do FoxIDs sao backward compatible. Reveja as release notes antes de atualizar. Tambem pode encontrar ai a versao atual da Docker image.
E necessaria uma licenca valida para aceder as releases do FoxIDs. A partir dai, pode gerar um secret para autenticar no Docker image registry em www.foxids.com, que usa autenticacao Basic.
Pre-requisitos:
- Tem o Docker Desktop instalado.
- Tem conhecimentos basicos sobre Docker.
No fim desta descricao existe uma lista de comandos uteis.
Este deployment inclui:
- Dois websites, um para o FoxIDs e outro para o FoxIDs Control, admin Client e API, em duas Docker images
www.foxids.com/foxids:x.x.xewww.foxids.com/foxidscontrol:x.x.x. - Os dois websites sao expostos em duas portas diferentes.
- O MongoDB e uma base de dados NoSQL e contem todos os dados incluindo tenants, ambientes e utilizadores. E distribuido com a official MongoDB Docker image.
- A Redis cache mantem sequencias, por exemplo login e logout, cache de dados para melhorar o desempenho e gerir contadores para proteger a autenticacao contra varios ataques. E distribuida com a official Redis Docker image.
- Os logs sao escritos em
stdout, onde o Docker pode recolhe-los.
Opcionalmente use PostgreSQL em vez de MongoDB e opcionalmente dispense Redis e guarde os dados de cache na base de dados, MongoDB ou PostgreSQL. Sem Redis cache, precisa de selecionar
Nonecomo data cache.
Deployment
O deployment e executado pela ordem descrita.
Get ready
Descarregue os ficheiros de configuracao Docker yaml aqui e coloque-os numa pasta na sua maquina, por exemplo C:\FoxIDs\Docker.
Abra uma consola e navegue para a pasta Docker.
Volume
O ficheiro docker-compose-image.yaml define um volume MongoDB chamado foxids-data.
Por defeito, o Docker Compose cria e gere o volume por si.
Se quiser guardar os dados do MongoDB no sistema de ficheiros do host Windows, crie primeiro a pasta do host, por exemplo C:\data\foxids-data, e depois crie um volume Docker externo:
docker volume create --driver local --opt type=none --opt device=C:\data\foxids-data --opt o=bind foxids-data
Depois remova o comentario de external: true em volumes: foxids-data: no docker-compose-image.yaml, para que o Docker Compose use o volume externo.
Deploy containers
Os dois websites FoxIDs sao configurados com as Docker images. E estao opcionalmente configurados para usar apenas HTTP ou HTTP e HTTP/HTTPS com um certificado de desenvolvimento.
As official images do MongoDB e Redis sao descarregadas do Docker Hub.
Pull secret and Docker setup
Defina o username como o seu customer ID e a password como o seu pull secret para o FoxIDs Docker registry, depois autentique o Docker.
docker login www.foxids.com --username <customer-id> --password <pull-secret>
Atualize C:\src\GitHub\FoxIDs.Assets\Docker\docker-compose-image.yaml:
services:
foxids:
image: www.foxids.com/foxids:x.x.x
foxids-control:
image: www.foxids.com/foxidscontrol:x.x.x
Selecione a versao nas releases do FoxIDs, depois descarregue as images:
docker compose -f docker-compose-image.yaml pull
Email provider
Opcionalmente pode configurar um email provider global ou mais tarde configurar email providers por ambiente. O FoxIDs suporta o envio de emails com SendGrid e SMTP.
Tambem pode configurar fornecedores SMS globalmente ou por ambiente.
O global email provider e configurado no ficheiro docker-compose-image.yaml no servico foxids na secao environment:.
Este exemplo mostra como adicionar Outlook / Microsoft 365 com SMTP:
- Settings:Smtp:FromEmail=my@email-address.org
- Settings:Smtp:FromName=e.g., my company name
- Settings:Smtp:Host=smtp.office365.com
- Settings:Smtp:Port=587
- Settings:Smtp:Username=my@email-address.com
- Settings:Smtp:Password=xxxxxxx
Deploy
Crie o deployment com Docker images e HTTP:
- Baseado em Docker images e com HTTP
docker compose -f docker-compose-image.yaml -f docker-compose.development-http.yaml up -d
- Baseado em Docker images e com HTTP/HTTPS, requer um certificado de desenvolvimento exportado.
O ficheiro compose HTTPS mapeia %APPDATA%\ASP.NET\Https no host Windows para /home/app/.aspnet/https nos containers e configura o Kestrel para carregar dev_cert.pfx.
Crie a pasta e exporte o certificado de desenvolvimento .NET antes de iniciar o deployment:
if not exist "%APPDATA%\ASP.NET\Https" mkdir "%APPDATA%\ASP.NET\Https"
dotnet dev-certs https --trust
dotnet dev-certs https --export-path "%APPDATA%\ASP.NET\Https\dev_cert.pfx" -p "foxids-dev-cert"
A palavra-passe deve corresponder a ASPNETCORE_Kestrel__Certificates__Default__Password em docker-compose.development-https.yaml.
docker compose -f docker-compose-image.yaml -f docker-compose.development-https.yaml up -d
First login
Abra o seu site FoxIDs Control, http://localhost:8801 ou https://localhost:8401, num browser.
Devera redirecionar para o site FoxIDs, onde inicia sessao com o utilizador admin predefinido admin@foxids.com e password FirstAccess!, sendo obrigatorio alterar a password no primeiro login.
Depois e redirecionado de volta para o site FoxIDs Control no tenant master. Pode adicionar mais utilizadores admin no tenant master.
Depois clique no tenant main e autentique-se novamente com o mesmo utilizador admin predefinido admin@foxids.com e password FirstAccess!, mais uma vez sendo obrigatorio alterar a password.
O utilizador admin predefinido e a password sao os mesmos tanto para o tenant
mastercomo para o tenantmain, mas sao dois utilizadores diferentes.
Esta agora autenticado no tenant main e pode comecar a configurar as suas applications e os seus authentication methods.
Useful commands
Esta e uma lista de comandos que podem ser uteis durante o deployment para ver detalhes e fazer alteracoes ao deployment.
Desligar e remover o deployment
docker compose -f docker-compose-image.yaml -f docker-compose.development-http.yaml down
# or
docker compose -f docker-compose-image.yaml -f docker-compose.development-https.yaml down
Parar um container
docker stop xxx
Remover um container
docker rm xxx
Remover uma image
docker rmi xxx
Listar volumes
docker volume ls
Remover um volume
docker volume rm xxx
Remover todos os volumes nao utilizados
docker volume prune
Mostrar logs no container
docker logs xxx