https://github.com/chutch3/homelab
Turn spare hardware into a production homelab. Ansible playbooks for Docker Swarm, Traefik, and 30+ services with automated setup and DNS.
https://github.com/chutch3/homelab
ansible ansible-playbooks automation cluster devops dns-automation docker-compose docker-swarm homelab infrastructure-as-code multi-node self-hosted ssl-certificates taskfile traefik
Last synced: 20 days ago
JSON representation
Turn spare hardware into a production homelab. Ansible playbooks for Docker Swarm, Traefik, and 30+ services with automated setup and DNS.
- Host: GitHub
- URL: https://github.com/chutch3/homelab
- Owner: chutch3
- License: mit
- Created: 2023-04-14T21:38:45.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2026-01-26T16:50:09.000Z (5 months ago)
- Last Synced: 2026-01-27T03:03:57.747Z (5 months ago)
- Topics: ansible, ansible-playbooks, automation, cluster, devops, dns-automation, docker-compose, docker-swarm, homelab, infrastructure-as-code, multi-node, self-hosted, ssl-certificates, taskfile, traefik
- Language: Python
- Homepage: https://codyhutchens.com/homelab/
- Size: 1.8 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Roadmap: docs/roadmap.md
Awesome Lists containing this project
README
# Homelab
A Docker Swarm platform for self-hosted services. Deploys 37+ pre-configured services with automatic SSL, centralized SSO, monitoring, and automated backups.


---
## What's Included
**Infrastructure**
- Technitium DNS — primary local DNS with optional Pi-hole secondary for failover
- Traefik — reverse proxy with automatic SSL via Cloudflare
- Authentik — identity provider and SSO
- Prometheus + Grafana + Loki — metrics, dashboards, and log aggregation
- Uptime Kuma — uptime monitoring
- Kopia — encrypted backups to Backblaze B2
**Applications**
- Homepage, Actual Budget, Home Assistant, Node-RED, CryptPad, Mealie, Excalidraw, FreshRSS
- PhotoPrism, Immich, Emby, Komga (comics/manga)
- Sonarr, Radarr, Prowlarr, Profilarr, qBittorrent, Deluge, SABnzbd, NZBGet
- Forgejo (Git + CI/CD), GitHub Actions Runner, Code-server (VS Code in browser)
- Vaultwarden, LibreChat, Kiwix (offline Wikipedia + Stack Overflow)
---
## Requirements
- Docker with Compose v2
- [Taskfile](https://taskfile.dev/installation/)
- Domain name with Cloudflare DNS management
- Cloudflare API token for DNS-01 challenge
---
## Quick Start
```bash
git clone https://github.com/chutch3/homelab.git
cd homelab
cp .env.example .env
nano .env # set your domain, Cloudflare token, and passwords
cp ansible/inventory/03-hosts.yml.example ansible/inventory/02-hosts.yml
nano ansible/inventory/02-hosts.yml # add your nodes
```
```bash
task ansible:install # install Ansible and dependencies
task ansible:bootstrap # install Docker on all nodes
task ansible:cluster:init # initialize Docker Swarm
task ansible:deploy # deploy all services
```
Then visit `https://homepage.yourdomain.com`.
---
## Common Commands
```bash
# Deploy or redeploy a single service
task ansible:deploy:stack -- -e "stack_name=sonarr"
# Tear down a service (preserves data)
task ansible:teardown:stack -- -e "stack_name=sonarr"
# Configure DNS records
task ansible:dns:configure
# Check cluster status
task ansible:cluster:status
# Run tests and linting
task check
```
---
## Documentation
Full documentation: [chutch3.github.io/homelab](https://chutch3.github.io/homelab/)
- [Getting Started](https://chutch3.github.io/homelab/getting-started/quick-start/)
- [Configuration](https://chutch3.github.io/homelab/getting-started/configuration/)
- [Architecture](https://chutch3.github.io/homelab/architecture/overview/)
- [Service Management](https://chutch3.github.io/homelab/user-guide/service-management/)
- [Troubleshooting](https://chutch3.github.io/homelab/troubleshooting/)
---
## License
MIT — see [LICENSE](LICENSE).