Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
9b59104
Split `traefik`
trjohnson19 Jul 27, 2025
6cbf50e
Merge branch 'main' into trjohnson19/116-improvement-split-docker-com…
trjohnson19 Jul 27, 2025
4d84950
Move `socket-proxy`
trjohnson19 Jul 27, 2025
5bec38e
Remove extraneous environment vars
trjohnson19 Jul 27, 2025
f41b032
yml fix
trjohnson19 Jul 27, 2025
10dd34c
Move `heimdall`
trjohnson19 Jul 27, 2025
75ff0c2
Add restart option
trjohnson19 Jul 27, 2025
cfba752
Remove ports
trjohnson19 Jul 27, 2025
c01a0fc
Move `organizr`
trjohnson19 Jul 27, 2025
e905d29
Clean up
trjohnson19 Jul 27, 2025
0affca2
Move `authelia`
trjohnson19 Jul 27, 2025
2a32b06
Clean up
trjohnson19 Jul 27, 2025
e40eb41
Include `authelia`
trjohnson19 Jul 27, 2025
d583c97
Move `keycloak`
trjohnson19 Jul 27, 2025
da95969
Clean up `keycloak`
trjohnson19 Jul 27, 2025
4fc647c
Don't run `keycloak`
trjohnson19 Jul 27, 2025
a68810c
rm `keycloak`
trjohnson19 Jul 27, 2025
1f611c5
Move `keycloak`
trjohnson19 Jul 27, 2025
3bea27b
Finish moving `authentik`
trjohnson19 Jul 27, 2025
2a46962
Move `mariadb`
trjohnson19 Jul 27, 2025
68092c3
Clean up
trjohnson19 Jul 27, 2025
eb1521a
Include `mariadb`
trjohnson19 Jul 27, 2025
4c7b5b0
Move `postgres`
trjohnson19 Jul 27, 2025
b040b85
Finish move
trjohnson19 Jul 27, 2025
59e549b
Clean up
trjohnson19 Jul 27, 2025
077d7cf
Move `phpmyadmin`
trjohnson19 Jul 27, 2025
0183c90
Clean up
trjohnson19 Jul 27, 2025
96cc2f0
Move `adminer`
trjohnson19 Jul 27, 2025
df45a78
Clean up
trjohnson19 Jul 27, 2025
48e7c94
Move `redis`
trjohnson19 Jul 27, 2025
3b90cdb
Remove common keys
trjohnson19 Jul 27, 2025
0c4cf72
Move `rediscommander`
trjohnson19 Jul 27, 2025
d55eb51
Include `rediscommander`
trjohnson19 Jul 27, 2025
15278f0
Clean up
trjohnson19 Jul 27, 2025
4332ef0
Move `cf-ddns`
trjohnson19 Jul 27, 2025
e7a01a0
Missing file extension
trjohnson19 Jul 27, 2025
c7f7b8e
Clean up
trjohnson19 Jul 27, 2025
897fa19
Move `duckdns`
trjohnson19 Jul 27, 2025
50eccee
Clean up
trjohnson19 Jul 27, 2025
377d1c2
Move `duckdns` secrets
trjohnson19 Jul 27, 2025
a4d5851
Move `docker-gc`
trjohnson19 Jul 27, 2025
d94be2c
Clean up
trjohnson19 Jul 27, 2025
79e1951
Move `watchtower`
trjohnson19 Jul 27, 2025
d8336d7
Move `vscode`
trjohnson19 Jul 27, 2025
a3d2d17
Clean up
trjohnson19 Jul 27, 2025
f4ce327
Move `filebrowser`
trjohnson19 Jul 27, 2025
a084f8e
Clean up
trjohnson19 Jul 27, 2025
41ae150
Move `guacamole`
trjohnson19 Jul 27, 2025
bb62a24
Move `dozzle`
trjohnson19 Jul 27, 2025
777d0c0
Clean up
trjohnson19 Jul 27, 2025
62b6613
Move `glances`
trjohnson19 Jul 27, 2025
a411117
Move `dupeguru`
trjohnson19 Jul 27, 2025
90cdc18
Move `tdarr`
trjohnson19 Jul 27, 2025
642d106
Clean up
trjohnson19 Jul 27, 2025
9e83abd
Move `tdarr-node`
trjohnson19 Jul 27, 2025
7d02df2
Clean up
trjohnson19 Jul 27, 2025
efe99d3
Move `gotify`
trjohnson19 Jul 27, 2025
38d94a9
Clean up
trjohnson19 Jul 27, 2025
cc03a25
rm `gotify`
trjohnson19 Jul 27, 2025
119a932
Move `vaultwarden`
trjohnson19 Jul 27, 2025
8ccafb2
Clean up
trjohnson19 Jul 27, 2025
6cafae4
Move `nextcloud`
trjohnson19 Jul 27, 2025
948cf7a
Clean up
trjohnson19 Jul 27, 2025
b7df0f4
Remove duplicate `TZ:`
trjohnson19 Jul 27, 2025
2186def
Move `firefly` and `importer`
trjohnson19 Jul 27, 2025
3ae7f1e
Clean up
trjohnson19 Jul 27, 2025
a8c836e
Move `portfolio`
trjohnson19 Jul 27, 2025
f454bbc
Rename to correct filename `portfolio.yml`
trjohnson19 Jul 27, 2025
b14bb04
Clean up
trjohnson19 Jul 27, 2025
c63e5d7
Move `whoami`
trjohnson19 Jul 27, 2025
b70ddc0
Clean up
trjohnson19 Jul 27, 2025
2b5b87d
Move `wireguard`
trjohnson19 Jul 27, 2025
93eeb93
Clean up
trjohnson19 Jul 27, 2025
fbecbdf
Move `gluetun`
trjohnson19 Jul 27, 2025
ba6973a
Move `gluetun-private`
trjohnson19 Jul 27, 2025
34ae136
Move `gluetun-temp`
trjohnson19 Jul 27, 2025
0412d79
Clean up
trjohnson19 Jul 27, 2025
8b75426
Move `pi-hole`
trjohnson19 Jul 27, 2025
993fca4
Move `unbound`
trjohnson19 Jul 27, 2025
72ad91d
Clean up
trjohnson19 Jul 27, 2025
48a7b79
Move `ntp`
trjohnson19 Jul 27, 2025
5f70c7a
Move `minecraft`, `mc-backup`, and `minecraft-rcon`
trjohnson19 Jul 27, 2025
42f17fc
Clean up
trjohnson19 Jul 27, 2025
b53e5ce
Move `bluebubbles`
trjohnson19 Jul 28, 2025
29ca1ec
Clean up
trjohnson19 Jul 28, 2025
5ad2ccc
Headers
trjohnson19 Jul 28, 2025
6913d46
Move `qbit`, `-private`, and `-temp`
trjohnson19 Jul 28, 2025
cf29bf6
Move `tautulli`
trjohnson19 Jul 28, 2025
4ef0237
Clean up
trjohnson19 Jul 28, 2025
321eb90
Move `prowlarr`
trjohnson19 Jul 28, 2025
6679bf9
Clean up
trjohnson19 Jul 28, 2025
9f27b67
Move `flaresolverr`
trjohnson19 Jul 28, 2025
4dfe1dc
Clean up
trjohnson19 Jul 28, 2025
6e4a82c
Move `radarr` and `-4k`
trjohnson19 Jul 28, 2025
54d9318
Clean up
trjohnson19 Jul 28, 2025
33781c3
Move `sonarr`, `-4k`
trjohnson19 Jul 28, 2025
aee6bcc
Clean up
trjohnson19 Jul 28, 2025
2bee680
Move `lidarr`
trjohnson19 Jul 28, 2025
bba8692
Clean up
trjohnson19 Jul 28, 2025
b8a71f0
Move `recyclarr`
trjohnson19 Jul 28, 2025
a35274d
Move `overseerr`
trjohnson19 Jul 28, 2025
9607150
Clean up
trjohnson19 Jul 28, 2025
d4775bf
Finish moving `overseerr`
trjohnson19 Jul 28, 2025
16171a0
Move `ombi`
trjohnson19 Jul 28, 2025
a8c2334
Clean up
trjohnson19 Jul 28, 2025
a91a9d0
Move `maintainerr`
trjohnson19 Jul 28, 2025
7fe974c
Move `jellyfin`
trjohnson19 Jul 28, 2025
25e685b
Clean up
trjohnson19 Jul 28, 2025
09f8460
Move `plex`
trjohnson19 Jul 28, 2025
470ff48
Clean up `plex`
trjohnson19 Jul 28, 2025
9c8a2ee
Move `calibre`
trjohnson19 Jul 28, 2025
f1f1904
Clean up
trjohnson19 Jul 28, 2025
354b1ad
Move `calibre-web`
trjohnson19 Jul 28, 2025
04b58b7
Clean up
trjohnson19 Jul 28, 2025
beda79c
Move `audiobookshelf`
trjohnson19 Jul 28, 2025
e4e3477
Clean up
trjohnson19 Jul 28, 2025
20c0fcc
Move `bazarr`
trjohnson19 Jul 28, 2025
4c6f7eb
Clean up
trjohnson19 Jul 28, 2025
86f02e8
Move `handbrake`
trjohnson19 Jul 28, 2025
38eb97d
Clean up
trjohnson19 Jul 28, 2025
b4260a2
Move `newrelic-infra`
trjohnson19 Jul 28, 2025
6645606
Remove extension fields
trjohnson19 Jul 28, 2025
5a3ae86
Clean up
trjohnson19 Jul 28, 2025
ebaaf1b
Move `authelia` secrets
trjohnson19 Jul 28, 2025
e0dbf64
Clean up
trjohnson19 Jul 28, 2025
55e3aaa
Move `authentik` secrets
trjohnson19 Jul 28, 2025
a9abcbf
Move `firefly` secrets
trjohnson19 Jul 28, 2025
8c269dc
Move `gluetun` secrets (including `-temp` and `-private`)
trjohnson19 Jul 28, 2025
2b3d140
Move `gotify` secrets
trjohnson19 Jul 28, 2025
b9be1a7
Move `guacamole` secrets
trjohnson19 Jul 28, 2025
f02a47e
Move `keycloak` secrets
trjohnson19 Jul 28, 2025
0f6b782
Move `nextcloud` secrets
trjohnson19 Jul 28, 2025
6aee59a
Clean up
trjohnson19 Jul 28, 2025
9f5555c
Move `plex` secrets
trjohnson19 Jul 28, 2025
1007698
Move `qbit` secrets (including `-temp` and `-private`)
trjohnson19 Jul 28, 2025
db706d6
Move `vaultwarden` secrets
trjohnson19 Jul 28, 2025
085f9b0
Move `vscode` secrets
trjohnson19 Jul 28, 2025
061e862
Move `watchtower` secrets
trjohnson19 Jul 28, 2025
26e8739
Move `traefik` secrets
trjohnson19 Jul 28, 2025
4fb03d6
Clean up filenames
trjohnson19 Jul 28, 2025
e855652
Move `cf-ddns` secrets, clean up `cf-ddns`
trjohnson19 Jul 28, 2025
5dd3a26
Fix duplicate `security_opt`
trjohnson19 Jul 28, 2025
971a7ef
Missing `compose/`
trjohnson19 Jul 28, 2025
20c9392
Duplicate `TZ:`
trjohnson19 Jul 28, 2025
43510e2
Fix secret not working
trjohnson19 Jul 28, 2025
354908d
Move `redis_password` secret
trjohnson19 Jul 30, 2025
c84ad40
Move `mysql_root_password` secrets
trjohnson19 Jul 30, 2025
ede4674
Move `postgres` secrets, remove secrets from main compose.yml
trjohnson19 Jul 30, 2025
13777cd
Middlewares changes for
trjohnson19 Aug 6, 2025
c39c3d3
yml fixes
trjohnson19 Aug 6, 2025
baaac19
Additional yml fixes
trjohnson19 Aug 6, 2025
6ea58c1
Further YAML_PRETTIER fixes
trjohnson19 Aug 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,10 @@ backup-scripts/*
!backups
backups/*

# Include the compose directory
!compose
!compose/*

# Include the .github directory
!.github
!.github/*
Expand Down
8 changes: 8 additions & 0 deletions appdata/traefik2/rules/middlewares-chains.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,11 @@ http:
- middlewares-rate-limit
- nextcloud-middlewares-secure-headers
- nextcloud-redirect

chain-audiobookshelf:
chain:
middlewares:
- middlewares-rate-limit
- middlewares-secure-headers-audiobookshelf
## Need to use audiobookshelf authentication
# - middlewares-authelia
33 changes: 33 additions & 0 deletions appdata/traefik2/rules/middlewares.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,39 @@ http:
X-Robots-Tag: "none,noarchive,nosnippet,notranslate,noimageindex,"
server: ""

middlewares-secure-headers-audiobookshelf:
headers:
## Disable per https://github.com/advplyr/audiobookshelf/blob/32da0f12242602ae18b858eaf8a4faa48cffb7a9/readme.md?plain=1#L246-L254
# accessControlAllowMethods:
# - GET
# - OPTIONS
# - PUT
# accessControlMaxAge: 100
hostsProxyHeaders:
- "X-Forwarded-Host"
stsSeconds: 63072000
stsIncludeSubdomains: true
stsPreload: true
forceSTSHeader: true
# frameDeny: true # Overwritten by customFrameOptionsValue
## CSP takes care of this but may be needed for organizr.
customFrameOptionsValue: 'allow-from https:{{env "DOMAINNAME0"}}'
contentTypeNosniff: true
browserXssFilter: true
# sslForceHost: true # Add sslHost to all of the services
# sslHost: "{{env "DOMAINNAME0"}}"
referrerPolicy: "same-origin"
## Setting contentSecurityPolicy is more secure but it can break
## things. Proper auth will reduce the risk. The below line also breaks
## some apps due to 'none' - sonarr, radarr, etc.
## yamllint disable-line rule:line-length
# contentSecurityPolicy: "frame-ancestors '*.{{env "DOMAINNAME0"}}:*';object-src 'none';script-src 'none';"
## yamllint disable-line rule:line-length
permissionsPolicy: "camera 'none'; geolocation 'none'; microphone 'none'; payment 'none'; usb 'none'; vr 'none';"
customResponseHeaders:
X-Robots-Tag: "none,noarchive,nosnippet,notranslate,noimageindex,"
server: ""

## Documentation: https://www.authelia.com/integration/proxies/traefik/
middlewares-authelia:
forwardAuth:
Expand Down
26 changes: 26 additions & 0 deletions compose/adminer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
services:
## Adminer - Database management in a single PHP file.
adminer:
container_name: adminer
image: adminer:latest
networks:
- t2_proxy
security_opt:
- no-new-privileges:true
restart: unless-stopped
environment:
## https://github.com/vrana/adminer/tree/master/designs
# ADMINER_DESIGN: 'nette'
ADMINER_DEFAULT_SERVER: postgres
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.adminer-rtr.entrypoints=https"
- "traefik.http.routers.adminer-rtr.rule=Host(`adminer.$DOMAINNAME0`)"
- "traefik.http.routers.adminer-rtr.tls.options=tls-opts@file"
## Middlewares
- "traefik.http.routers.adminer-rtr.middlewares=chain-authelia@file"
## HTTP Services
- "traefik.http.routers.adminer-rtr.service=adminer-svc"
- "traefik.http.services.adminer-svc.loadbalancer.server.port=8080"
33 changes: 33 additions & 0 deletions compose/audiobookshelf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
services:
# audiobookshelf - Self-hosted audiobook and podcast server
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
networks:
- t2_proxy
security_opt:
- no-new-privileges:true
restart: unless-stopped
volumes:
- $APPDIR/audiobookshelf/config:/config
- $DATADIR/media/audiobooks:/audiobooks
- $DATADIR/media/podcasts:/podcasts
## Could be in $DATADIR to minimize storage usage on host
- $APPDIR/audiobookshelf/metadata:/metadata
environment:
# HOST: 127.0.0.1
PORT: $AUDIOBOOKSHELF_PORT
SOURCE: docker
ALLOW_CORS: 1
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.audiobookshelf-rtr.entrypoints=https"
- "traefik.http.routers.audiobookshelf-rtr.rule=Host(`abs.$DOMAINNAME0`)"
- "traefik.http.routers.audiobookshelf-rtr.tls.options=tls-opts@file"
## Middlewares
- "traefik.http.routers.audiobookshelf-rtr.middlewares=chain-audiobookshelf@file"
## HTTP Services
- "traefik.http.routers.audiobookshelf-rtr.service=audiobookshelf-svc"
- "traefik.http.services.audiobookshelf-svc.loadbalancer.server.port=$AUDIOBOOKSHELF_PORT"
68 changes: 68 additions & 0 deletions compose/authelia.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
secrets:
authelia_duo_api_secret_key:
file: $SECRETSDIR/authelia_duo_api_secret_key
authelia_identity_validation_reset_password_jwt_secret_file:
## https://www.grc.com/passwords.htm
file: $SECRETSDIR/authelia_identity_validation_reset_password_jwt_secret_file
authelia_notifier_smtp_password:
file: $SECRETSDIR/authelia_notifier_smtp_password
authelia_session_redis_password:
file: $SECRETSDIR/authelia_session_redis_password
authelia_session_secret:
file: $SECRETSDIR/authelia_session_secret
authelia_storage_encryption_key:
file: $SECRETSDIR/authelia_storage_encryption_key
authelia_storage_mysql_password:
file: $SECRETSDIR/authelia_storage_mysql_password
services:
## Authelia (Lite) - Self-Hosted Single Sign-On and Two-Factor Authentication
## For configuration file template see
## https://github.com/authelia/authelia/blob/master/config.template.yml
authelia:
container_name: authelia
## Check this before upgrading:
## https://github.com/authelia/authelia#breaking-changes
image: ghcr.io/authelia/authelia:4.38
networks:
- t2_proxy
security_opt:
- no-new-privileges:true
restart: always
## Allow for separate configuration and acl configuration files
## See https://www.authelia.com/configuration/methods/files/#docker-compose
volumes:
- $APPDIR/authelia/config/configuration.yml:/config/configuration.yml
- $APPDIR/authelia/config/configuration.acl.yml:/config/configuration.acl.yml
- $APPDIR/authelia/config/users_database.yml:/config/users_database.yml
environment:
## Using PUID:PGID causes container to be unable to read secrets
# <<: *default-tz-puid-pgid
TZ: $TZ
AUTHELIA_SESSION_SECRET_FILE: /run/secrets/authelia_session_secret
X_AUTHELIA_CONFIG: /config/configuration.yml,/config/configuration.acl.yml
AUTHELIA_DUO_API_SECRET_KEY_FILE: /run/secrets/authelia_duo_api_secret_key
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: /run/secrets/authelia_identity_validation_reset_password_jwt_secret_file
AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: /run/secrets/authelia_notifier_smtp_password
AUTHELIA_SESSION_REDIS_PASSWORD_FILE: /run/secrets/authelia_session_redis_password
AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: /run/secrets/authelia_storage_encryption_key
AUTHELIA_STORAGE_MYSQL_PASSWORD_FILE: /run/secrets/authelia_storage_mysql_password
secrets:
- authelia_identity_validation_reset_password_jwt_secret_file
- authelia_session_secret
- authelia_session_redis_password
- authelia_storage_mysql_password
- authelia_notifier_smtp_password
- authelia_duo_api_secret_key
- authelia_storage_encryption_key
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.authelia-rtr.entrypoints=https"
- "traefik.http.routers.authelia-rtr.rule=Host(`auth.$DOMAINNAME0`)"
- "traefik.http.routers.authelia-rtr.tls.options=tls-opts@file"
## Middlewares
- "traefik.http.routers.authelia-rtr.middlewares=chain-authelia@file"
## HTTP Services
- "traefik.http.routers.authelia-rtr.service=authelia-svc"
- "traefik.http.services.authelia-svc.loadbalancer.server.port=$AUTHELIA_PORT"
167 changes: 167 additions & 0 deletions compose/authentik.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
---
secrets:
authentik_email__password:
file: $SECRETSDIR/authentik_email__password
authentik_postgresql__name:
file: $SECRETSDIR/authentik_postgresql__name
authentik_postgresql__user:
file: $SECRETSDIR/authentik_postgresql__user
authentik_postgresql__password:
file: $SECRETSDIR/authentik_postgresql__password
authentik_redis__password:
file: $SECRETSDIR/authentik_redis__password
authentik_secret_key:
file: $SECRETSDIR/authentik_secret_key
authentik_token_ldap:
file: $SECRETSDIR/authentik_token_ldap
services:
## Authentik - an open-source Identity Provider, focused on flexibility and
## versatility
authentik:
container_name: authentik
image: ghcr.io/goauthentik/server:latest
networks:
- t2_proxy
security_opt:
- no-new-privileges:true
restart: always
command: server
# ports:
# - "$AUTHENTIK_PORT:$AUTHENTIK_PORT"
volumes:
- $APPDIR/authentik/media:/media
- $APPDIR/authentik/templates:/templates
environment:
## https://goauthentik.io/docs/installation/configuration
## Test configuration with `dcrun2 run --rm authentik-server dump_config`
## Use `file://` prefix to load from docker secret
## https://goauthentik.io/docs/installation/configuration#about-authentik-configurations
COMPOSE_PORT_HTTP: $AUTHENTIK_PORT
# COMPOSE_PORT_HTTPS:
AUTHENTIK_POSTGRESQL__HOST: $POSTGRES_HOST
AUTHENTIK_POSTGRESQL__NAME: file:///run/secrets/authentik_postgresql__name
AUTHENTIK_POSTGRESQL__USER: file:///run/secrets/authentik_postgresql__user
AUTHENTIK_POSTGRESQL__PORT: $POSTGRES_PORT
AUTHENTIK_POSTGRESQL__PASSWORD: file:///run/secrets/authentik_postgresql__password
AUTHENTIK_REDIS__HOST: $REDIS_HOST
AUTHENTIK_REDIS__PORT: $REDIS_PORT
# AUTHENTIK_REDIS__USERNAME: $REDIS_USER
AUTHENTIK_REDIS__PASSWORD: file:///run/secrets/authentik_redis__password
AUTHENTIK_LISTEN__HTTP: "0.0.0.0:${AUTHENTIK_PORT}"
# AUTHENTIK_LISTEN__HTTPS: "0.0.0.0:"
AUTHENTIK_LISTEN__LDAP: "0.0.0.0:${AUTHENTIK_LDAP_PORT}"
AUTHENTIK_LISTEN__LDAPS: "0.0.0.0:${AUTHENTIK_LDAPS_PORT}"
AUTHENTIK_LISTEN__METRICS: "0.0.0.0:${AUTHENTIK_METRICS_PORT}"
AUTHENTIK_LISTEN__DEBUG: "0.0.0.0:${AUTHENTIK_DEBUG_PORT}"
# AUTHENTIK_LISTEN__TRUSTED_PROXY_CIDRS:
AUTHENTIK_SECRET_KEY: file:///run/secrets/authentik_secret_key
AUTHENTIK_LOG_LEVEL: info # trace, debug, info, warning, error
AUTHENTIK_COOKIE_DOMAIN: $DOMAINNAME0
# AUTHENTIK_ERROR_REPORTING__ENABLED: 'true'
AUTHENTIK_EMAIL__HOST: $EMAIL_SERVER
AUTHENTIK_EMAIL__PORT: $EMAIL_SERVER_PORT
AUTHENTIK_EMAIL__USERNAME: $EMAIL_SERVER_USER
AUTHENTIK_EMAIL__PASSWORD: file:///run/secrets/authentik_email__password
AUTHENTIK_EMAIL__USE_TLS: "false"
AUTHENTIK_EMAIL__USE_SSL: "true"
AUTHENTIK_EMAIL__TIMEOUT: 10
AUTHENTIK_EMAIL__FROM: server@authentik.$DOMAINNAME0
AUTHENTIK_AVATARS: initials
AUTHENTIK_DEFAULT_USER_CHANGE_NAME: "true"
AUTHENTIK_DEFAULT_USER_CHANGE_EMAIL: "true"
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: "true"
AUTHENTIK_GDPR_COMPLIANCE: "true"
# AUTHENTIK_DEFAULT_TOKEN_LENGTH:
AUTHENTIK_IMPERSONATION: "true"
# AUTHENTIK_FOOTER_LINKS:
# COMPOSE_PORT_HTTPS:
secrets:
- authentik_postgresql__name
- authentik_postgresql__user
- authentik_postgresql__password
- authentik_redis__password
- authentik_secret_key
- authentik_email__password
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.authentik-rtr.entrypoints=https"
- "traefik.http.routers.authentik-rtr.rule=Host(`authentik.$DOMAINNAME0`)"
- "traefik.http.routers.authentik-rtr.tls.options=tls-opts@file"
## Middlewares
## Do not use authentication, but use rate limiting and secure headers
- "traefik.http.routers.authentik-rtr.middlewares=chain-no-auth@file"
## HTTP Services
- "traefik.http.routers.authentik-rtr.service=authentik-svc"
- "traefik.http.services.authentik-svc.loadbalancer.server.port=$AUTHENTIK_PORT"

authentik-worker:
container_name: authentik-worker
image: ghcr.io/goauthentik/server:latest
networks:
- t2_proxy
security_opt:
- no-new-privileges:true
restart: always
command: worker
## `user: root` and the docker socket volume are optional.
## See more for the docker socket integration here:
## https://goauthentik.io/docs/outposts/integrations/docker
## Removing `user: root` also prevents the worker from fixing the
## permissions on the mounted folders, so when removing this make sure the
## folders have the correct UID/GID (1000:1000 by default)
user: root
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $APPDIR/authentik/media:/media
- $APPDIR/authentik/certs:/certs
- $APPDIR/authentik/templates:/templates
environment:
## https://goauthentik.io/docs/installation/configuration
## Test configuration with `dcrun2 run --rm authentik-server dump_config`
## Use `file://` prefix to load from docker secret
## https://goauthentik.io/docs/installation/configuration#about-authentik-configurations
AUTHENTIK_POSTGRESQL__HOST: $POSTGRES_HOST
AUTHENTIK_POSTGRESQL__NAME: "file:///run/secrets/authentik_postgresql__name"
AUTHENTIK_POSTGRESQL__USER: "file:///run/secrets/authentik_postgresql__user"
AUTHENTIK_POSTGRESQL__PORT: $POSTGRES_PORT
AUTHENTIK_POSTGRESQL__PASSWORD: "file:///run/secrets/authentik_postgresql__password"
AUTHENTIK_REDIS__HOST: $REDIS_HOST
AUTHENTIK_REDIS__PORT: $REDIS_PORT
# AUTHENTIK_REDIS__USERNAME: $REDIS_USER
AUTHENTIK_REDIS__PASSWORD: "file:///run/secrets/authentik_redis__password"
AUTHENTIK_LISTEN__HTTP: "0.0.0.0:${AUTHENTIK_PORT}"
# AUTHENTIK_LISTEN__HTTPS: "0.0.0.0:"
AUTHENTIK_LISTEN__LDAP: "0.0.0.0:${AUTHENTIK_LDAP_PORT}"
AUTHENTIK_LISTEN__LDAPS: "0.0.0.0:${AUTHENTIK_LDAPS_PORT}"
AUTHENTIK_LISTEN__METRICS: "0.0.0.0:${AUTHENTIK_METRICS_PORT}"
AUTHENTIK_LISTEN__DEBUG: "0.0.0.0:${AUTHENTIK_DEBUG_PORT}"
# AUTHENTIK_LISTEN__TRUSTED_PROXY_CIDRS:
AUTHENTIK_SECRET_KEY: "file:///run/secrets/authentik_secret_key"
AUTHENTIK_LOG_LEVEL: info # trace, debug, info, warning, error
AUTHENTIK_COOKIE_DOMAIN: authentik.$DOMAINNAME0
# AUTHENTIK_ERROR_REPORTING__ENABLED: 'true'
AUTHENTIK_EMAIL__HOST: $EMAIL_SERVER
AUTHENTIK_EMAIL__PORT: $EMAIL_SERVER_PORT
AUTHENTIK_EMAIL__USERNAME: $EMAIL_SERVER_USER
AUTHENTIK_EMAIL__PASSWORD: "file:///run/secrets/authentik_email__password"
AUTHENTIK_EMAIL__USE_TLS: "false"
AUTHENTIK_EMAIL__USE_SSL: "true"
AUTHENTIK_EMAIL__TIMEOUT: 10
AUTHENTIK_EMAIL__FROM: server@authentik.$DOMAINNAME0
AUTHENTIK_AVATARS: initials
AUTHENTIK_DEFAULT_USER_CHANGE_NAME: "true"
AUTHENTIK_DEFAULT_USER_CHANGE_EMAIL: "true"
AUTHENTIK_DEFAULT_USER_CHANGE_USERNAME: "true"
AUTHENTIK_GDPR_COMPLIANCE: "true"
# AUTHENTIK_DEFAULT_TOKEN_LENGTH:
AUTHENTIK_IMPERSONATION: "true"
# AUTHENTIK_FOOTER_LINKS:
# COMPOSE_PORT_HTTPS:
secrets:
- authentik_postgresql__name
- authentik_postgresql__user
- authentik_postgresql__password
- authentik_redis__password
- authentik_secret_key
- authentik_email__password
37 changes: 37 additions & 0 deletions compose/bazarr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
services:
# Bazarr - Subtitle Management
bazarr:
image: lscr.io/linuxserver/bazarr
container_name: bazarr
networks:
- t2_proxy
security_opt:
- no-new-privileges:true
restart: unless-stopped
volumes:
- $APPDIR/bazarr/config:/config
- $DATADIR/media:/data/media
environment:
TZ: $TZ
PUID: $PUID
PGID: $PGID
labels:
- "traefik.enable=true"
## HTTP Routers API Auth Bypass
- "traefik.http.routers.bazarr-rtr-bypass.entrypoints=https"
- "traefik.http.routers.bazarr-rtr-bypass.rule=Host(`bazarr.$DOMAINNAME0`) && (Header(`X-Api-Key`, `$BAZARR_API_KEY`) || Query(`apikey`, `$BAZARR_API_KEY`))"
- "traefik.http.routers.bazarr-rtr-bypass.tls.options=tls-opts@file"
- "traefik.http.routers.bazarr-rtr-bypass.priority=100"
## HTTP Routers
- "traefik.http.routers.bazarr-rtr.entrypoints=https"
- "traefik.http.routers.bazarr-rtr.rule=Host(`bazarr.$DOMAINNAME0`)"
- "traefik.http.routers.bazarr-rtr.tls.options=tls-opts@file"
- "traefik.http.routers.bazarr-rtr.priority=99"
## Middlewares
- "traefik.http.routers.bazarr-rtr-bypass.middlewares=chain-no-auth@file"
- "traefik.http.routers.bazarr-rtr.middlewares=chain-authelia@file"
## HTTP Services
- "traefik.http.routers.bazarr-rtr-bypass.service=bazarr-svc"
- "traefik.http.routers.bazarr-rtr.service=bazarr-svc"
- "traefik.http.services.bazarr-svc.loadbalancer.server.port=6767"
Loading
Loading