Skip to content

Commit 0ab9e44

Browse files
authored
Merge pull request #54 from Unpackerr/docs/whisparr-as-radarr
Document Unpackerr v1 upgrades
2 parents 315a3ce + 2ac54d3 commit 0ab9e44

11 files changed

Lines changed: 670 additions & 74 deletions

File tree

‎docs/install/choosemethod.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ title: Choose Install Method
44
description: Choose an Unpackerr install method.
55
---
66

7+
Coming from 0.16 or earlier? Read [Upgrading to v1](/docs/install/upgrading) before you
8+
pull a new image or package.
9+
710
We recommend installing Unpackerr the same way you installed your
811
Starr or download apps. If your existing infrastructure exists in Docker,
912
then Unpackerr should probably live in Docker too.

‎docs/install/compose.md‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,21 @@ And if you're trying to watch a folder, add this `environment:` variable with _y
5454
- UN_FOLDER_0_PATH=/downloads/autoxtract
5555
```
5656

57+
On Docker, filesystem events are often missing. Add a poll interval on that
58+
same key if nothing shows in the queue:
59+
60+
```yaml
61+
- UN_FOLDER_0_INTERVAL=1s
62+
```
63+
64+
Incomplete downloads can wait on a suffix instead of polling:
65+
66+
```yaml
67+
- UN_FOLDER_0_WAIT_EXTENSION_0=.part
68+
```
69+
70+
See [Folder Watcher](docker#folder-watcher).
71+
5772
## Data Mount
5873

5974
<DataMount />

‎docs/install/configuration.md‎

Lines changed: 104 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,52 +14,65 @@ Expand the blue sections to see excerpts from the
1414
[example docker-compose.yml](https://github.com/Unpackerr/unpackerr/blob/main/examples/docker-compose.yml)
1515
and [example config](https://github.com/Unpackerr/unpackerr/blob/main/examples/unpackerr.conf.example) files.
1616

17+
## Web UI
18+
19+
:::danger[Web UI]
20+
21+
- Added in v1.0.0 (October 2026).
22+
23+
Most users should use the Web UI to configure Unpackerr.
24+
While you can use this page for reference, you should avoid editing the config file.
25+
26+
- See [Web UI page](web-ui).
27+
28+
:::
29+
30+
Unpackerr has a built in Web UI where you can configure all the settings using a validated form.
31+
The Web UI also makes it easy to see what Unpackerr is doing live and to view the extraction history.
32+
This page exists from a time when configuration required editing a file. Now it's for power users.
33+
34+
**Use the web interface. Don't edit the config file.**
35+
1736
## Config
1837

1938
- Setting a log file is strongly recommended. This makes it much easier to troubleshoot problems.
2039
- To use a config file in Docker, mount `/config` to the container and Unpackerr will write a config file.
2140
- Update the new file at `/config/unpackerr.conf` and restart the container.
22-
- When using a config file you must uncomment at minimum the `[[header]]` <font color="gray">
23-
ex. `[[radarr]]`</font>, `url` and `api_key`.
41+
- When using a config file you must uncomment at minimum the `[header.key]` <font color="gray">
42+
ex. `[radarr.radarr]`</font>, `url` and `api_key`.
2443
- Uncomment means remove the hash `#` at the beginning of the line.
2544
- The config file format is [TOML](https://toml.io).
2645
- Indentation is not important like YAML files, but it's used for ease of readability.
2746
- You may use `"` or `'` or `'''` or `"""` to wrap strings. Recommend `'` for paths.
2847

29-
### Generator
30-
31-
[Notifiarr](https://notifiarr.com) hosts a configuration file maker.
32-
Simply fill in a web form, and click a button to get a working config file.
33-
34-
- **Access the generator here: https://notifiarr.com/unpackerr**
35-
3648
### Two+ Instances
3749

38-
When adding a second (or third+) instance to the __config file__, you just
39-
add another `[[header]]` <font color="gray">ex. `[[sonarr]]`</font> and the
40-
`url`/`api_key`/etc under it. When adding a second instance to the __environment
41-
variables__, you must increment the `0` to a `1`. And to a `2` if you have 3
42-
instances. There is no limit to the number of supported instances. This notation
43-
works for all Starr apps, folders, command hooks, and webhooks.
50+
When adding a second (or third+) instance to the __config file__, use another
51+
named table <font color="gray">ex. `[sonarr.0]`, `[sonarr.uhd]`</font> and the
52+
`url`/`api_key`/etc under it. Environment variables use that same key:
53+
`UN_SONARR_0_URL` or `UN_SONARR_uhd_URL`. Array rows from older configs load as
54+
keys `0`, `1`, …. There is no limit to the number of supported instances. This
55+
notation works for all Starr apps, folders, command hooks, and webhooks.
4456

4557
<details>
4658
<summary>Config examples with multiple instances.</summary>
4759

4860
- Config File example with two Radarrs and two Folders.
4961

50-
```yaml
51-
[[radarr]]
62+
```toml
63+
[radarr.0]
5264
url = "http://radarr"
5365
api_key = "32characters"
5466

55-
[[radarr]]
67+
[radarr.uhd]
68+
name = "4K"
5669
url = "http://radarr4k"
5770
api_key = "32morecharacters"
5871

59-
[[folder]]
72+
[folder.0]
6073
path = "/data/downloads/software/"
6174

62-
[[folder]]
75+
[folder.games]
6376
path = "/data/downloads/games/"
6477
```
6578

@@ -68,16 +81,80 @@ works for all Starr apps, folders, command hooks, and webhooks.
6881
```shell
6982
UN_RADARR_0_URL=http://radarr
7083
UN_RADARR_0_API_KEY=32characters
71-
UN_RADARR_1_URL=http://radarr4k
72-
UN_RADARR_1_API_KEY=32morecharacters
84+
UN_RADARR_uhd_URL=http://radarr4k
85+
UN_RADARR_uhd_API_KEY=32morecharacters
7386
UN_FOLDER_0_PATH=/data/downloads/software/
74-
UN_FOLDER_1_PATH=/data/downloads/games/
87+
UN_FOLDER_games_PATH=/data/downloads/games/
7588
```
7689

7790
</details>
7891

79-
Anything that [has a header](https://github.com/Unpackerr/unpackerr/blob/main/examples/unpackerr.conf.example#L99)
80-
with double brackets `[[..]]` can be repeated as many times as you'd like.
92+
Anything that has a header like `[sonarr.0]` or `[folder.software]` can be repeated with a unique key.
93+
94+
### Whisparr
95+
96+
- Changed in v1.0.0 (October 2026).
97+
98+
Whisparr uses the Radarr API. Configure it as `[radarr.whisparr]` (env `UN_RADARR_whisparr_*`).
99+
Set `name = "Whisparr"` if logs and hooks should keep that label.
100+
101+
### Named instances
102+
103+
- Added in v1.0.0 (October 2026).
104+
105+
Starr apps, folders, webhooks, and command hooks are identified by a short key, not by list position.
106+
In the config file use `[sonarr.uhd]`, `[folder.software]`, `[webhook.discord]`; in env use `UN_SONARR_uhd_URL`,
107+
`UN_FOLDER_software_PATH`, `UN_WEBHOOK_discord_URL`. The optional `name` on Starr and hooks is only a label
108+
(`name = "Starrs & Stripes"`). Existing `[[sonarr]]` / `[[folder]]` / `[[webhook]]` tables still load as keys
109+
`0`, `1`, …. Open that section in the web UI and click Save: Unpackerr rewrites the file to named tables automatically.
110+
111+
### Watch folders
112+
113+
- Changed in v1.0.0 (October 2026).
114+
115+
Folder watch is not Starr. Each `[folder.<key>]` is a path Unpackerr extracts
116+
on its own. The generated tables below list every option.
117+
118+
**Poll interval** is per folder (`interval`, env `UN_FOLDER_<key>_INTERVAL`).
119+
Default `0s` uses filesystem events. Set `1s` (or similar) on Docker and CIFS
120+
when new archives never show in the queue. Global `folders.interval` /
121+
`UN_FOLDERS_INTERVAL` is gone; leftover `[folders] interval` is ignored.
122+
Details: [Docker Folder Watcher](docker#folder-watcher).
123+
124+
**After a restart**, recent folder history returns to the live queue the same
125+
way Starr items do: EXTRACTED still waiting on `delete_after`, EXTRACTFAILED
126+
retries, interrupted EXTRACTING, QUEUED, and WAITING after a retry. A path
127+
you removed from config is not restored. Windows matches watch paths without
128+
regard to drive-letter case.
129+
130+
**Incomplete downloads:** `wait_extensions` keeps the item WAITING while a
131+
matching file exists in that item's top folder (`.part`, `.crdownload`, …).
132+
Nested paths are not scanned. The queue shows the blocking filename.
133+
Recheck is every 5s and does not enable the poller.
134+
Env: `UN_FOLDER_<key>_WAIT_EXTENSION_0=.part`.
135+
136+
**Empty folders:** `skip_empty` (env `UN_FOLDER_<key>_SKIP_EMPTY`) drops
137+
archive-free folders after `start_delay` with no history row and no webhook.
138+
139+
### Lidarr cue sheets
140+
141+
Lidarr only. `split_flac` splits a completed download that has a CUE sheet.
142+
It splits both FLAC and APE images into one file per track, then asks Lidarr
143+
to import those tracks. Sonarr, Radarr, and Readarr ignore this setting.
144+
145+
When the image is APE, `ape_format` chooses the files those tracks become:
146+
147+
- `ape` keeps Monkey's Audio. This is the default, and an empty value means the same.
148+
- `wav` and `flac` decode the audio. FLAC cannot store 32-bit or float PCM.
149+
150+
`ape_compression` applies only when the format is APE. The choices are `1000`,
151+
`2000`, `3000`, `4000`, and `5000`. A default of `0` is set to `2000` (normal).
152+
WAV and FLAC ignore compression.
153+
154+
A lone `.ape` file that has no cue sheet is left for Lidarr to import as-is.
155+
156+
Environment variables use the instance key: `UN_LIDARR_<key>_SPLIT_FLAC`,
157+
`UN_LIDARR_<key>_APE_FORMAT`, and `UN_LIDARR_<key>_APE_COMPRESSION`.
81158

82159
{/* The Global content is generated from here: https://github.com/Unpackerr/unpackerr/tree/main/init/config */}
83160
<Global />
@@ -97,8 +174,8 @@ by setting the value to `filepath:/path/to/file.txt`. In other words, if you wan
97174
your Radarr API key to be read from a separate file, instead of storing it directly
98175
in the config file or environment variables you can do this:
99176

100-
```json
101-
[[radarr]]
177+
```toml
178+
[radarr.0]
102179
url = "https://some.url/radarr"
103180
api_key = "filepath:/etc/secrets/radarr.txt"
104181
```

‎docs/install/docker.md‎

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,28 @@ docker run -e PUID=1000 -e PGID=100 -d -v /mnt/data:/data -v /mnt/config:/config
106106

107107
## Folder Watcher
108108

109-
Watching folders in Docker will cause Unpackerr to constantly poll the
110-
watched-folder for changes at a default rate of `1s` (1 second).
109+
The Folder Watch feature uses `inotify` (a.k.a. `fsnotify`) to notice new
110+
archives. Each watch path has its own `interval`. The default is `0s`, which
111+
means filesystem events only — Unpackerr does **not** poll.
111112

112-
The Folder Watch feature uses `inotify` (a.k.a. `fsnotify`) to identify changes to the
113-
watched folder. A folder-poller is automatically started when run in Docker because
114-
`inotify` is unreliable. Disable the folder poller (and rely on `inotify` only) by
115-
setting `folders.interval` (`UN_FOLDERS_INTERVAL`) to `1ms`.
113+
Docker bind mounts and CIFS often drop or delay those events, so items never
114+
appear in the queue. Turn polling on for that path:
116115

117-
If Unpackerr has trouble determining when downloads are finished, set
118-
`start_delay` high enough to avoid beginning extracting files that are
119-
still being transferred.
116+
- Web UI: **Settings → Folders** → **Poll interval** (try `1s`).
117+
- Config: `interval = "1s"` under `[folder.downloads]`.
118+
- Env: `UN_FOLDER_downloads_INTERVAL=1s` (same key as the table).
119+
120+
Leave `interval` at `0s` when native fsnotify works. Polling increases disk
121+
reads. A folder with a poll interval uses the poller only; other folders keep
122+
fsnotify.
123+
124+
v0.x Docker installs auto-polled every 1s via global `folders.interval`
125+
(`UN_FOLDERS_INTERVAL`). That setting is gone. An old `[folders] interval`
126+
line in the file is ignored.
127+
128+
If Unpackerr starts extracting files that are still downloading, raise
129+
`start_delay`, or set `wait_extensions` (for example `.part`, `.crdownload`)
130+
on that folder. Waiting items are rechecked every 5 seconds without turning
131+
the poller on. See [Watch folders](configuration#watch-folders).
120132

121133
**Alternatively, run Unpackerr as a native service instead of in Docker.**

‎docs/install/unraid.md‎

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,32 @@ description: Install Unpackerr on your unRAID server!
66

77
# unRAID Install
88

9-
Unpackerr is available in the
10-
[Community Applications](https://github.com/selfhosters/unRAID-CA-templates/blob/main/templates/unpackerr.xml)
11-
on unRAID. Install it from the `Apps` page; see screenshot that follows.
9+
Unpackerr is available in
10+
[Community Applications](https://github.com/selfhosters/unRAID-CA-templates/blob/master/templates/unpackerr.xml)
11+
on unRAID. Install it from the **Apps** page.
1212

13-
![Community Applications Unpackerr install](/img/screenshots/unraid/install1.png "install")
13+
The golift template mounts **appdata** at `/config`, publishes port **5656** for
14+
the web UI, and runs as `--user 99:100`. Configure Sonarr, Radarr, Lidarr, and
15+
the rest in the browser after install. Do not put Starr URLs and API keys back
16+
into environment variables unless you want those fields locked in the UI.
1417

15-
On the install screen, fill in the `URL` and `API_KEY` for one or more of the Starr apps.
18+
Upgrading an existing 0.x container? See [Upgrading to v1](/docs/install/upgrading#unraid).
1619

17-
:::note[Multiple Instances]
18-
If you have, for instance, two Radarrs, you can simply add two new variables:
19-
`UN_RADARR_1_URL` and `UN_RADARR_1_API_KEY`. If you have 3, then increase
20-
the `1` to a `2` and so on. This works for all Starr apps, folders, webhooks and command
21-
hooks. There is no limit to how many you may configure.
22-
:::
20+
![Community Applications Unpackerr install](/img/screenshots/unraid/install1.png "install")
2321

24-
It's also recommended that you set a log file.
25-
Put it in your downloads location; an example follows.
22+
On the install screen, set **Downloads Location** so it matches your Starr apps
23+
(next section). Leave **appdata** at `/mnt/user/appdata/unpackerr/` unless you
24+
prefer another folder. Apply, then open the WebUI.
2625

27-
![Bind volume for Unpackerr log file](/img/screenshots/unraid/bindvolume.png "bind volume")
26+
First login is user `admin`. The password is printed once in the container log
27+
(`Generated temporary UI password`). Change it in Settings.
2828

2929
:::tip[Download Location]
30-
The most common misconfiguration on unRAID, by far, and it's not even a close second, is
31-
having the correct path mounted for your download location. As you see in the screenshot above,
32-
it's set to `host:/mnt/user/downloads` and `container:/downloads`. This is almost certainly
33-
not what you want. **Do this:**
30+
The most common misconfiguration on unRAID, by far, and it's not even a close
31+
second, is having the correct path mounted for your download location. As you
32+
see in the screenshot below, a host path of `/mnt/user/downloads` with a
33+
container path of `/downloads` is almost certainly not what you want.
34+
**Do this:**
3435

3536
1. Go into Unraid.
3637
1. Click on Docker.
@@ -43,31 +44,38 @@ not what you want. **Do this:**
4344

4445
![Starr app volume mounts](/img/screenshots/unraid/starrmounts.png "starr mounts")
4546

46-
If the highlighted portions above are not identical to the one below, then things are bound to work poorly.
47-
In other words, if Unpackerr has `/downloads <-> /mnt/user/downloads` and Sonarr has
48-
`/data <-> /mnt/user/downloads`, Unpackerr will not be able to find your files. In this hypothetical, you
49-
must edit the Unpackerr `/downloads` mount, and change the _Container Path_ to `/data` so it matches Sonarr.
47+
If the highlighted portions above are not identical to the one below, then
48+
things are bound to work poorly. In other words, if Unpackerr has
49+
`/downloads <-> /mnt/user/downloads` and Sonarr has
50+
`/data <-> /mnt/user/downloads`, Unpackerr will not be able to find your files.
51+
In this hypothetical, you must edit the Unpackerr `/downloads` mount, and
52+
change the _Container Path_ to `/data` so it matches Sonarr.
5053

5154
![Unpackerr volume mount](/img/screenshots/unraid/unpackerrmount.png "unpackerr mount")
5255
:::
5356

5457
## Permissions
5558

56-
Set the UID and GID by adding `--user uid:gid` to the `Extra Parameters`
57-
section of the unraid template after enabling the `Advanced` view.
58-
![Enable Docker advanced view](/img/screenshots/unraid/advancedview.png "advanced view")
59-
You must make these match your Starr app so hard links work correctly.
60-
**Other containers, use env variables such as `PUID` and `PGID`, but the
61-
Go Lift unpackerr container does not use these.**
62-
e.g. If Sonarr has `PUID` of `99` and `PGID` of `100`, then you must
63-
add **`--user 99:100`** to `Extra Parameters` as shown below.
59+
The template Extra Parameters already include `--user 99:100` (unRAID
60+
`nobody:users`), which matches typical linuxserver Starr containers. Change it
61+
if your Sonarr/Radarr uid:gid is different. **Other containers use `PUID` and
62+
`PGID`; the golift image does not.**
6463

6564
![Unpackerr Extra Parameters UID and GID](/img/screenshots/unraid/extraparameters.png "extra parameters")
6665

66+
The appdata folder and the config file inside it must be writable by that
67+
same user, or the UI cannot Save. If needed:
68+
69+
```bash
70+
chown -R 99:100 /mnt/user/appdata/unpackerr
71+
```
72+
6773
## Video Guide
6874

6975
This guide is provided by a community member, [@Celsian](https://www.youtube.com/@Celsian),
70-
consider giving him a sub and a like.
76+
consider giving him a sub and a like. It was recorded against the old env-var
77+
template; ignore the Sonarr/Radarr variable fields and use the web UI instead.
78+
The download-path matching still applies.
7179

7280
<iframe height="500" width="100%" src="https://www.youtube.com/embed/FfJqgm69ydA"
7381
frameborder="0" allowfullscreen title="UnRAID Video Guide"

0 commit comments

Comments
 (0)