#+title: Homelab Docker Compose #+author: Emmet This directory contains: - [[./docker-compose.yml][docker-compose.yml]] - This stores information about what containers are needed, how those containers are connected, and where data should be stored - [[./builds][builds]] - These are custom Dockerfiles that are utilized in the compose file - [[./env][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.yml][docker-compose file]], several services are started, namely: - [[https://nextcloud.com/][Nextcloud]] (Cloud Storage + Collaboration Suite) - [[https://syncthing.net/][Syncthing]] (P2P File Synchronization) - [[https://about.gitea.com/][Gitea]] (Git Server) - [[https://freshrss.org/][FreshRSS]] (RSS Aggregator) - [[https://heimdall.site/][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][setup.org]]. ** Maintenance For more details on maintaining this environment, see [[./maintenance.org][maintenance.org]].