Docker Info
This project is built with reuse and modularity in mind. Every service is separate into its own separate yml
file and included in the main docker-compose.yml
.
docker-compose.yml
# All colon based stuff is <external>:<internal> -- external being the host machine, internal being the container itself.
# Ports in this instance cannot conflict and must be unique on the internal side.
# i.e. everything cannot run on port 8080
############ OTHER NOTES ############
# The system data will be placed in this project directory by default if you change nothing
# Data is placed in .containers and is .gitignored already
# arm64v8 = Apple Silicon Based Macs
name: home-media-docker
include:
####### NETWORK STUFF ########
- ./compose-files/traefik/traefik-compose.yml
- ./compose-files/authentik/authentik.yml
- ./compose-files/vpn/vpn.yml
- ./compose-files/transmission/transmission.yml ## --profile vpn
- ./compose-files/duplicati/duplicati.yml ## --profile vpn
- ./compose-files/pihole/pihole.yml ## --profile vpn
####### NOTES ########
- ./compose-files/bookstack/bookstack.yml
####### CONTAINER MANAGEMENT ########
- ./compose-files/portainer/portainer.yml
####### MEDIA CONSUMPTION ########
- ./compose-files/emby/emby.yml ## --profile emby
- ./compose-files/plex/plex.yml ## --profile plex
- ./compose-files/jellyfin/jellyfin.yml ## --profile jellyfin
- ./compose-files/komga/komga.yml
- ./compose-files/navidrome/navidrome.yml
####### MEDIA MANAGEMENT ########
- ./compose-files/jellyseerr/jellyseerr.yml
- ./compose-files/sonarr/sonarr.yml
- ./compose-files/radarr/radarr.yml
- ./compose-files/lidarr/lidarr.yml
- ./compose-files/prowlarr/prowlarr.yml
- ./compose-files/jackett/jackett.yml ## --profile jackett
####### DASHBOARDS ########
- ./compose-files/dashy/dashy.yml
- ./compose-files/heimdall/heimdall.yml ## --profile heimdall
####### DOCKER VOLUMES AND NETWORK CONFIG ########
- ./compose-files/optional-mounted-volumes.yml
- ./compose-files/networks.yml
######## HOME AUTOMATION CONTAINERS #############
- ./compose-files/homeassistant/homeassistant.yml
- ./compose-files/zwavejs/zwavejs.yml
- ./compose-files/zigbee2mqtt/zigbee2mqtt.yml
######## FAMILY STUFF ###################
- ./compose-files/mealie/mealie.yml
- ./compose-files/mattermost/mattermost.yml
- ./compose-files/wallos/wallos.yml
######## PASSWORD MANAGER ###################
- ./compose-files/vaultwarden/vaultwarden.yml
Including Services
Docker ships with a very nice feature to be able to include other yml
files and reuse code or import code into the final compose.
When you include a yml
file (shown above), it is appended to the file and resolves any conflicts when the compose script is evaluated.
File Structure
Expand the structure below to see where the files are located.
docker-compose.yml
Home-Media-Docker/
├── compose-files <--------- Add files in this directory
│ ├── authentik
│ │ ├── .env-example
│ │ └── authentik.yml
│ ├── bookstack
│ │ ├── .env-example
│ │ └── bookstack.yml
│ ├── dashy
│ │ ├── .env-example
│ │ └── dashy.yml
│ ├── duplicati
│ │ ├── .env-example
│ │ └── duplicati.yml
│ ├── emby
│ │ ├── .env-example
│ │ └── emby.yml
│ ├── heimdall
│ │ ├── .env-example
│ │ └── heimdall.yml
│ ├── homeassistant
│ │ ├── .env-example
│ │ └── homeassistant.yml
│ ├── jackett
│ │ ├── .env-example
│ │ └── jackett.yml
│ ├── jellyfin
│ │ ├── .env-example
│ │ └── jellyfin.yml
│ ├── jellyseerr
│ │ ├── .env-example
│ │ └── jellyseerr.yml
│ ├── komga
│ │ ├── .env-example
│ │ └── komga.yml
│ ├── lidarr
│ │ ├── .env-example
│ │ └── lidarr.yml
│ ├── mattermost
│ │ ├── .env-example
│ │ └── mattermost.yml
│ ├── mealie
│ │ ├── .env-example
│ │ └── mealie.yml
│ ├── navidrome
│ │ ├── .env-example
│ │ └── navidrome.yml
│ ├── networks.yml
│ ├── optional-mounted-volumes.yml
│ ├── pihole
│ │ ├── .env-example
│ │ └── pihole.yml
│ ├── plex
│ │ ├── .env-example
│ │ └── plex.yml
│ ├── portainer
│ │ ├── .env-example
│ │ └── portainer.yml
│ ├── prowlarr
│ │ ├── .env-example