A collection of infrastructure-as-code configs, Docker Compose stacks, Kubernetes manifests, and automation scripts for a homelab environment.
Full documentation: doc.tkweb.site
salsa/
├── Docker/ # Docker Compose stacks
│ ├── Deluge/ # BitTorrent client (web UI :8112)
│ ├── GitLab/
│ │ ├── gitlab-linux/ # GitLab CE for Linux with auto-registering runner
│ │ └── gitlab-macos/ # GitLab CE for macOS with SSL + setup scripts
│ ├── Gitea/ # Lightweight Git service + PostgreSQL + Adminer
│ ├── HA/ # Home Assistant dashboard config
│ ├── Mysql/ # MySQL 8.0 + Adminer
│ ├── Mysql_wordpress/ # WordPress + MySQL 8.0 + Adminer
│ ├── Postgres/ # PostgreSQL + Adminer
│ ├── Prometheus/ # Prometheus server + node_exporter scraping
│ ├── build_image_wp_sql/ # Custom WordPress + MySQL Docker images
│ ├── flaresolverr/ # Cloudflare bypass proxy
│ ├── graylog_remote_mongodb/ # Graylog Enterprise 6.1 + Datanode (remote MongoDB)
│ ├── mongoDB/ # MongoDB + Mongo Express with auth
│ ├── nextjs_to_docker_container/ # Dockerfile for Next.js app deployment
│ ├── prowlarr/ # Indexer manager for Sonarr/Radarr
│ └── radarr/ # Movie collection manager
│
├── Homepage/ # Homepage dashboard (gethomepage.dev)
│ ├── docker.yaml # Docker integration config
│ ├── services.yaml # Monitored services definition
│ ├── settings.yaml # Theme and layout settings
│ └── widgets.yaml # Dashboard widgets (weather, system stats)
│
├── InfluxDB/ # InfluxDB integrations
│ └── HA_integration_configuration.yaml # Home Assistant → InfluxDB 2.0
│
├── Kubernetes/ # Kubernetes manifests
│ ├── k3s/ # K3s-specific deployments
│ │ ├── doc3.0/ # Next.js docs app (3 replicas, LB)
│ │ ├── graylog/ # Graylog Enterprise StatefulSet (2 replicas)
│ │ ├── mongodb/ # MongoDB with PVC (2Gi)
│ │ ├── mysql_single_pvc_lb/# MySQL 8.0 with tuned config (10Gi PVC)
│ │ └── postgres/ # PostgreSQL 17 with local-path storage
│ ├── mongodb/ # MongoDB deployment (3 replicas)
│ ├── mysql/ # MySQL deployment (3 replicas)
│ ├── nextjs/ # Next.js app (3 replicas)
│ ├── nginx/ # Nginx examples (deployment, service, combined)
│ ├── services/ # Service type examples (MetalLB, NodePort)
│ └── wordpress_mysql/ # WordPress + MySQL full stack with PVCs
│
├── Prometheus/ # Standalone Prometheus config
│ └── prometheus.yml # Scrape config for node_exporters
│
├── Proxmox/ # Proxmox VE automation
│ ├── create_template_cloud-init.sh # Ubuntu cloud-init template creator
│ └── Read.me
│
├── Unbound/ # DNS resolver config
│ └── conf.conf # DNS-over-TLS to Cloudflare (1.1.1.1)
│
├── terraform/ # Terraform infrastructure-as-code
│ ├── k3s.tf # Proxmox K3s cluster (3 masters + 3 workers)
│ └── wsl.tf # WSL2 instance management
│
└── .github/
└── dependabot.yml # Weekly npm dependency updates
| Category | Tools |
|---|---|
| Containers | Docker, Docker Compose, K3s |
| Databases | MySQL 8.0, PostgreSQL, MongoDB, InfluxDB 2.0 |
| CI/CD | GitLab CE + Runner, Gitea, Dependabot |
| Monitoring | Prometheus, Graylog Enterprise, Glances |
| Infrastructure | Proxmox VE, Terraform, Cloud-init |
| Web | WordPress, Next.js, Nginx |
| Networking | Unbound DNS (DoT), MetalLB |
| Media | Radarr, Prowlarr, Deluge, FlareSolverr |
| Smart Home | Home Assistant, Homepage dashboard |
- Docker and Docker Compose
- kubectl and a running K3s cluster (for Kubernetes manifests)
- Terraform (for infrastructure provisioning)
- Proxmox VE (for VM template scripts)
-
Clone the repository:
git clone https://github.com/dedkola/salsa.git cd salsa -
Navigate to the desired stack and deploy:
# Example: start a MySQL + Adminer stack cd Docker/Mysql docker compose up -d # Example: deploy nginx to K3s kubectl apply -f Kubernetes/nginx/combined_app_and_service.yaml # Example: provision K3s cluster via Terraform cd terraform terraform init && terraform apply
-
Check the full documentation for detailed guides.
- Fork the repository
- Create a feature branch (
git checkout -b feature/add-new-stack) - Commit your changes (
git commit -m 'Add new stack') - Push to the branch (
git push origin feature/add-new-stack) - Open a Pull Request
This project is open source.