From 0bbca6efc111cc63d4ddba2dd8865a63f7b57a19 Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Thu, 28 Nov 2024 19:34:24 +0100 Subject: [PATCH] Split docker-compose.yml into one file per service --- docker-compose.bazarr.yml | 15 + docker-compose.borgmatic.yml | 19 ++ docker-compose.caddy.yml | 19 ++ docker-compose.collectd.yml | 19 ++ docker-compose.dns-ad-blocker.yml | 14 + docker-compose.dsmr.yml | 18 ++ docker-compose.dsmrdb.yml | 12 + docker-compose.esphome.yml | 10 + docker-compose.facette.yml | 14 + docker-compose.filebrowser.yml | 10 + docker-compose.ghost.yml | 10 + docker-compose.grafana.yml | 8 + docker-compose.homeassistant.yml | 10 + docker-compose.influxdb.yml | 9 + docker-compose.jackett.yml | 16 + docker-compose.jellyfin.yml | 18 ++ docker-compose.lidarr.yml | 21 ++ docker-compose.lighttpd.yml | 12 + docker-compose.nginx.yml | 12 + docker-compose.openvpn-server.yml | 16 + docker-compose.photoprism.yml | 41 +++ docker-compose.plik.yml | 10 + docker-compose.radarr.yml | 19 ++ docker-compose.rsnapshot.yml | 13 + docker-compose.seafile.yml | 14 + docker-compose.sonarr.yml | 19 ++ docker-compose.surfshark.yml | 21 ++ docker-compose.timescaledb.yml | 11 + docker-compose.transmission.yml | 15 + docker-compose.yml | 490 +++--------------------------- 30 files changed, 492 insertions(+), 443 deletions(-) create mode 100644 docker-compose.bazarr.yml create mode 100644 docker-compose.borgmatic.yml create mode 100644 docker-compose.caddy.yml create mode 100644 docker-compose.collectd.yml create mode 100644 docker-compose.dns-ad-blocker.yml create mode 100644 docker-compose.dsmr.yml create mode 100644 docker-compose.dsmrdb.yml create mode 100644 docker-compose.esphome.yml create mode 100644 docker-compose.facette.yml create mode 100644 docker-compose.filebrowser.yml create mode 100644 docker-compose.ghost.yml create mode 100644 docker-compose.grafana.yml create mode 100644 docker-compose.homeassistant.yml create mode 100644 docker-compose.influxdb.yml create mode 100644 docker-compose.jackett.yml create mode 100644 docker-compose.jellyfin.yml create mode 100644 docker-compose.lidarr.yml create mode 100644 docker-compose.lighttpd.yml create mode 100644 docker-compose.nginx.yml create mode 100644 docker-compose.openvpn-server.yml create mode 100644 docker-compose.photoprism.yml create mode 100644 docker-compose.plik.yml create mode 100644 docker-compose.radarr.yml create mode 100644 docker-compose.rsnapshot.yml create mode 100644 docker-compose.seafile.yml create mode 100644 docker-compose.sonarr.yml create mode 100644 docker-compose.surfshark.yml create mode 100644 docker-compose.timescaledb.yml create mode 100644 docker-compose.transmission.yml diff --git a/docker-compose.bazarr.yml b/docker-compose.bazarr.yml new file mode 100644 index 0000000..9b38f82 --- /dev/null +++ b/docker-compose.bazarr.yml @@ -0,0 +1,15 @@ +services: + bazarr: + container_name: bazarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Etc/UTC + image: linuxserver/bazarr:v1.4.2-ls246 + ports: + - 16767:6767 + restart: unless-stopped + volumes: + - /opt/bazarr/config:/config + - /media/neptune/Video/Movies:/movies + - /media/neptune/Video/Shows:/tv diff --git a/docker-compose.borgmatic.yml b/docker-compose.borgmatic.yml new file mode 100644 index 0000000..1925604 --- /dev/null +++ b/docker-compose.borgmatic.yml @@ -0,0 +1,19 @@ +services: + borgmatic: + cap_add: + - sys_admin + container_name: borgmatic + environment: + - TZ=Europe/Amsterdam + image: b3vis/borgmatic:1.9.1 + privileged: true + restart: unless-stopped + 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 diff --git a/docker-compose.caddy.yml b/docker-compose.caddy.yml new file mode 100644 index 0000000..52b2fa2 --- /dev/null +++ b/docker-compose.caddy.yml @@ -0,0 +1,19 @@ +services: + caddy: + build: + context: /opt/caddy/ + container_name: caddy + depends_on: + - nginx + environment: + - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?} + - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?} + image: caddy + links: + - nginx + ports: + - 444:443 + restart: unless-stopped + volumes: + - /opt/caddy/Caddyfile:/etc/caddy/Caddyfile + - /opt/caddy/data:/data diff --git a/docker-compose.collectd.yml b/docker-compose.collectd.yml new file mode 100644 index 0000000..37259e1 --- /dev/null +++ b/docker-compose.collectd.yml @@ -0,0 +1,19 @@ +services: + collectd: + build: + context: /opt/collectd/docker + dockerfile: Dockerfile + container_name: collectd + image: collectd:bookworm-new + privileged: true + restart: unless-stopped + 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 diff --git a/docker-compose.dns-ad-blocker.yml b/docker-compose.dns-ad-blocker.yml new file mode 100644 index 0000000..8d81239 --- /dev/null +++ b/docker-compose.dns-ad-blocker.yml @@ -0,0 +1,14 @@ +services: + dns-ad-blocker: + container_name: dns-ad-blocker + 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 + image: oznu/dns-ad-blocker:latest + ports: + - 192.168.2.151:53:53/udp + restart: unless-stopped diff --git a/docker-compose.dsmr.yml b/docker-compose.dsmr.yml new file mode 100644 index 0000000..a95e0e2 --- /dev/null +++ b/docker-compose.dsmr.yml @@ -0,0 +1,18 @@ +services: + dsmr: + container_name: dsmr + depends_on: + - dsmrdb + environment: + - DJANGO_DATABASE_HOST=dsmrdb + - DSMRREADER_ADMIN_USER=admin + - DSMRREADER_ADMIN_PASSWORD=password + image: xirixiz/dsmr-reader-docker:5.11.0-2024.02.04 + links: + - dsmrdb:dsmrreader + ports: + - 8888:80 + restart: unless-stopped + volumes: + - /opt/dsmr/backups:/home/dsmr/app/backups + - /dev:/dev diff --git a/docker-compose.dsmrdb.yml b/docker-compose.dsmrdb.yml new file mode 100644 index 0000000..84f0f4b --- /dev/null +++ b/docker-compose.dsmrdb.yml @@ -0,0 +1,12 @@ +services: + dsmrdb: + container_name: dsmrdb + environment: + - POSTGRES_USER=dsmrreader + - POSTGRES_PASSWORD=dsmrreader + - POSTGRES_DB=dsmrreader + - 5432:5432 + image: postgres + restart: unless-stopped + volumes: + - /opt/dsmr/data:/var/lib/postgresql/data diff --git a/docker-compose.esphome.yml b/docker-compose.esphome.yml new file mode 100644 index 0000000..1113dbb --- /dev/null +++ b/docker-compose.esphome.yml @@ -0,0 +1,10 @@ +services: + esphome: + container_name: esphome + image: esphome/esphome:2022.12.8 + network_mode: host + restart: unless-stopped + volumes: + - /opt/esphome:/config:rw + - /opt/esphome/log:/log:rw + - /etc/localtime:/etc/localtime:ro diff --git a/docker-compose.facette.yml b/docker-compose.facette.yml new file mode 100644 index 0000000..cbffdfd --- /dev/null +++ b/docker-compose.facette.yml @@ -0,0 +1,14 @@ +services: + facette: + container_name: facette + image: facette/facette:0.5.1 + ports: + - 12003:12003 + restart: unless-stopped + volumes: + - /opt/facette/etc:/etc/facette + - /opt/facette/var:/var/lib/facette + - /opt/collectd/var:/var/lib/collectd + - /media/scratch/collectd/shuttle/rrd/server:/var/lib/collectd/rrd/shuttle + - /media/scratch/collectd/sepia/rrd/sepia:/var/lib/collectd/rrd/sepia + - /media/scratch/collectd/kratos/rrd/kratos:/var/lib/collectd/rrd/kratos diff --git a/docker-compose.filebrowser.yml b/docker-compose.filebrowser.yml new file mode 100644 index 0000000..77ee84b --- /dev/null +++ b/docker-compose.filebrowser.yml @@ -0,0 +1,10 @@ +services: + filebrowser: + container_name: filebrowser + image: filebrowser/filebrowser:v2.28.0 + ports: + - 8001:80 + volumes: + - /opt/filebrowser/.filebrowser.json:/.filebrowser.json + - /opt/filebrowser/database.db:/database.db + - /media:/srv/host/media diff --git a/docker-compose.ghost.yml b/docker-compose.ghost.yml new file mode 100644 index 0000000..520d1ca --- /dev/null +++ b/docker-compose.ghost.yml @@ -0,0 +1,10 @@ +services: + ghost: + container_name: ghost + image: ghost:1.21.5 + ports: + - 2368:2368 + restart: unless-stopped + volumes: + - /opt/ghost/content:/var/lib/ghost/content + - /opt/ghost/etc/config.production.json:/var/lib/ghost/config.production.json diff --git a/docker-compose.grafana.yml b/docker-compose.grafana.yml new file mode 100644 index 0000000..becc193 --- /dev/null +++ b/docker-compose.grafana.yml @@ -0,0 +1,8 @@ +services: + grafana: + container_name: grafana + image: grafana/grafana:10.4.2 + ports: + - 3333:3000 + volumes: + - /opt/grafana:/var/lib/grafana diff --git a/docker-compose.homeassistant.yml b/docker-compose.homeassistant.yml new file mode 100644 index 0000000..d9f82bf --- /dev/null +++ b/docker-compose.homeassistant.yml @@ -0,0 +1,10 @@ +services: + homeassistant: + container_name: homeassistant + image: homeassistant/home-assistant:2024.4.3 + network_mode: host + privileged: true + restart: unless-stopped + volumes: + - /opt/homeassistant:/config + - /etc/localtime:/etc/localtime:ro diff --git a/docker-compose.influxdb.yml b/docker-compose.influxdb.yml new file mode 100644 index 0000000..fb63b9f --- /dev/null +++ b/docker-compose.influxdb.yml @@ -0,0 +1,9 @@ +services: + influxdb: + container_name: influxdb + image: influxdb:2.3.0 + ports: + - 8086:8086 + restart: unless-stopped + volumes: + - /opt/influxdb:/var/lib/influxdb2 diff --git a/docker-compose.jackett.yml b/docker-compose.jackett.yml new file mode 100644 index 0000000..59ace59 --- /dev/null +++ b/docker-compose.jackett.yml @@ -0,0 +1,16 @@ +services: + jackett: + container_name: jackett + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + external_links: + - transmission + image: linuxserver/jackett:v0.21.2371-ls368 + ports: + - 9117:9117 + restart: unless-stopped + volumes: + - /opt/jackett:/config + - /media/nubes/downloads:/downloads diff --git a/docker-compose.jellyfin.yml b/docker-compose.jellyfin.yml new file mode 100644 index 0000000..77c66af --- /dev/null +++ b/docker-compose.jellyfin.yml @@ -0,0 +1,18 @@ +services: + jellyfin: + container_name: jellyfin + devices: + - /dev/dri/renderD128:/dev/dri/renderD128 + image: linuxserver/jellyfin:10.10.1 + ports: + - 8097:8097 + restart: unless-stopped + 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 diff --git a/docker-compose.lidarr.yml b/docker-compose.lidarr.yml new file mode 100644 index 0000000..4d978ee --- /dev/null +++ b/docker-compose.lidarr.yml @@ -0,0 +1,21 @@ +services: + lidarr: + container_name: lidarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + external_links: + - transmission + extra_hosts: + - transmission:192.168.2.150 + image: linuxserver/lidarr:2.2.5.4141-ls165 + ports: + - 18686:8686 + restart: unless-stopped + volumes: + - /opt/lidarr:/config + - /media/nubes/downloads:/downloads + - /media/neptune/Music/Albums:/music + - /media/nubes/music:/stage + - /media/scratch/lidarr/MediaCover:/config/MediaCover diff --git a/docker-compose.lighttpd.yml b/docker-compose.lighttpd.yml new file mode 100644 index 0000000..4243c82 --- /dev/null +++ b/docker-compose.lighttpd.yml @@ -0,0 +1,12 @@ +services: + lighttpd: + container_name: lighttpd + image: sebp/lighttpd:1.4.64-r0 + ports: + - 80:81 + restart: unless-stopped + tty: true + volumes: + - /opt/lighttpd/etc:/host/etc + - /opt/lighttpd/var/log:/host/var/log + - /media/nubes/www:/host/var/www diff --git a/docker-compose.nginx.yml b/docker-compose.nginx.yml new file mode 100644 index 0000000..5362148 --- /dev/null +++ b/docker-compose.nginx.yml @@ -0,0 +1,12 @@ +services: + nginx: + container_name: nginx + extra_hosts: + - host:192.168.2.150 + image: nginx:1.25.4 + restart: unless-stopped + 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 diff --git a/docker-compose.openvpn-server.yml b/docker-compose.openvpn-server.yml new file mode 100644 index 0000000..4d4f306 --- /dev/null +++ b/docker-compose.openvpn-server.yml @@ -0,0 +1,16 @@ +services: + openvpn-server: + cap_add: + - NET_ADMIN + container_name: openvpn-server + extra_hosts: + - host:192.168.2.150 + image: kylemanna/openvpn:2.4 + network_mode: bridge + ports: + - 443:443 + privileged: true + restart: unless-stopped + volumes: + - /opt/openvpn-server:/etc/openvpn + - /opt/openvpn-server/logrotate.d/openvpn:/etc/logrotate.d/openvpn diff --git a/docker-compose.photoprism.yml b/docker-compose.photoprism.yml new file mode 100644 index 0000000..76d493b --- /dev/null +++ b/docker-compose.photoprism.yml @@ -0,0 +1,41 @@ +services: + photoprism: + container_name: photoprism + devices: + - /dev/dri:/dev/dri + environment: + - PHOTOPRISM_ADMIN_PASSWORD=insecure + - PHOTOPRISM_AUTH_MODE=password + - PHOTOPRISM_SITE_URL=https://photoprism.bram.veenboer.xyz/ + - PHOTOPRISM_ORIGINALS_LIMIT=5000 + - PHOTOPRISM_HTTP_COMPRESSION=gzip + - PHOTOPRISM_LOG_LEVEL=info + - PHOTOPRISM_READONLY=true + - PHOTOPRISM_EXPERIMENTAL=false + - PHOTOPRISM_DISABLE_CHOWN=true + - PHOTOPRISM_DISABLE_WEBDAV=true + - PHOTOPRISM_DISABLE_SETTINGS=false + - PHOTOPRISM_DISABLE_TENSORFLOW=false + - PHOTOPRISM_DISABLE_FACES=false + - PHOTOPRISM_DISABLE_CLASSIFICATION=false + - PHOTOPRISM_DISABLE_RAW=true + - PHOTOPRISM_RAW_PRESETS=false + - PHOTOPRISM_JPEG_QUALITY=85 + - PHOTOPRISM_DETECT_NSFW=false + - PHOTOPRISM_UPLOAD_NSFW=true + - PHOTOPRISM_DATABASE_DRIVER=sqlite + - PHOTOPRISM_UID=1000 + - PHOTOPRISM_GID=1000 + image: photoprism/photoprism:231128 + ports: + - 2342:2342 + restart: unless-stopped + 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 diff --git a/docker-compose.plik.yml b/docker-compose.plik.yml new file mode 100644 index 0000000..55e1bce --- /dev/null +++ b/docker-compose.plik.yml @@ -0,0 +1,10 @@ +services: + plik: + container_name: plik + image: rootgg/plik:1.3.8 + ports: + - 8087:8080 + restart: unless-stopped + volumes: + - /opt/plik/plikd.cfg:/home/plik/server/plikd.cfg + - /opt/plik/files:/home/plik/server/files diff --git a/docker-compose.radarr.yml b/docker-compose.radarr.yml new file mode 100644 index 0000000..123f06f --- /dev/null +++ b/docker-compose.radarr.yml @@ -0,0 +1,19 @@ +services: + radarr: + container_name: radarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + external_links: + - transmission + extra_hosts: + - transmission:192.168.2.150 + image: linuxserver/radarr:5.4.6.8723-ls213 + ports: + - 17878:7878 + restart: unless-stopped + volumes: + - /opt/radarr:/config + - /media/nubes/downloads:/downloads + - /media/neptune/Video/Movies:/movies diff --git a/docker-compose.rsnapshot.yml b/docker-compose.rsnapshot.yml new file mode 100644 index 0000000..63720e5 --- /dev/null +++ b/docker-compose.rsnapshot.yml @@ -0,0 +1,13 @@ +services: + rsnapshot: + container_name: rsnapshot + image: linuxserver/rsnapshot:1.4.5 + restart: unless-stopped + 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 + - /media/jupiter/rsnapshot:/host/scratch + - /root/.ssh:/root/.ssh diff --git a/docker-compose.seafile.yml b/docker-compose.seafile.yml new file mode 100644 index 0000000..d709d51 --- /dev/null +++ b/docker-compose.seafile.yml @@ -0,0 +1,14 @@ +services: + seafile: + container_name: seafile + environment: + - MODE=autorun + image: gronis/seafile:10.0.1 + ports: + - 8100:8000 + - 8180:8080 + - 8182:8082 + restart: unless-stopped + volumes: + - /opt/seafile:/seafile:rw + - /media/seafile:/seafile/seafile-data:rw diff --git a/docker-compose.sonarr.yml b/docker-compose.sonarr.yml new file mode 100644 index 0000000..b1771fe --- /dev/null +++ b/docker-compose.sonarr.yml @@ -0,0 +1,19 @@ +services: + sonarr: + container_name: sonarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + external_links: + - transmission + extra_hosts: + - transmission:192.168.2.150 + image: linuxserver/sonarr:4.0.4.1491-ls236 + ports: + - 18989:8989 + restart: unless-stopped + volumes: + - /opt/sonarr:/config + - /media/nubes/downloads:/downloads + - /media/neptune/Video/Shows:/tv diff --git a/docker-compose.surfshark.yml b/docker-compose.surfshark.yml new file mode 100644 index 0000000..bd57044 --- /dev/null +++ b/docker-compose.surfshark.yml @@ -0,0 +1,21 @@ +services: + surfshark: + cap_add: + - NET_ADMIN + container_name: surfshark + devices: + - /dev/net/tun + dns: + - 1.1.1.1 + environment: + - SURFSHARK_USER=${SURFSHARK_USER:?} + - SURFSHARK_PASSWORD=${SURFSHARK_PASSWORD:?} + - SURFSHARK_COUNTRY=nl + - SURFSHARK_CITY=ams + - CONNECTION_TYPE=udp + - LAN_NETWORK= + image: ilteoood/docker-surfshark:1.7.2 + ports: + - 1080:1080 + - 9091:9091 + restart: unless-stopped diff --git a/docker-compose.timescaledb.yml b/docker-compose.timescaledb.yml new file mode 100644 index 0000000..af61cf2 --- /dev/null +++ b/docker-compose.timescaledb.yml @@ -0,0 +1,11 @@ +services: + timescaledb: + container_name: timescaledb + environment: + - POSTGRES_USER=timescaleuser + - POSTGRES_PASSWORD=timescalepwd + image: timescale/timescaledb:2.7.1-pg14 + ports: + - 6543:5432 + volumes: + - /opt/timescaledb:/var/lib/postgresql/data diff --git a/docker-compose.transmission.yml b/docker-compose.transmission.yml new file mode 100644 index 0000000..4e52d9d --- /dev/null +++ b/docker-compose.transmission.yml @@ -0,0 +1,15 @@ +services: + transmission: + container_name: transmission + depends_on: + - surfshark + environment: + - PUID=1000 + - PGID=1000 + image: linuxserver/transmission:4.0.6-r0-ls259 + network_mode: service:surfshark + restart: unless-stopped + volumes: + - /opt/transmission:/config + - /media/nubes/torrents:/watch + - /media/nubes/downloads:/downloads diff --git a/docker-compose.yml b/docker-compose.yml index 85ab49a..5ca69d4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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