Homelab Docker Compose
This directory contains:
- docker-compose.yml - This stores information about what containers are needed, how those containers are connected, and where data should be stored
- builds - These are custom Dockerfiles that are utilized in the compose file
- env - These contain environment files (used to set passwords and other sensitive information, I have redacted these)
- data - Once all of the docker containers referenced in the compose file are started, persistent storage is created here
Service Overview
Within the docker-compose file, several services are started, namely:
- Nextcloud (Cloud Storage + Collaboration Suite)
- Syncthing (P2P File Synchronization)
- Gitea (Git Server)
- FreshRSS (RSS Aggregator)
- Heimdall (Personal Dashboard)
Access to these services is mediated with HTTPS via Nginx Proxy and the Let's Encrypt Companion. With these, it is trivial to add new services; all you need to add a new service is declare these environment variables in the target container:
VIRTUAL_HOST
- set this to domain name (sub.domain.example.com)LETSENCRYPT_HOST
- also set this to domain name (sub.domain.example.com)LETSENCRYPT_EMAIL
- email to be used in Let's Encrypt SSL request; this is kept on record by Let's Encrypt
Setup
For details on how to turn this into a working production environment, see setup.org.
Maintenance
For more details on maintaining this environment, see maintenance.org.