docs: create traefik
This commit is contained in:
parent
202596d4ca
commit
dea4bac7e1
121
traefik.md
Normal file
121
traefik.md
Normal file
@ -0,0 +1,121 @@
|
||||
---
|
||||
title: Traefik
|
||||
description: Hypercharged reverse proxy with Docker autodiscovery and other goodies
|
||||
published: true
|
||||
date: 2019-07-01T15:21:53.482Z
|
||||
tags:
|
||||
---
|
||||
|
||||
# What is this?
|
||||
|
||||
Traefik hogs your ports `80` and `443` (and others), will intercept HTTP requests to your server and forward them to different endpoints.
|
||||
|
||||
It allows you to run multiple web services on the same IP address and access them on a domain name basis.
|
||||
|
||||
We use both the Docker backend and a manual routing backend.
|
||||
|
||||
# Requirements
|
||||
To make it easier to have multiple `docker-compose.yml` without having to specify networks by hand, we use Traefik natively installed on the host, rather than the usual Docker install.
|
||||
|
||||
This allows it to access all Docker networks by default.
|
||||
|
||||
On NixOS:
|
||||
|
||||
```
|
||||
traefik = {
|
||||
enable = true;
|
||||
group = "docker";
|
||||
configFile = "/var/lib/traefik/traefik.toml";
|
||||
};
|
||||
```
|
||||
|
||||
# Configuration
|
||||
`traefik.toml`
|
||||
```
|
||||
logLevel = "INFO"
|
||||
|
||||
defaultEntryPoints = ["http", "https"]
|
||||
|
||||
[accessLog]
|
||||
filePath = "/var/lib/traefik/access.log"
|
||||
format = "json"
|
||||
|
||||
[entryPoints]
|
||||
[entryPoints.http]
|
||||
address = ":80"
|
||||
[entryPoints.http.redirect]
|
||||
entryPoint = "https"
|
||||
|
||||
[entryPoints.https]
|
||||
address = ":443"
|
||||
[entryPoints.https.tls]
|
||||
sniStrict = true
|
||||
minVersion = "VersionTLS12"
|
||||
cipherSuites = [
|
||||
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
|
||||
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
||||
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
||||
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
|
||||
]
|
||||
|
||||
[entryPoints.bitwarden]
|
||||
address = ":3012"
|
||||
|
||||
[entryPoints.traefik]
|
||||
address = ":8080"
|
||||
# [entryPoints.traefik.auth]
|
||||
# [entryPoints.traefik.auth.basic]
|
||||
# users = [
|
||||
# "Enter your magic apache htaccess basic auth string here"
|
||||
# ]
|
||||
|
||||
[api]
|
||||
dashboard = true
|
||||
entryPoint = "traefik"
|
||||
|
||||
[file]
|
||||
watch = true
|
||||
filename = "/var/lib/traefik/rules.toml"
|
||||
|
||||
# Let's encrypt configuration
|
||||
[acme]
|
||||
email = "fosc@fosc.space"
|
||||
storage = "/var/lib/traefik/acme/acme.json"
|
||||
entryPoint = "https"
|
||||
acmeLogging = true
|
||||
onDemand = false
|
||||
onHostRule = true
|
||||
[acme.tlsChallenge]
|
||||
|
||||
[docker]
|
||||
```
|
||||
|
||||
# Manual routes
|
||||
`rules.toml`
|
||||
```
|
||||
[frontends]
|
||||
[frontends.netdata]
|
||||
backend = "b_netdata"
|
||||
[frontends.netdata.routes.r1]
|
||||
rule = "Host: netdata.fosc.space"
|
||||
[frontends.transmission]
|
||||
backend = "b_transmission"
|
||||
[frontends.transmission.routes.r1]
|
||||
rule = "Host: transmission.fosc.space"
|
||||
[frontends.router]
|
||||
backend = "b_router"
|
||||
[frontends.router.routes.r1]
|
||||
rule = "Host: router.fosc.space"
|
||||
|
||||
[backends]
|
||||
[backends.b_netdata]
|
||||
[backends.b_netdata.servers.localhost]
|
||||
url = "http://fosc.lan:19999"
|
||||
weight = 1
|
||||
[backends.b_transmission]
|
||||
[backends.b_transmission.servers.localhost]
|
||||
url = "http://fosc.lan:9091"
|
||||
[backends.b_router]
|
||||
[backends.b_router.servers.router]
|
||||
url = "http://openwrt.lan:19999"
|
||||
```
|
Loading…
Reference in New Issue
Block a user