๐ Homelab Docker Documentation Handbook
Generated: 2026-07-23 ยท Timezone: Australia/Sydney
Purpose: Comprehensive reference for maintaining, troubleshooting, and rebuilding all Docker Compose services.
๐ Repository Layout
Docker/
โโโ Cloud/
โ โโโ Gaius/ โ Cloud VPS #1 (Gaius)
โ โ โโโ adguard/ โ AdGuard DNS instance #2
โ โ โโโ tools/ โ Dockflare agent
โ โโโ Starbuck/ โ Cloud VPS #2 (Starbuck)
โ โโโ adguard/ โ AdGuard DNS instances #1 + Sync
โ โโโ authentik/ โ SSO / Identity Provider
โ โโโ pangolin/ โ Tunnelled reverse proxy
โ โโโ services/ โ Apprise, Gatus, Uptime Kuma
โ โโโ tools/ โ Dockflare agent
โ โโโ traefik/ โ Cloud-facing Traefik
โโโ Homelab/
โโโ ARR-Stack/ โ Media automation (*arr suite)
โโโ Bluesky/ โ Self-hosted Bluesky PDS
โโโ ColonialOne/ โ Glances system monitor
โโโ DockFlare/ โ Cloudflare Tunnel manager
โโโ Docker/ โ Core homelab service stacks
โ โโโ health/ โ Fitbit & ResMed health exporters
โ โโโ librarrarian/ โ Media transcoding dashboard
โ โโโ linkwarden/ โ Bookmark manager
โ โโโ obsidian/ โ Obsidian + CouchDB LiveSync
โ โโโ private/ โ Private static sites
โ โโโ prometheus/ โ Prometheus + all exporters
โ โโโ reitti/ โ Location/route tracking
โ โโโ scanopy/ โ Container vulnerability scanner
โ โโโ services/ โ Main services megastack
โ โโโ tools/ โ Newt, socket-proxy, traefik-kop
โ โโโ velld/ โ Database backup manager
โโโ Forgejo/ โ Self-hosted Git server + CI runner
โโโ Immich/ โ Photo library & ML
โโโ Media/
โ โโโ services/ โ Media companion apps
โ โโโ tools/ โ RouteGhost, traefik-kop
โโโ Traefik/ โ Homelab reverse proxy (primary)
โโโ VPNnet/ โ WireGuard VPN + Tailscale exit node
โโโ komodo-tools/ โ Komodo socket proxy
๐ Stack Documentation Index
| Stack | Host | Doc Link |
|---|---|---|
| AdGuard (Gaius) | Cloud โ Gaius VPS | adguard-gaius.md |
| AdGuard (Starbuck) | Cloud โ Starbuck VPS | adguard-starbuck.md |
| Authentik | Cloud โ Starbuck VPS | authentik.md |
| Pangolin | Cloud โ Starbuck VPS | pangolin.md |
| Starbuck Services | Cloud โ Starbuck VPS | starbuck-services.md |
| Starbuck/Gaius Tools | Cloud โ Both VPS | cloud-tools.md |
| Starbuck Traefik | Cloud โ Starbuck VPS | starbuck-traefik.md |
| ARR-Stack | Homelab | arr-stack.md |
| Bluesky PDS | Homelab | bluesky.md |
| ColonialOne | Homelab | colonialone.md |
| DockFlare | Homelab | dockflare.md |
| Forgejo | Homelab | forgejo.md |
| Health Exporters | Homelab | health.md |
| Immich | Homelab | immich.md |
| Librarrarian | Homelab | librarrarian.md |
| Linkwarden | Homelab | linkwarden.md |
| Media Services | Homelab | media-services.md |
| Media Tools | Homelab | media-tools.md |
| Obsidian | Homelab | obsidian.md |
| Prometheus Stack | Homelab | prometheus.md |
| qBittorrent | Homelab | qbittorrent.md |
| Reitti | Homelab | reitti.md |
| Scanopy | Homelab | scanopy.md |
| Services (Megastack) | Homelab | services.md |
| Tools | Homelab | tools.md |
| Traefik (Homelab) | Homelab | traefik.md |
| Velld | Homelab | velld.md |
| VPNnet | Homelab | vpnnet.md |
| komodo-tools | Homelab | komodo-tools.md |
๐ Shared External Networks
These Docker networks must be created before bringing up stacks that reference them as external: true.
docker network create traefik
docker network create database
docker network create internal
docker network create apps
docker network create backend
docker network create cloudflare-net
docker network create vpn-net
docker network create gatus-net
Tip: Run
docker network lsto check which already exist.
๐ Key Conventions
| Convention | Description |
|---|---|
PUID=1027 / PGID=100 |
Standard unprivileged user/group across all media services |
TZ=Australia/Sydney |
Global timezone for all containers |
backup=media / backup=services |
Docker labels used by backup tooling to tag containers |
read_only: true + tmpfs |
Hardened containers using 11notes images |
traefik-kop |
Syncs Traefik labels from remote hosts via Redis |
dockflare |
Manages Cloudflare Tunnel routes from Docker labels |
.env files |
Secrets are stored in .env alongside each compose.yaml |
๐ Cloudflare Pages Deployment via Forgejo
This documentation can be automatically published as a static site on Cloudflare Pages using Forgejo Actions.
How It Works
Setup Steps
1. Create a Cloudflare Pages Project
- Go to Cloudflare Dashboard โ Workers & Pages โ Create Application โ Pages
- Choose Direct Upload (Wrangler CLI deploys from CI)
- Name your project e.g.
homelab-docs
2. Get Cloudflare Credentials
| Item | Where to find it |
|---|---|
| Account ID | Right sidebar of the Cloudflare dashboard |
| API Token | My Profile โ API Tokens โ Create Token โ use Edit Cloudflare Workers template + add Pages permissions |
3. Add Secrets to Forgejo
In your Forgejo repo: Settings โ Secrets โ Actions
| Secret Name | Value |
|---|---|
CLOUDFLARE_API_TOKEN |
Your Cloudflare API token |
CLOUDFLARE_ACCOUNT_ID |
Your Cloudflare account ID |
4. Create the Forgejo Actions Workflow
Create .forgejo/workflows/deploy-docs.yml:
name: Deploy Docs to Cloudflare Pages
on:
push:
branches:
- main
paths:
- 'Documentation/**'
jobs:
deploy:
runs-on: docker
container:
image: node:20-alpine
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Wrangler
run: npm install -g wrangler
- name: Deploy to Cloudflare Pages
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: |
wrangler pages deploy Documentation \
--project-name=homelab-docs \
--branch=main \
--commit-dirty=true
5. Optional โ MkDocs Material for a Polished Wiki
For a full wiki experience, add mkdocs.yml at the repo root and update the workflow:
- name: Setup Python
run: apk add python3 py3-pip
- name: Install MkDocs Material
run: pip install mkdocs-material
- name: Build docs
run: mkdocs build --site-dir public
- name: Deploy to Cloudflare Pages
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: |
wrangler pages deploy public \
--project-name=homelab-docs \
--branch=main
[!NOTE] The
Documentation/directory is served as the site root. Cloudflare Pages will automatically serveindex.htmlif you run a static site generator like MkDocs.
โ ๏ธ Important Security Notes
[!CAUTION] Several compose files contain plaintext credentials (passwords, API keys, WireGuard private keys) directly in the YAML. These should be migrated to
.envfiles or Docker secrets. Do not commit these files to a public repository without scrubbing secrets first.[!WARNING] The
prometheus/compose.yamlstack contains exposed API keys for Sonarr, Radarr, Lidarr, Prowlarr, qBittorrent, and UniFi. Rotate these keys if the repo is ever made public.
๐ค Generation Prompt Reference
This documentation suite was originally generated using the following prompt:
Act as a senior DevOps and homelab documentation engineer.
Analyze the following Docker Compose file(s) and write clean, comprehensive, and human-readable markdown documentation for my self-hosted homelab.
The docker compose files are inside this repo, the documentation files are in the Documentation directory
Please structure the generated documentation with the following sections:
1. **Overview**: A brief summary of what this stack does and its core purpose.
2. **Architecture & Services**: A bulleted breakdown of each container/service, its role, and its exposed internal/external ports.
3. **Networking**: Explanation of custom networks used, bridge modes, or reverse proxy integration (e.g., Nginx Proxy Manager, Traefik).
4. **Persistent Storage**: Details on volumes and bind mounts, explaining where data is stored on the host machine.
5. **Environment Variables**: A table or list describing all required environment variables and secrets (leave out sensitive passwords/keys).
6. **Access & Usage**: Default URLs, login instructions (if standard), and basic health-check or startup commands.
7. **Maintenance & Backup**: Recommendations on how to update containers and backup their specific persistent volumes.
Keep the tone practical, concise, and optimized for an Obsidian or BookStack homelab wiki.
Also show a way on how to show this on a cloudflare pages page via forgejo