d_personal/docker-compose.yml

230 lines
5.7 KiB
YAML

version: '3.6'
#
# ISOLATED NETWORKS
#
networks:
transmission:
name: transmission
jellyfin:
name: jellyfin
gitea:
name: gitea
nextcloud:
name: nextcloud
autism_app_network:
name: autism_app_network
gladys_network:
name: gladys_network
kimai_network:
name: kimai_network
services:
#
# NGINX AND CERTBOT
#
nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
depends_on:
- transmission
- jellyfin
- gitea
- nextcloud
- nextcloud_db
- autism_app
- gladys
- kimai
- kimai_db
ports:
- 80:80
- 443:443
volumes:
- ${DOCKER_CONFIG_DIR}/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ${DOCKER_CONFIG_DIR}/certbot/conf:/etc/letsencrypt:ro
- ${DOCKER_CONFIG_DIR}/certbot/www:/var/www/certbot:ro
- ${NGINX_LOG_DIR}/:/logs
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
networks:
- transmission
- jellyfin
- gitea
- nextcloud
- autism_app_network
- gladys_network
- kimai_network
certbot:
image: certbot/certbot:latest
container_name: certbot
restart: unless-stopped
volumes:
- ${DOCKER_CONFIG_DIR}/certbot/conf:/etc/letsencrypt:rw
- ${DOCKER_CONFIG_DIR}/certbot/www:/var/www/certbot:rw
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
#
# HOMESERVER SERVICES
#
transmission:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- TRANSMISSION_WEB_HOME=/combustion-release/
- USER=${TRANSMISSION_USERNAME}
- PASS=${TRANSMISSION_PASSWORD}
volumes:
- ${DOCKER_CONFIG_DIR}/transmission/config:/config
- ${DOCKER_DATA_DIR}/transmission/downloads:/downloads
- ${DOCKER_DATA_DIR}/transmission/watch:/watch
networks:
- transmission
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
restart: unless-stopped
group_add:
- "109" # cat /etc/group | grep render
- "44" # cat /etc/group | grep video
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- JELLYFIN_PublishedServerUrl=${JELLYFIN_DOMAIN_NAME}
volumes:
- ${DOCKER_CONFIG_DIR}/jellyfin/library:/config
- /mnt/drive-one/media/series:/data/series
- /mnt/drive-one/media/movies:/data/movies
- /dev/shm/JellyfinTranscode:/transcode
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
networks:
- jellyfin
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ${DOCKER_DATA_DIR}/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- gitea
nextcloud:
image: nextcloud:latest
container_name: nextcloud
restart: unless-stopped
depends_on:
- nextcloud_db
environment:
- POSTGRES_HOST=nextcloud_db
- POSTGRES_DB=nextcloud
- POSTGRES_USER=${POSTGRES_NEXTCLOUD_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_NEXTCLOUD_PASSWORD}
volumes:
- ${DOCKER_DATA_DIR}/nextcloud:/var/www/html
networks:
- nextcloud
nextcloud_db:
image: postgres:latest
container_name: nextcloud_db
hostname: nextcloud_db
restart: unless-stopped
environment:
- POSTGRES_DB=nextcloud
- POSTGRES_USER=${POSTGRES_NEXTCLOUD_USERNAME}
- POSTGRES_PASSWORD=${POSTGRES_NEXTCLOUD_PASSWORD}
volumes:
- ${DOCKER_DATA_DIR}/nextcloud_db:/var/lib/postgresql/data
networks:
- nextcloud
kimai: # https://techoverflow.net/2021/03/08/a-modern-kimai-setup-using-docker-compose-and-nginx/
image: kimai/kimai2:apache-debian-master-prod
container_name: kimai
restart: unless-stopped
environment:
- APP_ENV=prod
- TRUSTED_HOSTS=localhost,${KIMAI_HOSTNAME}
- ADMINMAIL=${KIMAI_ADMIN_EMAIL}
- ADMINPASS=${KIMAI_ADMIN_PASSWORD}
- DATABASE_URL=mysql://kimai:${KIMAI_MARIADB_PASSWORD}@kimai_db/kimai
volumes:
- ${DOCKER_DATA_DIR}/kimai:/opt/kimai/var
depends_on:
- kimai_db
networks:
- kimai_network
kimai_db:
image: mariadb:latest
container_name: kimai_db
restart: unless-stopped
environment:
- MYSQL_DATABASE=kimai
- MYSQL_USER=kimai
- MYSQL_PASSWORD=${KIMAI_MARIADB_PASSWORD}
- MYSQL_ROOT_PASSWORD=${KIMAI_MARIADB_ROOT_PASSWORD}
volumes:
- ${DOCKER_DATA_DIR}/kimai_db:/var/lib/mysql
command: --default-storage-engine innodb
healthcheck:
test: mysqladmin -p${KIMAI_MARIADB_ROOT_PASSWORD} ping -h localhost
interval: 20s
start_period: 10s
timeout: 10s
retries: 3
networks:
- kimai_network
#
# HOME-AUTOMATION SERVICES
#
gladys:
image: gladysassistant/gladys:v4
container_name: gladys
privileged: true
restart: unless-stopped
environment:
NODE_ENV: production
SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${DOCKER_DATA_DIR}/gladysassistant:/var/lib/gladysassistant
- /dev:/dev
networks:
- gladys_network
#
# OTHER SERVICES
#
autism_app:
container_name: autism_app
image: autism_app
restart: unless-stopped
build:
context: ./autism-app
volumes:
- ./autism-app/src:/app/src
networks:
- autism_app_network