- Create core.yml combining DuckDNS, Traefik, Authelia, and Gluetun into single stack - Simplifies initial deployment (deploy all core services with one command) - All core services in /opt/stacks/core/ directory - Reduces complexity for first-time setup - Add Authelia SSO protection to Homepage and Homarr dashboards - Prevents exposing service list before authentication - Both dashboards now require sign-in to access - Redesign services-reference.md with compact tree-view table - Reduced from ~460 lines to ~150 lines while keeping all info - Single comprehensive table with tree structure - Shows: Stack, Services, SSO status, Storage paths, Access URLs - Fits on 1-2 screen heights as requested - Add comprehensive "Toggling SSO On/Off" section - Quick guide to enable/disable Authelia middleware - Use cases for development vs production - AI can automatically toggle SSO when asked - Add "Authelia Customization" section with: - Branding and appearance options - User management via YAML files - Access control rules examples - 2FA/TOTP configuration - Session management settings - Email notification setup - Explanation of no web UI (by design, perfect for AI) - Alternatives with web UI (Authentik, Keycloak) - Update .github/copilot-instructions.md - Add core stack explanation - Update file organization to show core stack structure - Add SSO toggling instructions - Update docs/getting-started.md - Simplify Step 7 to deploy single core stack - Remove separate steps for DuckDNS, Traefik, Authelia - Add verification and troubleshooting for core deployment - Update subsequent steps to Step 8, 9, 10 Co-authored-by: kelinfoxy <67766943+kelinfoxy@users.noreply.github.com>
67 lines
2.2 KiB
YAML
67 lines
2.2 KiB
YAML
# Dashboard Services
|
|
# Homepage and Homarr for homelab dashboards
|
|
# Place in /opt/stacks/dashboards/docker-compose.yml
|
|
|
|
services:
|
|
# Homepage - Application dashboard (AI-configurable via YAML)
|
|
# Access at: https://home.${DOMAIN}
|
|
homepage:
|
|
image: ghcr.io/gethomepage/homepage:latest
|
|
container_name: homepage
|
|
restart: unless-stopped
|
|
networks:
|
|
- homelab-network
|
|
- traefik-network
|
|
- dockerproxy-network
|
|
volumes:
|
|
- /opt/stacks/homepage/config:/app/config
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro # For Docker integration
|
|
- /opt/stacks:/opt/stacks:ro # To discover other stacks
|
|
environment:
|
|
- PUID=${PUID:-1000}
|
|
- PGID=${PGID:-1000}
|
|
- TZ=${TZ}
|
|
labels:
|
|
- "homelab.category=dashboard"
|
|
- "homelab.description=Application dashboard (AI-configurable)"
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.homepage.rule=Host(`home.${DOMAIN}`)"
|
|
- "traefik.http.routers.homepage.entrypoints=websecure"
|
|
- "traefik.http.routers.homepage.tls.certresolver=letsencrypt"
|
|
- "traefik.http.routers.homepage.middlewares=authelia@docker"
|
|
- "traefik.http.services.homepage.loadbalancer.server.port=3000"
|
|
|
|
# Homarr - Modern dashboard
|
|
# Access at: https://homarr.${DOMAIN}
|
|
homarr:
|
|
image: ghcr.io/ajnart/homarr:latest
|
|
container_name: homarr
|
|
restart: unless-stopped
|
|
networks:
|
|
- homelab-network
|
|
- traefik-network
|
|
volumes:
|
|
- /opt/stacks/homarr/configs:/app/data/configs
|
|
- /opt/stacks/homarr/data:/data
|
|
- /opt/stacks/homarr/icons:/app/public/icons
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
environment:
|
|
- TZ=${TZ}
|
|
labels:
|
|
- "homelab.category=dashboard"
|
|
- "homelab.description=Modern homelab dashboard"
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.homarr.rule=Host(`homarr.${DOMAIN}`)"
|
|
- "traefik.http.routers.homarr.entrypoints=websecure"
|
|
- "traefik.http.routers.homarr.tls.certresolver=letsencrypt"
|
|
- "traefik.http.routers.homarr.middlewares=authelia@docker"
|
|
- "traefik.http.services.homarr.loadbalancer.server.port=7575"
|
|
|
|
networks:
|
|
homelab-network:
|
|
external: true
|
|
traefik-network:
|
|
external: true
|
|
dockerproxy-network:
|
|
external: true
|