A comprehensive home lab infrastructure for experimenting with cloud technologies, containerization, and automation.
tabiri-homelab/
├── README.md # This file
├── .gitignore # Git ignore rules
├── .env.example # Environment variables template
├── docs/ # Documentation
│ ├── architecture.md # System architecture
│ ├── deployment-guide.md # Deployment instructions
│ └── security.md # Security guidelines
├── terraform/ # Infrastructure as Code
│ ├── modules/ # Reusable Terraform modules
│ ├── environments/ # Environment-specific configs
│ └── backend.tf.example # Backend configuration template
├── services/ # Service deployments
│ ├── traefik/ # Reverse proxy
│ ├── monitoring/ # Monitoring stack
│ ├── nextcloud/ # File sharing
│ └── ... # Other services
├── scripts/ # Utility scripts
│ ├── backup/ # Backup scripts
│ ├── deployment/ # Deployment scripts
│ └── monitoring/ # Monitoring scripts
└── config/ # Configuration files
├── templates/ # Configuration templates
└── examples/ # Example configurations
- Docker & Docker Compose
- Terraform (for infrastructure provisioning)
- AWS CLI (for cloud resources)
- Git
- Clone this repository
- Copy
.env.exampleto.envand configure your environment variables - Review and customize configuration files in
config/templates/ - Follow deployment guides in
docs/
- NetBird VPN: Self-hosted VPN and zero-trust networking
- Traefik: Reverse proxy and load balancer
- Nginx Proxy Manager: Web-based proxy management
- Portainer: Container management UI
- NextCloud: Self-hosted file sharing and collaboration
- Airflow: Workflow orchestration
- Semaphore: Ansible automation platform
- Monitoring Stack: Prometheus, Grafana, and alerting
- Proxmox: Virtualization management
- Ansible: Configuration management
- Terraform: Infrastructure provisioning
# Deploy with Terraform
cd terraform/environments/dev
terraform init
terraform plan
terraform apply# Start a specific service
cd services/traefik
docker-compose up -d
# View logs
docker-compose logs -f# Run backup scripts
./scripts/backup/backup-all.sh
# Restore from backup
./scripts/backup/restore-backup.sh <backup-file>- All sensitive data should be stored in environment variables
- Use
.envfiles for local development (added to.gitignore) - Regular security updates and monitoring
- Network segmentation and firewall rules
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is for educational and personal use.
- This is a homelab environment - not for production use
- Always backup your data before making changes
- Monitor resource usage and costs for cloud services
- Keep software updated for security patches