A public repository containing sanitized homelab configurations and templates for various hardware devices and services.
All configurations in this repository are sanitized and safe for public consumption:
- ✅ No secrets or credentials
- ✅ No sensitive file paths
- ✅ No identifying network information (internal IPs use placeholders)
- ✅ No personal data
Secrets are managed externally (e.g., Docker secrets, environment files in .gitignore)
Security Checks:
- ✅ Automated secret scanning with Gitleaks
- ✅ Daily scheduled scans
- ✅ Pull request protection
- ✅ Placeholder values in all committed files
Quality Checks:
- ✅ YAML syntax validation with yamllint
- ✅ Configurable linting rules (
.yamllint.yml) - ✅ Weekly scheduled linting
- ✅ Automatic GitHub Actions output formatting
This repository uses Renovate to automatically keep Docker images and dependencies up to date.
Features:
- 🔄 Automatic PRs for outdated Docker images
- 📦 Groups related updates together
- ✅ Auto-merges patch updates (when approved)
⚠️ Major updates require manual review- 📅 Weekly update schedule (Sundays)
Setup: Install the Renovate GitHub App on your repository.
├── devices/ # Device-specific configurations
│ └── nas/
│ ├── docker-compose/
│ │ ├── backups/
│ │ │ └── duplicati/ # Backup solution
│ │ └── infrastructure/
│ │ └── tailscale/ # VPN service
│ └── docs/ # Deployment guides
├── services/ # Service-specific configurations
├── .github/ # GitHub Actions workflows
│ └── workflows/ # CI/CD pipelines
└── renovate.json # Automated dependency updates
Docker compose configurations designed to run on Portainer.
Directory: devices/nas/
Configuration files are designed to be:
- Deployed via Portainer
- Environment-aware (development/production)
- Extensible and maintainable
Automatically deploy and update stacks using Portainer's GitOps feature:
- In Portainer, add a stack from Git Repository
- Repository URL:
https://github.com/miguelmartens/homelab.git - Compose Path:
devices/nas/docker-compose/[category]/[service]/docker-compose.yml - Enable GitOps for automatic updates
- Configure environment variables
- Deploy
See GitOps Guide for detailed instructions.
- Navigate to the appropriate device directory
- Copy the desired
docker-compose.ymlfile - In Portainer, create a new stack
- Update any placeholder values with your specific configuration
- Deploy
# Example for NAS
cd devices/nas/docker-compose
docker-compose up -dWhen adding new configurations:
- Create required folders in UGOS File Manager first - Volume paths must exist before deployment
- Ensure all secrets are moved to environment files (
.env.exampleprovided) - Replace specific paths with generic ones
- Use placeholder IPs and domains
- Update this README if adding new devices/services
- Document any special requirements
See NAS Deployment Guide for folder creation instructions.
- Duplicati - Cloud backup solution (S3, OneDrive, Google Drive, etc.)
- Path:
devices/nas/docker-compose/backups/duplicati/
- Path:
- Tailscale - VPN service with WireGuard
- Path:
devices/nas/docker-compose/infrastructure/tailscale/
- Path:
This repository includes automated workflows:
- Gitleaks - Security scanning for secrets
- YAML Lint - YAML syntax validation
- Renovate - Automated dependency updates
This is a public repository showcasing homelab best practices. Feel free to use these configurations as templates for your own homelab.
MIT - Free to use for your own homelab projects