From f7d08333f1fe17db6ceef82570466b2efe0cbfdd Mon Sep 17 00:00:00 2001 From: James Wampler Date: Thu, 26 Mar 2026 18:02:59 -0700 Subject: [PATCH] Updated docker configs --- actual/compose.yml | 6 ++++ caddy/.env | 1 + caddy/compose.yml | 29 +++++++++++++++ caddy/conf/Caddyfile | 44 +++++++++++++++++++++++ calibre-web/compose.yml | 22 ++++++++++++ cloudflare-ddns/compose.yml | 34 ++++++++++++++++++ flaresolverr/compose.yml | 18 ---------- gitea/compose.yml | 20 +++++++++++ immich/.env | 6 ++++ immich/compose.yml | 72 +++++++++++++++++++++++++++++++++++++ pia-qbittorrent/compose.yml | 32 +++++++++++++++++ prowlarr/compose.yml | 6 ++++ radarr/compose.yml | 6 ++++ sonarr/compose.yml | 6 ++++ stash/compose.yml | 47 ++++++++++++++++++++++++ vaultwarden/compose.yml | 20 +++++++++++ 16 files changed, 351 insertions(+), 18 deletions(-) create mode 100644 caddy/.env create mode 100644 caddy/compose.yml create mode 100755 caddy/conf/Caddyfile create mode 100644 calibre-web/compose.yml create mode 100644 cloudflare-ddns/compose.yml delete mode 100644 flaresolverr/compose.yml create mode 100644 gitea/compose.yml create mode 100644 immich/.env create mode 100644 immich/compose.yml create mode 100644 pia-qbittorrent/compose.yml create mode 100644 stash/compose.yml create mode 100644 vaultwarden/compose.yml diff --git a/actual/compose.yml b/actual/compose.yml index 756415b..76cb1cc 100644 --- a/actual/compose.yml +++ b/actual/compose.yml @@ -27,3 +27,9 @@ services: retries: 3 start_period: 20s restart: unless-stopped + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/caddy/.env b/caddy/.env new file mode 100644 index 0000000..2b9dbc9 --- /dev/null +++ b/caddy/.env @@ -0,0 +1 @@ +CLOUDFLARE_API_TOKEN=cfut_izUGIHU9xj7cM7rR0QWSD6QNuo4SOp3ZnUlSuC1xf9f35b0c diff --git a/caddy/compose.yml b/caddy/compose.yml new file mode 100644 index 0000000..901bddb --- /dev/null +++ b/caddy/compose.yml @@ -0,0 +1,29 @@ +services: + caddy: + build: ../../caddy-dns-cloudflare + container_name: caddy + restart: unless-stopped + cap_add: + - NET_ADMIN + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Los_Angeles + - CLOUDFLARE_API_TOKEN=cfat_yPhy6H6v3Yr83YdNuJQeS4lgfxzd7X2U1OpMX4gp07cf50fe + ports: + - "80:80" + - "443:443" + - "443:443/udp" + extra_hosts: + - "host.docker.internal:host-gateway" + volumes: + - ./conf:/etc/caddy + - /mnt/storage/apps/caddy/data:/data + - /mnt/storage/apps/caddy/config:/config + networks: + - proxy + +networks: + proxy: + name: proxy + external: true diff --git a/caddy/conf/Caddyfile b/caddy/conf/Caddyfile new file mode 100755 index 0000000..67fbe59 --- /dev/null +++ b/caddy/conf/Caddyfile @@ -0,0 +1,44 @@ +{ + email james@wampler.us +} + +*.wampler.us { + tls { + dns cloudflare {env.CLOUDFLARE_API_TOKEN} + resolvers 1.1.1.1 + } + + @sonarr host tv.wampler.us + handle @sonarr { + encode gzip + reverse_proxy sonarr:8989 + } + + @radarr host movies.wampler.us + handle @radarr { + encode gzip + reverse_proxy radarr:7878 + } + + @vaultwarden host vault.wampler.us + handle @vaultwarden { + encode gzip + reverse_proxy vaultwarden:80 + } + + @gitea host git.wampler.us + handle @gitea { + encode gzip + reverse_proxy gitea:3000 + } + + @qbittorrent host seed.wampler.us + handle @qbittorrent { + encode gzip + reverse_proxy host.docker.internal:8112 + } +} + +localhost { + respond "Hello, world!" +} diff --git a/calibre-web/compose.yml b/calibre-web/compose.yml new file mode 100644 index 0000000..dbd6113 --- /dev/null +++ b/calibre-web/compose.yml @@ -0,0 +1,22 @@ +services: + calibre-web: + image: lscr.io/linuxserver/calibre-web:latest + container_name: calibre-web + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Los_Angeles + - DOCKER_MODS=linuxserver/mods:universal-calibre #optional + - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional + volumes: + - /mnt/storage/apps/calibre-web/data:/config + - /mnt/storage/media/ebooks:/books + ports: + - 8083:8083 + restart: unless-stopped + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/cloudflare-ddns/compose.yml b/cloudflare-ddns/compose.yml new file mode 100644 index 0000000..aef75dd --- /dev/null +++ b/cloudflare-ddns/compose.yml @@ -0,0 +1,34 @@ +services: + cloudflare-ddns: + image: favonia/cloudflare-ddns:1 + # Prefer "1" or "1.x.y" in production. + # + # - "1" tracks the latest stable release whose major version is 1 + # - "1.x.y" pins one specific stable version + # - "latest" moves to each new stable release and may pick up breaking + # changes in a future major release, so it is not recommended in production + # - "edge" tracks the latest unreleased development build + network_mode: host + # Optional. This bypasses network isolation and makes IPv6 easier. + # See "Use IPv6 without sharing the host network". + restart: unless-stopped + # Restart the updater after reboot + user: "1000:1000" + # Run the updater with specific user and group IDs (in that order). + # You can change the two numbers based on your need. + read_only: true + # Make the container filesystem read-only (optional but recommended) + cap_drop: [all] + # Drop all Linux capabilities (optional but recommended) + #security_opt: [no-new-privileges:true] + # Another protection to restrict superuser privileges (optional but recommended) + environment: + - CLOUDFLARE_API_TOKEN=cfat_yPhy6H6v3Yr83YdNuJQeS4lgfxzd7X2U1OpMX4gp07cf50fe + # Your Cloudflare API token + - DOMAINS=wampler.us + # Your domains (separated by commas) + - PROXIED=true + - IP6_PROVIDER=none + # Use Cloudflare's proxy for these domains (optional) + # Existing DNS records in Cloudflare keep their current proxy setting + # Change them once manually if you want to switch them diff --git a/flaresolverr/compose.yml b/flaresolverr/compose.yml deleted file mode 100644 index 8817555..0000000 --- a/flaresolverr/compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - flaresolverr: - # DockerHub mirror flaresolverr/flaresolverr:latest - image: ghcr.io/flaresolverr/flaresolverr:latest - container_name: flaresolverr - environment: - - LOG_LEVEL=${LOG_LEVEL:-info} - - LOG_FILE=${LOG_FILE:-none} - - LOG_HTML=${LOG_HTML:-false} - - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none} - - TZ=America/Los_Angeles - ports: - - "${PORT:-8191}:8191" - volumes: - - /mnt/storage/apps/flaresolver:/config - restart: unless-stopped - extra_hosts: - - "host.docker.internal:host-gateway" diff --git a/gitea/compose.yml b/gitea/compose.yml new file mode 100644 index 0000000..e26671b --- /dev/null +++ b/gitea/compose.yml @@ -0,0 +1,20 @@ +services: + gitea: + image: gitea/gitea:latest + container_name: gitea + restart: unless-stopped + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Los_Angeles + volumes: + - /mnt/storage/apps/gitea/data:/data + ports: + - "3000:3000" + - "2223:22" + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/immich/.env b/immich/.env new file mode 100644 index 0000000..7b62913 --- /dev/null +++ b/immich/.env @@ -0,0 +1,6 @@ +UPLOAD_LOCATION=/mnt/storage/media/photos +DB_USERNAME=postgres +DB_PASSWORD=postgres +DB_DATABASE_NAME=immich +DB_DATA_LOCATION=/mnt/storage/apps/immich/db +TZ=America/Los_Angeles diff --git a/immich/compose.yml b/immich/compose.yml new file mode 100644 index 0000000..db6fe51 --- /dev/null +++ b/immich/compose.yml @@ -0,0 +1,72 @@ +name: immich + +services: + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/data + - /etc/localtime:/etc/localtime:ro + environment: + - PUID=1000 + - PGID=1000 + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: unless-stopped + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: unless-stopped + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/valkey/valkey:9@sha256:3eeb09785cd61ec8e3be35f8804c8892080f3ca21934d628abc24ee4ed1698f6 + healthcheck: + test: redis-cli ping || exit 1 + restart: unless-stopped + + database: + container_name: immich_postgres + image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23 + env_file: + - .env + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + shm_size: 128mb + restart: unless-stopped + healthcheck: + disable: false + +volumes: + model-cache: diff --git a/pia-qbittorrent/compose.yml b/pia-qbittorrent/compose.yml new file mode 100644 index 0000000..1a8ced2 --- /dev/null +++ b/pia-qbittorrent/compose.yml @@ -0,0 +1,32 @@ +services: + pia-qbittorrent: + image: j4ym0/pia-qbittorrent + container_name: pia-qbittorrent + cap_add: + - NET_ADMIN + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Los_Angeles + - PORT_FORWARDING=true + - PIA_REGION=ca_vancouver + - PIA_USERNAME=p4945400 + - PIA_PASSWORD=NmoPFuTDJt + - WEBUI_PORT=8112 + - DNS_SERVERS=1.1.1.1,1.0.0.1 + - UMASK=000 + volumes: + - /mnt/storage/apps/pia-qbittorrent/config:/config + - /mnt/storage/downloads:/downloads + ports: + - "8112:8112" + restart: unless-stopped + networks: + - pia + - proxy +networks: + pia: + name: pia + proxy: + name: proxy + external: true diff --git a/prowlarr/compose.yml b/prowlarr/compose.yml index f13cf7c..d8bb6a8 100644 --- a/prowlarr/compose.yml +++ b/prowlarr/compose.yml @@ -13,3 +13,9 @@ services: restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/radarr/compose.yml b/radarr/compose.yml index 4834985..96194ac 100644 --- a/radarr/compose.yml +++ b/radarr/compose.yml @@ -16,3 +16,9 @@ services: restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/sonarr/compose.yml b/sonarr/compose.yml index 8162040..aa8add9 100644 --- a/sonarr/compose.yml +++ b/sonarr/compose.yml @@ -15,3 +15,9 @@ services: restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/stash/compose.yml b/stash/compose.yml new file mode 100644 index 0000000..d0ff672 --- /dev/null +++ b/stash/compose.yml @@ -0,0 +1,47 @@ +services: + stash: + image: stashapp/stash:latest + container_name: stash + restart: unless-stopped + ## the container's port must be the same with the STASH_PORT in the environment section + ports: + - "9999:9999" + ## If you intend to use stash's DLNA functionality uncomment the below network mode and comment out the above ports section + # network_mode: host + logging: + driver: "json-file" + options: + max-file: "10" + max-size: "2m" + environment: + - STASH_STASH=/data/ + - STASH_GENERATED=/generated/ + - STASH_METADATA=/metadata/ + - STASH_CACHE=/cache/ + ## Adjust below to change default port (9999) + - STASH_PORT=9999 + volumes: + - /etc/localtime:/etc/localtime:ro + ## Adjust below paths (the left part) to your liking. + ## E.g. you can change ./config:/root/.stash to ./stash:/root/.stash + ## The left part is the path on your host, the right part is the path in the stash container. + + ## Keep configs, scrapers, and plugins here. + - /mnt/storage/apps/stash/.stash:/root/.stash + ## Point this at your collection. + ## The left side is where your collection is on your host, the right side is where it will be in stash. + - /mnt/storage/media/Private:/data + ## This is where your stash's metadata lives + - /mnt/storage/apps/stash/metadata:/metadata + ## Any other cache content. + - /mnt/storage/apps/stash/cache:/cache + ## Where to store binary blob data (scene covers, images) + - /mnt/storage/apps/stash/blobs:/blobs + ## Where to store generated content (screenshots,previews,transcodes,sprites) + - /mnt/storage/apps/stash/generated:/generated + networks: + - network +networks: + network: + name: proxy + external: true diff --git a/vaultwarden/compose.yml b/vaultwarden/compose.yml new file mode 100644 index 0000000..a29f378 --- /dev/null +++ b/vaultwarden/compose.yml @@ -0,0 +1,20 @@ +services: + vaultwarden: + image: vaultwarden/server:latest + container_name: vaultwarden + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Los_Angeles + - DOMAIN=https://vault.wampler.us + restart: unless-stopped + volumes: + - /mnt/storage/apps/vaultwarden/data/:/data/ + ports: + - 4444:80 + networks: + - network +networks: + network: + name: proxy + external: true