2 minutes
Multi HTTPS sub domain with Traefik and Docker - Part 2
In this (small) second part, we’ll set up Traefik Web UI on its own sub domain with a basic HTTP authentication.
Basic dashboard
In the traefik.toml
we add the following just before the [entryPoints]
label:
[web]
# Port for the status page
address = ":8080"
We also need to map the port 8080 in the docker-compose.yml
so you have to add this line in the ports section:
- 8080:8080
Now we can access Traefik Web UI at yourdomain.com:8080
. It will look like this:
Let’s add a sub domain
Now we need to modify the docker-compose.yml
in order to redirect to a sub domain. The only thing we are going to add is the Docker labels:
"traefik.enabled=true"
"traefik.backend=dashboard"
"traefik.frontend.rule=Host:dashboard.yourdomain.com"
"traefik.port=8080"
Moreover, we don’t need to map the port 8080 since we will not access the dashboard through this port.
So our file will look like this:
version: '2'
services:
traefik:
image: traefik
command: --web --docker
ports:
- "80:80"
- "443:443"
restart: always
labels:
- "traefik.enabled=true"
- "traefik.backend=dashboard"
- "traefik.frontend.rule=Host:dashboard.yourdomain.com"
- "traefik.port=8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./traefik.toml:/traefik.toml"
- "./acme.json:/acme.json"
networks:
- default
Now you can access your dashboard through the desired URL!
A basic HTTP authentication
If you need to protect your application with a user/password authentication, Traefik can do it for you. Again it’s configurable via the Docker labels of the service:
traefik.frontend.auth.basic=user:passwordHash
You can get the hash with the htpasswd command like this
$ htpasswd -nB user
New password:
Re-type new password:
user:$2y$05$NiscFUPxmLub5vW1gL6cF.4R1ElHKeMgBQKNPIY.1V.CW802nXhwG
When you add the hash in the docker-compose.yml
you must escape the $
character with another $
. In this case we will have :
traefik.frontend.auth.basic=user:$$2y$$05$$NiscFUPxmLub5vW1gL6cF.4R1ElHKeMgBQKNPIY.1V.CW802nXhwG
. Your application will then be protected by a user/password authentication.
You can now easily access your public and private Docker applications through different sub domains.