From 749e9898e20e0c5f3bcfa49b0fbae8f70225e7a0 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Thu, 14 Nov 2024 14:10:22 +0100 Subject: [PATCH] add docker compose files --- docker-compose.authentik.yml | 80 +++++++++++++++++++++++++++++++ docker-compose.bazarr.yml | 17 +++++++ docker-compose.borgmatic.yml | 20 ++++++++ docker-compose.caddy.yml | 21 ++++++++ docker-compose.dns-ad-blocker.yml | 20 ++++++++ docker-compose.droppy.yml | 10 ++++ docker-compose.dsmr.yml | 29 +++++++++++ docker-compose.esphome.yml | 10 ++++ docker-compose.filebrowser.yml | 14 ++++++ docker-compose.grafana.yml | 9 ++++ docker-compose.homarr.yml | 14 ++++++ docker-compose.homeassistant.yml | 10 ++++ docker-compose.influxdb.yml | 10 ++++ docker-compose.jackett.yml | 16 +++++++ docker-compose.jellyfin.yml | 19 ++++++++ docker-compose.jellyseerr.yml | 11 +++++ docker-compose.lighttpd.yml | 10 ++++ docker-compose.minio.yml | 21 ++++++++ docker-compose.mosquitto.yml | 12 +++++ docker-compose.nginx.yml | 15 ++++++ docker-compose.openvpn-server.yml | 16 +++++++ docker-compose.pgadmin.yml | 13 +++++ docker-compose.photoprism.yml | 55 +++++++++++++++++++++ docker-compose.postgis.yml | 13 +++++ docker-compose.qbittorrent.yml | 16 +++++++ docker-compose.radarr.yml | 22 +++++++++ docker-compose.rsnapshot.yml | 14 ++++++ docker-compose.seafile.yml | 14 ++++++ docker-compose.sonarr.yml | 19 ++++++++ docker-compose.surfshark.yml | 24 ++++++++++ docker-compose.timescaledb.yml | 12 +++++ docker-compose.transmission.yml | 16 +++++++ docker-compose.vouch.yml | 58 ++++++++++++++++++++++ docker-compose.yml | 57 ++++++++++++++++++++++ 34 files changed, 717 insertions(+) create mode 100644 docker-compose.authentik.yml 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.dns-ad-blocker.yml create mode 100644 docker-compose.droppy.yml create mode 100644 docker-compose.dsmr.yml create mode 100644 docker-compose.esphome.yml create mode 100644 docker-compose.filebrowser.yml create mode 100644 docker-compose.grafana.yml create mode 100644 docker-compose.homarr.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.jellyseerr.yml create mode 100644 docker-compose.lighttpd.yml create mode 100644 docker-compose.minio.yml create mode 100644 docker-compose.mosquitto.yml create mode 100644 docker-compose.nginx.yml create mode 100644 docker-compose.openvpn-server.yml create mode 100644 docker-compose.pgadmin.yml create mode 100644 docker-compose.photoprism.yml create mode 100644 docker-compose.postgis.yml create mode 100644 docker-compose.qbittorrent.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 create mode 100644 docker-compose.vouch.yml create mode 100644 docker-compose.yml diff --git a/docker-compose.authentik.yml b/docker-compose.authentik.yml new file mode 100644 index 0000000..b5b0e26 --- /dev/null +++ b/docker-compose.authentik.yml @@ -0,0 +1,80 @@ +services: + authentik-postgresql: + image: docker.io/library/postgres:16-alpine + container_name: authentik-postgresql + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 5s + volumes: + - /opt/authentik/database:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: ${PG_PASS} + POSTGRES_USER: ${PG_USER:-authentik} + POSTGRES_DB: ${PG_DB:-authentik} + env_file: + - /opt/authentik/.env + + authentik-redis: + image: docker.io/library/redis:alpine + container_name: authentik-redis + command: --save 60 1 --loglevel warning + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + volumes: + - /opt/authentik/redis:/data + + authentik-server: + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.1} + container_name: authentik-server + restart: unless-stopped + command: server + environment: + AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY} + AUTHENTIK_REDIS__HOST: authentik-redis + AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + volumes: + - /opt/authentik/media:/media + - /opt/authentik/templates:/templates + env_file: + - /opt/authentik/.env + ports: + - "${COMPOSE_PORT_HTTP:-9000}:9000" + - "${COMPOSE_PORT_HTTPS:-9443}:9443" + depends_on: + - authentik-postgresql + - authentik-redis + extra_hosts: + - host:192.168.2.200 + + authentik-worker: + image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.10.1} + container_name: authentik-worker + restart: unless-stopped + command: worker + environment: + AUTHENTIK_REDIS__HOST: authentik-redis + AUTHENTIK_POSTGRESQL__HOST: authentik-postgresql + AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} + AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} + AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} + volumes: + - /opt/authentik/media:/media + - /opt/authentik/certs:/certs + - /opt/authentik/templates:/templates + env_file: + - /opt/authentik/.env + depends_on: + - authentik-postgresql + - authentik-redis diff --git a/docker-compose.bazarr.yml b/docker-compose.bazarr.yml new file mode 100644 index 0000000..acb47ac --- /dev/null +++ b/docker-compose.bazarr.yml @@ -0,0 +1,17 @@ +services: + bazarr: + container_name: bazarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + extra_hosts: + - host:192.168.2.200 + image: linuxserver/bazarr:1.4.2 + ports: + - 16767:6767 + restart: unless-stopped + volumes: + - /opt/bazarr:/config + - /mnt/yotta/krypton/Movies:/movies + - /mnt/yotta/krypton/Shows:/tv diff --git a/docker-compose.borgmatic.yml b/docker-compose.borgmatic.yml new file mode 100644 index 0000000..b5feee6 --- /dev/null +++ b/docker-compose.borgmatic.yml @@ -0,0 +1,20 @@ +services: + borgmatic: + container_name: borgmatic + environment: + - TZ=Europe/Amsterdam + - BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK=yes + image: b3vis/borgmatic:v1.1.10-1.4.21 + privileged: true + restart: unless-stopped + volumes: + - /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 + - /root/.ssh:/root/.ssh + - /mnt/yotta/xenon/borg:/repo + - /mnt/yotta/xenon/manual:/manual + - /:/shuttle + - /dev/fuse:/dev/fuse diff --git a/docker-compose.caddy.yml b/docker-compose.caddy.yml new file mode 100644 index 0000000..0c8dfa7 --- /dev/null +++ b/docker-compose.caddy.yml @@ -0,0 +1,21 @@ +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 + extra_hosts: + - host:192.168.2.200 diff --git a/docker-compose.dns-ad-blocker.yml b/docker-compose.dns-ad-blocker.yml new file mode 100644 index 0000000..27f63f5 --- /dev/null +++ b/docker-compose.dns-ad-blocker.yml @@ -0,0 +1,20 @@ +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 + - WHITELIST=api.segment.io,www.googleapis.com,analytics.google.com + image: oznu/dns-ad-blocker:latest + ports: + - 192.168.2.201:53:53/udp + restart: unless-stopped + volumes: + - /opt/dns-ad-blocker/config:/config + - /opt/dns-ad-blocker/run:/etc/services.d/dnsmasq/run + - /opt/dns-ad-blocker/var/log:/var/log + - /opt/dns-ad-blocker/dnsmasq.hosts:/etc/dnsmasq.hosts diff --git a/docker-compose.droppy.yml b/docker-compose.droppy.yml new file mode 100644 index 0000000..d7a63c6 --- /dev/null +++ b/docker-compose.droppy.yml @@ -0,0 +1,10 @@ +services: + droppy: + container_name: droppy + image: silverwind/droppy:11.1.0 + ports: + - 8989:8989 + restart: unless-stopped + volumes: + - /opt/droppy:/config + - /media/scratch/droppy:/files diff --git a/docker-compose.dsmr.yml b/docker-compose.dsmr.yml new file mode 100644 index 0000000..e9897f3 --- /dev/null +++ b/docker-compose.dsmr.yml @@ -0,0 +1,29 @@ +services: + dsmr: + container_name: dsmr + depends_on: + - dsmrdb + - influxdb + environment: + - DSMRREADER_ADMIN_USER="${DSMRREADER_USER:?}" + - DSMRREADER_ADMIN_PASSWORD="${DSMRREADER_PASSWORD:?}" + image: xirixiz/dsmr-reader-docker:5.10.3-2023.04.02 + links: + - dsmrdb:dsmrreader + ports: + - 8888:80 + restart: unless-stopped + volumes: + - /opt/dsmr/backups:/home/dsmr/app/backups + dsmrdb: + container_name: dsmrdb + environment: + - POSTGRES_DB="${DSMRDB_DATABASE:?}" + - POSTGRES_USER="${DSMRDB_USER:?}" + - POSTGRES_PASSWORD="${DSMRDB_PASSWORD:?}" + image: postgres:13.7 + ports: + - 5432:5432 + 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..78abd4a --- /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.filebrowser.yml b/docker-compose.filebrowser.yml new file mode 100644 index 0000000..d5528b2 --- /dev/null +++ b/docker-compose.filebrowser.yml @@ -0,0 +1,14 @@ +services: + filebrowser: + container_name: filebrowser + image: filebrowser/filebrowser:v2.1.0 + ports: + - 8002:80 + restart: unless-stopped + volumes: + - /opt/filebrowser/.filebrowser.json:/.filebrowser.json + - /opt/filebrowser/database.db:/database.db + - /mnt/yotta/helium/personal:/host/media/Personal + - /mnt/yotta/helium/shared:/host/media/Shared + - /mnt/yotta/neon:/host/media/Other + - /mnt/yotta/krypton:/host/media/Video diff --git a/docker-compose.grafana.yml b/docker-compose.grafana.yml new file mode 100644 index 0000000..4bf05d9 --- /dev/null +++ b/docker-compose.grafana.yml @@ -0,0 +1,9 @@ +services: + grafana: + container_name: grafana + image: grafana/grafana:9.0.2 + ports: + - 3333:3000 + restart: unless-stopped + volumes: + - /opt/grafana:/var/lib/grafana diff --git a/docker-compose.homarr.yml b/docker-compose.homarr.yml new file mode 100644 index 0000000..e4ab68d --- /dev/null +++ b/docker-compose.homarr.yml @@ -0,0 +1,14 @@ +services: + homarr: + container_name: homarr + environment: + - TZ=Europe/Amsterdam + image: ghcr.io/ajnart/homarr:0.15.2 + ports: + - 17575:7575 + restart: unless-stopped + volumes: + - /opt/homarr/data:/data + - /opt/homarr/configs:/app/data/configs + - /opt/homarr/icons:/app/public/icons + - /var/run/docker.sock:/var/run/docker.sock diff --git a/docker-compose.homeassistant.yml b/docker-compose.homeassistant.yml new file mode 100644 index 0000000..4943b0f --- /dev/null +++ b/docker-compose.homeassistant.yml @@ -0,0 +1,10 @@ +services: + homeassistant: + container_name: homeassistant + image: homeassistant/home-assistant:2024.10 + 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..484f7ac --- /dev/null +++ b/docker-compose.influxdb.yml @@ -0,0 +1,10 @@ +services: + influxdb: + container_name: influxdb + image: influxdb:2.3.0 + ports: + - 8086:8086 + restart: unless-stopped + volumes: + - /mnt/mezzo/scratch/influxdb:/var/lib/influxdb2 + - /opt/gw2pvo:/opt/gw2pvo diff --git a/docker-compose.jackett.yml b/docker-compose.jackett.yml new file mode 100644 index 0000000..01e1da3 --- /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 + - qbittorrent + image: linuxserver/jackett:0.20.216 + ports: + - 9117:9117 + restart: unless-stopped + volumes: + - /opt/jackett:/config diff --git a/docker-compose.jellyfin.yml b/docker-compose.jellyfin.yml new file mode 100644 index 0000000..e8afc4f --- /dev/null +++ b/docker-compose.jellyfin.yml @@ -0,0 +1,19 @@ +services: + jellyfin: + container_name: jellyfin + devices: + - /dev/dri/renderD128:/dev/dri/renderD128 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + image: linuxserver/jellyfin:10.10.1 + ports: + - 8097:8097 + restart: unless-stopped + volumes: + - /opt/jellyfin/config:/config + - /opt/cache:/cache + - /mnt/yotta/krypton/Movies:/host/srv/movies + - /mnt/yotta/krypton/Shows:/host/srv/shows + - /mnt/yotta/neon/Music/Albums:/host/srv/music diff --git a/docker-compose.jellyseerr.yml b/docker-compose.jellyseerr.yml new file mode 100644 index 0000000..890f671 --- /dev/null +++ b/docker-compose.jellyseerr.yml @@ -0,0 +1,11 @@ +services: + jellyseerr: + container_name: jellyseerr + environment: + - TZ=Europe/Amsterdam + image: fallenbagel/jellyseerr:1.5.0 + ports: + - 15055:5055 + restart: unless-stopped + volumes: + - /opt/jellyseerr:/app/config diff --git a/docker-compose.lighttpd.yml b/docker-compose.lighttpd.yml new file mode 100644 index 0000000..5f05e9b --- /dev/null +++ b/docker-compose.lighttpd.yml @@ -0,0 +1,10 @@ +services: + lighttpd: + container_name: lighttpd + image: sebp/lighttpd:1.4.64-r0 + ports: + - 80:80 + restart: unless-stopped + tty: true + volumes: + - /home/user/www:/var/www/localhost/htdocs diff --git a/docker-compose.minio.yml b/docker-compose.minio.yml new file mode 100644 index 0000000..65bf6ee --- /dev/null +++ b/docker-compose.minio.yml @@ -0,0 +1,21 @@ +services: + minio: + command: server /data --console-address ":9001" + container_name: minio + environment: + - MINIO_ROOT_USER="${MINIO_ROOT_USER:?} + - MINIO_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD:?} + healthcheck: + interval: 30s + retries: 3 + test: + - CMD + - curl + - -f + - http://localhost:9000/minio/health/live + timeout: 20s + image: minio/minio + ports: + - 9000:9000 + - 9001:9001 + restart: unless-stopped diff --git a/docker-compose.mosquitto.yml b/docker-compose.mosquitto.yml new file mode 100644 index 0000000..3e70df7 --- /dev/null +++ b/docker-compose.mosquitto.yml @@ -0,0 +1,12 @@ +services: + mosquitto: + container_name: mosquitto + image: eclipse-mosquitto:2.0.15 + ports: + - 1883:1883 + - 1884:1884 + restart: unless-stopped + volumes: + - /opt/mosquitto/config:/mosquitto/config + - /opt/mosquitto/data:/mosquitto/data + - /opt/mosquitto/log:/mosquitto/log diff --git a/docker-compose.nginx.yml b/docker-compose.nginx.yml new file mode 100644 index 0000000..e375456 --- /dev/null +++ b/docker-compose.nginx.yml @@ -0,0 +1,15 @@ +services: + nginx: + container_name: nginx + extra_hosts: + - host:192.168.2.200 + image: nginx:1.25.4 + ports: + - 20080:80 + restart: unless-stopped + volumes: + - /opt/nginx/etc/.htpasswd:/host/etc/.htpasswd + - /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..a10a56c --- /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.200 + 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.pgadmin.yml b/docker-compose.pgadmin.yml new file mode 100644 index 0000000..634c40e --- /dev/null +++ b/docker-compose.pgadmin.yml @@ -0,0 +1,13 @@ +services: + pgadmin: + container_name: pgadmin + environment: + - PGADMIN_DEFAULT_EMAIL="${PGADMIN_EMAIL:?}" + - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD:?}" + image: dpage/pgadmin4:7.5 + ports: + - 5050:80 + restart: unless-stopped + volumes: + - /opt/pgadmin/var:/var/lib/pgadmin + - /opt/pgadmin/log:/var/log/pgadmin diff --git a/docker-compose.photoprism.yml b/docker-compose.photoprism.yml new file mode 100644 index 0000000..a94e60c --- /dev/null +++ b/docker-compose.photoprism.yml @@ -0,0 +1,55 @@ +services: + photoprism: + container_name: photoprism + devices: + - /dev/dri:/dev/dri + environment: + - PHOTOPRISM_ADMIN_PASSWORD="${PHOTOPRISM_ADMIN_PASSWORD:?}" + - PHOTOPRISM_AUTH_MODE=password + - PHOTOPRISM_SITE_URL=http://localhost:2342/ + - 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:230719 + ports: + - 2342:2342 + restart: unless-stopped + security_opt: + - seccomp:unconfined + - apparmor:unconfined + volumes: + - /opt/photoprism:/photoprism/storage + - /opt/photoprism/originals:/photoprism/originals/ + - /mnt/yotta/radon/photoprism:/photoprism/storage/cache + - /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Denemarken + 2022:/photoprism/originals/Shared/Vakantie/Peter + Monique + Rik + Bram/Denemarken + 2022 + - /mnt/yotta/helium/shared/Photographs/Vakantie/Familie/Ierland 2022:/photoprism/originals/Shared/Vakantie/Familie/Ierland + 2022 + - /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Schotland + 2022:/photoprism/originals/Shared/Vakantie/Peter + Monique + Rik + Bram/Schotland + 2022 + - /mnt/yotta/helium/shared/Photographs/Vakantie/Bram + Rik + Sanne/Kroatie + 2023:/photoprism/originals/Shared/Vakantie/Bram + Rik + Sanne/Kroatie + 2023 + - /mnt/yotta/helium/shared/Photographs/Vakantie/Peter + Monique + Rik + Bram/Zweden + 2023:/photoprism/originals/Vakantie/Peter + Monique + Rik + Bram/Zweden + 2023 + - /mnt/yotta/helium/shared/Photographs/Vakantie/Bram + Rik/Athene 2023:/photoprism/originals/Vakantie/Bram + + Rik/Athene 2023 diff --git a/docker-compose.postgis.yml b/docker-compose.postgis.yml new file mode 100644 index 0000000..c41e3a5 --- /dev/null +++ b/docker-compose.postgis.yml @@ -0,0 +1,13 @@ +services: + postgis: + container_name: postgis + environment: + - POSTGRES_DB="${POSTGIS_DATABASE:?}" + - POSTGRES_USER="${POSTGIS_USER:?}" + - POSTGRES_PASSWORD="${POSTGIS_PASSWORD:?}" + image: postgis/postgis:14-3.2 + ports: + - 7654:5432 + restart: unless-stopped + volumes: + - /opt/postgis:/var/lib/postgresql/data diff --git a/docker-compose.qbittorrent.yml b/docker-compose.qbittorrent.yml new file mode 100644 index 0000000..e0266f4 --- /dev/null +++ b/docker-compose.qbittorrent.yml @@ -0,0 +1,16 @@ +services: + qbittorrent: + container_name: qbittorrent + image: linuxserver/qbittorrent:5.0.1 + depends_on: + - surfshark + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + - WEBUI_PORT=9092 + network_mode: service:surfshark + restart: unless-stopped + volumes: + - /opt/qbittorrent:/config + - /media/scratch/qbittorrent:/downloads diff --git a/docker-compose.radarr.yml b/docker-compose.radarr.yml new file mode 100644 index 0000000..ea0a143 --- /dev/null +++ b/docker-compose.radarr.yml @@ -0,0 +1,22 @@ +services: + radarr: + container_name: radarr + image: linuxserver/radarr:5.14.0 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + external_links: + - transmission + - qbittorrent + extra_hosts: + - transmission:192.168.2.200 + - qbittorrent:192.168.2.200 + ports: + - 17878:7878 + restart: unless-stopped + volumes: + - /opt/radarr:/config + - /media/scratch/transmission:/downloads/transmission + - /media/scratch/qbittorrent:/downloads/qbittorrent + - /mnt/yotta/krypton/Movies:/movies diff --git a/docker-compose.rsnapshot.yml b/docker-compose.rsnapshot.yml new file mode 100644 index 0000000..d525e69 --- /dev/null +++ b/docker-compose.rsnapshot.yml @@ -0,0 +1,14 @@ +services: + rsnapshot: + container_name: rsnapshot + image: linuxserver/rsnapshot:1.4.4 + 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 + - /opt/host_aliases:/host/etc/host_aliases + - /mnt/yotta/xenon/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..1b22619 --- /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 + - /media/sync/seafile:/seafile/seafile-data diff --git a/docker-compose.sonarr.yml b/docker-compose.sonarr.yml new file mode 100644 index 0000000..f2f8b37 --- /dev/null +++ b/docker-compose.sonarr.yml @@ -0,0 +1,19 @@ +services: + sonarr: + image: linuxserver/sonarr:4.0.10 + container_name: sonarr + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + external_links: + - transmission + extra_hosts: + - transmission:192.168.2.200 + ports: + - 18989:8989 + restart: unless-stopped + volumes: + - /opt/sonarr:/config + - /media/scratch/transmission:/downloads + - /mnt/yotta/krypton/Shows:/tv diff --git a/docker-compose.surfshark.yml b/docker-compose.surfshark.yml new file mode 100644 index 0000000..085321d --- /dev/null +++ b/docker-compose.surfshark.yml @@ -0,0 +1,24 @@ +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 + - 9092:9092 + - 6881:6881 + - 6881:6881/udp + restart: unless-stopped diff --git a/docker-compose.timescaledb.yml b/docker-compose.timescaledb.yml new file mode 100644 index 0000000..5b27b51 --- /dev/null +++ b/docker-compose.timescaledb.yml @@ -0,0 +1,12 @@ +services: + timescaledb: + container_name: timescaledb + environment: + - POSTGRES_USER="${TIMESCALEDB_USER:?}" + - POSTGRES_PASSWORD="${TIMESCALEDB_PASSWORD:?}" + image: timescale/timescaledb:2.7.1-pg14 + ports: + - 6543:5432 + restart: unless-stopped + volumes: + - /mnt/mezzo/scratch/timescaledb:/var/lib/postgresql/data diff --git a/docker-compose.transmission.yml b/docker-compose.transmission.yml new file mode 100644 index 0000000..eabf4a8 --- /dev/null +++ b/docker-compose.transmission.yml @@ -0,0 +1,16 @@ +services: + transmission: + container_name: transmission + image: linuxserver/transmission:4.0.6 + depends_on: + - surfshark + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Amsterdam + network_mode: service:surfshark + restart: unless-stopped + volumes: + - /opt/transmission:/config + - /media/scratch/torrents:/watch + - /media/scratch/transmission:/downloads diff --git a/docker-compose.vouch.yml b/docker-compose.vouch.yml new file mode 100644 index 0000000..76cf9c9 --- /dev/null +++ b/docker-compose.vouch.yml @@ -0,0 +1,58 @@ +services: + vouch: + image: quay.io/vouch/vouch-proxy:alpine-0.41.0 + container_name: vouch + ports: + - 9090:9090 + environment: + # Google + # - OAUTH_PROVIDER=google + # - OAUTH_CLIENT_ID=889676430308-ivr6b4fmneivn70ri2ugm1gkbgoh5qdq.apps.googleusercontent.com + # - OAUTH_CLIENT_SECRET=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 + # - https://www.googleapis.com/oauth2/v3/userinfo + + # Google + # - OAUTH_PROVIDER=oidc + # - OAUTH_CLIENT_ID=889676430308-ivr6b4fmneivn70ri2ugm1gkbgoh5qdq.apps.googleusercontent.com + # - OAUTH_CLIENT_SECRET=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 + # - OAUTH_AUTH_URL=https://accounts.google.com/o/oauth2/auth + # - OAUTH_TOKEN_URL=https://accounts.google.com/o/oauth2/token + # - OAUTH_USER_INFO_URL=https://www.googleapis.com/oauth2/v3/userinfo + + # Amazon + # - OAUTH_PROVIDER=oidc + # - OAUTH_CLIENT_ID=793k18vvmiooosv5j4dd0bkqi + # - OAUTH_CLIENT_SECRET=ccpsr589kufadbmi7ac6kgi3gaftc4cqkm3pi627tsidmbsk1lj + # - OAUTH_AUTH_URL=https://veenboer.auth.eu-central-1.amazoncognito.com/oauth2/authorize + # - OAUTH_TOKEN_URL=https://veenboer.auth.eu-central-1.amazoncognito.com/oauth2/token + # - OAUTH_USER_INFO_URL=https://veenboer.auth.eu-central-1.amazoncognito.com/oauth2/userInfo + + # Microsoft + # - OAUTH_PROVIDER=oidc + # - OAUTH_CLIENT_ID=2483d0ed-95a1-4ca1-ae72-a79ca6defd96 + # - OAUTH_CLIENT_SECRET=x8V8Q~vklpp75~xwMRzAuNa4NQ7K8gNEAAsx-cTZ + # - OAUTH_AUTH_URL=https://login.microsoftonline.com/common/oauth2/v2.0/authorize + # - OAUTH_TOKEN_URL=https://login.microsoftonline.com/common/oauth2/v2.0/token + # - OAUTH_USER_INFO_URL=https://graph.microsoft.com/oidc/userinfo + + # Authentik + - OAUTH_PROVIDER=oidc + - OAUTH_CLIENT_ID=MJJ44TzracJ8J24xVsUvO12KvAbzxiev9G0t9sYl + - OAUTH_CLIENT_SECRET=vrUGfNfqzooKujOyvTLDZffOTakEgNeCIlILaBU2aF9QtaDHJWaYVY3MLGlkF2jlFFn4W0a1eSJcZpJMxojO4i7U6b9CqbdTr5Al2LvK3FQnFbViUn2MN0qKibv8VVO1 + - OAUTH_AUTH_URL=https://authentik.rik.veenboer.xyz/application/o/authorize/ + - OAUTH_TOKEN_URL=https://authentik.rik.veenboer.xyz/application/o/token/ + - OAUTH_USER_INFO_URL=https://authentik.rik.veenboer.xyz/application/o/userinfo/ + + # General + - OAUTH_CALLBACK_URL=https://vouch.rik.veenboer.xyz/auth + - OAUTH_SCOPES=openid,profile,email + - VOUCH_COOKIE_DOMAIN=veenboer.xyz + - VOUCH_ALLOWALLUSERS=true + - VOUCH_HEADERS_CLAIMS=email,preferred_username + + # Unused + # - VOUCH_COOKIE_SECURE=false + # - VOUCH_HEADERS_CLAIMS=sub,name,email + # - OAUTH_CLAIMS=sub,name,email + # - VOUCH_HEADERS_IDTOKEN=X-Vouch-IdP-IdToken + restart: unless-stopped diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..2682b6d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,57 @@ +include: +# Web +- docker-compose.caddy.yml +- docker-compose.lighttpd.yml +- docker-compose.nginx.yml + +# Authentication +- docker-compose.authentik.yml +- docker-compose.vouch.yml + +# Other +- docker-compose.homarr.yml +- docker-compose.homeassistant.yml +- docker-compose.grafana.yml +- docker-compose.photoprism.yml + +# Download +- docker-compose.jackett.yml +- docker-compose.transmission.yml +- docker-compose.qbittorrent.yml + +# Media +- docker-compose.radarr.yml +- docker-compose.sonarr.yml +- docker-compose.bazarr.yml +- docker-compose.jellyseerr.yml +- docker-compose.jellyfin.yml + +# Networking +- docker-compose.surfshark.yml +- docker-compose.openvpn-server.yml +- docker-compose.dns-ad-blocker.yml + +# Backup +- docker-compose.rsnapshot.yml +- docker-compose.borgmatic.yml + +# Sensors +- docker-compose.dsmr.yml +- docker-compose.esphome.yml +- docker-compose.mosquitto.yml + +# Storage +- docker-compose.seafile.yml +- docker-compose.filebrowser.yml +- docker-compose.droppy.yml +- docker-compose.minio.yml + +# Database +- docker-compose.pgadmin.yml +- docker-compose.postgis.yml +- docker-compose.timescaledb.yml +- docker-compose.influxdb.yml + +networks: + vpn: + driver: bridge