Version control for a couple of helpful services for around the home.
- Home Assistant: open source platform to control home devices and services.
- Immich: photo backup solution.
- Pi-hole: DNS server that provides network-wide ad blocking.
- Syncthing: syncs files between 2 or more devices realtime, which can be helpful for backups.
- Uptime Kuma: monitoring network services.
- Watchtower: automatically checks for container updates on a schedule, and can update and send webhook notifications if they're configured.
There are certain environment variables, like API keys and passwords, that need to be extracted from the Docker compose.yml
file to prevent them from getting checked into the Git repo.
This directory contains environment variable templates that are easy to copy and fill for easy sharing. To get started, do the following:
- Every service that has additional environment options will contain a
*.env.template
file in theservices/[service-name]
directory. Navigate to this directory. - Copy and rename the file to remove the ".template" suffix:
cp .env.template .env
- Fill in the
.env
file with the configurations needed. - You're good to go!
Creating a stack of services is done in the compose.*.yaml
files at the root of the project. These files choose which of the services in the services/
directory are included in the stack, and allows for overriding any use-case specific configurations.
Choose a stack, and run the desired Docker Compose command to get started:
sudo docker compose -f compose.[stack].yaml <up|down|pull|other-compose-command>
Alternatively, there are convenience scripts to simplify this process:
./[stack].sh <up|down|pull|other-compose-command>
If additional environment variables are required for the stack of services, for example to mount a private volume in the file system to Syncthing, the --env-file
option can be used. For example:
./[stack].sh --env-file core.env <up|down|pull|other-compose-command>
This project uses "EditorConfig" to maintain consistent formatting.
If this project is being edited using VS Code, consider installing the extension.