Files
homelab-infra/README.md
1jamesthompson1 716baafbc1 AI given structure
2026-03-23 16:06:42 +13:00

2.2 KiB

homelab-infra

GitOps-managed infrastructure for homelab services.

Quick Start

git clone git@gitea.sjhl.nz:james/homelab-infra.git
cd homelab-infra

# Set up environment
cp .env.example .env
# Edit .env with real values

# Set up service secrets
for svc in traefik gitea nextcloud qbittorrent jellyfin devbox obsidian; do
    [ -f "$svc/.env.example" ] && cp "$svc/.env.example" "$svc/.env"
    # Edit each .env with real secrets
done

# Create required Docker networks
docker network create web

# Start everything
make up

Services

Service Description URL
traefik Reverse proxy, TLS termination dashboard.sjhl.nz
gitea Self-hosted Git gitea.sjhl.nz
nextcloud Cloud storage (AIO) nextcloud.sjhl.nz
qbittorrent Torrent client (VPN) Internal only
jellyfin Media server jellyfin.sjhl.nz
devbox Dev container SSH:46573
obsidian CouchDB for Obsidian LiveSync Internal
n8n Workflow automation (planned) -
supersync File sync (planned) -

Commands

make up        # Start all services
make down      # Stop all services
make restart   # Restart all services
make status    # Show status of all services
make logs      # Show recent logs
make backup    # Run Restic backup
make docs      # Build MkDocs site

Directory Structure

homelab-infra/
├── .env.example          # Global env template
├── Makefile              # Service management
├── backup.sh             # Restic backup script
├── traefik/              # Reverse proxy
├── gitea/                # Git hosting
├── nextcloud/            # Cloud storage (AIO)
├── qbittorrent/          # Torrent + VPN stack
├── jellyfin/             # Media server
├── devbox/               # Development container
├── obsidian/             # CouchDB for LiveSync
├── n8n/                  # Workflow automation
├── supersync/            # File sync
└── docs/                 # MkDocs documentation

Data Locations

  • Configs (in Git): this repo
  • Secrets (not in Git): per-service .env files
  • Persistent data: /mnt/storage/docker-data/<service>
  • Media: /mnt/storage
  • Backups: /mnt/storage/backups