Docker
Esegui il deployment di FoxIDs in Docker Desktop su una macchina di sviluppo o test.
Questa e una descrizione di come eseguire un deployment predefinito e accedere per la prima volta.
Una installazione FoxIDs è autonoma, ha poche dipendenze esterne e può ottenere un uptime molto elevato con poco sforzo.
FoxIDs viene aggiornato aggiornando le due Docker images www.foxids.com/foxids:x.x.x e www.foxids.com/foxidscontrol:x.x.x
a una nuova versione. Le nuove release FoxIDs sono backward compatible. Controlla le release notes prima di aggiornare. Li puoi anche trovare la versione corrente della Docker image.
Per accedere alle release FoxIDs e richiesta una licenza valida. Da li puoi generare un secret per autenticarti con il Docker image registry su www.foxids.com, che usa autenticazione Basic.
Prerequisiti:
- Hai Docker Desktop installato.
- Hai conoscenze di base su Docker.
In fondo a questa descrizione c'e un elenco di comandi utili.
Questo deployment include:
- Due siti web, uno per FoxIDs e uno per FoxIDs Control, admin Client e API, in due Docker images
www.foxids.com/foxids:x.x.xewww.foxids.com/foxidscontrol:x.x.x. - I due siti web sono esposti su due porte differenti.
- MongoDB e un database NoSQL e contiene tutti i dati inclusi tenant, ambienti e utenti. Distribuito con la official MongoDB Docker image.
- Redis cache mantiene sequenze, ad esempio login e logout, cache dati per migliorare le prestazioni e gestire contatori per proteggere l'autenticazione da vari attacchi. Distribuito con la official Redis Docker image.
- I log vengono scritti su
stdout, dove Docker puo raccoglierli.
Facoltativamente usa PostgreSQL invece di MongoDB e facoltativamente rinuncia a Redis e salva i dati di cache nel database, MongoDB oppure PostgreSQL. Senza una Redis cache devi selezionare
Nonecome data cache.
Deployment
Il deployment viene eseguito nell'ordine descritto.
Get ready
Scarica i file di configurazione Docker yaml qui e mettili in una cartella sulla tua macchina, ad esempio C:\FoxIDs\Docker.
Apri una console e vai alla cartella Docker.
Volume
Il file docker-compose-image.yaml definisce un volume MongoDB chiamato foxids-data.
Per impostazione predefinita, Docker Compose crea e gestisce il volume per te.
Se vuoi salvare i dati MongoDB nel file system dell'host Windows, crea prima la cartella host, ad esempio C:\data\foxids-data, quindi crea un volume Docker esterno:
docker volume create --driver local --opt type=none --opt device=C:\data\foxids-data --opt o=bind foxids-data
Poi rimuovi il commento da external: true sotto volumes: foxids-data: in docker-compose-image.yaml, così Docker Compose usa il volume esterno.
Deploy containers
I due siti web FoxIDs sono configurati con le Docker images. Inoltre sono facoltativamente configurati per usare solo HTTP oppure sia HTTP sia HTTP/HTTPS con un certificato di sviluppo.
Le official MongoDB e Redis images vengono scaricate da Docker Hub.
Pull secret and Docker setup
Imposta lo username al tuo customer ID e la password al tuo pull secret per il FoxIDs Docker registry, poi autentica Docker.
docker login www.foxids.com --username <customer-id> --password <pull-secret>
Aggiorna 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
Seleziona la versione dalle release FoxIDs, poi scarica le images:
docker compose -f docker-compose-image.yaml pull
Email provider
Facoltativamente puoi configurare un email provider globale oppure successivamente configurare email providers per ambiente. FoxIDs supporta l'invio di email con SendGrid e SMTP.
Puoi anche configurare provider SMS globalmente o per ambiente.
Il global email provider viene configurato nel file docker-compose-image.yaml nel servizio foxids nella sezione environment:.
Questo esempio mostra come aggiungere Outlook / Microsoft 365 con 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
Crea il deployment con Docker images e HTTP:
- Basato su Docker images e con HTTP
docker compose -f docker-compose-image.yaml -f docker-compose.development-http.yaml up -d
- Basato su Docker images e con HTTP/HTTPS, richiede un certificato di sviluppo esportato.
Il file compose HTTPS mappa %APPDATA%\ASP.NET\Https nell'host Windows a /home/app/.aspnet/https nei container e configura Kestrel per caricare dev_cert.pfx.
Crea la cartella ed esporta il certificato di sviluppo .NET prima di avviare il 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"
La password deve corrispondere a ASPNETCORE_Kestrel__Certificates__Default__Password in docker-compose.development-https.yaml.
docker compose -f docker-compose-image.yaml -f docker-compose.development-https.yaml up -d
First login
Apri nel browser il tuo sito FoxIDs Control, http://localhost:8801 oppure https://localhost:8401.
Dovrebbe reindirizzare al sito FoxIDs dove esegui il login con l'utente admin predefinito admin@foxids.com e password FirstAccess!, ti viene richiesto di cambiare la password al primo login.
Vieni quindi reindirizzato di nuovo al sito FoxIDs Control nel tenant master. Puoi aggiungere altri utenti admin nel tenant master.
Poi fai clic sul tenant main ed esegui di nuovo l'autenticazione con lo stesso utente admin predefinito admin@foxids.com e password FirstAccess!, anche qui ti viene richiesto di cambiare la password.
L'utente admin predefinito e la password sono gli stessi sia per il tenant
mastersia per il tenantmain, ma sono due utenti differenti.
Ora hai effettuato l'accesso al tenant main e puoi iniziare a configurare le tue applications e i tuoi authentication methods.
Useful commands
Questo e un elenco di comandi che possono essere utili durante il deployment per vedere dettagli e apportare modifiche al deployment.
Arrestare e rimuovere il 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
Arrestare un container
docker stop xxx
Rimuovere un container
docker rm xxx
Rimuovere una image
docker rmi xxx
Elencare i volumi
docker volume ls
Rimuovere un volume
docker volume rm xxx
Rimuovere tutti i volumi inutilizzati
docker volume prune
Mostrare i log nel container
docker logs xxx