Bxl-rpi Identity provider
This commit is contained in:
parent
f3c67e3223
commit
a66a33140e
|
@ -0,0 +1,101 @@
|
||||||
|
default_redirection_url: https://portal.bhasher.com
|
||||||
|
theme: dark
|
||||||
|
|
||||||
|
server:
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 9091
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: info
|
||||||
|
|
||||||
|
totp:
|
||||||
|
disable: false
|
||||||
|
issuer: idp.bhasher.com
|
||||||
|
algorithm: sha256
|
||||||
|
digits: 6
|
||||||
|
period: 30
|
||||||
|
skew: 1
|
||||||
|
secret_size: 32
|
||||||
|
|
||||||
|
authentication_backend:
|
||||||
|
password_reset:
|
||||||
|
disable: false
|
||||||
|
refresh_interval: 5m
|
||||||
|
ldap:
|
||||||
|
user: cn=readonly,dc=bhasher,dc=com
|
||||||
|
implementation: custom
|
||||||
|
url: ldap://openldap
|
||||||
|
timeout: 5s
|
||||||
|
start_tls: false
|
||||||
|
base_dn: DC=bhasher,DC=com
|
||||||
|
username_attribute: uid
|
||||||
|
additional_users_dn: ou=users
|
||||||
|
users_filter: (&({username_attribute}={input})(objectClass=inetOrgPerson))
|
||||||
|
additional_groups_dn: ou=groups
|
||||||
|
groups_filter: (&(uniqueMember={dn})(objectClass=groupOfUniqueNames))
|
||||||
|
group_name_attribute: cn
|
||||||
|
mail_attribute: mail
|
||||||
|
display_name_attribute: cn
|
||||||
|
permit_referrals: false
|
||||||
|
|
||||||
|
access_control:
|
||||||
|
default_policy: deny
|
||||||
|
rules:
|
||||||
|
- domain: '*.bhasher.com'
|
||||||
|
policy: two_factor
|
||||||
|
subject:
|
||||||
|
- "group:admin"
|
||||||
|
- domain: 'radarr.bhasher.com'
|
||||||
|
policy: two_factor
|
||||||
|
subject:
|
||||||
|
- "group:mediaserver"
|
||||||
|
- domain: 'sonarr.bhasher.com'
|
||||||
|
policy: two_factor
|
||||||
|
subject:
|
||||||
|
- "group:mediaserver"
|
||||||
|
- domain: 'jellyfin.bhasher.com'
|
||||||
|
policy: two_factor
|
||||||
|
subject:
|
||||||
|
- "group:mediaserver"
|
||||||
|
|
||||||
|
session:
|
||||||
|
name: auth_session
|
||||||
|
domain: bhasher.com
|
||||||
|
same_site: lax
|
||||||
|
expiration: 1d
|
||||||
|
inactivity: 3h
|
||||||
|
remember_me_duration: 1w
|
||||||
|
redis:
|
||||||
|
host: redis
|
||||||
|
port: 6379
|
||||||
|
|
||||||
|
regulation:
|
||||||
|
max_retries: 3
|
||||||
|
find_time: 1m
|
||||||
|
ban_time: 5m
|
||||||
|
|
||||||
|
storage:
|
||||||
|
# local:
|
||||||
|
# path: /data/db.sqlite3
|
||||||
|
postgres:
|
||||||
|
host: postgres
|
||||||
|
port: 5432
|
||||||
|
database: authelia
|
||||||
|
schema: public
|
||||||
|
username: postgres
|
||||||
|
|
||||||
|
notifier:
|
||||||
|
smtp:
|
||||||
|
host: bdubois.io
|
||||||
|
port: 587
|
||||||
|
sender: no-reply@bhasher.com
|
||||||
|
|
||||||
|
password_policy:
|
||||||
|
standard:
|
||||||
|
enabled: true
|
||||||
|
min_length: 8
|
||||||
|
max_length: 0
|
||||||
|
require_uppercase: false
|
||||||
|
require_lowercase: false
|
||||||
|
require_number: false
|
||||||
|
require_special: false
|
|
@ -216,6 +216,7 @@ services:
|
||||||
- "traefik.http.routers.radarr.tls=true"
|
- "traefik.http.routers.radarr.tls=true"
|
||||||
- "traefik.http.routers.radarr.tls.certresolver=http"
|
- "traefik.http.routers.radarr.tls.certresolver=http"
|
||||||
- "traefik.http.routers.radarr.entrypoints=internalsecure"
|
- "traefik.http.routers.radarr.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.routers.radarr.middlewares=authelia@docker"
|
||||||
|
|
||||||
sonarr:
|
sonarr:
|
||||||
container_name: sonarr
|
container_name: sonarr
|
||||||
|
@ -236,6 +237,7 @@ services:
|
||||||
- "traefik.http.routers.sonarr.tls=true"
|
- "traefik.http.routers.sonarr.tls=true"
|
||||||
- "traefik.http.routers.sonarr.tls.certresolver=http"
|
- "traefik.http.routers.sonarr.tls.certresolver=http"
|
||||||
- "traefik.http.routers.sonarr.entrypoints=internalsecure"
|
- "traefik.http.routers.sonarr.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.routers.sonarr.middlewares=authelia@docker"
|
||||||
|
|
||||||
lidarr:
|
lidarr:
|
||||||
container_name: lidarr
|
container_name: lidarr
|
||||||
|
@ -256,6 +258,7 @@ services:
|
||||||
- "traefik.http.routers.lidarr.tls=true"
|
- "traefik.http.routers.lidarr.tls=true"
|
||||||
- "traefik.http.routers.lidarr.tls.certresolver=http"
|
- "traefik.http.routers.lidarr.tls.certresolver=http"
|
||||||
- "traefik.http.routers.lidarr.entrypoints=internalsecure"
|
- "traefik.http.routers.lidarr.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.routers.lidarr.middlewares=authelia@docker"
|
||||||
|
|
||||||
transmission:
|
transmission:
|
||||||
container_name: transmission
|
container_name: transmission
|
||||||
|
@ -279,6 +282,7 @@ services:
|
||||||
- "traefik.http.routers.transmission.tls=true"
|
- "traefik.http.routers.transmission.tls=true"
|
||||||
- "traefik.http.routers.transmission.tls.certresolver=http"
|
- "traefik.http.routers.transmission.tls.certresolver=http"
|
||||||
- "traefik.http.routers.transmission.entrypoints=internalsecure"
|
- "traefik.http.routers.transmission.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.routers.transmission.middlewares=authelia@docker"
|
||||||
|
|
||||||
jackett:
|
jackett:
|
||||||
container_name: jackett
|
container_name: jackett
|
||||||
|
@ -299,6 +303,7 @@ services:
|
||||||
- "traefik.http.routers.jackett.tls=true"
|
- "traefik.http.routers.jackett.tls=true"
|
||||||
- "traefik.http.routers.jackett.tls.certresolver=http"
|
- "traefik.http.routers.jackett.tls.certresolver=http"
|
||||||
- "traefik.http.routers.jackett.entrypoints=internalsecure"
|
- "traefik.http.routers.jackett.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.routers.jackett.middlewares=authelia@docker"
|
||||||
|
|
||||||
flaresolverr:
|
flaresolverr:
|
||||||
container_name: flaresolverr
|
container_name: flaresolverr
|
||||||
|
@ -329,6 +334,7 @@ services:
|
||||||
- "traefik.http.routers.bazarr.tls=true"
|
- "traefik.http.routers.bazarr.tls=true"
|
||||||
- "traefik.http.routers.bazarr.tls.certresolver=http"
|
- "traefik.http.routers.bazarr.tls.certresolver=http"
|
||||||
- "traefik.http.routers.bazarr.entrypoints=internalsecure"
|
- "traefik.http.routers.bazarr.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.routers.bazarr.middlewares=authelia@docker"
|
||||||
|
|
||||||
baikal:
|
baikal:
|
||||||
container_name: baikal
|
container_name: baikal
|
||||||
|
@ -380,19 +386,19 @@ services:
|
||||||
- 53:53/udp
|
- 53:53/udp
|
||||||
environment:
|
environment:
|
||||||
- TZ=Europe/Paris
|
- TZ=Europe/Paris
|
||||||
- WEBPASSWORD=${PIHOLE_PASSWORD}
|
- WEBPASSWORD=
|
||||||
- WEBTHEME=default-dark
|
- WEBTHEME=default-dark
|
||||||
- REV_SERVER=false
|
- REV_SERVER=false
|
||||||
- PIHOLE_DNS_=127.0.0.1#5335
|
- PIHOLE_DNS_=127.0.0.1#5335
|
||||||
- DNSSEC=true
|
- DNSSEC=true
|
||||||
- DNSMASQ_LISTENING=all
|
- DNSMASQ_LISTENING=all
|
||||||
- FTLCONF_REPLY_ADDR4=192.168.1.220
|
- FTLCONF_LOCAL_IPV4=192.168.1.220
|
||||||
- FTLCONF_RATE_LIMIT=0/0
|
- FTLCONF_RATE_LIMIT=0/0
|
||||||
- FTL_CMD=debug
|
- FTL_CMD=debug
|
||||||
- DNSMASQ_USER=root
|
- DNSMASQ_USER=root
|
||||||
volumes:
|
volumes:
|
||||||
- $HOME/pihole/config:/etc/pihole
|
- $DATA/pihole/config:/etc/pihole
|
||||||
- $HOME/pihole/dnsmasq.d:/etc/dnsmasq.d
|
- $DATA/pihole/dnsmasq.d:/etc/dnsmasq.d
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
|
@ -401,3 +407,100 @@ services:
|
||||||
- "traefik.http.services.pihole.loadbalancer.server.port=80"
|
- "traefik.http.services.pihole.loadbalancer.server.port=80"
|
||||||
- "traefik.http.routers.pihole.tls=true"
|
- "traefik.http.routers.pihole.tls=true"
|
||||||
- "traefik.http.routers.pihole.tls.certresolver=http"
|
- "traefik.http.routers.pihole.tls.certresolver=http"
|
||||||
|
- "traefik.http.routers.pihole.middlewares=pihole-strip,authelia@docker"
|
||||||
|
#- "traefik.http.middlewares.pihole-strip.stripprefix.prefixes=/admin"
|
||||||
|
- "traefik.http.middlewares.pihole-strip.addprefix.prefix=/admin"
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
container_name: postgres
|
||||||
|
image: postgres:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- $DATA/postgres:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
redis:
|
||||||
|
container_name: redis
|
||||||
|
image: redis:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
openldap:
|
||||||
|
container_name: openldap
|
||||||
|
image: osixia/openldap:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- LDAP_ADMIN_USERNAME=admin
|
||||||
|
- LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD}
|
||||||
|
- LDAP_READONLY_USER=true
|
||||||
|
- LDAP_READONLY_USER_USERNAME=readonly
|
||||||
|
- LDAP_READONLY_USER_PASSWORD=${LDAP_READONLY_PASSWORD}
|
||||||
|
- LDAP_DOMAIN=bhasher.com
|
||||||
|
- LDAP_ORGANISATION=Bhasher
|
||||||
|
- LDAP_RFC2307BIS_SCHEMA=true
|
||||||
|
- LDAP_TLS=false
|
||||||
|
volumes:
|
||||||
|
- $DATA/openldap/ldap:/var/lib/ldap
|
||||||
|
- $DATA/openldap/slapd.d:/etc/ldap/slapd.d
|
||||||
|
|
||||||
|
ldapusermanager:
|
||||||
|
container_name: ldapusermanager
|
||||||
|
image: wheelybird/ldap-user-manager:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- LDAP_URI=ldap://openldap
|
||||||
|
- LDAP_BASE_DN=dc=bhasher,dc=com
|
||||||
|
- LDAP_ADMIN_BIND_DN=cn=admin,dc=bhasher,dc=com
|
||||||
|
- LDAP_ADMINS_GROUP=admin
|
||||||
|
- SERVER_HOSTNAME=lum.bhasher.com
|
||||||
|
- NO_HTTPS=true
|
||||||
|
- ORGANISATION_NAME=Bhasher
|
||||||
|
- LDAP_REQUIRE_STARTTLS=false
|
||||||
|
- FORCE_RFC2307BIS=true
|
||||||
|
- SHOW_POSIX_ATTRIBUTES=false
|
||||||
|
- LDAP_ADMIN_BIND_PWD=${LDAP_ADMIN_PASSWORD}
|
||||||
|
- LDAP_USER_OU=users
|
||||||
|
- LDAP_GROUP_OU=groups
|
||||||
|
- LDAP_ACCOUNT_ATTRIBUTE=uid
|
||||||
|
- LDAP_GROUP_ATTRIBUTE=cn
|
||||||
|
- USERNAME_FORMAT={first_name}.{last_name}
|
||||||
|
- ENFORCE_SAFE_SYSTEM_NAMES=false
|
||||||
|
- PASSWORD_HASH=SHA512CRYPT
|
||||||
|
- ACCEPT_WEAK_PASSWORDS=false
|
||||||
|
- LDAP_ACCOUNT_ADDITIONAL_ATTRIBUTES=jpegPhoto^:Profile picture,sshpubkey^+:SSH public key
|
||||||
|
- REMOTE_HTTP_HEADERS_LOGIN=true
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.lum.rule=Host(`lum.bhasher.com`)"
|
||||||
|
- "traefik.http.routers.lum.entrypoints=internalsecure"
|
||||||
|
- "traefik.http.services.lum.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.routers.lum.tls=true"
|
||||||
|
- "traefik.http.routers.lum.tls.certresolver=http"
|
||||||
|
- "traefik.http.routers.lum.middlewares=authelia@docker"
|
||||||
|
|
||||||
|
authelia:
|
||||||
|
container_name: authelia
|
||||||
|
image: authelia/authelia:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Paris
|
||||||
|
- AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD=${LDAP_READONLY_PASSWORD}
|
||||||
|
- AUTHELIA_JWT_SECRET=${AUTHELIA_JWT_SECRET}
|
||||||
|
- AUTHELIA_SESSION_SECRET=${AUTHELIA_SESSION_SECRET}
|
||||||
|
- AUTHELIA_STORAGE_ENCRYPTION_KEY=${AUTHELIA_ENCRYPTION_KEY}
|
||||||
|
- AUTHELIA_STORAGE_POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
- AUTHELIA_NOTIFIER_SMTP_PASSWORD=${SMTP_PASSWORD}
|
||||||
|
- AUTHELIA_NOTIFIER_SMTP_USERNAME=${SMTP_USER}
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.authelia.rule=Host(`idp.bhasher.com`)"
|
||||||
|
- "traefik.http.routers.authelia.entrypoints=internalsecure,externalsecure"
|
||||||
|
- "traefik.http.services.authelia.loadbalancer.server.port=9091"
|
||||||
|
- "traefik.http.routers.authelia.tls=true"
|
||||||
|
- "traefik.http.routers.authelia.tls.certresolver=http"
|
||||||
|
- 'traefik.http.middlewares.authelia.forwardAuth.address=http://authelia:9091/api/verify?rd=https%3A%2F%2Fidp.bhasher.com%2F'
|
||||||
|
- 'traefik.http.middlewares.authelia.forwardAuth.trustForwardHeader=true'
|
||||||
|
- 'traefik.http.middlewares.authelia.forwardAuth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email'
|
||||||
|
volumes:
|
||||||
|
- ./config/idp/authelia.configuration.yaml:/config/configuration.yml:ro
|
||||||
|
|
Loading…
Reference in New Issue