Traefik + Netdata + Let’s Encrypt
Статья описывает, как настроить взаимодействие Traefik, Netdata и Let’s Encrypt с использованием Docker Compose для автоматического управления SSL-сертификатами и проксирования трафика.
Настройка трафика
- mkdir traefik && cd traefik
- Создаём сесть docker network create web
- Копируем всё в свой docker-compose.yml
version: '3'
services:
reverse-proxy:
image: traefik:v2.5.4
restart: always
command:
- "--api.insecure=true" # включим веб-интерфейс
- "--providers.docker=true" # указывает Traefik слушать докер
- "--entrypoints.web.address=:80" # указываем точку входа web
- "--entrypoints.websecure.address=:443" # указываем точку входа websecure
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true" # Указываем метод вызова ACME как HTTP Challenge
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=твой_ящик@gmail.com" # указываем email для регистрации в Let's Encrypt
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" # указываем путь для хранения сертификатов
ports:
- "80:80"
- "443:443"
- "8080:8080" # The Web UI (enabled by --api.insecure=true)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # Чтобы Traefik мог слушать события Docker
- ./letsencrypt:/letsencrypt # папка с сертификатами
networks:
- web
labels:
# добавим домен traefik.твой_домен.com
- traefik.enable=true
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.rule=Host(`traefik.твой_домен.com`)
# TLS настройки
- traefik.http.routers.traefik.tls=true
- traefik.http.routers.traefik.tls.certresolver=letsencrypt
# TLS настройки для дашборда
- traefik.http.services.traefik-traefik.loadbalancer.server.port=8080
# middleware для редиректа с http на https
- traefik.http.middlewares.http-redirect.redirectscheme.scheme=https
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.middlewares=http-redirect
networks:
web:
external: true
Настройка Netdata
version: '3'
services:
netdata:
image: netdata/netdata
container_name: netdata
hostname: netdata.твой_домен.com
ports:
- 19999:19999
restart: unless-stopped
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
volumes:
- netdataconfig:/etc/netdata
- netdatalib:/var/lib/netdata
- netdatacache:/var/cache/netdata
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /etc/os-release:/host/etc/os-release:ro
labels:
- traefik.enable=true
- traefik.http.routers.netdata.rule=Host(`netdata.твой_домен.com`)
- traefik.http.routers.netdata.entrypoints=websecure
- traefik.http.routers.netdata.tls=true
- traefik.http.routers.netdata.tls.certresolver=letsencrypt
- traefik.http.services.netdata.loadbalancer.server.port=19999
- traefik.http.services.netdata.loadbalancer.server.scheme=http
- traefik.http.services.netdata.loadbalancer.passhostheader=true
networks:
- web
volumes:
netdataconfig:
netdatalib:
netdatacache:
networks:
web:
external: true # стандартная для всех на этом сервере
PROFIT