Add traefik and nextcloud config
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
http:
|
||||
routers:
|
||||
nextcloud:
|
||||
rule: "Host(`nc.example.com`)" # Указываем свой домен для nectcloud
|
||||
entrypoints:
|
||||
- "https"
|
||||
service: nextcloud
|
||||
middlewares:
|
||||
- nextcloud-chain
|
||||
tls:
|
||||
certresolver: "challenge"
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://nextcloud-aio-apache:11000" # Adjust to match APACHE_PORT and APACHE_IP_BINDING. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md#adapting-the-sample-web-server-configurations-below
|
||||
|
||||
middlewares:
|
||||
nextcloud-secure-headers:
|
||||
headers:
|
||||
hostsProxyHeaders:
|
||||
- "X-Forwarded-Host"
|
||||
referrerPolicy: "same-origin"
|
||||
customRequestHeaders:
|
||||
X-Forwarded-Proto: "https"
|
||||
|
||||
https-redirect:
|
||||
redirectscheme:
|
||||
scheme: https
|
||||
|
||||
nextcloud-chain:
|
||||
chain:
|
||||
middlewares:
|
||||
# - ... (e.g. rate limiting middleware)
|
||||
- https-redirect
|
||||
- nextcloud-secure-headers
|
||||
@@ -0,0 +1,43 @@
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:latest # Используем последний образ Traefik
|
||||
container_name: traefik # Имя контейнера
|
||||
restart: unless-stopped # Говорим докеру, чтобы контейнер всегда пытался перезапуститься, в случае непредвиденной остановки
|
||||
security_opt:
|
||||
- no-new-privileges:true # Не даем получить контейнеру дополнительные привилегии без нашего ведома
|
||||
networks:
|
||||
proxy: # контейнер будет работать в определенной докер сети с названием 'proxy'
|
||||
ports:
|
||||
- 80:80 # определяем HTTP порт
|
||||
- 443:443 # определяем HTTPS порт
|
||||
# environment:
|
||||
# - CF_API_EMAIL=mail@gmail.com # Указываем свою почтовый адрес, который у нас служит аккаунтом в Cloudflare для получения API токена
|
||||
# - CF_DNS_API_TOKEN=apitoken # указываем значения полученного токена
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro # синхронизируем время контейнера со временем хоста
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro # Разрешаем Traefik взаимодействовать с докером напрямую
|
||||
- /home/zalim/docker/traefik/traefik.yaml:/traefik.yaml:ro # указываем где у нас находится файл статической конфигурации Traefik
|
||||
- /home/zalim/docker/traefik/acme.json:/acme.json # указываем где у нас будут храниться все данные о наших SSL сертификатах
|
||||
- /home/zalim/docker/traefik/config:/config:ro # Указываем где у нас хранится файл динамической конфигурации
|
||||
- /home/zalim/docker/traefik/logs:/var/log/traefik # прописываем путь до директории, где у нас будут храниться логи Traefik и access log
|
||||
labels:
|
||||
- "traefik.enable=true" # Активируем Traefik для данного сервиса
|
||||
- "traefik.http.routers.traefik.entrypoints=http" # Определяем точку входа HTTP
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)" # Определяем хост правило для роутинга
|
||||
- "traefik.http.middlewares.traefik-auth.basicauth.users=user:password_hash" # Прикручиваем базовую аутентификацию для защиты нашего traefik, указывая логин и пароль в захэшированном виде
|
||||
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https" # Указываем что HTTP трафик должен быть перенаправлен в HTTPS трафик
|
||||
- "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https" # Задаем передадресацию заголовков для SSL
|
||||
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect" # Применяем Apply HTTPS redirect middleware для редиректа https трафика
|
||||
- "traefik.http.routers.traefik-secure.entrypoints=https" # Безопасная точка входа для HTTPS
|
||||
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.example.com`)" # Хост правило для https роутинга
|
||||
- "traefik.http.routers.traefik-secure.middlewares=traefik-auth" # Применяем аутентификационную middleware
|
||||
- "traefik.http.routers.traefik-secure.tls=true" # Включаем TLS для безопасного соединения
|
||||
- "traefik.http.routers.traefik-secure.tls.certresolver=challenge" # Используем Cloudflare для выпуска сертификатов
|
||||
# - "traefik.http.routers.traefik-secure.tls.domains[0].main=user.ru" # Доменное имя второго уровня, на который выпускаем SSL сертификат
|
||||
# - "traefik.http.routers.traefik-secure.tls.domains[0].sans=*.user.ru" # Выпускаем wildcard SSL сертификат на все поддоменные имя в рамках домена, определенного правилом выше
|
||||
- "traefik.http.routers.traefik-secure.service=api@internal" # Определяем внутренний сервис для Traefik API
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
name: proxy # Определяем внешнюю сеть к которой необходимо присоединиться
|
||||
external: true # Указываем, что сеть является внешней
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
api:
|
||||
dashboard: true #включаем дэшборд
|
||||
debug: true # включаем уровень дебаг
|
||||
entryPoints: # определяем точки входа
|
||||
http: # название точки входа
|
||||
address: ":80" # порт который относиться к названию http
|
||||
http: # следующие пять строчек, говорят нам, что мы на глобальном уровне заставляем весь трафик, который приходит на порт 80
|
||||
redirections:
|
||||
entryPoint:
|
||||
to: https
|
||||
scheme: https
|
||||
https: # название точки входа
|
||||
address: ":443" # порт который относиться к названию https
|
||||
http:
|
||||
encodedCharacters: # Разрешённые закодированные символы (важно для Trilium)
|
||||
allowEncodedSlash: true # Разрешить %2F
|
||||
allowEncodedPercent: true # Разрешить %25
|
||||
allowEncodedHash: true # Разрешить %23
|
||||
serversTransport: # следующие две строчки разрешают нам использовать самоподписанные ssl сертификаты в тех сервиса, которые их используют, например Proxmox
|
||||
insecureSkipVerify: true
|
||||
providers: # определяем провайдеров конфигурации - это докер и файл динамической конфигурации
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false
|
||||
file:
|
||||
directory: /config
|
||||
watch: true
|
||||
# filename: /config.yaml
|
||||
certificatesResolvers: # определяем кто у нас выступает резолвером сертификатов
|
||||
challenge: # кто именно, указываем, что надо использовать acme; указываем почту, которая используется в cloudflare
|
||||
acme:
|
||||
email: admin@example.com #add your email
|
||||
storage: acme.json # определяем файл, где будет храниться вся информация об ssl сертификатов
|
||||
httpChallenge: # используем метод получения ssl сертификатов как dns challenge
|
||||
entryPoint: http
|
||||
|
||||
log: # определяем уровень логирования и путь для логов
|
||||
level: "INFO"
|
||||
filePath: "/var/log/traefik/traefik.log"
|
||||
accessLog:
|
||||
filePath: "/var/log/traefik/access.log"
|
||||
Reference in New Issue
Block a user