Files
EZ-Homelab/docs/services-overview.md
kelinfoxy 5cbb106160 Add multi-server support and update docs
Introduce multi-server architecture documentation and reorganize README content. Top-level README now documents Core vs Remote server roles, links to local docs instead of wiki pages, and highlights Traefik/Sablier multi-server behavior. docker-compose/README.md was rewritten to be a template-style reference with single- and multi-server deployment guidance, Traefik label examples, and sablier usage; dockge README was moved into docker-compose/dockge/. docker-compose/core/README.md was updated to describe core responsibilities, shared CA artifacts, and startup order for multi-server deployments. Several obsolete/duplicated docs and action reports were removed and a new multi-server deployment doc was added to centralize on-demand/remote service guidance. Overall this cleans up legacy docs and documents the multi-server workflow and TLS/shared-CA requirements.
2026-02-05 22:30:52 -05:00

8.4 KiB

Services Overview

This document provides a comprehensive overview of all 50+ pre-configured services available in the AI-Homelab repository.

Services Overview

Stacks (12) Services (50 + 6db) SSO Storage Access URLs
📦 core.yaml (3) Deploy First
├─ DuckDNS Dynamic DNS updater - /opt/stacks/core/duckdns No UI
├─ Traefik Reverse proxy + SSL /opt/stacks/core/traefik traefik.${DOMAIN}
└─ Authelia SSO authentication - /opt/stacks/core/authelia auth.${DOMAIN}
 
🔄 sablier.yaml (1) Deploy on Each Server
└─ Sablier Lazy loading service - /opt/stacks/sablier sablier.${DOMAIN}
 
📊 dashboards.yaml (2)
├─ Homepage App dashboard (AI cfg) /opt/stacks/dashboards home.${DOMAIN}
└─ Homarr Modern dashboard /opt/stacks/dashboards homarr.${DOMAIN}
 
🏠 homeassistant.yaml (7)
├─ Home Assistant HA platform /opt/stacks/homeassistant ha.${DOMAIN}
├─ ESPHome ESP firmware mgr /opt/stacks/homeassistant esphome.${DOMAIN}
├─ TasmoAdmin Tasmota device mgr /opt/stacks/homeassistant tasmoadmin.${DOMAIN}
├─ Node-RED Automation flows /opt/stacks/homeassistant nodered.${DOMAIN}
├─ Mosquitto MQTT broker - /opt/stacks/homeassistant Ports 1883, 9001
├─ Zigbee2MQTT Zigbee bridge /opt/stacks/homeassistant zigbee2mqtt.${DOMAIN}
└─ MotionEye Video surveillance /opt/stacks/homeassistant, /mnt/surveillance motioneye.${DOMAIN}
 
🔧 infrastructure.yaml (6)**
├─ Pi-hole DNS + Ad blocking /opt/stacks/infrastructure pihole.${DOMAIN}
├─ Watchtower Auto container updates - /opt/stacks/infrastructure No UI
├─ Dozzle Docker log viewer /opt/stacks/infrastructure dozzle.${DOMAIN}
├─ Glances System monitoring /opt/stacks/infrastructure glances.${DOMAIN}
├─ Code Server VS Code in browser /opt/stacks/infrastructure code.${DOMAIN}
└─ Docker Proxy Secure socket access - /opt/stacks/infrastructure No UI
 
📺 media-management.yaml (9)
├─ Sonarr TV automation /opt/stacks/media-management, /mnt/media sonarr.${DOMAIN}
├─ Radarr Movie automation /opt/stacks/media-management, /mnt/media radarr.${DOMAIN}
├─ Prowlarr Indexer manager /opt/stacks/media-management prowlarr.${DOMAIN}
├─ Readarr Ebooks/Audiobooks /opt/stacks/media-management, /mnt/media readarr.${DOMAIN}
├─ Lidarr Music manager /opt/stacks/media-management, /mnt/media lidarr.${DOMAIN}
├─ Lazy Librarian Book automation /opt/stacks/media-management, /mnt/media lazylibrarian.${DOMAIN}
├─ Mylar3 Comic manager /opt/stacks/media-management, /mnt/media mylar.${DOMAIN}
├─ Jellyseerr Media requests /opt/stacks/media-management jellyseerr.${DOMAIN}
└─ FlareSolverr Cloudflare bypass - /opt/stacks/media-management No UI
 
🎬 media.yaml (2)
├─ Jellyfin Media server (OSS) /mnt/media, /mnt/transcode jellyfin.${DOMAIN}
└─ Calibre-Web Ebook reader /opt/stacks/media, /mnt/media calibre.${DOMAIN}
 
