A collection of self-hosted services running as independent Docker Compose stacks, deployed via Dokploy.
| Service | Description | Backup |
|---|---|---|
| Apprise | Notification gateway | Daily (config volume) |
| ArchiSteamFarm | Steam account management | Daily (config and plugins volumes) |
| Cloudflared | Cloudflare Tunnel | Not needed (stateless) |
| Garage | S3-compatible storage for backups | No (it is the backup target) |
| Homepage | Dashboard and service portal | Daily (config volume) |
| MySpotify | Spotify listening statistics | Daily (MongoDB dump) |
| n8n | Workflow automation | Daily (data volume) |
| Pi-hole | DNS and ad blocking | No (by choice) |
| Plex | Media server | Weekly (config volume) |
| qBittorrent | Torrent client | Daily (config volume) |
| Speedtest | Internet speed tracking | Daily (config volume) |
| Traccar | GPS tracking server | Daily (database, managed separately) |
| Watchtower | Automatic container updates | Not needed (stateless) |
| WGDashboard | WireGuard VPN server and dashboard | Daily (data and config volumes) |
Backups are Dokploy backups to S3-compatible storage, configured outside this repository.
- Docker and Docker Compose
- Dokploy (optional, for automated deployments)
- Clone the repository.
- Navigate to the service directory you want to deploy.
- Copy
.env.exampleto.envand fill in your values. - Run
docker compose up -d.
Each service is self-contained. You can deploy them independently in any order.
Dokploy integrates with GitHub and watches the main branch.
Each service is configured with a watch path
(e.g., pihole/**) so that only the affected service
is redeployed when its files change.
service-name/
├── docker-compose.yml # Service definition
├── .env.example # Required environment variables
└── README.md # Service-specific documentation