initial commit
This commit is contained in:
29
authelia.yml
Normal file
29
authelia.yml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
authelia:
|
||||||
|
image: clems4ever/authelia:master
|
||||||
|
container_name: authelia
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./files/config.minimal.yml:/etc/authelia/config.yml:ro
|
||||||
|
- ./files/users_database.yml:/etc/authelia/users_database.yml:rw
|
||||||
|
- /tmp/authelia:/tmp/authelia
|
||||||
|
environment:
|
||||||
|
- NODE_TLS_REJECT_UNAUTHORIZED=1
|
||||||
|
labels:
|
||||||
|
- "traefik.frontend.rule=Host:auth.personal.domain"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
expose:
|
||||||
|
- 8080
|
||||||
|
networks:
|
||||||
|
- web
|
||||||
|
- mail
|
||||||
|
|
||||||
|
networks:
|
||||||
|
web:
|
||||||
|
external:
|
||||||
|
name: traefik
|
||||||
|
mail:
|
||||||
|
external: true
|
||||||
0
files/acme.json
Normal file
0
files/acme.json
Normal file
105
files/config.minimal.yml
Normal file
105
files/config.minimal.yml
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
###############################################################
|
||||||
|
# Authelia minimal configuration #
|
||||||
|
###############################################################
|
||||||
|
|
||||||
|
#logs_level: debug
|
||||||
|
|
||||||
|
authentication_backend:
|
||||||
|
file:
|
||||||
|
path: /etc/authelia/users_database.yml
|
||||||
|
|
||||||
|
session:
|
||||||
|
secret: change_this_for_your_server
|
||||||
|
domain: personal.domain
|
||||||
|
|
||||||
|
# Configuration of the storage backend used to store data and secrets. i.e. totp data
|
||||||
|
storage:
|
||||||
|
local:
|
||||||
|
path: /etc/authelia/storage
|
||||||
|
|
||||||
|
# TOTP Issuer Name
|
||||||
|
#
|
||||||
|
# This will be the issuer name displayed in Google Authenticator
|
||||||
|
# See: https://github.com/google/google-authenticator/wiki/Key-Uri-Format for more info on issuer names
|
||||||
|
totp:
|
||||||
|
issuer: personal.domain
|
||||||
|
|
||||||
|
# Access Control
|
||||||
|
#
|
||||||
|
# Access control is a set of rules you can use to restrict user access to certain
|
||||||
|
# resources.
|
||||||
|
access_control:
|
||||||
|
# Default policy can either be `bypass`, `one_factor`, `two_factor` or `deny`.
|
||||||
|
default_policy: one_factor
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- domain: public.personal.domain
|
||||||
|
policy: bypass
|
||||||
|
- domain: httpbin.personal.domain
|
||||||
|
policy: bypass
|
||||||
|
- domain: auth.cusack.cloud
|
||||||
|
policy: bypass
|
||||||
|
- domain: firewall.personal.domain
|
||||||
|
policy: two_factor
|
||||||
|
- domain: proxmox.personal.domain
|
||||||
|
policy: two_factor
|
||||||
|
# resources:
|
||||||
|
# - '^/api/.*$'
|
||||||
|
# - '^/notifications/.*$'
|
||||||
|
policy: bypass
|
||||||
|
|
||||||
|
# - domain: who.example.com
|
||||||
|
# policy: two_factor
|
||||||
|
|
||||||
|
# Configuration of the authentication regulation mechanism.
|
||||||
|
regulation:
|
||||||
|
# Set it to 0 to disable max_retries.
|
||||||
|
max_retries: 5
|
||||||
|
|
||||||
|
# The user is banned if the authenticaction failed `max_retries` times in a `find_time` seconds window.
|
||||||
|
find_time: 120
|
||||||
|
|
||||||
|
# The length of time before a banned user can login again.
|
||||||
|
ban_time: 180
|
||||||
|
|
||||||
|
# Configuration of session cookies
|
||||||
|
#
|
||||||
|
# The session cookies identify the user once logged in.
|
||||||
|
session:
|
||||||
|
# The name of the session cookie. (default: authelia_session).
|
||||||
|
name: authelia_session
|
||||||
|
|
||||||
|
# The secret to encrypt the session cookie.
|
||||||
|
secret: change_this_for_your_server
|
||||||
|
|
||||||
|
# The time in ms before the cookie expires and session is reset.
|
||||||
|
expiration: 604800000 # 1 week
|
||||||
|
|
||||||
|
# The inactivity time in ms before the session is reset.
|
||||||
|
inactivity: 300000 # 5 minutes
|
||||||
|
|
||||||
|
# The domain to protect.
|
||||||
|
# Note: the authenticator must also be in that domain. If empty, the cookie
|
||||||
|
# is restricted to the subdomain on the issuer.
|
||||||
|
domain: personal.domain
|
||||||
|
|
||||||
|
|
||||||
|
# Default redirection URL
|
||||||
|
#
|
||||||
|
# Note: this parameter is optional. If not provided, user won't
|
||||||
|
# be redirected upon successful authentication.
|
||||||
|
#default_redirection_url: https://authelia.example.domain
|
||||||
|
|
||||||
|
#notifier:
|
||||||
|
# For testing purpose, notifications can be sent in a file
|
||||||
|
# filesystem:
|
||||||
|
# filename: /tmp/authelia/notification.txt
|
||||||
|
|
||||||
|
notifier:
|
||||||
|
smtp:
|
||||||
|
# username:
|
||||||
|
# password:
|
||||||
|
secure: false
|
||||||
|
host: mail
|
||||||
|
port: 25
|
||||||
|
sender: docker@your-mail-server
|
||||||
47
files/traefik.toml
Normal file
47
files/traefik.toml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
#debug = true
|
||||||
|
#logLevel = "DEBUG"
|
||||||
|
defaultEntryPoints = ["http", "https"]
|
||||||
|
InsecureSkipVerify = true
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.http]
|
||||||
|
address = ":80"
|
||||||
|
#[entryPoints.http.redirect]
|
||||||
|
#entryPoint = "https"
|
||||||
|
[entryPoints.https]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.https.tls]
|
||||||
|
[entryPoints.https.auth.forward]
|
||||||
|
address = "http://authelia:8080/api/verify?rd=https://auth.personal.domain/%23/"
|
||||||
|
[retry]
|
||||||
|
[api]
|
||||||
|
[ping]
|
||||||
|
[docker]
|
||||||
|
domain = "personal.domain"
|
||||||
|
exposedByDefault = false
|
||||||
|
watch = true
|
||||||
|
[acme]
|
||||||
|
email = "your@email.address"
|
||||||
|
storage = "acme.json"
|
||||||
|
entryPoint = "https"
|
||||||
|
onHostRule = true
|
||||||
|
[acme.httpChallenge]
|
||||||
|
entryPoint = "http"
|
||||||
|
[file]
|
||||||
|
[backends]
|
||||||
|
[backends.pfsense]
|
||||||
|
[backends.pfsense.servers.server0]
|
||||||
|
url = "https://pfsense.lab.personal.domain:8443"
|
||||||
|
[backends.proxmox]
|
||||||
|
[backends.proxmox.servers.server0]
|
||||||
|
url = "https://192.168.0.250:8006"
|
||||||
|
[frontends]
|
||||||
|
[frontends.pfsense]
|
||||||
|
backend = "pfsense"
|
||||||
|
passHostHeader = true
|
||||||
|
[frontends.pfsense.routes.example]
|
||||||
|
rule = "Host:firewall.cusack.cloud"
|
||||||
|
[frontends.proxmox]
|
||||||
|
backend = "proxmox"
|
||||||
|
passHostHeader = true
|
||||||
|
[frontends.proxmox.routes.example]
|
||||||
|
rule = "Host:proxmox.cusack.cloud"
|
||||||
7
files/users_database.yml
Normal file
7
files/users_database.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
users:
|
||||||
|
testuser: ## I have set the password below to 'test' for you
|
||||||
|
password: '{CRYPT}$6$rounds=500000$Bui4ldW5hXOI9qwJ$IUHQPCusUKpTs/OrfE9UuGb1Giqaa5OZA.mqIpH.Hh8RGFsEBHViCwQDx6DfkGUiF60pqNubFBugfTvCJIDNw1'
|
||||||
|
email: your@email.address
|
||||||
|
groups:
|
||||||
|
- admins
|
||||||
|
- dev
|
||||||
21
httpbin.yml
Normal file
21
httpbin.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
httpbin:
|
||||||
|
container_name: httpbin
|
||||||
|
image: kennethreitz/httpbin
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 5100:80
|
||||||
|
labels:
|
||||||
|
- "traefik.frontend.rule=Host:httpbin.personal.cloud"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
networks:
|
||||||
|
- web
|
||||||
|
|
||||||
|
networks:
|
||||||
|
web:
|
||||||
|
external:
|
||||||
|
name: traefik
|
||||||
|
|
||||||
27
traefik.yml
Normal file
27
traefik.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
container_name: traefik
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- '8080:8080'
|
||||||
|
- '80:80'
|
||||||
|
- '443:443'
|
||||||
|
volumes:
|
||||||
|
- './files/traefik.toml:/etc/traefik/traefik.toml'
|
||||||
|
- './files/acme.json:/acme.json'
|
||||||
|
- '/var/run/docker.sock:/var/run/docker.sock'
|
||||||
|
image: traefik:v1.7.16
|
||||||
|
labels:
|
||||||
|
- "traefik.frontend.rule=Host:traefik.personal.domain"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.port=8080"
|
||||||
|
- "traefik.protocol=http"
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
external: true
|
||||||
Reference in New Issue
Block a user