Initial commit
This commit is contained in:
commit
dc098d434e
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
traefik/acme.json
|
||||
traefik/certs/
|
||||
traefik/traefik.log
|
||||
|
||||
authelia/db.sqlite3
|
||||
authelia/notification.txt
|
||||
authelia/users_database.yml
|
36
authelia/configuration.yml
Normal file
36
authelia/configuration.yml
Normal file
@ -0,0 +1,36 @@
|
||||
host: 0.0.0.0
|
||||
port: 9091
|
||||
logs_level: trace
|
||||
jwt_secret: {{ env.Getenv "PRIVATE_DOMAIN" }}-jwt-secret
|
||||
authentication_backend:
|
||||
file:
|
||||
path: /opt/authelia/users_database.yml
|
||||
|
||||
# {{ env.Getenv "ROOT_DOMAIN" }}
|
||||
session:
|
||||
name: authelia_session
|
||||
secret: {{ env.Getenv "PRIVATE_DOMAIN" }}-token-secret
|
||||
domain: {{ env.Getenv "PRIVATE_DOMAIN" }}
|
||||
expiration: 3600
|
||||
inactivity: 300
|
||||
|
||||
storage:
|
||||
local:
|
||||
path: /opt/authelia/db.sqlite3
|
||||
|
||||
totp:
|
||||
issuer: {{ env.Getenv "PRIVATE_DOMAIN" }}
|
||||
|
||||
access_control:
|
||||
default_policy: one_factor
|
||||
|
||||
|
||||
regulation:
|
||||
max_retries: 1000
|
||||
find_time: 120
|
||||
ban_time: 300
|
||||
|
||||
notifier:
|
||||
filesystem:
|
||||
filename: /opt/authelia/notification.txt
|
||||
|
98
docker-compose.yaml
Normal file
98
docker-compose.yaml
Normal file
@ -0,0 +1,98 @@
|
||||
version: "3.5"
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: false
|
||||
name: web
|
||||
|
||||
volumes:
|
||||
authelia-config:
|
||||
|
||||
services:
|
||||
proxy:
|
||||
container_name: traefik
|
||||
image: traefik:v2.1
|
||||
restart: always
|
||||
environment:
|
||||
- EMAIL
|
||||
- PRIVATE_DOMAIN
|
||||
- PUBLIC_DOMAIN
|
||||
networks:
|
||||
- web
|
||||
command:
|
||||
- "--configFile=/data/traefik.yaml"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "./traefik:/data"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
|
||||
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.${PRIVATE_DOMAIN}`)"
|
||||
- "traefik.http.routers.traefik.middlewares=auth@file"
|
||||
- "traefik.http.routers.traefik.tls.certResolver=le"
|
||||
|
||||
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
|
||||
- "traefik.http.routers.http-catchall.entrypoints=web"
|
||||
- "traefik.http.routers.http-catchall.middlewares=redir@file"
|
||||
|
||||
authelia-config:
|
||||
image: hairyhenderson/gomplate
|
||||
environment:
|
||||
- PRIVATE_DOMAIN
|
||||
- PUBLIC_DOMAIN
|
||||
volumes:
|
||||
- ./authelia/configuration.yml:/data/input:ro
|
||||
- authelia-config:/data/output
|
||||
command: '--file=/data/input --out=/data/output/configuration.yml'
|
||||
authelia:
|
||||
container_name: authelia
|
||||
image: authelia/authelia
|
||||
restart: always
|
||||
links:
|
||||
- authelia-config
|
||||
volumes:
|
||||
- ./authelia:/opt/authelia
|
||||
- authelia-config:/etc/authelia/
|
||||
environment:
|
||||
- ENVIRONMENT=dev
|
||||
- NODE_TLS_REJECT_UNAUTHORIZED=1
|
||||
networks:
|
||||
- web
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.authelia.rule=Host(`auth.${PRIVATE_DOMAIN}`)"
|
||||
- "traefik.http.routers.authelia.tls=true"
|
||||
- "traefik.http.routers.authelia.tls.certResolver=le"
|
||||
- "traefik.http.routers.authelia.entrypoints=websecure"
|
||||
|
||||
# whoami-http:
|
||||
# image: containous/whoami
|
||||
# networks:
|
||||
# - web
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.routers.whoami2.rule=Host(`wai-http.${PRIVATE_DOMAIN}`)"
|
||||
#
|
||||
# whoami-https:
|
||||
# image: containous/whoami
|
||||
# networks:
|
||||
# - web
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.routers.whoami.rule=Host(`wai-https.${PRIVATE_DOMAIN}`)"
|
||||
# - "traefik.http.routers.whoami.tls.certResolver=le"
|
||||
|
||||
# whoami-auth:
|
||||
# image: containous/whoami
|
||||
# networks:
|
||||
# - web
|
||||
# labels:
|
||||
# - "traefik.enable=true"
|
||||
# - "traefik.http.routers.wai.rule=Host(`wai-auth.${PRIVATE_DOMAIN}`)"
|
||||
# - "traefik.http.routers.wai.tls.certResolver=le"
|
||||
# - "traefik.http.routers.wai.middlewares=auth@file"
|
28
traefik/tls.yaml
Normal file
28
traefik/tls.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
http:
|
||||
middlewares:
|
||||
redir:
|
||||
redirectScheme:
|
||||
scheme: https
|
||||
permanent: true
|
||||
auth:
|
||||
forwardAuth:
|
||||
address: http://authelia:9091/api/verify?rd=https://auth.{{ env "PRIVATE_DOMAIN" }}/%23/
|
||||
trustForwardHeader: true
|
||||
authResponseHeaders:
|
||||
- X-Forwarded-User
|
||||
insecureSkipVerify: true
|
||||
|
||||
services:
|
||||
hass:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://192.168.0.10:8123
|
||||
|
||||
routers:
|
||||
hass:
|
||||
service: hass
|
||||
rule: Host(`avagen.{{ env "PRIVATE_DOMAIN" }}`)
|
||||
middleware: redir
|
||||
tls:
|
||||
certResolver: le
|
||||
|
26
traefik/traefik.yaml
Normal file
26
traefik/traefik.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
api:
|
||||
insecure: true
|
||||
|
||||
providers:
|
||||
file:
|
||||
filename: /data/tls.yaml
|
||||
docker:
|
||||
exposedByDefault: false
|
||||
|
||||
log:
|
||||
filePath: /data/traefik.log
|
||||
level: DEBUG
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
address: :80
|
||||
websecure:
|
||||
address: :443
|
||||
|
||||
certificatesResolvers:
|
||||
le:
|
||||
acme:
|
||||
email: '{{ env "EMAIL" }}'
|
||||
storage: /data/acme.json
|
||||
httpChallenge:
|
||||
entrypoint: web
|
Loading…
x
Reference in New Issue
Block a user