- Copy this folder to /etc so that you have the following layout:
/etc/traefik
|- bootstrap/
|- dc-template.yml
|- new.sh
|- .env
|- config/
|- docker-compose.yml
|- dynamic/
|- dynamic.yml
|- traefik.yml
|- .env
- Next, you will want your certs available inside the dynamic directory (changes made to files in this directory are updated on save).
- To be able to start from
/etc/traefik, link the 3 files inside/etc/traefik/config/one directory up. - Your dynamic directory should not watch
/etc/traefik/(configured intraefik.ymlunderproviders.file.directory) or else you will duplicate all of your container volumes. - Only Traefik should have the additional port declaration or (depending on how you decide to lay it out) the additional subdirectory
/config - Ensure the path / name of your certs in
/etc/traefik/config/dynamic/are listed correctly inside/etc/traefik/config/dynamic/dynamic.yml - Create the traefik network:
docker network create traefik. - Set your ENV's in
/etc/traefik/config/.env
cd /etc/traefik
docker compose up -d
docker logs traefik
- Doulbe check for any config errors.
- Try visiting
http://service.domain.name- it should redirect you to https and show trusted certs
If you already have a service defined in a docker-compose.yml, you can just copy the labels section of /etc/traefik/bootstrap/dc-template.yml into your file and either make replacements directly or use the .env file in the same directory.
- To bootstrap a service, you can read the script in
bootstrap/new.shor get the TL;DR with:
/etc/traefik/bootstrap/new.sh --help
- I personally linked this as a binary, so I can run the script as
traefik
ln -s /etc/traefik/bootstrap/new.sh /usr/local/bin/traefik
- Example:
traefik -s 'homebridge' -i 'onzu/homebridge:latest' -p '8581' -h 'hb' -r 'home' -d 'domain.name'
- Only
-s,-i, and-pare required.-his interpreted, and-dcan be set in/etc/traefik/bootstrap/.env. - New services will get their own directory in
/etc/traefik/<service>/ - You will have to manually configure / customize the
docker-compose.ymlfor any additional ports / mounts / volumes you need.
See /etc/traefik/config/dynamic/dynamic.yml for an example of this configuration. There you can define hhtp routers, middlewares, and services to proxy local ports through traefik. Make sure your hosts file / DNS server includes the records you want proxied.
/etc/traefik
|- bootstrap/
|- dc-template.yml
|- new.sh
|- .env
|- homebridge/
|- docker-compose.yml
|- .env
|- plex/
|- config/
|- media/
|- transcode/
|- docker-compose.yml
|- .env
|- config/
|- docker-compose.yml
|- dynamic/
|- fullchain.pem
|- privkey.pem
|- dynamic.yml
|- traefik.yml
|- .env
|- docker-compose.yml => config/docker-compose.yml
|- traefik.yml => config/traefik.yml
|- .env => config/.env
echo "alias dcud='docker compose up -d'" >> ~/.bashrc
echo "alias dcd='docker compose down'" >> ~/.bashrc
echo "alias dcr='dcd && dcud'" >> ~/.bashrc
echo "alias dlt='docker logs traefik'" >> ~/.bashrc