Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# ============================================================================
# Shrinkerr — local development compose
#
# This file builds the image from the Dockerfile in this directory. Use it
# when you're hacking on Shrinkerr itself. For production / Portainer deploys
# where you want to pull a prebuilt image instead, see `docker-compose.portainer.yml`.
#
# Quick start:
#   1. Edit the two `volumes:` paths below so they point to your real data.
#   2. Run:  docker compose up -d --build
#   3. Open: http://localhost:6680
#
# First-run account: there isn't one — Shrinkerr has no auth by default. If
# you expose it beyond localhost, set an API key in Settings → System.
# ============================================================================

services:
  shrinkerr:
    # Build the portable (CPU-only, multi-arch) image from `Dockerfile`.
    # For the GPU/NVENC image, use `Dockerfile.nvenc`:
    #   build:
    #     context: .
    #     dockerfile: Dockerfile.nvenc
    #
    # To skip the build and pull a prebuilt image instead, comment `build:`
    # out and uncomment one of these `image:` lines:
    #   Portable (works on ANY host — Mac, Windows, Linux, Pi, ARM…):
    #     shrinkerr:latest     — ffmpeg n7.1   (default, stable)
    #     shrinkerr:edge       — ffmpeg master (bleeding edge)
    #   NVENC (x86_64 Linux host with NVIDIA GPU + Container Toolkit):
    #     shrinkerr:nvenc      — ffmpeg n7.1   (NVIDIA driver 525.60.13+)
    #     shrinkerr:edge-nvenc — ffmpeg master (NVIDIA driver 570.00+)
    # Or build every tag at once with: ./scripts/build-images.sh
    build: .
    # image: shrinkerr:latest
    # image: shrinkerr:edge
    # image: shrinkerr:nvenc
    # image: shrinkerr:edge-nvenc

    container_name: shrinkerr

    # Web UI + API. Change the LEFT side if 6680 is taken on your host.
    #   "8080:6680"  → visit http://localhost:8080
    # Don't change the right side (that's the port inside the container).
    ports:
      - "6680:6680"

    volumes:
      # --- Required: database + app data ---
      # Holds the SQLite DB, logs, backups, and the encoding history.
      # If you delete this folder, you lose all settings and history.
      # Linux/Mac: use a relative path (./data) or an absolute one
      # Windows:   use C:\path\to\data:/app/data
      - ./data:/app/data

      # --- Required: your media library ---
      # Point this at the folder containing your Movies/TV/etc. Shrinkerr
      # will scan it and write converted files back to the same location
      # (with the originals trashed or permanently deleted depending on your
      # Settings → Automation config).
      # Shrinkerr needs READ + WRITE access — it overwrites originals in place.
      # Examples:
      #   Linux/Mac: - /srv/media:/media
      #              - /mnt/nas/media:/media
      #   Windows:   - E:\media:/media
      - /srv/media:/media

      # --- Optional: NZBGet / SABnzbd download folders ---
      # If you use the NZBGet / SABnzbd post-processing scripts, mount the
      # "completed downloads" folders here so Shrinkerr can see the files
      # the downloader just dropped. Skip these if you don't use nzb/sab.
      # - /srv/downloads/completed/TV:/downloads/tv
      # - /srv/downloads/completed/Movies:/downloads/movies

    # No `environment:` block needed — the app's defaults for DB path
    # (/app/data/shrinkerr.db) and media root (/media) already match the
    # volume mounts above. Override with SHRINKERR_DB_PATH or
    # SHRINKERR_MEDIA_ROOT by adding an `environment:` block here if
    # you need to point elsewhere.

    restart: unless-stopped

    # =======================================================================
    # GPU passthrough — ONLY needed if you're using the :nvenc / :edge-nvenc
    # image (or building from Dockerfile.nvenc). The portable image has no
    # CUDA runtime, so this block does nothing for it.
    #
    # To enable NVENC:
    #   1. Change the `image:` line above to :nvenc / :edge-nvenc.
    #   2. Add `- NVIDIA_VISIBLE_DEVICES=all` under `environment:` above.
    #   3. Uncomment the GPU block below. Two scenarios:
    #        Linux (with NVIDIA Container Toolkit):
    #            uncomment BOTH `runtime: nvidia` AND `deploy:`
    #        Windows (Docker Desktop in WSL2 mode):
    #            uncomment ONLY `deploy:` — Docker Desktop does not register
    #            a `nvidia` runtime name and will reject the `runtime:` line.
    #        macOS: not supported — use the portable :latest image.
    #
    # Why both on Linux? `deploy:` is the portable-spec way and should work
    # on its own with a modern Docker + Compose V2. In practice on many
    # installs (especially where the toolkit is installed but `nvidia` isn't
    # set as the default runtime) `deploy:` alone silently fails to pass the
    # GPU through. `runtime: nvidia` is the reliable explicit request.
    #
    # DRIVER VERSION: :nvenc → driver 525.60.13+; :edge-nvenc → driver 570+.
    # The Monitor page shows your driver version and flags any mismatch.
    # =======================================================================
    # runtime: nvidia
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: all
    #           capabilities: [gpu, video]

  # ==========================================================================
  # Optional: remote worker node
  #
  # Uncomment this block to run a second container that picks up jobs from
  # the main server above. Useful if you have a beefier machine sitting idle
  # on the network (e.g. a gaming PC) that you want to use for CPU encoding.
  #
  # Steps:
  #   1. In the main server UI: Settings → Nodes → create a worker API key.
  #   2. Copy that key into API_KEY below.
  #   3. Set SERVER_URL to the main container's address from the worker's POV.
  #   4. `docker compose up -d shrinkerr-worker`
  #   5. The node will appear on the Monitor page within ~30 seconds.
  # ==========================================================================
  # shrinkerr-worker:
  #   build: .
  #   container_name: shrinkerr-worker
  #   environment:
  #     - SHRINKERR_MODE=worker             # switches the container to worker mode
  #     - SERVER_URL=http://shrinkerr:6680  # or http://<main-host-ip>:6680 if on a different host
  #     - API_KEY=REPLACE_WITH_WORKER_KEY   # create in Settings → Nodes
  #     - WORKER_NAME=beefy-desktop         # shows up in the Nodes page
  #     - CAPABILITIES=nvenc,libx265        # or just "libx265" on CPU-only boxes
  #     # If the worker sees the media at a different path than the server does,
  #     # set PATH_MAPPINGS as a JSON list of [server_path, worker_path] pairs.
  #     # Example: server sees /media/Movies, worker sees /mnt/nas/Movies:
  #     # - PATH_MAPPINGS=[["/media","/mnt/nas"]]
  #     - NVIDIA_VISIBLE_DEVICES=all
  #   volumes:
  #     - /srv/media:/media                  # must match what the server sees (or use PATH_MAPPINGS)
  #   restart: unless-stopped
  #   deploy:
  #     resources:
  #       reservations:
  #         devices:
  #           - driver: nvidia
  #             count: all
  #             capabilities: [gpu, video]