- Update AI copilot instructions for /opt/stacks structure and automated config management - Replace Nginx Proxy Manager with Traefik (file-based configuration for AI) - Add Authelia for SSO with bypass rules for Jellyfin/Plex apps - Add DuckDNS for dynamic DNS with Let's Encrypt integration - Add Gluetun VPN with Surfshark (WireGuard) for secure downloads - Update all services to use /opt/stacks paths instead of local directories - Add Traefik labels to all services for automatic routing - Configure qBittorrent to route through Gluetun VPN - Update .env.example with all new required variables - Create configuration templates for Traefik and Authelia - Add comprehensive Dockge deployment guide Co-authored-by: kelinfoxy <67766943+kelinfoxy@users.noreply.github.com>
94 lines
1.9 KiB
YAML
94 lines
1.9 KiB
YAML
# Authelia Configuration
|
|
# Copy to /opt/stacks/authelia/configuration.yml
|
|
|
|
server:
|
|
host: 0.0.0.0
|
|
port: 9091
|
|
|
|
log:
|
|
level: info
|
|
|
|
theme: dark
|
|
|
|
jwt_secret: ${AUTHELIA_JWT_SECRET}
|
|
|
|
default_redirection_url: https://auth.${DOMAIN}
|
|
|
|
totp:
|
|
issuer: ${DOMAIN}
|
|
period: 30
|
|
skew: 1
|
|
|
|
authentication_backend:
|
|
file:
|
|
path: /config/users_database.yml
|
|
password:
|
|
algorithm: argon2id
|
|
iterations: 1
|
|
key_length: 32
|
|
salt_length: 16
|
|
memory: 1024
|
|
parallelism: 8
|
|
|
|
access_control:
|
|
default_policy: deny
|
|
|
|
rules:
|
|
# Bypass Authelia for Jellyfin (allow app access)
|
|
- domain: jellyfin.${DOMAIN}
|
|
policy: bypass
|
|
|
|
# Bypass for Plex (allow app access)
|
|
- domain: plex.${DOMAIN}
|
|
policy: bypass
|
|
|
|
# Bypass for Home Assistant (has its own auth)
|
|
- domain: ha.${DOMAIN}
|
|
policy: bypass
|
|
|
|
# Protected: All other services require authentication
|
|
- domain: "*.${DOMAIN}"
|
|
policy: one_factor
|
|
|
|
# Two-factor for admin services (optional)
|
|
# - domain:
|
|
# - "admin.${DOMAIN}"
|
|
# - "portainer.${DOMAIN}"
|
|
# policy: two_factor
|
|
|
|
session:
|
|
name: authelia_session
|
|
secret: ${AUTHELIA_SESSION_SECRET}
|
|
expiration: 1h
|
|
inactivity: 5m
|
|
remember_me_duration: 1M
|
|
domain: ${DOMAIN}
|
|
|
|
regulation:
|
|
max_retries: 3
|
|
find_time: 2m
|
|
ban_time: 5m
|
|
|
|
storage:
|
|
encryption_key: ${AUTHELIA_STORAGE_ENCRYPTION_KEY}
|
|
local:
|
|
path: /config/db.sqlite3
|
|
|
|
notifier:
|
|
# File-based notifications (for testing)
|
|
filesystem:
|
|
filename: /config/notification.txt
|
|
|
|
# SMTP notifications (recommended for production)
|
|
# smtp:
|
|
# host: smtp.gmail.com
|
|
# port: 587
|
|
# username: ${SMTP_USERNAME}
|
|
# password: ${AUTHELIA_NOTIFIER_SMTP_PASSWORD}
|
|
# sender: authelia@${DOMAIN}
|
|
# identifier: localhost
|
|
# subject: "[Authelia] {title}"
|
|
# startup_check_address: test@authelia.com
|
|
# disable_require_tls: false
|
|
# disable_html_emails: false
|