Absolutely, here's the full configuration:
traefik.yaml:
################################################################
#
# Configuration sample for Traefik v2.
#
################################################################
################################################################
# Global configuration
################################################################
[global]
checkNewVersion = true
sendAnonymousUsage = true
################################################################
# Servers Transport
################################################################
[serversTransport]
insecureSkipVerify = true
################################################################
# Entrypoints configuration
################################################################
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.forwardedHeaders]
insecure = true
[entryPoints.web.transport]
[entryPoints.web.transport.respondingTimeouts]
readTimeout = 30
writeTimeout = 30
idleTimeout = 30
[entryPoints.websecure]
address = ":443"
[entryPoints.websecure.forwardedHeaders]
insecure = true
[entryPoints.websecure.transport]
[entryPoints.websecure.transport.respondingTimeouts]
readTimeout = 30
writeTimeout = 30
idleTimeout = 30
[entryPoints.traefik]
address = ":8080"
[entryPoints.traefik.forwardedHeaders]
insecure = true
[entryPoints.traefik.transport]
[entryPoints.traefik.transport.respondingTimeouts]
readTimeout = 30
writeTimeout = 30
idleTimeout = 30
################################################################
# Traefik logs configuration
################################################################
[log]
filePath = "/logs/traefik.log"
level = "WARNING"
################################################################
# Access logs configuration
################################################################
[accessLog]
filePath = "/logs/traefik_access.log"
################################################################
# API and dashboard configuration
################################################################
[api]
dashboard = true
################################################################
# Ping configuration
################################################################
[ping]
entrypoint = "web"
################################################################
# File configuration backend
################################################################
[providers]
[providers.file]
filename = "http.toml"
directory = "/etc/traefik"
################################################################
# Certificates Resolvers
################################################################
[certificatesResolvers]
[certificatesResolvers.letsencrypt]
[certificatesResolvers.letsencrypt.acme]
email = "jimmyxxxxxxxxxxxx@icloud.com"
storage = "/etc/traefik/acme/acme.json"
caServer = "https://acme-v02.api.letsencrypt.org/directory"
[certificatesResolvers.letsencrypt.acme.httpChallenge]
entryPoint = "web"
http.yaml:
################################################################
# HTTP
################################################################
[http]
################################################################
# HTTP Routers
################################################################
[http.routers]
[http.routers.redirecttohttps]
entryPoints = ["web"]
middlewares = ["httpsredirect"]
rule = "HostRegexp(`{host:.+}`)"
service = "noop"
[http.routers.my-api]
rule = "Host(`traefik.mydomain.com`)"
service="api@internal"
middlewares = ["auth"]
[http.routers.to-dillinger]
entryPoints = [ "websecure"]
rule = "Host(`dillinger.mydomain.com`)"
service = "dillinger"
[http.routers.to-dillinger.tls]
certResolver = "letsencrypt"
[[http.routers.to-dillinger.tls.domains]]
main = "dillinger.mydomain.com"
[http.routers.to-drone]
entryPoints = [ "websecure"]
rule = "Host(`drone.mydomain.com`)"
service = "drone"
[http.routers.to-drone.tls]
certResolver = "letsencrypt"
[[http.routers.to-drone.tls.domains]]
main = "drone.mydomain.com"
[http.routers.to-drone-runners]
entryPoints = [ "websecure"]
rule = "Host(`drone-runners.mydomain.com`)"
service = "drone-runners"
[http.routers.to-drone-runners.tls]
certResolver = "letsencrypt"
[[http.routers.to-drone-runners.tls.domains]]
main = "drone-runners.mydomain.com"
[http.routers.to-features-mvgl]
entryPoints = [ "websecure"]
rule = "Host(`features.mydomain.com`)"
service = "features-mvgl"
[http.routers.to-features-mvgl.tls]
certResolver = "letsencrypt"
[[http.routers.to-features-mvgl.tls.domains]]
main = "features.mydomain.com"
[http.routers.to-healthchecks]
entryPoints = [ "websecure"]
rule = "Host(`hc.mydomain.com`)"
service = "healthchecks"
[http.routers.to-healthchecks.tls]
certResolver = "letsencrypt"
[[http.routers.to-healthchecks.tls.domains]]
main = "hc.mydomain.com"
[http.routers.to-heimdall]
entryPoints = [ "websecure"]
rule = "Host(`heimdall.mydomain.com`)"
service = "heimdall"
[http.routers.to-heimdall.tls]
certResolver = "letsencrypt"
[[http.routers.to-heimdall.tls.domains]]
main = "heimdall.mydomain.com"
[http.routers.to-internal-mvgl]
entryPoints = [ "websecure"]
rule = "Host(`internal.mydomain.com`)"
service = "internal-mvgl"
[http.routers.to-internal-mvgl.tls]
certResolver = "letsencrypt"
[[http.routers.to-internal-mvgl.tls.domains]]
main = "internal.mydomain.com"
[http.routers.to-lemmy]
entryPoints = [ "websecure"]
rule = "Host(`lemmy.mydomain.com`)"
service = "lemmy"
priority = 1
[http.routers.to-lemmy.tls]
certResolver = "letsencrypt"
[[http.routers.to-lemmy.tls.domains]]
main = "lemmy.mydomain.com"
[http.routers.to-lemmy-pictshare]
entryPoints = [ "websecure"]
rule = "Host(`lemmy.mydomain.com`) && PathPrefix(`/pictshare`)"
service = "lemmy-pictshare"
middlewares = ["pictshare-stripprefix"]
priority = 2
[http.routers.to-lemmy-iframely]
entryPoints = [ "websecure"]
rule = "Host(`lemmy.mydomain.com`) && PathPrefix(`/iframely`)"
service = "lemmy-iframely"
[http.routers.to-mastodon]
entryPoints = [ "websecure"]
rule = "Host(`mastodon.mydomain.com`)"
service = "mastodon"
[http.routers.to-mastodon.tls]
certResolver = "letsencrypt"
[[http.routers.to-mastodon.tls.domains]]
main = "mastodon.mydomain.com"
[http.routers.to-mastodon-streaming]
entryPoints = [ "websecure"]
rule = "Host(`mastodon-streaming.mydomain.com`)"
service = "mastodon-streaming"
[http.routers.to-mastodon-streaming.tls]
certResolver = "letsencrypt"
[[http.routers.to-mastodon-streaming.tls.domains]]
main = "mastodon-streaming.mydomain.com"
[http.routers.to-microk8s]
entryPoints = [ "websecure"]
rule = "Host(`microk8s.mydomain.com`)"
service = "microk8s"
[http.routers.to-microk8s.tls]
certResolver = "letsencrypt"
[[http.routers.to-microk8s.tls.domains]]
main = "microk8s.mydomain.com"
[http.routers.to-nzbget]
entryPoints = [ "websecure"]
rule = "Host(`nzbget.mydomain.com`)"
service = "nzbget"
[http.routers.to-nzbget.tls]
certResolver = "letsencrypt"
[[http.routers.to-nzbget.tls.domains]]
main = "nzbget.mydomain.com"
[http.routers.to-ombi]
entryPoints = [ "websecure"]
rule = "Host(`ombi.mydomain.com`)"
service = "ombi"
[http.routers.to-ombi.tls]
certResolver = "letsencrypt"
[[http.routers.to-ombi.tls.domains]]
main = "ombi.mydomain.com"
[http.routers.to-organizr]
entryPoints = [ "websecure"]
rule = "Host(`organizr.mydomain.com`)"
service = "organizr"
[http.routers.to-organizr.tls]
certResolver = "letsencrypt"
[[http.routers.to-organizr.tls.domains]]
main = "organizr.mydomain.com"
[http.routers.to-portainer]
entryPoints = [ "websecure"]
rule = "Host(`portainer.mydomain.com`)"
service = "portainer"
[http.routers.to-portainer.tls]
certResolver = "letsencrypt"
[[http.routers.to-portainer.tls.domains]]
main = "portainer.mydomain.com"
[http.routers.to-portus]
entryPoints = [ "websecure"]
rule = "Host(`portus.mydomain.com`)"
service = "portus"
[http.routers.to-portus.tls]
certResolver = "letsencrypt"
[[http.routers.to-portus.tls.domains]]
main = "portus.mydomain.com"
[http.routers.to-raspberry]
entryPoints = [ "websecure"]
rule = "Host(`raspberry.mydomain.com`)"
service = "raspberry"
[http.routers.to-raspberry.tls]
certResolver = "letsencrypt"
[[http.routers.to-raspberry.tls.domains]]
main = "raspberry.mydomain.com"
[http.routers.to-registry]
entryPoints = [ "websecure"]
rule = "Host(`registry.mydomain.com`)"
service = "registry"
[http.routers.to-registry.tls]
certResolver = "letsencrypt"
[[http.routers.to-registry.tls.domains]]
main = "registry.mydomain.com"
[http.routers.to-sonarqube]
entryPoints = [ "websecure"]
rule = "Host(`sonarqube.mydomain.com`)"
service = "sonarqube"
[http.routers.to-sonarqube.tls]
certResolver = "letsencrypt"
[[http.routers.to-sonarqube.tls.domains]]
main = "sonarqube.mydomain.com"
[http.routers.to-sonarr]
entryPoints = [ "websecure"]
rule = "Host(`sonarr.mydomain.com`)"
service = "sonarr"
[http.routers.to-sonarr.tls]
certResolver = "letsencrypt"
[[http.routers.to-sonarr.tls.domains]]
main = "sonarr.mydomain.com"
[http.routers.to-status-linuxbox]
entryPoints = [ "websecure"]
rule = "Host(`status.mydomain.com`)"
service = "status-linuxbox"
[http.routers.to-status-linuxbox.tls]
certResolver = "letsencrypt"
[[http.routers.to-status-linuxbox.tls.domains]]
main = "status.mydomain.com"
[http.routers.to-status-mvgl]
entryPoints = [ "websecure"]
rule = "Host(`status.mydomain.com`)"
service = "status-mvgl"
[http.routers.to-status-mvgl.tls]
certResolver = "letsencrypt"
[[http.routers.to-status-mvgl.tls.domains]]
main = "status.mydomain.com"
[http.routers.to-status-nzxt]
entryPoints = [ "websecure"]
rule = "Host(`status.mydomain.com`)"
service = "status-nzxt"
[http.routers.to-status-nzxt.tls]
certResolver = "letsencrypt"
[[http.routers.to-status-nzxt.tls.domains]]
main = "status.nzxt.dev"
[http.routers.to-synapse]
entryPoints = [ "websecure"]
rule = "Host(`synapse.mydomain.com`)"
service = "synapse"
[http.routers.to-synapse.tls]
certResolver = "letsencrypt"
[[http.routers.to-synapse.tls.domains]]
main = "synapse.mydomain.com"
[http.routers.to-tautulli]
entryPoints = [ "websecure"]
rule = "Host(`tautulli.mydomain.com`)"
service = "tautulli"
[http.routers.to-tautulli.tls]
certResolver = "letsencrypt"
[[http.routers.to-tautulli.tls.domains]]
main = "tautulli.mydomain.com"
[http.routers.to-traefik]
entryPoints = ["websecure"]
rule = "Host(`traefik.mydomain.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
service = "traefik"
[http.routers.to-traefik.tls]
certResolver = "letsencrypt"
[[http.routers.to-traefik.tls.domains]]
main = "traefik.mydomain.com"
[http.routers.to-transmission]
entryPoints = [ "websecure"]
rule = "Host(`transmission.mydomain.com`)"
service = "transmission"
[http.routers.to-transmission.tls]
certResolver = "letsencrypt"
[[http.routers.to-transmission.tls.domains]]
main = "transmission.mydomain.com"
[http.routers.to-unifi]
entryPoints = [ "websecure"]
rule = "Host(`unifi.mydomain.com`)"
service = "unifi"
[http.routers.to-unifi.tls]
certResolver = "letsencrypt"
[[http.routers.to-unifi.tls.domains]]
main = "unifi.mydomain.com"
################################################################
# HTTP Services
################################################################
[http.services]
[http.services.noop.loadBalancer]
[[http.services.noop.loadBalancer.servers]]
url = "http://192.168.0.1"
[http.services.dillinger.loadBalancer]
[[http.services.dillinger.loadBalancer.servers]]
url = "http://192.168.100.13:8082/"
[http.services.drone.loadBalancer]
[[http.services.drone.loadBalancer.servers]]
url = "http://192.168.100.13:3080/"
[http.services.drone-runners.loadBalancer]
[[http.services.drone-runners.loadBalancer.servers]]
url = "https://192.168.100.13:3555/"
[http.services.features-mvgl.loadBalancer]
[[http.services.features-mvgl.loadBalancer.servers]]
url = "http://192.168.100.13:9999/"
[http.services.healthchecks.loadBalancer]
[[http.services.healthchecks.loadBalancer.servers]]
url = "http://192.168.100.13:8000/"
[http.services.heimdall.loadBalancer]
[[http.services.heimdall.loadBalancer.servers]]
url = "http://192.168.100.13:81/"
[http.services.lemmy.loadBalancer]
[[http.services.lemmy.loadBalancer.servers]]
url = "http://192.168.100.13:8536/"
[http.services.lemmy-pictshare.loadBalancer]
[[http.services.lemmy-pictshare.loadBalancer.servers]]
url = "http://192.168.100.13:8537/"
[http.services.lemmy-iframely.loadBalancer]
[[http.services.lemmy-iframely.loadBalancer.servers]]
url = "http://192.168.100.13:8061/"
[http.services.mastodon.loadBalancer]
[[http.services.mastodon.loadBalancer.servers]]
url = "http://192.168.100.13:3001/"
[http.services.mastodon-streaming.loadBalancer]
[[http.services.mastodon-streaming.loadBalancer.servers]]
url = "http://192.168.100.13:4000/"
[http.services.microk8s.loadBalancer]
[[http.services.microk8s.loadBalancer.servers]]
url = "https://192.168.100.13:10443/"
[http.services.internal-mvgl.loadBalancer]
[[http.services.internal-mvgl.loadBalancer.servers]]
url = "http://192.168.100.13:8083/"
[http.services.nzbget.loadBalancer]
[[http.services.nzbget.loadBalancer.servers]]
url = "http://192.168.100.13:6789/"
[http.services.ombi.loadBalancer]
[[http.services.ombi.loadBalancer.servers]]
url = "http://192.168.100.13:3579/"
[http.services.organizr.loadBalancer]
[[http.services.organizr.loadBalancer.servers]]
url = "http://192.168.100.13:9983/"
[http.services.portainer.loadBalancer]
[[http.services.portainer.loadBalancer.servers]]
url = "http://192.168.100.13:9000/"
[http.services.portus.loadBalancer]
[[http.services.portus.loadBalancer.servers]]
url = "http://192.168.100.13:3002/"
[http.services.raspberry.loadBalancer]
[[http.services.raspberry.loadBalancer.servers]]
url = "http://192.168.100.9/"
[http.services.registry.loadBalancer]
[[http.services.registry.loadBalancer.servers]]
url = "http://192.168.100.13:5003/"
[http.services.sonarqube.loadBalancer]
[[http.services.sonarqube.loadBalancer.servers]]
url = "http://192.168.100.13:9002/"
[http.services.sonarr.loadBalancer]
[[http.services.sonarr.loadBalancer.servers]]
url = "http://192.168.100.13:8989/"
[http.services.status-linuxbox.loadBalancer]
[[http.services.status-linuxbox.loadBalancer.servers]]
url = "http://192.168.100.13:5000/"
[http.services.status-mvgl.loadBalancer]
[[http.services.status-mvgl.loadBalancer.servers]]
url = "http://192.168.100.13:5001/"
[http.services.status-nzxt.loadBalancer]
[[http.services.status-nzxt.loadBalancer.servers]]
url = "http://192.168.100.13:5002/"
[http.services.synapse.loadBalancer]
[[http.services.synapse.loadBalancer.servers]]
url = "http://192.168.100.13:8008/"
[http.services.tautulli.loadBalancer]
[[http.services.tautulli.loadBalancer.servers]]
url = "http://192.168.100.20:8181/"
[http.services.traefik.loadBalancer]
[[http.services.traefik.loadBalancer.servers]]
url = "http://192.168.100.13:8080/"
[http.services.transmission.loadBalancer]
[[http.services.transmission.loadBalancer.servers]]
url = "http://192.168.100.13:9091/"
[http.services.unifi.loadBalancer]
[[http.services.unifi.loadBalancer.servers]]
url = "https://192.168.100.13:8443/"
################################################################
# HTTP Middlewares
################################################################
[http.middlewares]
[http.middlewares.auth.basicAuth]
users = [
"jimmy:lsdkjfl;sdjfsdlfkjlsdfjlsdfjslkdjfdsf"
]
[http.middlewares.httpsredirect.redirectScheme]
scheme = "https"
[http.middlewares.pictshare-stripprefix.stripPrefix]
prefixes = ["/pictshare"]
traefik.log:
time="2020-03-02T15:54:33-06:00" level=debug msg="vulcand/oxy/roundrobin/rr: begin ServeHttp on request" Request="{\"Method\":\"POST\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/pictshare/api/upload.php\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/2.0\",\"ProtoMajor\":2,\"ProtoMinor\":0,\"Header\":{\"Accept\":[\"*/*\"],\"Accept-Encoding\":[\"gzip, deflate, br\"],\"Accept-Language\":[\"en-us\"],\"Content-Length\":[\"60769\"],\"Content-Type\":[\"multipart/form-data; boundary=----WebKitFormBoundary3vzqyONEQOPanLPD\"],\"Cookie\":[\"jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MywidXNlcm5hbWUiOiJhc3R1ZmZlZHRpZ2VyIiwiaXNzIjoibGVtbXkubGludX"],\"Origin\":[\"https://lemmy.linuxbox.ninja\"],\"Referer\":[\"https://lemmy.linuxbox.ninja/u/astuffedtiger\"],\"User-Agent\":[\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15\"],\"X-Forwarded-Host\":[\"lemmy.linuxbox.ninja\"],\"X-Forwarded-Port\":[\"443\"],\"X-Forwarded-Proto\":[\"https\"],\"X-Forwarded-Server\":[\"traefik.mydomain.com\"],\"X-Real-Ip\":[\"184.3.4.5\"]},\"ContentLength\":60769,\"TransferEncoding\":null,\"Host\":\"lemmy.linuxbox.ninja\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"184.3.4.5:57705\",\"RequestURI\":\"/pictshare/api/upload.php\",\"TLS\":null}"
time="2020-03-02T15:54:33-06:00" level=debug msg="vulcand/oxy/roundrobin/rr: Forwarding this request to URL" ForwardURL="http://192.168.100.13:8536/" Request="{\"Method\":\"POST\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/pictshare/api/upload.php\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/2.0\",\"ProtoMajor\":2,\"ProtoMinor\":0,\"Header\":{\"Accept\":[\"*/*\"],\"Accept-Encoding\":[\"gzip, deflate, br\"],\"Accept-Language\":[\"en-us\"],\"Content-Length\":[\"60769\"],\"Content-Type\":[\"multipart/form-data; boundary=----WebKitFormBoundary3vzqyONEQOPanLPD\"],\"Cookie\":[\"jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MywidXNlcm5hbWUiOiJhc3R1ZmZlZHRpZ2VyIiwiaXNzIjoibGVtbXkubGludXhib3gubmluamE"],\"Origin\":[\"https://lemmy.linuxbox.ninja\"],\"Referer\":[\"https://lemmy.linuxbox.ninja/u/astuffedtiger\"],\"User-Agent\":[\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15\"],\"X-Forwarded-Host\":[\"lemmy.linuxbox.ninja\"],\"X-Forwarded-Port\":[\"443\"],\"X-Forwarded-Proto\":[\"https\"],\"X-Forwarded-Server\":[\"traefik.mydomain.com\"],\"X-Real-Ip\":[\"184.3.4.5\"]},\"ContentLength\":60769,\"TransferEncoding\":null,\"Host\":\"lemmy.linuxbox.ninja\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"184.3.4.5:57705\",\"RequestURI\":\"/pictshare/api/upload.php\",\"TLS\":null}"
time="2020-03-02T15:54:33-06:00" level=debug msg="vulcand/oxy/roundrobin/rr: completed ServeHttp on request" Request="{\"Method\":\"POST\",\"URL\":{\"Scheme\":\"\",\"Opaque\":\"\",\"User\":null,\"Host\":\"\",\"Path\":\"/pictshare/api/upload.php\",\"RawPath\":\"\",\"ForceQuery\":false,\"RawQuery\":\"\",\"Fragment\":\"\"},\"Proto\":\"HTTP/2.0\",\"ProtoMajor\":2,\"ProtoMinor\":0,\"Header\":{\"Accept\":[\"*/*\"],\"Accept-Encoding\":[\"gzip, deflate, br\"],\"Accept-Language\":[\"en-us\"],\"Content-Length\":[\"60769\"],\"Content-Type\":[\"multipart/form-data; boundary=----WebKitFormBoundary3vzqyONEQOPanLPD\"],\"Cookie\":[\"jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MywidXNlcm5hbWUiOiJhc3R1ZmZlZHRpZ2VyIiwiaXNzIjoibGVtbXkubGludXhib"],\"Origin\":[\"https://lemmy.linuxbox.ninja\"],\"Referer\":[\"https://lemmy.linuxbox.ninja/u/astuffedtiger\"],\"User-Agent\":[\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15\"],\"X-Forwarded-Host\":[\"lemmy.linuxbox.ninja\"],\"X-Forwarded-Port\":[\"443\"],\"X-Forwarded-Proto\":[\"https\"],\"X-Forwarded-Server\":[\"traefik.mydomain.com\"],\"X-Real-Ip\":[\"184.3.4.5\"]},\"ContentLength\":60769,\"TransferEncoding\":null,\"Host\":\"lemmy.linuxbox.ninja\",\"Form\":null,\"PostForm\":null,\"MultipartForm\":null,\"Trailer\":null,\"RemoteAddr\":\"184.3.4.5:57705\",\"RequestURI\":\"/pictshare/api/upload.php\",\"TLS\":null}"