Questo post riguarda Traefik per i contenitori Docker.
Introduzione alla configurazione
Come avviene la magia
Traefik per container Docker
Se non hai ancora installato la finestra mobile, puoi trovare le istruzioni per Ubuntu o Debian. Questa guida utilizza docker-compose per eseguire Traefik, quindi è necessario installare anche docker-compose. Le due guide collegate ti aiuteranno a configurare la composizione mobile sul tuo host.
Iniziamo configurando Traefik.
Per prima cosa, crea alcuni file e directory di cartelle per i nostri contenitori:
mkdir -p /opt/containers/traefik
mkdir /opt/containers/traefik/data
touch /opt/containers/traefik/data/traefik.yml
touch /opt/containers/traefik/data/acme.json
chmod 600 /opt/containers/traefik/data/acme.json
Genera password sicura
Crea un file di configurazione e imposta una password crittografata per accedere al dashboard di traefik. È possibile utilizzare l'utilità htpasswd per creare la password crittografata. Per utilizzare l'utilità htpasswd, installa l'utilità con il seguente comando
$ sudo apt-get install -y apache2-utils
Quindi esegui il comando seguente per generare la password sicura
$sudo htpasswd -nb unixcop unixcop@123
unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe/
Ho usato "unixcop@123" per crittografare. Puoi avere le tue ipotesi. L'utente è considerato "unixcop", puoi sostituirlo con il tuo nome utente.
Copia l'output generato automaticamente e salvalo da qualche parte poiché è necessario utilizzare questa password crittografata nel file di configurazione di Traefik per impostare l'autenticazione di base per la dashboard di Traefik
traefik.yml
Quindi apriamo il nostro file di configurazione traefik appena creato con un editor a tua scelta.
vim /opt/containers/traefik/data/traefik.yml
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: [email protected] # CHANGE HERE
storage: acme.json
httpChallenge:
entryPoint: http
Crea un docker-compose.yml
file in cui definirai un reverse-proxy
servizio che utilizza l'immagine ufficiale di Traefik:
docker-compose.yml
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.domain.tld`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.domain.tld`)"
- "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
networks:
proxy:
external: true
Con il nostro docker-compose.yml stiamo definendo il container Docker di Traefik con tutte le impostazioni e i file di configurazione. Per far funzionare Traefik devi solo regolare alcune impostazioni:
- sostituisci entrambi
traefik.domain.tld
con il tuo nome di dominio. Questo dominio dovrebbe essere un sottodominio come ad esempio traefik.ae3.ch. Successivamente potrai accedere a Traefik Dasboard con questo (sotto)dominio.
Crea rete Docker per Traefik
È una buona idea configurare una rete Docker separata utilizzata da Traefik e da tutti gli altri container Docker che vorresti rendere disponibile da Traefik.
Per creare questa rete Docker, tutto ciò che devi fare è incollare il seguente comando nella tua CLI:
docker network create proxy
Esegui Traefik
docker-compose up -d
Dopo pochi secondi puoi controllare e accedere alla tua Dashboard Traefik dal tuo dominio personalizzato che hai inserito nel tuo docker-compose.yml