####################################################### ## 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