📈 monitoring.yaml (8)
├─ Prometheus Metrics collection /opt/stacks/monitoring prometheus.${DOMAIN}
├─ Grafana Visualization /opt/stacks/monitoring grafana.${DOMAIN}
├─ Loki Log aggregation - /opt/stacks/monitoring Via Grafana
├─ Promtail Log shipper - /opt/stacks/monitoring No UI
├─ Node Exporter Host metrics - /opt/stacks/monitoring No UI
├─ cAdvisor Container metrics - /opt/stacks/monitoring Internal :8080
└─ Uptime Kuma Uptime monitoring /opt/stacks/monitoring status.${DOMAIN}
 
💼 productivity.yaml (5 + 4 DBs)
├─ Nextcloud File sync platform /opt/stacks/productivity, /mnt/nextcloud nextcloud.${DOMAIN}
│ └─ nextcloud-db MariaDB - /opt/stacks/productivity No UI
├─ Mealie Recipe manager /opt/stacks/productivity mealie.${DOMAIN}
├─ WordPress Blog platform /opt/stacks/productivity blog.${DOMAIN}
│ └─ wordpress-db MariaDB - /opt/stacks/productivity No UI
├─ Gitea Git service /opt/stacks/productivity, /mnt/git git.${DOMAIN}
│ └─ gitea-db PostgreSQL - /opt/stacks/productivity No UI
└─ Jupyter Lab Notebooks /opt/stacks/productivity jupyter.${DOMAIN}
 
🔄 transcoders.yaml (3)
├─ Tdarr Server Transcoding server /opt/stacks/transcoders, /mnt/transcode tdarr.${DOMAIN}
├─ Tdarr Node Transcoding worker - /mnt/transcode-cache No UI
└─ Unmanic Library optimizer /opt/stacks/transcoders, /mnt/transcode unmanic.${DOMAIN}
 
🛠️ utilities.yaml (7)
├─ Vaultwarden Password manager /opt/stacks/utilities bitwarden.${DOMAIN}
├─ Backrest Backup (restic) /opt/stacks/utilities, /mnt/backups backrest.${DOMAIN}
├─ Duplicati Encrypted backups /opt/stacks/utilities, /mnt/backups duplicati.${DOMAIN}
├─ Code Server VS Code in browser /opt/stacks/utilities code.${DOMAIN}
├─ Form.io Form platform /opt/stacks/utilities forms.${DOMAIN}
│ └─ formio-mongo MongoDB - /opt/stacks/utilities No UI
└─ Authelia-Redis Session storage - /opt/stacks/utilities No UI
 
🔒 vpn.yaml (2) VPN Services
├─ Gluetun VPN (Surfshark) - /opt/stacks/vpn/gluetun No UI
└─ qBittorrent Torrent (via VPN) /mnt/downloads qbit.${DOMAIN}
 
📖 wikis.yaml (4)
├─ DokuWiki File-based wiki /opt/stacks/wikis dokuwiki.${DOMAIN}
├─ BookStack Documentation /opt/stacks/wikis docs.${DOMAIN}
│ └─ bookstack-db MariaDB - /opt/stacks/wikis No UI
└─ MediaWiki Wiki platform /opt/stacks/wikis mediawiki.${DOMAIN}
 
🔀 alternatives.yaml (6 + 3 DBs)
├─ Portainer Container management /opt/stacks/alternatives portainer.${DOMAIN}
├─ Authentik Server SSO with web UI /opt/stacks/alternatives authentik.${DOMAIN}
│ ├─ authentik-worker Background tasks - /opt/stacks/alternatives No UI
│ ├─ authentik-db PostgreSQL - /opt/stacks/alternatives No UI
│ └─ authentik-redis Cache/messaging - /opt/stacks/alternatives No UI
└─ Plex Media server /mnt/media, /mnt/transcode plex.${DOMAIN}

Legend: ✓ = Protected by SSO | ✗ = Bypasses SSO | - = No web UI

Service Configuration

Some services require no initial configuration (ie. creates it on first run if needed)

Other services have config files/folders in the stack folder for easy deployment.

  • These typicaly use values from variables in .env however can not access the variables.
  • ez-homelab.sh handles variable replacement on deployment.
  • Each stack folder contains a deploy-stacksname.sh that will do the same for that stack.

Multi-Server Deployment Notes

Core Server There can be only one

Forward ports 80 & 443 from your router

  • DuckDNS: Dynamic DNS and SSL certificate management
  • Authelia: Centralized SSO authentication for all servers
  • Traefik (core): Multi-provider configuration to route to all servers

Remote Server Services (Deploy on Each Server)

  • Traefik (local): Discovers containers through labels
  • Sablier: Manages lazy loading for local containers only
  • Dockge: Stack management interface

Architecture Overview

  • TLS Communication: Remote servers connect via Docker TLS (port 2376)
  • Unified Access: All services accessible through core server domain
  • Service Routing: Having Traefik on every server enables label based service discovery
  • Lazy Loading: Having Sablier on every server enables label based lazy loading configuration