Split docker-compose.yml into one file per service
This commit is contained in:
@@ -1,443 +1,47 @@
|
||||
---
|
||||
services:
|
||||
#
|
||||
# official
|
||||
#
|
||||
nginx:
|
||||
image: nginx:1.25.4 # official, linuxserver/nginx
|
||||
container_name: nginx
|
||||
extra_hosts:
|
||||
- "host:192.168.2.150"
|
||||
volumes:
|
||||
- /opt/nginx/etc/nginx/conf:/etc/nginx/conf
|
||||
- /opt/nginx/etc/nginx/conf.d:/etc/nginx/conf.d
|
||||
- /opt/nginx/etc/nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
- /opt/nginx/var/log/nginx:/var/log/nginx
|
||||
restart: unless-stopped
|
||||
filebrowser:
|
||||
image: filebrowser/filebrowser:v2.28.0 # official, no linuxserver image
|
||||
container_name: filebrowser
|
||||
volumes:
|
||||
- /opt/filebrowser/.filebrowser.json:/.filebrowser.json
|
||||
- /opt/filebrowser/database.db:/database.db
|
||||
- /media:/srv/host/media
|
||||
ports:
|
||||
- 8001:80
|
||||
homeassistant:
|
||||
container_name: homeassistant
|
||||
image: homeassistant/home-assistant:2024.4.3
|
||||
volumes:
|
||||
- /opt/homeassistant:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
network_mode: host
|
||||
photoprism:
|
||||
image: photoprism/photoprism:231128 # official
|
||||
container_name: photoprism
|
||||
ports:
|
||||
- 2342:2342
|
||||
environment:
|
||||
- PHOTOPRISM_ADMIN_PASSWORD=insecure # INITIAL PASSWORD FOR admin USER, MINIMUM 8 CHARACTERS
|
||||
- PHOTOPRISM_AUTH_MODE=password # authentication mode (public, password)
|
||||
- PHOTOPRISM_SITE_URL=https://photoprism.bram.veenboer.xyz/ # public server URL incl http:// or https:// and /path, :port is optional
|
||||
- PHOTOPRISM_ORIGINALS_LIMIT=5000 # file size limit for originals in MB (increase for high-res video)
|
||||
- PHOTOPRISM_HTTP_COMPRESSION=gzip # improves transfer speed and bandwidth utilization (none or gzip)
|
||||
- PHOTOPRISM_LOG_LEVEL=info # log level=trace, debug, info, warning, error, fatal, or panic
|
||||
- PHOTOPRISM_READONLY=true # do not modify originals directory (reduced functionality)
|
||||
- PHOTOPRISM_EXPERIMENTAL=false # enables experimental features
|
||||
- PHOTOPRISM_DISABLE_CHOWN=true # disables updating storage permissions via chmod and chown on startup
|
||||
- PHOTOPRISM_DISABLE_WEBDAV=true # disables built-in WebDAV server
|
||||
- PHOTOPRISM_DISABLE_SETTINGS=false # disables settings UI and API
|
||||
- PHOTOPRISM_DISABLE_TENSORFLOW=false # disables all features depending on TensorFlow
|
||||
- PHOTOPRISM_DISABLE_FACES=false # disables face detection and recognition (requires TensorFlow)
|
||||
- PHOTOPRISM_DISABLE_CLASSIFICATION=false # disables image classification (requires TensorFlow)
|
||||
- PHOTOPRISM_DISABLE_RAW=true # disables indexing and conversion of RAW files
|
||||
- PHOTOPRISM_RAW_PRESETS=false # enables applying user presets when converting RAW files (reduces performance)
|
||||
- PHOTOPRISM_JPEG_QUALITY=85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
|
||||
- PHOTOPRISM_DETECT_NSFW=false # automatically flags photos as private that MAY be offensive (requires TensorFlow)
|
||||
- PHOTOPRISM_UPLOAD_NSFW=true # allows uploads that MAY be offensive (no effect without TensorFlow)
|
||||
- PHOTOPRISM_DATABASE_DRIVER=sqlite # SQLite is an embedded database that doesn't require a server
|
||||
- PHOTOPRISM_UID=1000
|
||||
- PHOTOPRISM_GID=1000
|
||||
devices:
|
||||
- /dev/dri:/dev/dri # Intel QSV
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
- apparmor:unconfined
|
||||
volumes:
|
||||
- /opt/photoprism:/photoprism/storage
|
||||
- /media/scratch/photoprism/cache:/photoprism/storage/cache
|
||||
- /opt/photoprism/originals:/photoprism/originals/
|
||||
- /media/helios/Photographs/Vakantie:/photoprism/originals/Vakantie
|
||||
- /media/helios/Photographs/Plaatsen:/photoprism/originals/Plaatsen
|
||||
restart: unless-stopped
|
||||
influxdb: # admin:password
|
||||
image: influxdb:2.3.0 # official
|
||||
container_name: influxdb
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/influxdb:/var/lib/influxdb2
|
||||
ports:
|
||||
- 8086:8086
|
||||
#
|
||||
# Linux Server images
|
||||
#
|
||||
rsnapshot:
|
||||
image: linuxserver/rsnapshot:1.4.5
|
||||
container_name: rsnapshot
|
||||
volumes:
|
||||
- /opt/rsnapshot/etc:/etc/rsnapshot
|
||||
- /opt/rsnapshot/var/log:/var/log
|
||||
- /opt/rsnapshot/var/run:/var/run
|
||||
- /opt/rsnapshot/var/spool:/var/spool
|
||||
- /opt/rsnapshot/usr:/host/usr
|
||||
#- /opt/host_aliases:/host/etc/host_aliases
|
||||
- /media/jupiter/rsnapshot:/host/scratch
|
||||
- /root/.ssh:/root/.ssh
|
||||
restart: unless-stopped
|
||||
facette:
|
||||
image: facette/facette:0.5.1
|
||||
container_name: facette
|
||||
volumes:
|
||||
- /opt/facette/etc:/etc/facette #RO
|
||||
- /opt/facette/var:/var/lib/facette #RW
|
||||
- /opt/collectd/var:/var/lib/collectd #RO
|
||||
- /media/scratch/collectd/shuttle/rrd/server:/var/lib/collectd/rrd/shuttle #RO
|
||||
- /media/scratch/collectd/sepia/rrd/sepia:/var/lib/collectd/rrd/sepia #RO
|
||||
- /media/scratch/collectd/kratos/rrd/kratos:/var/lib/collectd/rrd/kratos #RO
|
||||
ports:
|
||||
- 12003:12003
|
||||
restart: unless-stopped
|
||||
jellyfin:
|
||||
image: linuxserver/jellyfin:10.10.1
|
||||
container_name: jellyfin
|
||||
volumes:
|
||||
- /opt/jellyfin/config:/config
|
||||
- /media/neptune/Video/Movies:/host/srv/movies
|
||||
- /media/neptune/Video/Shows:/host/srv/shows
|
||||
- /media/helios/Bram/Music:/host/srv/music/bram
|
||||
- /media/neptune/Music/Albums:/host/srv/music/albums
|
||||
- /media/scratch/jellyfin/transcoding-temp/config/data/transcoding-temp
|
||||
- /media/scratch/jellyfin/transcodes:/config/data/trancodes
|
||||
- /media/scratch/jellyfin/metadata:/config/data/metadata
|
||||
ports:
|
||||
- 8097:8097
|
||||
devices:
|
||||
- /dev/dri/renderD128:/dev/dri/renderD128
|
||||
restart: unless-stopped
|
||||
lidarr:
|
||||
image: linuxserver/lidarr:2.2.5.4141-ls165
|
||||
container_name: lidarr
|
||||
external_links:
|
||||
- transmission
|
||||
volumes:
|
||||
- /opt/lidarr:/config
|
||||
- /media/nubes/downloads:/downloads
|
||||
- /media/neptune/Music/Albums:/music
|
||||
- /media/nubes/music:/stage
|
||||
- /media/scratch/lidarr/MediaCover:/config/MediaCover
|
||||
ports:
|
||||
- 18686:8686
|
||||
extra_hosts:
|
||||
- "transmission:192.168.2.150"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
sonarr:
|
||||
image: linuxserver/sonarr:4.0.4.1491-ls236
|
||||
container_name: sonarr
|
||||
external_links:
|
||||
- transmission
|
||||
volumes:
|
||||
- /opt/sonarr:/config
|
||||
- /media/nubes/downloads:/downloads
|
||||
- /media/neptune/Video/Shows:/tv
|
||||
ports:
|
||||
- 18989:8989
|
||||
extra_hosts:
|
||||
- "transmission:192.168.2.150"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
radarr:
|
||||
image: linuxserver/radarr:5.4.6.8723-ls213
|
||||
container_name: radarr
|
||||
external_links:
|
||||
- transmission
|
||||
volumes:
|
||||
- /opt/radarr:/config
|
||||
- /media/nubes/downloads:/downloads
|
||||
- /media/neptune/Video/Movies:/movies
|
||||
ports:
|
||||
- 17878:7878
|
||||
extra_hosts:
|
||||
- "transmission:192.168.2.150"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
bazarr:
|
||||
image: linuxserver/bazarr:v1.4.2-ls246
|
||||
container_name: bazarr
|
||||
volumes:
|
||||
- /opt/bazarr/config:/config
|
||||
- /media/neptune/Video/Movies:/movies
|
||||
- /media/neptune/Video/Shows:/tv
|
||||
ports:
|
||||
- 16767:6767
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Etc/UTC
|
||||
jackett:
|
||||
image: linuxserver/jackett:v0.21.2371-ls368
|
||||
container_name: jackett
|
||||
external_links:
|
||||
- transmission
|
||||
volumes:
|
||||
- /opt/jackett:/config
|
||||
- /media/nubes/downloads:/downloads
|
||||
ports:
|
||||
- 9117:9117
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
transmission:
|
||||
image: linuxserver/transmission:4.0.6-r0-ls259
|
||||
container_name: transmission
|
||||
volumes:
|
||||
- /opt/transmission:/config
|
||||
- /media/nubes/torrents:/watch
|
||||
- /media/nubes/downloads:/downloads
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
network_mode: service:surfshark
|
||||
depends_on:
|
||||
- surfshark
|
||||
restart: unless-stopped
|
||||
openvpn-server: # custom, no linuxserver image
|
||||
image: kylemanna/openvpn:2.4
|
||||
container_name: openvpn-server
|
||||
privileged: true
|
||||
extra_hosts:
|
||||
- "host:192.168.2.150"
|
||||
ports:
|
||||
- 443:443
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
volumes:
|
||||
- /opt/openvpn-server:/etc/openvpn
|
||||
- /opt/openvpn-server/logrotate.d/openvpn:/etc/logrotate.d/openvpn
|
||||
network_mode: bridge
|
||||
restart: unless-stopped
|
||||
caddy:
|
||||
image: caddy
|
||||
container_name: caddy
|
||||
build:
|
||||
context: /opt/caddy/
|
||||
ports:
|
||||
- 444:443
|
||||
volumes:
|
||||
- /opt/caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||
- /opt/caddy/data:/data
|
||||
environment:
|
||||
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
|
||||
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- nginx
|
||||
links:
|
||||
- nginx
|
||||
borgmatic:
|
||||
image: b3vis/borgmatic:1.9.1 # custom, no linuxserver image
|
||||
container_name: borgmatic
|
||||
volumes:
|
||||
- /media:/media
|
||||
- /:/host
|
||||
- /root/.ssh:/root/.ssh
|
||||
- /opt/borgmatic/config/crontab.txt:/etc/borgmatic.d/crontab.txt
|
||||
- /opt/borgmatic/config:/config
|
||||
- /opt/borgmatic/keys:/keys
|
||||
- /opt/borgmatic/cache:/cache
|
||||
- /opt/borgmatic/log:/log
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Europe/Amsterdam
|
||||
cap_add:
|
||||
- sys_admin
|
||||
privileged: true # for NFS mount
|
||||
seafile:
|
||||
image: gronis/seafile:10.0.1
|
||||
container_name: seafile
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/seafile:/seafile:rw
|
||||
- /media/seafile:/seafile/seafile-data:rw
|
||||
ports:
|
||||
- 8100:8000
|
||||
- 8180:8080
|
||||
- 8182:8082
|
||||
environment:
|
||||
- MODE=autorun
|
||||
#- MODE=maintenance
|
||||
esphome:
|
||||
image: esphome/esphome:2022.12.8
|
||||
container_name: esphome
|
||||
volumes:
|
||||
- /opt/esphome:/config:rw
|
||||
- /opt/esphome/log:/log:rw
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
#nordvpn:
|
||||
# image: bubuntux/nordlynx:2023-06-01 # custom, no linuxserver image
|
||||
# container_name: nordvpn
|
||||
# cap_add:
|
||||
# - net_admin
|
||||
# environment:
|
||||
# - PRIVATE_KEY=4JaL+NcPPLTcFYTzu1aswWr+qIvOhNhCajXoUgd3nVo=
|
||||
# ports:
|
||||
# - 9091:9091 # transmission
|
||||
# restart: unless-stopped
|
||||
surfshark:
|
||||
image: ilteoood/docker-surfshark:1.7.2 # custom, no linuxserver image
|
||||
container_name: surfshark
|
||||
environment:
|
||||
- SURFSHARK_USER=${SURFSHARK_USER:?}
|
||||
- SURFSHARK_PASSWORD=${SURFSHARK_PASSWORD:?}
|
||||
- SURFSHARK_COUNTRY=nl
|
||||
- SURFSHARK_CITY=ams
|
||||
- CONNECTION_TYPE=udp
|
||||
- LAN_NETWORK=
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun
|
||||
ports:
|
||||
- 1080:1080 # socks5 server
|
||||
- 9091:9091 # transmission
|
||||
restart: unless-stopped
|
||||
dns:
|
||||
- 1.1.1.1
|
||||
plik:
|
||||
image: rootgg/plik:1.3.8 # custom, no linuxserver image
|
||||
container_name: plik
|
||||
ports:
|
||||
- 8087:8080
|
||||
volumes:
|
||||
- /opt/plik/plikd.cfg:/home/plik/server/plikd.cfg
|
||||
- /opt/plik/files:/home/plik/server/files
|
||||
restart: unless-stopped
|
||||
dns-ad-blocker:
|
||||
image: oznu/dns-ad-blocker:latest # custom, no linuxserver image, no version
|
||||
container_name: dns-ad-blocker
|
||||
ports:
|
||||
- "192.168.2.151:53:53/udp"
|
||||
environment:
|
||||
- AUTO_UPDATE=1
|
||||
- BRANCH=master
|
||||
- DNSCRYPT=1
|
||||
- DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.ns0.dnscrypt.nl
|
||||
- DNSCRYPT_RESOLVER_ADDR=45.76.35.212
|
||||
- DNSCRYPT_PROVIDER_KEY=4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA
|
||||
restart: unless-stopped
|
||||
ghost:
|
||||
#image: ghost:5.45.1 # TODO: needs database migration
|
||||
image: ghost:1.21.5 # custom, no linuxserver image
|
||||
container_name: ghost
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/ghost/content:/var/lib/ghost/content
|
||||
- /opt/ghost/etc/config.production.json:/var/lib/ghost/config.production.json
|
||||
ports:
|
||||
- 2368:2368
|
||||
lighttpd:
|
||||
image: sebp/lighttpd:1.4.64-r0 # custom, no linuxserver image
|
||||
container_name: lighttpd
|
||||
ports:
|
||||
- 80:81
|
||||
volumes:
|
||||
- /opt/lighttpd/etc:/host/etc
|
||||
- /opt/lighttpd/var/log:/host/var/log
|
||||
- /media/nubes/www:/host/var/www
|
||||
tty: true
|
||||
restart: unless-stopped
|
||||
#
|
||||
# homemade
|
||||
#
|
||||
collectd:
|
||||
image: collectd:bookworm-new # homemade, no linuxserver image
|
||||
build:
|
||||
context: /opt/collectd/docker
|
||||
dockerfile: Dockerfile
|
||||
container_name: collectd
|
||||
privileged: true
|
||||
volumes:
|
||||
- /opt/collectd/etc:/etc/collectd
|
||||
- /opt/collectd/var:/var/lib/collectd
|
||||
- /opt/collectd/usr:/host/usr
|
||||
- /:/host/root
|
||||
- /media:/host/media
|
||||
- /media/jupiter/borg:/host/media/borg
|
||||
- /media/jupiter/rsnapshot:/host/media/rsnapshot
|
||||
- /var/lib/docker:/media/docker
|
||||
- /dev/mapper:/dev/mapper
|
||||
restart: unless-stopped
|
||||
#
|
||||
# IoT
|
||||
#
|
||||
dsmrdb:
|
||||
image: postgres
|
||||
container_name: dsmrdb
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/dsmr/data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_USER=dsmrreader
|
||||
- POSTGRES_PASSWORD=dsmrreader
|
||||
- POSTGRES_DB=dsmrreader
|
||||
- 5432:5432
|
||||
dsmr:
|
||||
image: xirixiz/dsmr-reader-docker:5.11.0-2024.02.04
|
||||
container_name: dsmr
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- dsmrdb
|
||||
links:
|
||||
- dsmrdb:dsmrreader
|
||||
volumes:
|
||||
- /opt/dsmr/backups:/home/dsmr/app/backups
|
||||
- /dev:/dev
|
||||
environment:
|
||||
- DJANGO_DATABASE_HOST=dsmrdb
|
||||
- DSMRREADER_ADMIN_USER=admin
|
||||
- DSMRREADER_ADMIN_PASSWORD=password
|
||||
ports:
|
||||
- 8888:80
|
||||
timescaledb:
|
||||
image: timescale/timescaledb:2.7.1-pg14 # official
|
||||
container_name: timescaledb
|
||||
volumes:
|
||||
- /opt/timescaledb:/var/lib/postgresql/data
|
||||
ports:
|
||||
- 6543:5432
|
||||
environment:
|
||||
- POSTGRES_USER=timescaleuser
|
||||
- POSTGRES_PASSWORD=timescalepwd
|
||||
grafana:
|
||||
image: grafana/grafana:10.4.2 # official
|
||||
container_name: grafana
|
||||
volumes: # admin:grafana
|
||||
- /opt/grafana:/var/lib/grafana
|
||||
ports:
|
||||
- 3333:3000
|
||||
include:
|
||||
# Web
|
||||
- docker-compose.nginx.yml
|
||||
- docker-compose.filebrowser.yml
|
||||
- docker-compose.caddy.yml
|
||||
- docker-compose.ghost.yml
|
||||
- docker-compose.lighttpd.yml
|
||||
- docker-compose.plik.yml
|
||||
|
||||
# Authentication
|
||||
- docker-compose.openvpn-server.yml
|
||||
- docker-compose.surfshark.yml
|
||||
|
||||
# Download
|
||||
- docker-compose.transmission.yml
|
||||
- docker-compose.jackett.yml
|
||||
- docker-compose.radarr.yml
|
||||
- docker-compose.sonarr.yml
|
||||
- docker-compose.bazarr.yml
|
||||
- docker-compose.lidarr.yml
|
||||
|
||||
# Media
|
||||
- docker-compose.jellyfin.yml
|
||||
- docker-compose.photoprism.yml
|
||||
|
||||
# Networking
|
||||
- docker-compose.dns-ad-blocker.yml
|
||||
|
||||
# Backup
|
||||
- docker-compose.rsnapshot.yml
|
||||
- docker-compose.borgmatic.yml
|
||||
|
||||
# Sensors
|
||||
- docker-compose.homeassistant.yml
|
||||
- docker-compose.esphome.yml
|
||||
- docker-compose.collectd.yml
|
||||
|
||||
# Storage
|
||||
- docker-compose.seafile.yml
|
||||
|
||||
# Database
|
||||
- docker-compose.influxdb.yml
|
||||
- docker-compose.timescaledb.yml
|
||||
- docker-compose.grafana.yml
|
||||
- docker-compose.dsmrdb.yml
|
||||
- docker-compose.dsmr.yml
|
||||
- docker-compose.facette.yml
|
||||
|
||||
Reference in New Issue
Block a user