Files
2026-06-30 10:47:37 +02:00

1.9 KiB

Deployment

Requirements

  • Docker Engine with Docker Compose plugin.
  • Backend services reachable from the Docker host or container by IP address and port.
  • Backend services must terminate TLS and present valid SSL certificates for the expected client names.

Configuration

Add or update a per-site file under config/dynamic/ with the required hostnames and backend addresses:

tcp:
  routers:
    example:
      rule: "HostSNI(`example.org`)"
      service: example
      tls:
        passthrough: true

  services:
    example:
      loadBalancer:
        servers:
          - address: "127.0.0.1:8443"

This deployment uses host networking so Traefik can reach services bound to host loopback addresses such as 127.0.0.1:8443.

HTTP traffic is routed separately with HTTP Host(...) rules on port 80. Configure the HTTP service in the same per-site file to point at the local backend port that should handle redirects and ACME challenge paths.

Keep each site's HTTP and TCP routers in the same dynamic file, for example config/dynamic/lab-younerd.yml or config/dynamic/azionelab.yml.

The ./config directory is the host-based configuration volume. It is mounted read-only into the container:

volumes:
  - ./config:/etc/traefik:ro

Ports

  • Host 80/tcp: public HTTP entrypoint handled directly by Traefik through host networking.
  • Host 443/tcp: public TCP TLS passthrough entrypoint handled directly by Traefik through host networking.
  • Host 8082/tcp: Traefik ping entrypoint for the container healthcheck; restrict this port with host firewall rules if needed.

Deploy

Validate the Compose configuration:

docker compose config

Start the stack:

docker compose up -d

Check status:

docker compose ps
docker compose logs traefik

Rollback

Stop the stack:

docker compose down

Then revert the deployment commit or restore the previous load-balancer configuration.