A comprehensive automation system for setting up and managing a homelab environment using Docker containers. This system provides a modular approach to deploying various services with proper security configurations.
- Linux-based system (tested on NixOS)
- Docker and Docker Compose installed
- User must be in the docker group
fzfpackage installed for service selection- Bash shell
You need a domain name for your services. The system will prompt for:
- Domain name (e.g., example.com)
- DNS provider credentials (supports multiple providers including Cloudflare, Gandi, etc.)
A valid email address is required for:
- SSL certificate generation
- Service notifications
- Administrative accounts
The system uses your current user's:
- Username
- UID/GID for container permissions
- Home directory
- Clone the repository:
git clone https://github.com/your-username/homelab-setup.git
cd homelab-setup- Run the setup script:
bash ./docker-scripts/bin/init-homelab.sh- Traefik (Reverse Proxy)
- Crowdsec (Security)
- DDNS Updater (Dynamic DNS)
- Bitwarden (Password Manager)
- OwnCloud (File Storage)
- Portainer (Docker Management)
- Plex (Media Server)
- Yourls (URL Shortener)
- Honeypot/Tarpit (Security Monitoring)
- Grafana (Metrics Visualization)
- Automatic SSL certificate generation
- Secure credential management
- Rate limiting
- Admin whitelisting
- Traefik security middlewares
- Crowdsec integration for threat detection
The system uses several types of configuration files:
.envfiles for service configurationdocker-compose.ymlfor container definitions- Configuration files for specific services
The system supports multiple DNS providers for domain management and DDNS updates. Some popular options include:
- Cloudflare
- Gandi
- OVH
- DigitalOcean
- Many others (100+ providers supported)
docker/ ├── adblocker-management/ ├── companion-management/ ├── gateway-management/ ├── honeypot-management/ ├── media-management/ ├── password-management/ ├── storage-management/ ├── system-management/ └── url-management/ docker-scripts/ ├── bin/ ├── lib/ └── modules/
- Run the initialization script
- Follow the interactive prompts for:
- Domain configuration
- Email setup
- Service selection
- Credentials configuration
- Services will be automatically configured and started
- Credentials are stored securely
- Service configurations can be updated using the provided update scripts
- Each service has its own management scripts in its directory
Comprehensive documentation is available in multiple languages:
- 🇩🇪 Deutsch (German) - Vollständige deutsche Dokumentation
- 🇬🇧 English - Complete English documentation
For issues or questions, please:
- Check the documentation
- Review the service-specific documentation in
docs/services/ - Check the logs in the service directories
- Create an issue in the repository
Please read our disclaimer for important information about using this software.