From bbc56a9908ac5408835438d327b7f2b138ef965f Mon Sep 17 00:00:00 2001 From: Lucas Media Date: Wed, 21 Oct 2026 22:00:06 +0200 Subject: [PATCH] unpackerr, qbittorent separation add unpackerr docker compose separate qbittorrent into public/private gluetun DNS issue w rundfunkarr --- .../mediahost/mediaarr/docker-compose.yaml | 114 ++--- .../mediaarr/unpackerr/unpackerr.conf | 396 ++++++++++++++++++ .../mediahost/monitoring/docker-compose.yaml | 49 ++- .../mediahost/monitoring/prometheus.yml | 2 +- .../mediahost/nginx/conf.d/reverseProxy.conf | 61 ++- 5 files changed, 529 insertions(+), 93 deletions(-) create mode 100644 docker_compose/mediahost/mediaarr/unpackerr/unpackerr.conf diff --git a/docker_compose/mediahost/mediaarr/docker-compose.yaml b/docker_compose/mediahost/mediaarr/docker-compose.yaml index 37709d0..60bfbab 100644 --- a/docker_compose/mediahost/mediaarr/docker-compose.yaml +++ b/docker_compose/mediahost/mediaarr/docker-compose.yaml @@ -19,7 +19,8 @@ services: - /data/jellyfin/media/documentaries-english:/JellyfinDocus - /data/jellyfin/media/series-kids:/JellyfinKinder - /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 radarr-en: image: lscr.io/linuxserver/radarr:latest @@ -35,7 +36,8 @@ services: - ./radarr_EN:/config - /data/jellyfin/media/movies-english:/JellyfinMoviesEnglish - /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 radarr-de: image: lscr.io/linuxserver/radarr:latest @@ -52,7 +54,8 @@ services: - /data/jellyfin/media/movies-german:/JellyfinMoviesGerman - /data/jellyfin/media/movies-kids:/JellyfinKinder - /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 prowlarr: image: lscr.io/linuxserver/prowlarr:latest @@ -66,23 +69,19 @@ services: - TZ=Europe/Vienna volumes: - ./prowlarr:/config - gluetun-rundfunkarr-de: image: qmcgaw/gluetun:latest container_name: gluetun-rundfunkarr-de cap_add: - NET_ADMIN restart: unless-stopped - volumes: - ./gluetun-de:/gluetun/wireguard - environment: - VPN_SERVICE_PROVIDER=custom - VPN_TYPE=wireguard ports: - "6767:6767" # Rundfunkarr UI - rundfunkarr-de: image: ghcr.io/rundfunkarr/rundfunkarr:latest container_name: rundfunkarr-de @@ -100,18 +99,14 @@ services: network_mode: "service:gluetun-rundfunkarr-de" depends_on: - gluetun-rundfunkarr-de - gluetun-at: image: qmcgaw/gluetun:latest container_name: gluetun-at restart: unless-stopped - cap_add: - NET_ADMIN - devices: - /dev/net/tun:/dev/net/tun - ports: - "8888:8888" # HTTP Proxy - "1080:1080" # SOCKS5 Proxy @@ -121,9 +116,10 @@ services: - SOCKS5_ENABLED=on - HTTPPROXY=on - SOCKSPROXY=on - - 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: - ./gluetun-at:/gluetun/wireguard # lazylibrarian: @@ -140,7 +136,7 @@ services: # - ./lazylibrarian:/config # - /data/audiobookshelf/podcasts:/podcasts # - /data/audiobookshelf/audiobooks-englisch:/audiobooks -# - /torrent/qbittorrent/downloads:/downloads +# - /torrent/qbittorrent-private/downloads:/downloads flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest @@ -164,7 +160,8 @@ services: volumes: - ./lidarr:/config - /data/navidrome/music/music:/music - - /torrent/qbittorrent/downloads:/downloads + - /torrent/qbittorrent-private/downloads:/downloads-private + - /torrent/qbittorrent-public/downloads:/downloads-public ports: - 8686:8686 @@ -218,41 +215,9 @@ services: - /data/audiobookshelf/data/audiobooks-englisch:/audiobooks-english - /data/audiobookshelf/data/audiobooks-deutsch:/audiobooks-german - /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 - 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: image: lscr.io/linuxserver/jackett:latest container_name: jackett @@ -292,8 +257,9 @@ services: - "11011:11011" volumes: - ./cleanuparr:/config - - /torrent/qbittorrent/downloads:/downloads - - /torrent/qbittorrent/orphaned:/orphaned + - /torrent/qbittorrent-private/downloads:/downloads-private + - /torrent/qbittorrent-public/downloads:/downloads-public + - /torrent/qbittorrent-private/orphaned:/orphaned environment: - PORT=11011 - BASE_PATH= @@ -301,6 +267,52 @@ services: - PGID=1000 - UMASK=022 - 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: default: external: true diff --git a/docker_compose/mediahost/mediaarr/unpackerr/unpackerr.conf b/docker_compose/mediahost/mediaarr/unpackerr/unpackerr.conf new file mode 100644 index 0000000..a08cdf4 --- /dev/null +++ b/docker_compose/mediahost/mediaarr/unpackerr/unpackerr.conf @@ -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 diff --git a/docker_compose/mediahost/monitoring/docker-compose.yaml b/docker_compose/mediahost/monitoring/docker-compose.yaml index 888e131..2963ca9 100644 --- a/docker_compose/mediahost/monitoring/docker-compose.yaml +++ b/docker_compose/mediahost/monitoring/docker-compose.yaml @@ -66,11 +66,15 @@ services: - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro + - /dev/disk:/dev/disk:ro + - /var/run/docker.sock:/var/run/docker.sock:ro command: - "--disable_metrics=percpu,tcp,udp,process,sched" - "--housekeeping_interval=30s" - "--housekeeping_interval=1m" - "--docker_only=true" + cap_add: + - SYS_ADMIN blackbox-exporter: image: prom/blackbox-exporter:latest container_name: blackbox-exporter @@ -139,18 +143,43 @@ services: - default - mediarr-services - listenarr-exporter: - build: listenarr-exporter - container_name: listenarr-exporter + #listenarr-exporter: + # build: 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 - environment: - LISTENARR_URL: http://listenarr:4545 - LISTENARR_APIKEY: FtKkg30FLbORoaJXXBx4oHJL2r1/3kPtZXKlxqSloWs ports: - - "9712:9712" - networks: - - default - - mediarr-services + - "3100:3100" + command: -config.file=/etc/loki/local-config.yaml + + 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: prometheus-data: diff --git a/docker_compose/mediahost/monitoring/prometheus.yml b/docker_compose/mediahost/monitoring/prometheus.yml index d553d69..434a4b9 100644 --- a/docker_compose/mediahost/monitoring/prometheus.yml +++ b/docker_compose/mediahost/monitoring/prometheus.yml @@ -27,7 +27,7 @@ scrape_configs: - https://music.someoneslinux.selfhost.eu - https://passwd.someoneslinux.selfhost.eu - https://requests.someoneslinux.selfhost.eu - - https://torrent.someoneslinux.selfhost.eu +# - https://torrent.someoneslinux.selfhost.eu - https://status.someoneslinux.selfhost.eu relabel_configs: diff --git a/docker_compose/mediahost/nginx/conf.d/reverseProxy.conf b/docker_compose/mediahost/nginx/conf.d/reverseProxy.conf index efcd236..f1d2d8c 100644 --- a/docker_compose/mediahost/nginx/conf.d/reverseProxy.conf +++ b/docker_compose/mediahost/nginx/conf.d/reverseProxy.conf @@ -16,7 +16,6 @@ server { music.someoneslinux.selfhost.eu passwd.someoneslinux.selfhost.eu requests.someoneslinux.selfhost.eu - torrent.someoneslinux.selfhost.eu status.someoneslinux.selfhost.eu code.someoneslinux.selfhost.eu; #ssl_conf_command Groups X25519:secp256r1:secp384r1; @@ -282,36 +281,36 @@ server { } } -################### -# QBITTORRENT -################### -server { - listen 443 ssl;http2 on; - server_name torrent.someoneslinux.selfhost.eu; - - add_header Content-Security-Policy "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-Content-Type-Options "nosniff" always; - add_header Referrer-Policy "strict-origin-when-cross-origin" 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_key /etc/nginx/certs/live/cloud.someoneslinux.selfhost.eu/privkey.pem; - - location / { - proxy_pass http://192.168.0.2:8080; - # Do not try another upstream on errors - proxy_next_upstream off; - proxy_http_version 1.1; - - proxy_set_header Host $host; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_set_header X-Forwarded-Proto https; - } - -} +#################### +## QBITTORRENT +#################### +#server { +# listen 443 ssl;http2 on; +# server_name torrent.someoneslinux.selfhost.eu; +# +# add_header Content-Security-Policy "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-Content-Type-Options "nosniff" always; +# add_header Referrer-Policy "strict-origin-when-cross-origin" 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_key /etc/nginx/certs/live/cloud.someoneslinux.selfhost.eu/privkey.pem; +# +# location / { +# proxy_pass http://192.168.0.2:8080; +# # Do not try another upstream on errors +# proxy_next_upstream off; +# proxy_http_version 1.1; +# +# proxy_set_header Host $host; +# proxy_set_header Upgrade $http_upgrade; +# proxy_set_header Connection $connection_upgrade; +# proxy_set_header X-Forwarded-Proto https; +# } +# +#} ################### # GRFANA