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

80 lines
2.2 KiB
Markdown

# homelab-infra
GitOps-managed infrastructure for homelab services.
## Quick Start
```bash
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
```bash
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`