No description
Find a file
Brian Pooe 4eb6d6ee04 feat(paperless-ngx): store documents on the UNAS paperless_data share
Bind data/media/consume/export/trash from PAPERLESS_DATA_ROOT with
create_host_path: false so the stack refuses to start when the NFS
share is not mounted. Wire PAPERLESS_TRASH_DIR.
2026-07-03 18:11:49 +02:00
docker-compose-files feat(paperless-ngx): store documents on the UNAS paperless_data share 2026-07-03 18:11:49 +02:00
docs refactor: restructure docs, sync stacks with Caddyfile, harden compose templates 2026-07-03 17:45:16 +02:00
.env.sample Add Youtarr stack and document PhotoSync storage 2026-06-28 11:47:24 +02:00
.gitignore feat(vaultwarden): add SSO/OIDC support with Zitadel documentation 2026-07-02 22:25:15 +02:00
ipfconfig Add Makefile and unify stack management 2026-06-17 18:57:05 +02:00
Makefile feat(vaultwarden): add deploy-vaultwarden Makefile target 2026-07-03 17:48:19 +02:00
README.md refactor: restructure docs, sync stacks with Caddyfile, harden compose templates 2026-07-03 17:45:16 +02:00
setup-homeassistant.sh feat(homeassistant): add kids_lambs light group and daily automations 2026-06-28 17:59:26 +02:00
substitute_env.sh Harden strict substitution workflow 2026-06-17 22:15:54 +02:00

Homelab Blueprint

Docker Compose templates and deployment guides for self-hosted services.

Quick Start

  1. Copy the sample environment file:
    cp -n .env.sample .env
    
  2. Configure .env with your values.
  3. Use the Makefile to deploy a stack:
    make help            # See all available commands
    make check-env       # Validate your .env file
    make deploy-caddy    # Deploy the reverse proxy
    

Each stack guide in docker-compose-files/<stack>/README.md explains appdata placement, rendering, and networking.

Stacks

Stack Description
Arr Stack Media management, downloads, VPN, Emby, and Recyclarr
BentoPDF Privacy-first client-side PDF toolkit
Beszel Agent Host and Docker monitoring agent
Beszel Hub Beszel monitoring dashboard
Beszel Socket Proxy Restricted Docker API access for Beszel
Caddy Reverse proxy with Cloudflare DNS-01
Gramps Web Genealogy web application
Home Assistant Home Assistant, Mosquitto, and Zigbee2MQTT
Immich Photo and video management with GPU acceleration
IT-Tools Developer and sysadmin utility toolbox
Paperless-ngx Document management with OCR and full-text search
PostgreSQL PostgreSQL and pgAdmin
Technitium DNS DNS server and ad blocking
Youtarr YouTube downloader with metadata and media-server integrations

Management

The repository includes a Makefile to unify management of all stacks. It supports modular environment files, loading variables first from the root .env (Global) and then from the stack's own .env (Local).

Command Description
make check-env Validates root and stack .env files against required placeholders in renderable templates
make status Shows docker compose ps for all generated compose files
make reload-caddy Zero-downtime reload of the Caddy configuration
make ip-check Verifies VPN connectivity for Arr Stack containers
make deploy-<stack> Renders templates and starts the specified stack

Custom Services (Rust/MQTT)

To add your own services (e.g., Rust-based backends):

  1. Add your service to a new or existing docker-compose.*.yml.
  2. Connect it to the ha-network if it needs to reach Home Assistant.
  3. Expose it via Caddy by adding a block to docker-compose-files/caddy/Caddyfile_template and running make deploy-caddy.

Shared Commands

Most stacks use the following manual pattern (automated by make):

./substitute_env.sh docker-compose-files/<stack>/template.yaml docker-compose.<stack>.yml .env
docker compose -f docker-compose.<stack>.yml config --quiet
docker compose -f docker-compose.<stack>.yml up -d

Home Assistant uses its setup script instead. Arr Stack, Caddy, and Gramps Web render additional configuration templates.

substitute_env.sh only reads env files passed on the command line. It does not fall back to OS environment variables or an implicit .env.

Requirements

  • Linux host with Docker Engine and Docker Compose
  • Git
  • A configured .env based on .env.sample
  • Service-specific storage and network access described in each stack README

Generated docker-compose.*.yml files may contain secrets and are ignored by Git.

Operational Documentation

See the documentation index for all guides. Most-used: