In this repo I want to report my experiences with traefik in my home network. All the configurations (if possible) are made with docker-compose so you have fewer places where you have to make changes.
In my network I need some services and the most are on docker
but with the change that browsers don't like http
anymore, I need a way to configure httpS
for all the services and I don't like to remember the port for every specific site. The solution is a reverse proxy and I have found with traefik
a nice solution.
All this examples are based on traefik version 2.x.
- basic: installation of traefik with SSL trough Let's Encrypt
- oauth: use OAuth to protect a site with Google login
- fileprovider: connect trough traefik a server not in docker
- dashboard: dashboard connection with
api.insecure=false
- authelia: SSO and 2FA with a local server
- tcp: TCP entry point for non HTTP services
- mTLS: securing services with mutual TLS (mTLS)
- Guacamole: installing guide for Guacamole
- Ping: check the traefik status with an http ping
- Nextcloud: personal office online with ONLYOFFICE
- network segregation: segment the traffic of containers
- multiple domains: multi domain pointing to a single container
- HTTP3: use HTTP3 (Traefik V3)
- Tailscale: certificate from Tailscale (Traefik V3)
-
For each example there is a separate folder, copy this files to your machine.
-
In the root directory of this repo there is a variable file
var.env
. Download it and rename in.env
. The most configurations options specific for your installation are in this file. You can copy it to every example you want to try. -
In the
docker-compose.yml
you find all the configuration to generate and configure the docker containers. -
In every example folder you find a
README.md
with a guide to the relative case.
.
├── FileProvider # folder for dynamic traefik configuration (server not in docker)
│ └── file-provider.toml # dynamic config file
├── .env # variable for docker-compose.yml
├── acme.json # Let's Encrypt SSL certificates
└── docker-compose.yml
If you find a problem in this guide or in the configurations files you can open an issue on GitHub. Thanks!