# Unshacklarr next to Sonarr, with unshackle serve in its own container. # 1. Save this file as docker-compose.yml and .env.example as .env next to it, then fill in .env # (nothing else of the repository is needed: see the README's Quick start). # 2. Put your Unshackle config in ./unshackle (unshackle.yaml, Cookies/, WVDs/, PRDs/), your # services in ./services (one folder per service, as in unshackle/services), and give # unshackle.yaml an API key: serve: {api_secret: } # and its folders as this container sees them (the README's Quick start has the lines): # directories: {cookies: /config/unshackle/Cookies, wvds: /config/unshackle/WVDs, # prds: /config/unshackle/PRDs, cache: /data/cache, temp: /data/temp} # 3. docker compose up -d (the first time, it builds unshackle serve), then open # http://:8788. The setup code is in docker logs unshacklarr. # # Updating Unshacklarr: docker compose pull unshacklarr && docker compose up -d --no-deps unshacklarr # (--no-deps leaves Unshackle and its downloads running). Unshackle, when nothing downloads: # docker compose build --pull unshackle && docker compose up -d. # # The downloads folder is mounted in both containers at the same path, /downloads. # SONARR_DOWNLOADS is that same folder as Sonarr sees it. name: unshacklarr services: unshackle: # Unshackle has no published image: it is built here, once, from its own source build: context: https://github.com/OwnzZzZ/Unshacklarr.git#main:docker dockerfile: unshackle.Dockerfile image: unshackle-serve:latest container_name: unshackle restart: unless-stopped user: "${PUID:-1000}:${PGID:-1000}" # the owner Sonarr expects on downloaded files environment: - TZ=${TZ:-UTC} volumes: - ./unshackle:/config/unshackle - ./services:/app/unshackle/services # Unshackle itself ships only an EXAMPLE service - ./unshackle-data:/data # its cache and key vault - ${DOWNLOADS_DIR}:/downloads # no ports: only Unshacklarr talks to it, on the Docker network unshacklarr: image: ghcr.io/ownzzzz/unshacklarr:latest # built by the project's CI: nothing to build here container_name: unshacklarr restart: unless-stopped user: "${PUID:-1000}:${PGID:-1000}" depends_on: [unshackle] environment: - TZ=${TZ:-UTC} - UNSHACKLE_URL=http://unshackle:8786 - UNSHACKLE_API_KEY=${UNSHACKLE_API_KEY} - SONARR_URL=${SONARR_URL:-http://sonarr:8989} # starting values: the setup and Settings take over - SONARR_DOWNLOADS=${SONARR_DOWNLOADS:-} - UNSHACKLE_CONFIG_DIR=/unshackle-config # its cookies and CDMs, managed from Settings - UNSHACKLE_TEMP_DIR=/unshackle-temp # Unshackle's work folder: how far a mux is, in Activity volumes: - ./data:/data # config.yaml, history, caches - ./unshackle:/unshackle-config # the same folder as Unshackle's: unshackle.yaml, Cookies, WVDs, PRDs - ./unshackle-data/temp:/unshackle-temp:ro # its temp: folder (directories: temp), read only - ${DOWNLOADS_DIR}:/downloads ports: - 8788:8788 # To reach Sonarr by name, join its network: # networks: [default, sonarr] # networks: # sonarr: # external: true # name: