Example for teleport with traefik proxy
This commit is contained in:
parent
29c3e5aafa
commit
a18f99b9a1
4 changed files with 164 additions and 0 deletions
61
Docker/traefik & teleport/etc/teleport.yaml
Normal file
61
Docker/traefik & teleport/etc/teleport.yaml
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
version: v2
|
||||||
|
teleport:
|
||||||
|
nodename: example
|
||||||
|
data_dir: /var/lib/teleport
|
||||||
|
log:
|
||||||
|
output: stdout
|
||||||
|
severity: INFO
|
||||||
|
format:
|
||||||
|
output: text
|
||||||
|
ca_pin: ""
|
||||||
|
diag_addr: ""
|
||||||
|
auth_service:
|
||||||
|
enabled: "yes"
|
||||||
|
listen_addr: 0.0.0.0:3025
|
||||||
|
public_addr: teleport.example.de:3025
|
||||||
|
cluster_name: teleport.example.de
|
||||||
|
proxy_listener_mode: multiplex
|
||||||
|
session_recording: "off"
|
||||||
|
web_idle_timeout: 10m
|
||||||
|
ssh_service:
|
||||||
|
enabled: "yes"
|
||||||
|
permit_user_env: true
|
||||||
|
commands:
|
||||||
|
- name: Compose
|
||||||
|
command: ["/bin/sh", "-c", "docker compose version --short"]
|
||||||
|
period: "168h"
|
||||||
|
- name: Docker
|
||||||
|
command: ["/bin/sh", "-c", "docker system info | grep Running | cut -d' ' -f4"]
|
||||||
|
period: "30m"
|
||||||
|
- name: Engine
|
||||||
|
command: ["/bin/sh", "-c", "docker version --format '{{.Server.Version}}'"]
|
||||||
|
period: "168h"
|
||||||
|
- name: Kernel
|
||||||
|
command: ["/bin/uname", "-r"]
|
||||||
|
period: "168h"
|
||||||
|
- name: Teleport
|
||||||
|
command: ["/bin/sh", "-c", "teleport version | cut -d' ' -f2"]
|
||||||
|
period: "168h"
|
||||||
|
- name: Restic
|
||||||
|
command: ["/bin/sh", "-c", "restic version | cut -d ' ' -f2"]
|
||||||
|
period: "168h"
|
||||||
|
- name: Rclone
|
||||||
|
command: ["/bin/sh", "-c", "rclone version | head -1 | cut -d ' ' -f2"]
|
||||||
|
period: "168h"
|
||||||
|
proxy_service:
|
||||||
|
enabled: "yes"
|
||||||
|
web_listen_addr: 0.0.0.0:3080
|
||||||
|
public_addr: teleport.example.de:443
|
||||||
|
ssh_public_addr: teleport.example.de:3023
|
||||||
|
tunnel_public_addr: teleport.example.de:3024
|
||||||
|
https_keypairs: []
|
||||||
|
acme:
|
||||||
|
enabled: "yes"
|
||||||
|
email: "mail@example.de"
|
||||||
|
app_service:
|
||||||
|
enabled: "yes"
|
||||||
|
apps:
|
||||||
|
- name: "proxy"
|
||||||
|
description: "Traefik"
|
||||||
|
public_addr: "proxy.teleport.example.de"
|
||||||
|
uri: "http://localhost:8080"
|
32
Docker/traefik & teleport/proxy/docker-compose.yml
Normal file
32
Docker/traefik & teleport/proxy/docker-compose.yml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
version: "3.9"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
hetzner:
|
||||||
|
file: ./secrets/hetzner_key
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:2.8
|
||||||
|
container_name: traefik
|
||||||
|
restart: always
|
||||||
|
secrets:
|
||||||
|
- hetzner
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Berlin
|
||||||
|
- HETZNER_API_KEY_FILE=/run/secrets/hetzner
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik/static.toml:/etc/traefik/traefik.toml
|
||||||
|
- ./traefik/dynamic.toml:/dynamic.toml
|
||||||
|
- ./secrets/acme.json:/acme.json
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "127.0.0.1:8080:8080"
|
||||||
|
networks:
|
||||||
|
- proxy
|
31
Docker/traefik & teleport/proxy/traefik/dynamic.toml
Normal file
31
Docker/traefik & teleport/proxy/traefik/dynamic.toml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
[http]
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.sec-headers.headers]
|
||||||
|
frameDeny = true
|
||||||
|
browserXssFilter = true
|
||||||
|
contentTypeNosniff = true
|
||||||
|
forceSTSHeader = true
|
||||||
|
stsIncludeSubdomains = true
|
||||||
|
stsPreload = true
|
||||||
|
stsSeconds = 63072000
|
||||||
|
customFrameOptionsValue = "SAMEORIGIN"
|
||||||
|
|
||||||
|
[tcp]
|
||||||
|
[tcp.routers]
|
||||||
|
[tcp.routers.teleport]
|
||||||
|
entryPoints = ["websecure"]
|
||||||
|
rule = "HostSNIRegexp(`teleport.unjx.de`, `{subdomain:[a-z]+}.teleport.unjx.de`)"
|
||||||
|
service = "teleport"
|
||||||
|
[tcp.routers.teleport.tls]
|
||||||
|
passthrough = true
|
||||||
|
|
||||||
|
[tcp.services]
|
||||||
|
[tcp.services.teleport.loadBalancer]
|
||||||
|
[[tcp.services.teleport.loadBalancer.servers]]
|
||||||
|
address = "172.18.0.1:3080"
|
||||||
|
|
||||||
|
[tls]
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.default]
|
||||||
|
minVersion = "VersionTLS13"
|
||||||
|
sniStrict = true
|
40
Docker/traefik & teleport/proxy/traefik/static.toml
Normal file
40
Docker/traefik & teleport/proxy/traefik/static.toml
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
[global]
|
||||||
|
checkNewVersion = true
|
||||||
|
sendAnonymousUsage = false
|
||||||
|
|
||||||
|
[serversTransport]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.web.http.redirections]
|
||||||
|
[entryPoints.web.http.redirections.entryPoint]
|
||||||
|
to = "websecure"
|
||||||
|
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[providers]
|
||||||
|
[providers.file]
|
||||||
|
filename = "dynamic.toml"
|
||||||
|
watch = true
|
||||||
|
|
||||||
|
[providers.docker]
|
||||||
|
|
||||||
|
[api]
|
||||||
|
dashboard = true
|
||||||
|
insecure = true
|
||||||
|
|
||||||
|
[log]
|
||||||
|
# uncomment in needed
|
||||||
|
# [accessLog]
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Lets's Encrypt
|
||||||
|
################################################################
|
||||||
|
[certificatesResolvers.hetzner.acme]
|
||||||
|
email = "mail@example.de"
|
||||||
|
storage = "acme.json"
|
||||||
|
[certificatesResolvers.hetzner.acme.dnsChallenge]
|
||||||
|
provider = "hetzner"
|
Loading…
Reference in a new issue