unpackerr, qbittorent separation

add unpackerr docker compose
separate qbittorrent into public/private
gluetun DNS issue w rundfunkarr
This commit is contained in:
lucas committed 2026-10-24 15:20:00 +02:00
1 parent 7214cfd52b
commit bbc56a9908
5 files changed
+529 -93

No files matched your search

@@ -19,7 +19,8 @@ services:
- /data/jellyfin/media/documentaries-english:/JellyfinDocus - /data/jellyfin/media/documentaries-english:/JellyfinDocus
- /data/jellyfin/media/series-kids:/JellyfinKinder - /data/jellyfin/media/series-kids:/JellyfinKinder
- /data/jellyfin/buffer:/buffer - /data/jellyfin/buffer:/buffer
- /torrent/qbittorrent/downloads:/downloads - /torrent/qbittorrent-private/downloads:/downloads-private
- /torrent/qbittorrent-public/downloads:/downloads-public
- /torrent/rundfunkarr-de:/downloads-rundfunkarr - /torrent/rundfunkarr-de:/downloads-rundfunkarr
radarr-en: radarr-en:
image: lscr.io/linuxserver/radarr:latest image: lscr.io/linuxserver/radarr:latest
@@ -35,7 +36,8 @@ services:
- ./radarr_EN:/config - ./radarr_EN:/config
- /data/jellyfin/media/movies-english:/JellyfinMoviesEnglish - /data/jellyfin/media/movies-english:/JellyfinMoviesEnglish
- /data/jellyfin/media/comedy-english:/JellyfinComedy - /data/jellyfin/media/comedy-english:/JellyfinComedy
- /torrent/qbittorrent/downloads:/downloads - /torrent/qbittorrent-private/downloads:/downloads-private
- /torrent/qbittorrent-public/downloads:/downloads-public
- /data/jellyfin/buffer:/buffer - /data/jellyfin/buffer:/buffer
radarr-de: radarr-de:
image: lscr.io/linuxserver/radarr:latest image: lscr.io/linuxserver/radarr:latest
@@ -52,7 +54,8 @@ services:
- /data/jellyfin/media/movies-german:/JellyfinMoviesGerman - /data/jellyfin/media/movies-german:/JellyfinMoviesGerman
- /data/jellyfin/media/movies-kids:/JellyfinKinder - /data/jellyfin/media/movies-kids:/JellyfinKinder
- /data/jellyfin/buffer:/buffer - /data/jellyfin/buffer:/buffer
- /torrent/qbittorrent/downloads:/downloads - /torrent/qbittorrent-private/downloads:/downloads-private
- /torrent/qbittorrent-public/downloads:/downloads-public
- /torrent/rundfunkarr-de:/downloads-rundfunkarr - /torrent/rundfunkarr-de:/downloads-rundfunkarr
prowlarr: prowlarr:
image: lscr.io/linuxserver/prowlarr:latest image: lscr.io/linuxserver/prowlarr:latest
@@ -66,23 +69,19 @@ services:
- TZ=Europe/Vienna - TZ=Europe/Vienna
volumes: volumes:
- ./prowlarr:/config - ./prowlarr:/config
gluetun-rundfunkarr-de: gluetun-rundfunkarr-de:
image: qmcgaw/gluetun:latest image: qmcgaw/gluetun:latest
container_name: gluetun-rundfunkarr-de container_name: gluetun-rundfunkarr-de
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ./gluetun-de:/gluetun/wireguard - ./gluetun-de:/gluetun/wireguard
environment: environment:
- VPN_SERVICE_PROVIDER=custom - VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard - VPN_TYPE=wireguard
ports: ports:
- "6767:6767" # Rundfunkarr UI - "6767:6767" # Rundfunkarr UI
rundfunkarr-de: rundfunkarr-de:
image: ghcr.io/rundfunkarr/rundfunkarr:latest image: ghcr.io/rundfunkarr/rundfunkarr:latest
container_name: rundfunkarr-de container_name: rundfunkarr-de
@@ -100,18 +99,14 @@ services:
network_mode: "service:gluetun-rundfunkarr-de" network_mode: "service:gluetun-rundfunkarr-de"
depends_on: depends_on:
- gluetun-rundfunkarr-de - gluetun-rundfunkarr-de
gluetun-at: gluetun-at:
image: qmcgaw/gluetun:latest image: qmcgaw/gluetun:latest
container_name: gluetun-at container_name: gluetun-at
restart: unless-stopped restart: unless-stopped
cap_add: cap_add:
- NET_ADMIN - NET_ADMIN
devices: devices:
- /dev/net/tun:/dev/net/tun - /dev/net/tun:/dev/net/tun
ports: ports:
- "8888:8888" # HTTP Proxy - "8888:8888" # HTTP Proxy
- "1080:1080" # SOCKS5 Proxy - "1080:1080" # SOCKS5 Proxy
@@ -121,9 +116,10 @@ services:
- SOCKS5_ENABLED=on - SOCKS5_ENABLED=on
- HTTPPROXY=on - HTTPPROXY=on
- SOCKSPROXY=on - SOCKSPROXY=on
- TZ=Europe/Vienna - TZ=Europe/Vienna
- DNS_SERVER=on
- DNS_UPSTREAM_RESOLVER_TYPE=plain
- DNS_UPSTREAM_PLAIN_ADDRESSES=1.1.1.1:53,8.8.8.8:53
volumes: volumes:
- ./gluetun-at:/gluetun/wireguard - ./gluetun-at:/gluetun/wireguard
# lazylibrarian: # lazylibrarian:
@@ -140,7 +136,7 @@ services:
# - ./lazylibrarian:/config # - ./lazylibrarian:/config
# - /data/audiobookshelf/podcasts:/podcasts # - /data/audiobookshelf/podcasts:/podcasts
# - /data/audiobookshelf/audiobooks-englisch:/audiobooks # - /data/audiobookshelf/audiobooks-englisch:/audiobooks
# - /torrent/qbittorrent/downloads:/downloads # - /torrent/qbittorrent-private/downloads:/downloads
flaresolverr: flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest image: ghcr.io/flaresolverr/flaresolverr:latest
@@ -164,7 +160,8 @@ services:
volumes: volumes:
- ./lidarr:/config - ./lidarr:/config
- /data/navidrome/music/music:/music - /data/navidrome/music/music:/music
- /torrent/qbittorrent/downloads:/downloads - /torrent/qbittorrent-private/downloads:/downloads-private
- /torrent/qbittorrent-public/downloads:/downloads-public
ports: ports:
- 8686:8686 - 8686:8686
@@ -218,41 +215,9 @@ services:
- /data/audiobookshelf/data/audiobooks-englisch:/audiobooks-english - /data/audiobookshelf/data/audiobooks-englisch:/audiobooks-english
- /data/audiobookshelf/data/audiobooks-deutsch:/audiobooks-german - /data/audiobookshelf/data/audiobooks-deutsch:/audiobooks-german
- /data/audiobookshelf/data/audiobooks-kinder:/audiobooks-kinder - /data/audiobookshelf/data/audiobooks-kinder:/audiobooks-kinder
- /torrent/qbittorrent/downloads:/downloads - /torrent/qbittorrent-public/downloads:/downloads-public
- /torrent/qbittorrent-private/downloads:/downloads-private
restart: unless-stopped restart: unless-stopped
upload-assistant:
image: ghcr.io/audionut/upload-assistant:latest
container_name: upload-assistant
restart: unless-stopped
ports:
- "5000:5000"
environment:
- PUID=1000
- PGID=1000
# Paths visible in the file browser
- UA_BROWSE_ROOTS=/downloads,/data
command: ["--webui", "0.0.0.0:5000"]
volumes:
- ./upload-assistant:/Upload-Assistant/data
# Sonarr/Radarr libraries
- /data/jellyfin/media/series-english:/data/series-english:ro
- /data/jellyfin/media/anime-english:/data/anime-english:ro
- /data/jellyfin/media/documentaries-english:/docus-english:ro
- /data/jellyfin/media/series-german:/series-german:ro
- /data/jellyfin/media/anime-german:/anime-german:ro
- /data/jellyfin/media/series-kids:/series-kids:ro
- /data/jellyfin/media/movies-english:/data/movies-english:ro
- /data/jellyfin/media/comedy-english:/data/comedy-english:ro
- /data/jellyfin/media/movies-german:/data/movies-german:ro
- /data/jellyfin/media/movies-kids:/data/movies-kids:ro
- /data/navidrome/music:/data/music:ro
- /data/audiobookshelf/data/audiobooks-englisch:/data/audiobooks-english:ro
- /data/audiobookshelf/data/audiobooks-deutsch:/data/audiobooks-german:ro
- /data/audiobookshelf/data/audiobooks-kinder:/data/audiobooks-kinder:ro
# Download location
- /torrent/qbittorrent/downloads:/downloads
jackett: jackett:
image: lscr.io/linuxserver/jackett:latest image: lscr.io/linuxserver/jackett:latest
container_name: jackett container_name: jackett
@@ -292,8 +257,9 @@ services:
- "11011:11011" - "11011:11011"
volumes: volumes:
- ./cleanuparr:/config - ./cleanuparr:/config
- /torrent/qbittorrent/downloads:/downloads - /torrent/qbittorrent-private/downloads:/downloads-private
- /torrent/qbittorrent/orphaned:/orphaned - /torrent/qbittorrent-public/downloads:/downloads-public
- /torrent/qbittorrent-private/orphaned:/orphaned
environment: environment:
- PORT=11011 - PORT=11011
- BASE_PATH= - BASE_PATH=
@@ -301,6 +267,52 @@ services:
- PGID=1000 - PGID=1000
- UMASK=022 - UMASK=022
- TZ=Etc/UTC - TZ=Etc/UTC
unpackerr:
image: golift/unpackerr
container_name: unpackerr
volumes:
- /torrent/qbittorrent-private/downloads:/downloads-private
- ./unpackerr:/config
restart: always
user: 1000:1000
environment:
- TZ=America/New_York
- PUID=1000
- PGID=1000
## Global Settings
- UN_DEBUG=true
- UN_LOG_FILE=/config/unpackerr.log
- UN_LOG_FILES=10
- UN_LOG_FILE_MB=10
- UN_INTERVAL=10m
- UN_PROGRESS=15s
- UN_START_DELAY=1m
- UN_RETRY_DELAY=5m
- UN_MAX_RETRIES=2
- UN_REMNANT_ACTION=rename
- UN_PARALLEL=1
- UN_FILE_MODE=0644
- UN_DIR_MODE=0755
# Sonarr
- UN_SONARR_0_URL=http://sonarr-de:8989
- UN_SONARR_0_API_KEY=707d4fcbb3d74822ba990c6a8b7278e9
- UN_SONARR_0_PATHS_0=/downloads-private/tv-sonarr-de
- UN_SONARR_0_DELETE_DELAY=5m
# Radarr-de
- UN_RADARR_0_URL=http://radarr-de:7878
- UN_RADARR_0_API_KEY=29f67f0ac8894357b22ea3f7fc1abfdf
- UN_RADARR_0_PATHS_0=/downloads-private/radarr-de
- UN_RADARR_0_DELETE_DELAY=5m
# Radarr-en
- UN_RADARR_1_URL=http://radarr-en:7878
- UN_RADARR_1_API_KEY=4332aee075c748f2acee41aa26f06007
- UN_RADARR_1_PATHS_0=/downloads-private/radarr-en
- UN_RADARR_1_DELETE_DELAY=5m
# Lidarr
- UN_LIDARR_0_URL=http://lidarr:8686
- UN_LIDARR_0_API_KEY=bb41cbf2b17e439290f90ecfaeb24dff
- UN_LIDARR_0_PATHS_0=/downloads-private/lidarr
- UN_LIDARR_0_DELETE_DELAY=5m
networks: networks:
default: default:
external: true external: true
@@ -0,0 +1,396 @@
#######################################################
## Unpackerr Example Configuration File ##
#######################################################
## The values are a mix of defaults and examples. ##
## Environment Variables may override all values. ##
## More configuration help: https://unpackerr.zip ##
## Config Generator: https://notifiarr.com/unpackerr ##
#######################################################
## Turn on debug messages in the output. Do not wrap this in quotes.
## Recommend trying this so you know what it looks like. I personally leave it on.
debug = false
## Disable writing messages to stdout/stderr. This silences the app. Set a log
## file below if you set this to true. Recommended when starting with systemctl.
quiet = false
## Send error output to stderr instead of stdout by setting error_stderr to true.
## Recommend leaving this at false. Ignored if quiet (above) is true.
error_stderr = false
## Setting activity to true will silence all app queue log lines with only zeros.
## Set this to true when you want less log spam.
activity = false
## The Starr-application activity queue is logged on an interval.
## Adjust that interval with this setting.
## Default is a minute. 2m, 5m, 10m, 30m, 1h are also perfectly acceptable.
log_queues = "1m"
## Write messages to a log file. This is the same data that is normally output to stdout.
## This setting is great for Docker users that want to export their logs to a file.
## The alternative is to use syslog to log the output of the application to a file.
## Default is no log file; this is unset.
## Except on macOS and Windows, the log file gets set to "~/.unpackerr/unpackerr.log"
## log_files=0 turns off auto-rotation.
## Default files is 10 and size(mb) is 10 Megabytes.
#log_file = '/downloads/unpackerr.log'
log_files = 10
log_file_mb = 10
log_file_mode = "0600"
## How often to poll starr apps (sonarr, radarr, etc).
## Recommend 1m-5m. Uses Go Duration.
interval = "2m"
## How often status is logged for in-progress extractions.
## Recommend 2-60s. Uses Go Duration.
progress = "15s"
## How long an item must be queued (download complete) before extraction will start.
## One minute is the historic default and works well. Set higher if your downloads
## take longer to finalize (or transfer locally). Uses Go Duration.
start_delay = "1m"
## How long to wait before removing the history for a failed extraction.
## Once the history is deleted the item will be recognized as new and
## extraction will start again. Uses Go Duration.
retry_delay = "5m"
## How many times to retry a failed extraction after the first try. Default is 2
## (3 attempts total). `0` uses that default. Pauses retry_delay between attempts.
max_retries = 2
## Applies to Starr apps and to watched folders with `move_back` enabled
## (the default folder config extracts into a sidecar tree and does not
## classify leftovers there). When an extracted file cannot be moved into
## place because the destination already exists, Unpackerr checks whether
## that name was present before extraction. Names that arrived with the
## download are kept; names that were not (leftovers from an interrupted
## extraction) are handled by this setting. `rename` (default) moves the
## leftover to a sibling named with a `.remnant` suffix and retries the
## extract. `delete` removes it and retries. `off` leaves the leftover
## in place and fails the extract without retrying. The item stays failed
## until it leaves the Starr queue (folders are untracked). Bounded by
## max_retries; if retries are exhausted the leftover fails the extract
## instead of reporting success.
remnant_action = "rename"
## How many files may be extracted in parallel. 1 works fine.
## Do not wrap the number in quotes. Raise this only if you have fast disks and CPU.
parallel = 1
## Use these configurations to control the file modes used for newly extracted
## files and folders. Recommend 0644/0755 or 0666/0777.
file_mode = "0644"
dir_mode = "0755"
## List of passwords to use for encrypted archives. Must be a list of strings.
## Use this special format as a password to read more passwords from a file:
## passwords = [ "filepath:/path/to/passwords.txt" ]
passwords = []
[webserver]
## The web server currently only supports metrics; set this to true if you wish to use it.
metrics = false
## This may be set to a port or an ip:port to bind a specific IP. 0.0.0.0 binds ALL IPs.
listen_addr = "0.0.0.0:5656"
## Recommend setting a log file for HTTP requests. Otherwise, they go with other logs.
log_file = ''
## This app automatically rotates logs. Set these to the size and number to keep.
log_files = 10
log_file_mb = 10
## Set both of these to valid file paths to enable HTTPS/TLS.
ssl_cert_file = ''
ssl_key_file = ''
## Base URL from which to serve content.
urlbase = "/"
## Upstreams should be set to the IP or CIDR of your trusted upstream proxy.
## Setting this correctly allows X-Forwarded-For to be used in logs.
## In the future it may control auth proxy trust. Must be a list of strings.
## example: upstreams = [ "127.0.0.1/32", "10.1.2.0/24" ]
upstreams = []
## Global Folder configuration that affects all watched folders.
[folders]
## How often poller checks for new folders.
## The default of `0s` will disable the poller on all systems except Docker.
## Set this value to `1ms` to disable it in Docker.
interval = "0s"
## How many new folder events can be immediately queued. Don't change this.
buffer = 20000
###############################################################################
##-IMPORTANT-#######-READ THIS!!!-################ Seriously, read this. ######
###############################################################################
## The following sections can be repeated if you have more than one Sonarr, ##
## Radarr, Lidarr, Readarr, Whisparr, Folder, Webhook, and/or Command Hook. ##
## You MUST uncomment the [[header]], url and api_key at for any Starr app. ##
## The [[sonarr]] and [[radarr]] headers come uncommented. Uncomment the url ##
## and api_key if they are in use. Comment them with a hash if they are not. ##
## Uncomment the [[lidarr]] and/or [[readarr]] headers and values if in use. ##
###############################################################################
###############################################################################
## ALL LINES BEGINNING WITH A HASH # ARE IGNORED COMMENTS ##
## REMOVE THE HASH # FROM CONFIG LINES YOU WANT TO CHANGE ##
###############################################################################
###############################################################################
## Leaving the [[sonarr]] header uncommented (no leading hash #) without also
## uncommenting the api_key (remove the hash #) will produce a startup warning.
[[sonarr]]
# url = "http://127.0.0.1:8989"
# api_key = "0123456789abcdef0123456789abcdef"
## List of paths where content is downloaded for this app.
## Used as fallback if the path the Starr app reports does not exist or is not accessible.
# paths = ['/downloads']
## Protocols to process from the download queue. Starr apps historically
## used "torrent" and "usenet" as the protocol strings, but newer versions
## emit the full class names "TorrentDownloadProtocol" and
## "UsenetDownloadProtocol" instead. List every string your app may return,
## separated by commas. The default covers both the legacy and new torrent
## strings. Add "usenet,UsenetDownloadProtocol" if you use a Usenet client.
# protocols = "torrent,TorrentDownloadProtocol"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
## Per-archive uncompressed-byte cap. Empty uses the app default:
## Sonarr/Whisparr 20GB, Radarr 75GB, Lidarr 4GB, Readarr 1GB.
## `0` or `0B` disables the cap for this instance.
# max_bytes = ""
## Leaving the [[radarr]] header uncommented (no leading hash #) without also
## uncommenting the api_key (remove the hash #) will produce a startup warning.
[[radarr]]
# url = "http://127.0.0.1:7878"
# api_key = "0123456789abcdef0123456789abcdef"
## List of paths where content is downloaded for this app.
## Used as fallback if the path the Starr app reports does not exist or is not accessible.
# paths = ['/downloads']
## Protocols to process from the download queue. Starr apps historically
## used "torrent" and "usenet" as the protocol strings, but newer versions
## emit the full class names "TorrentDownloadProtocol" and
## "UsenetDownloadProtocol" instead. List every string your app may return,
## separated by commas. The default covers both the legacy and new torrent
## strings. Add "usenet,UsenetDownloadProtocol" if you use a Usenet client.
# protocols = "torrent,TorrentDownloadProtocol"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
## Per-archive uncompressed-byte cap. Empty uses the app default:
## Sonarr/Whisparr 20GB, Radarr 75GB, Lidarr 4GB, Readarr 1GB.
## `0` or `0B` disables the cap for this instance.
# max_bytes = ""
#[[lidarr]]
# url = "http://127.0.0.1:8686"
# api_key = "0123456789abcdef0123456789abcdef"
## List of paths where content is downloaded for this app.
## Used as fallback if the path the Starr app reports does not exist or is not accessible.
# paths = ['/downloads']
## Protocols to process from the download queue. Starr apps historically
## used "torrent" and "usenet" as the protocol strings, but newer versions
## emit the full class names "TorrentDownloadProtocol" and
## "UsenetDownloadProtocol" instead. List every string your app may return,
## separated by commas. The default covers both the legacy and new torrent
## strings. Add "usenet,UsenetDownloadProtocol" if you use a Usenet client.
# protocols = "torrent,TorrentDownloadProtocol"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
## Per-archive uncompressed-byte cap. Empty uses the app default:
## Sonarr/Whisparr 20GB, Radarr 75GB, Lidarr 4GB, Readarr 1GB.
## `0` or `0B` disables the cap for this instance.
# max_bytes = ""
## When enabled, FLAC files with embedded CUE sheets are split into
## individual track files.
# split_flac = false
#[[readarr]]
# url = "http://127.0.0.1:8787"
# api_key = "0123456789abcdef0123456789abcdef"
## List of paths where content is downloaded for this app.
## Used as fallback if the path the Starr app reports does not exist or is not accessible.
# paths = ['/downloads']
## Protocols to process from the download queue. Starr apps historically
## used "torrent" and "usenet" as the protocol strings, but newer versions
## emit the full class names "TorrentDownloadProtocol" and
## "UsenetDownloadProtocol" instead. List every string your app may return,
## separated by commas. The default covers both the legacy and new torrent
## strings. Add "usenet,UsenetDownloadProtocol" if you use a Usenet client.
# protocols = "torrent,TorrentDownloadProtocol"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
## Per-archive uncompressed-byte cap. Empty uses the app default:
## Sonarr/Whisparr 20GB, Radarr 75GB, Lidarr 4GB, Readarr 1GB.
## `0` or `0B` disables the cap for this instance.
# max_bytes = ""
#[[whisparr]]
# url = "http://127.0.0.1:6969"
# api_key = "0123456789abcdef0123456789abcdef"
## List of paths where content is downloaded for this app.
## Used as fallback if the path the Starr app reports does not exist or is not accessible.
# paths = ['/downloads']
## Protocols to process from the download queue. Starr apps historically
## used "torrent" and "usenet" as the protocol strings, but newer versions
## emit the full class names "TorrentDownloadProtocol" and
## "UsenetDownloadProtocol" instead. List every string your app may return,
## separated by commas. The default covers both the legacy and new torrent
## strings. Add "usenet,UsenetDownloadProtocol" if you use a Usenet client.
# protocols = "torrent,TorrentDownloadProtocol"
## How long to wait for a reply from the backend.
# timeout = "10s"
## How long to wait after import before deleting the extracted items.
# delete_delay = "5m"
## If you use this app with NZB you may wish to delete archives after extraction.
## General recommendation is: do not enable this for torrent use.
## Setting this to true deletes the entire original download folder after import.
# delete_orig = false
## If you use Syncthing, setting this to true will make unpackerr wait for syncs to finish.
# syncthing = false
## Per-archive uncompressed-byte cap. Empty uses the app default:
## Sonarr/Whisparr 20GB, Radarr 75GB, Lidarr 4GB, Readarr 1GB.
## `0` or `0B` disables the cap for this instance.
# max_bytes = ""
##################################################################################
### ### STOP HERE ### STOP HERE ### STOP HERE ### STOP HERE #### STOP HERE ### #
### Only using Starr apps? The things above. The below configs are OPTIONAL. ### #
##################################################################################
##-Folders-#######################################################################
## This application can also watch folders for things to extract. If you copy a ##
## subfolder into a watched folder (defined below) any extractable items in the ##
## folder will be decompressed. This has nothing to do with Starr applications. ##
##################################################################################
#[[folder]]
# path = '/downloads/auto_extract'
## Paths to ignore while watching this folder. Excluded paths and their
## children are not tracked or extracted.
## Paths may be absolute, or relative to this folder's `path`.
# exclude_paths = []
## Path to extract files to. The default (leaving this blank) is the same as `path` (above).
# extract_path = ''
## Delete extracted or original files this long after extraction.
## The default is 10m. Set to 0 to disable all deletes. Deletes also
## require `delete_files` and/or `delete_original`. Uses Go Duration.
# delete_after = "10m"
## Unpackerr extracts archives inside archives. Set this to true to disable recursive extractions.
# disable_recursion = false
## Per-archive uncompressed-byte cap. Empty is unlimited. `0` or `0B` is also unlimited.
# max_bytes = ""
## Cap on files, directories, and symlinks created during extract. `0` is unlimited.
# max_files = 0
## Cap on `bytes written / archive file size`. `0` is unlimited.
# max_ratio = 0
## Cap on archives extracted from this folder's output (one extras pass). `0` is unlimited.
# max_nested = 0
## Walk depth for the extras pass. `0` is unlimited.
# extras_max_depth = 0
## When true, the initial archive search may include symlink-named files.
## The extras pass never follows archive-member zip links.
# allow_symlinks = false
## Delete extracted files after successful extraction? delete_after must be greater than 0.
# delete_files = false
## Delete original items after successful extraction? delete_after must be greater than 0.
# delete_original = false
## Disable extraction log (unpackerred.txt) file creation?
# disable_log = false
## Move extracted files into original folder? If false, files go into an _unpackerred folder.
# move_back = false
## Set this to true if you want this app to extract ISO files with .iso extension.
# extract_isos = false
################
### Webhooks ###
################
# Sends a webhook when an extraction queues, starts, finishes, and/or is deleted.
# Created to integrate with notifiarr.com.
# Also works natively with Discord.com, Telegram.org, and Slack.com webhooks.
# Can possibly be used with other services by providing a custom template_path.
###### Don't forget to uncomment [[webhook]] and url at a minimum !!!!
#[[webhook]]
# url = "https://notifiarr.com/api/v1/notification/unpackerr/api_key_from_notifiarr_com"
## Provide an optional name to hide the URL in logs.
## If a name is not provided then the URL is used.
# name = ""
## Do not log success (less log spam).
# silent = false
## List of event ids to send notification for, [0] for all.
## The default is [0] and this is an example:
# events = [1, 4, 6]
## ===> Advanced Optional Webhook Configuration <===
## Used in Discord and Slack templates as bot name, in Telegram as chat_id.
# nickname = "Unpackerr"
## Also passed into templates. Used in Slack templates for destination channel.
# channel = ""
## List of apps to exclude. None by default. This is an example:
# exclude = ["readarr", "lidarr"]
## Override internal webhook template for discord.com or other hooks.
# template_path = ''
## Override automatic template detection. Values: notifiarr, discord, telegram, gotify, pushover, slack
# template = ""
## Set this to true to ignore the SSL certificate on the server.
# ignore_ssl = false
## You can adjust how long to wait for a server response.
# timeout = "10s"
## If your custom template uses another MIME type, set this.
# content_type = "application/json"
#####################
### Command Hooks ###
#####################
# Executes a script or command when an extraction queues, starts, finishes, and/or is deleted.
# All data is passed in as environment variables. Try /usr/bin/env to see what variables are available.
###### Don't forget to uncomment [[cmdhook]] at a minimum !!!!
#[[cmdhook]]
# command = '/downloads/scripts/command.sh'
## Provide an optional name to hide the URL in logs.
## If a name is not provided the first word in the command is used.
# name = ""
## Runs the command inside /bin/sh ('nix) or cmd.exe (Windows).
# shell = false
## Do not log command's output.
# silent = false
## List of event ids to run command for, [0] for all.
## The default is [0] and this is an example:
# events = [1, 4, 7]
## ===> Optional Command Hook Configuration <===
## List of apps to exclude. None by default. This is an example:
# exclude = ["readarr", "lidarr"]
## You can adjust how long to wait for the command to run.
# timeout = "10s"
## => Content Auto Generated, 31 AUG 2026 00:07 UTC
@@ -66,11 +66,15 @@ services:
- /var/run:/var/run:ro - /var/run:/var/run:ro
- /sys:/sys:ro - /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro - /var/lib/docker:/var/lib/docker:ro
- /dev/disk:/dev/disk:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
command: command:
- "--disable_metrics=percpu,tcp,udp,process,sched" - "--disable_metrics=percpu,tcp,udp,process,sched"
- "--housekeeping_interval=30s" - "--housekeeping_interval=30s"
- "--housekeeping_interval=1m" - "--housekeeping_interval=1m"
- "--docker_only=true" - "--docker_only=true"
cap_add:
- SYS_ADMIN
blackbox-exporter: blackbox-exporter:
image: prom/blackbox-exporter:latest image: prom/blackbox-exporter:latest
container_name: blackbox-exporter container_name: blackbox-exporter
@@ -139,18 +143,43 @@ services:
- default - default
- mediarr-services - mediarr-services
listenarr-exporter: #listenarr-exporter:
build: listenarr-exporter # build: listenarr-exporter
container_name: listenarr-exporter # container_name: listenarr-exporter
# restart: unless-stopped
# environment:
# LISTENARR_URL: http://listenarr:4545
# LISTENARR_APIKEY: FtKkg30FLbORoaJXXBx4oHJL2r1/3kPtZXKlxqSloWs
# ports:
# - "9712:9712"
# networks:
# - default
# - mediarr-services
loki:
image: grafana/loki:3.0.0
container_name: loki
restart: unless-stopped restart: unless-stopped
environment:
LISTENARR_URL: http://listenarr:4545
LISTENARR_APIKEY: FtKkg30FLbORoaJXXBx4oHJL2r1/3kPtZXKlxqSloWs
ports: ports:
- "9712:9712" - "3100:3100"
networks: command: -config.file=/etc/loki/local-config.yaml
- default
- mediarr-services alloy:
image: grafana/alloy:latest
container_name: alloy
restart: unless-stopped
ports:
- "12345:12345"
command: >
run /etc/alloy/config.alloy
--server.http.listen-addr=0.0.0.0:12345
volumes:
- ./alloy/config.alloy:/etc/alloy/config.alloy:ro
- /var/log:/var/log:ro
- /var/log/journal:/var/log/journal:ro
- /run/log/journal:/run/log/journal:ro
- /etc/machine-id:/etc/machine-id:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
volumes: volumes:
prometheus-data: prometheus-data:
@@ -27,7 +27,7 @@ scrape_configs:
- https://music.someoneslinux.selfhost.eu - https://music.someoneslinux.selfhost.eu
- https://passwd.someoneslinux.selfhost.eu - https://passwd.someoneslinux.selfhost.eu
- https://requests.someoneslinux.selfhost.eu - https://requests.someoneslinux.selfhost.eu
- https://torrent.someoneslinux.selfhost.eu # - https://torrent.someoneslinux.selfhost.eu
- https://status.someoneslinux.selfhost.eu - https://status.someoneslinux.selfhost.eu
relabel_configs: relabel_configs:
@@ -16,7 +16,6 @@ server {
music.someoneslinux.selfhost.eu music.someoneslinux.selfhost.eu
passwd.someoneslinux.selfhost.eu passwd.someoneslinux.selfhost.eu
requests.someoneslinux.selfhost.eu requests.someoneslinux.selfhost.eu
torrent.someoneslinux.selfhost.eu
status.someoneslinux.selfhost.eu status.someoneslinux.selfhost.eu
code.someoneslinux.selfhost.eu; code.someoneslinux.selfhost.eu;
#ssl_conf_command Groups X25519:secp256r1:secp384r1; #ssl_conf_command Groups X25519:secp256r1:secp384r1;
@@ -282,36 +281,36 @@ server {
} }
} }
################### ####################
# QBITTORRENT ## QBITTORRENT
################### ####################
server { #server {
listen 443 ssl;http2 on; # listen 443 ssl;http2 on;
server_name torrent.someoneslinux.selfhost.eu; # server_name torrent.someoneslinux.selfhost.eu;
#
add_header Content-Security-Policy "frame-ancestors 'self';" always; # add_header Content-Security-Policy "frame-ancestors 'self';" always;
# add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'self';" always; ## add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'self';" always;
add_header X-Frame-Options "SAMEORIGIN" always; # add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always; # add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always; # add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
#
ssl_certificate /etc/nginx/certs/live/cloud.someoneslinux.selfhost.eu/fullchain.pem; # ssl_certificate /etc/nginx/certs/live/cloud.someoneslinux.selfhost.eu/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/live/cloud.someoneslinux.selfhost.eu/privkey.pem; # ssl_certificate_key /etc/nginx/certs/live/cloud.someoneslinux.selfhost.eu/privkey.pem;
#
location / { # location / {
proxy_pass http://192.168.0.2:8080; # proxy_pass http://192.168.0.2:8080;
# Do not try another upstream on errors # # Do not try another upstream on errors
proxy_next_upstream off; # proxy_next_upstream off;
proxy_http_version 1.1; # proxy_http_version 1.1;
#
proxy_set_header Host $host; # proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade; # proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade; # proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Proto https; # proxy_set_header X-Forwarded-Proto https;
} # }
#
} #}
################### ###################
# GRFANA # GRFANA