Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/install/choosemethod.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pagination_next: null
description: Choose an Unpackerr install method.
---

We recommended to installing Unpackerr the same way you installed your
We recommend installing Unpackerr the same way you installed your
Starr or download apps. If your existing infrastructure exists in Docker,
then Unpackerr should probably live in Docker too.

Expand All @@ -17,14 +17,14 @@ reside. Read more about that on the [Docker page](docker#folder-watcher).
## Instructions Available

- [Docker](/docs/install/docker): [Compose](/docs/install/compose),
[unRAID](/docs/install/unraid), [TrueNAS Scale](/docs/install/truenas-scale)
[unRAID](/docs/install/unraid), [TrueNAS](/docs/install/truenas-scale)
- [FreeBSD](/docs/install/freebsd)
- [Linux: with root](/docs/install/linux), [without root / seedbox](/docs/install/seedbox)
- [macOS](/docs/install/macos)
- [Windows](/docs/install/windows)

:::tip[CPU Hog]
Unpackerr uses a lot CPU while extracting, and tends not to work well when
Unpackerr uses a lot of CPU while extracting, and tends not to work well when
running on smaller systems like Synology NAS devices. Running Unpackerr on
a system with a large CPU is ideal to avoid system performance degradation.
The application uses only a few CPU cycles at idle to poll Starr apps and/or
Expand Down
4 changes: 3 additions & 1 deletion docs/install/compose.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ import DataMount from './includes/dockerdatamount.md';
- Then start it, like this:

```shell
docker-compose up -d
docker compose up -d
```

Compose V1 used `docker-compose` (hyphen). Compose V2 is `docker compose` (space).

Here's an example minimal compose file. This works well, and all the defaults should work for you too.
The [`user:` parameter](https://docs.docker.com/compose/compose-file/05-services/#user) controls
the uid and gid that the app runs as. The default is root if you don't include it, but you should definitely
Expand Down
8 changes: 4 additions & 4 deletions docs/install/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ and [example config](https://github.com/Unpackerr/unpackerr/blob/main/examples/u

## Config

- Setting a log file is strongly recommend. This makes it much easier to troubleshoot problems.
- Setting a log file is strongly recommended. This makes it much easier to troubleshoot problems.
- To use a config file in Docker, mount `/config` to the container and Unpackerr will write a config file.
- Update the new file at `/config/unpackerr.conf` and restart the container.
- When using a config file you must uncomment at minimum the `[[header]]` <font color="gray">
Expand All @@ -42,7 +42,7 @@ add another `[[header]]` <font color="gray">ex. `[[sonarr]]`</font> and the
`url`/`api_key`/etc under it. When adding a second instance to the __environment
variables__, you must increment the `0` to a `1`. And to a `2` if you have 3
instances. There is no limit to the number of supported instances. This notation
works for all starr apps, folders, command hooks, and web hooks.
works for all Starr apps, folders, command hooks, and webhooks.

<details>
<summary>Config examples with multiple instances.</summary>
Expand Down Expand Up @@ -121,12 +121,12 @@ _<font color="gray">This feature was added in Unpackerr v0.14.0.</font>_

## Event IDs

Event IDs are needed/used in command hooks and webhooks.
Event IDs are used in command hooks and webhooks.

`0` = all, `1` = queued, `2` = extracting, `3` = extract failed, `4` = extracted,
`5` = imported, `6` = deleting, `7` = delete failed, `8` = deleted, `9` = nothing extracted

The 'nothing extracted' event (9) only fires for the folder watcher, not starr apps.
The `nothing extracted` event (`9`) only fires for the folder watcher, not Starr apps.

---

Expand Down
12 changes: 6 additions & 6 deletions docs/install/docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ GoLift software has a [Docker Open Source Sponsorship](https://docs.docker.com/t
That means there are **no pull limits for any [`golift/*` image on Docker Hub](https://hub.docker.com/u/golift).**
Even if you're not logged in.

This project builds automatically in [Docker Cloud](https://hub.docker.com/r/golift/unpackerr) and creates
[ready-to-use multi-architecture images](https://hub.docker.com/r/golift/unpackerr/tags) images.
This project builds automatically on [Docker Hub](https://hub.docker.com/r/golift/unpackerr) and creates
[ready-to-use multi-architecture images](https://hub.docker.com/r/golift/unpackerr/tags).
The `latest` tag is always a [tagged release on GitHub](https://github.com/Unpackerr/unpackerr/releases).

- Pull the DockerHub image with this command:
Expand All @@ -49,7 +49,7 @@ The `latest` tag is always a [tagged release on GitHub](https://github.com/Unpac
```shell
docker pull golift/unpackerr
docker run -d -v /mnt/HostDownloads:/downloads \
-e "UN_SONARR_0_URL=http://localhost:8989" \
-e "UN_SONARR_0_URL=http://sonarr:8989" \
-e "UN_SONARR_0_API_KEY=kjsdkasjdaksdj" golift/unpackerr
docker logs <container id from docker run>
```
Expand Down Expand Up @@ -84,7 +84,7 @@ The `golift` docker container runs as uid 0 (root) by default. This is probably
Make sure to set the correct uid and gid with the `--user` parameter. Example:

```bash
# This commands runs golift/unpackerr with UID 1000 and GID 100.
# This command runs golift/unpackerr with UID 1000 and GID 100.
docker run --user 1000:100 -d -v /mnt/data:/data -v /mnt/config:/config golift/unpackerr
```

Expand All @@ -97,12 +97,12 @@ Find examples in the [Docker Compose instruction](compose).
### Hotio

The primary difference between the golift and hotio containers is how you set the uid and gid.
Hotio does not user the `--user` parameter and instead sets the UID and GID with environment
Hotio does not use the `--user` parameter and instead sets the UID and GID with environment
variables. *Passing the `--user` parameter to the hotio container will render it inoperable.*
Pass the `PUID` and `PGID` environment variables when using hotio's container. Example:

```bash
# This commands runs hotio/unpackerr with UID 1000 and GID 100.
# This command runs hotio/unpackerr with UID 1000 and GID 100.
docker run -e PUID=1000 -e PGID=100 -d -v /mnt/data:/data -v /mnt/config:/config hotio/unpackerr
```

Expand Down
5 changes: 3 additions & 2 deletions docs/install/freebsd.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ description: Install Unpackerr on a FreeBSD server.
import ArchiveAccess from './includes/archiveaccess.md';

1. Download a package from the [latest release](https://github.com/Unpackerr/unpackerr/releases/latest).
1. Install it with `pkg add -f` (the force flag is required because the package has
[a bug](https://github.com/Unpackerr/unpackerr/issues/352))
1. Install it with `pkg add`. Older packages were labeled with the wrong architecture
([issue 352](https://github.com/Unpackerr/unpackerr/issues/352)); if `pkg` refuses
the file, use `pkg add -f`.
1. Edit the config file at `/etc/unpackerr/unpackerr.conf`,
or [generate one](https://notifiarr.com/unpackerr) and start it.
1. Not many folks use FreeBSD, but we can try to help if you drop by the [Discord](https://golift.io/discord).
Expand Down
2 changes: 1 addition & 1 deletion docs/install/includes/linuxpermissions.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ user or group read and write access to your archives. That may mean adding the `
user, for example, to the `debian-transmission` group.
You would do that with a command such as `sudo usermod -aG debian-transmission unpackerr`

It's only suggested you do run `usermod` if you know what it does and how to set a umask.
Only run `usermod` if you know what it does and how to set a umask.
You probably instead want to change the uid and/or gid as shown next.

### Change the uid/gid
Expand Down
2 changes: 1 addition & 1 deletion docs/install/linux.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: linux
title: Repository
title: Linux
pagination_prev: install/choosemethod
pagination_next: install/configuration
description: Install Unpackerr on a Linux server.
Expand Down
6 changes: 3 additions & 3 deletions docs/install/macos.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
---
id: macos
title: MacOS
title: macOS
pagination_prev: install/choosemethod
pagination_next: install/configuration
description: Install Unpackerr on a macOS system.
---

import ArchiveAccess from './includes/archiveaccess.md';

<ArchiveAccess />

## Universal Binary App

1. Download a `.dmg` file from the
Expand All @@ -21,3 +19,5 @@ import ArchiveAccess from './includes/archiveaccess.md';
1. Click the menu bar icon again and select `Quit`. Then open the app again.
1. View the logs by clicking the menu bar icon and `Logs` -> `View`.
1. You can add it to `Login Items` to run it automatically when you login.

<ArchiveAccess />
6 changes: 3 additions & 3 deletions docs/install/seedbox.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: Install Unpackerr on a Linux server without root.

import ArchiveAccess from './includes/archiveaccess.md';

**These directions explain how to install Unpackerr on your linux shell without root.**
**These directions explain how to install Unpackerr on your Linux shell without root.**

1. Download a binary from the [latest release](https://github.com/Unpackerr/unpackerr/releases/latest).
The `unpackerr.amd64.linux.gz` file is almost certainly what you want to grab,
Expand All @@ -18,7 +18,7 @@ import ArchiveAccess from './includes/archiveaccess.md';
1. Download the [example config file](https://github.com/Unpackerr/unpackerr/blob/main/examples/unpackerr.conf.example),
or [generate one](https://notifiarr.com/unpackerr).
1. Edit config file to suit your needs: `nano unpackerr.conf`
1. Put both on your Linux shell server, in an `~/unapckerr/` folder.
1. Put both on your Linux shell server, in an `~/unpackerr/` folder.
1. Run Unpackerr in the background, `screen` is the easiest way to do so.

<ArchiveAccess />
Expand Down Expand Up @@ -60,7 +60,7 @@ wget https://raw.githubusercontent.com/Unpackerr/unpackerr/$TAG/examples/unpacke
chmod 0600 $HOME/unpackerr/unpackerr.conf

# This opens nano, so you may edit unpackerr.conf to suit your needs.
# Set a starr app url and api key, and a log file at minimum.
# Set a Starr app url and api key, and a log file at minimum.
# "~/unpackerr/unpackerr.log" is a good path for a log file.
nano $HOME/unpackerr/unpackerr.conf

Expand Down
10 changes: 5 additions & 5 deletions docs/install/unraid.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ On the install screen, fill in the `URL` and `API_KEY` for one or more of the St
:::note[Multiple Instances]
If you have, for instance, two Radarrs, you can simply add two new variables:
`UN_RADARR_1_URL` and `UN_RADARR_1_API_KEY`. If you have 3, then increase
the `1` to a `2` and so on. This works for all starr apps, folders, webhooks and command
the `1` to a `2` and so on. This works for all Starr apps, folders, webhooks and command
hooks. There is no limit to how many you may configure.
:::

It's also recommend that you set a log file.
It's recommended to put it in your downloads location, and an example follows.
It's also recommended that you set a log file.
Put it in your downloads location; an example follows.

![Bind volume for Unpackerr log file](/img/screenshots/unraid/bindvolume.png "bind volume")

Expand All @@ -50,15 +50,15 @@ In other words, if Unpackerr has `/downloads <-> /mnt/user/downloads` and Sonarr
`/data <-> /mnt/user/downloads`, Unpackerr will not be able to find your files. In this hypothetical, you
must edit the Unpackerr `/downloads` mount, and change the _Container Path_ to `/data` so it matches Sonarr.

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

## Permissions

Set the UID and GID by adding `--user uid:gid` to the `Extra Parameters`
section of the unraid template after enabling the `Advanced` view.
![Enable Docker advanced view](/img/screenshots/unraid/advancedview.png "advanced view")
You must make these match your starr app so hard links work correctly.
You must make these match your Starr app so hard links work correctly.
**Other containers, use env variables such as `PUID` and `PGID`, but the
Go Lift unpackerr container does not use these.**
e.g. If Sonarr has `PUID` of `99` and `PGID` of `100`, then you must
Expand Down
15 changes: 8 additions & 7 deletions docs/install/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ The following content was provided by a community member, [IamGimli](https://git
If you want unpackerr to run automatically upon Windows boot,
without a user needing to be logged-on, follow these instructions:

Download and configure unpackerr according to the instructions on the
[main page](https://github.com/davidnewhall/unpackerr).
Download and configure unpackerr according to the instructions
[above](#windows-installation).
Make sure unpackerr runs without error messages in the logs before you continue.
Once you've confirmed that unpackerr is properly configured, close it by
right-clicking its icon in the taskbar and selecting `Quit`.
Expand Down Expand Up @@ -77,8 +77,8 @@ Windows Registry Editor Version 5.00
"FailureActionsOnNonCrashFailures"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\unpackerr-Service\Parameters]
"AppDirectory"="C:\\Program Files\\unpackerr"
"Application"="C:\\Program Files\\unpackerr\\unpackerr.amd64.exe"
"AppDirectory"="C:\\ProgramData\\unpackerr"
"Application"="C:\\ProgramData\\unpackerr\\unpackerr.amd64.exe"
"AppParameters"=""

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\unpackerr-Service\Parameters\AppExit]
Expand All @@ -87,9 +87,10 @@ Windows Registry Editor Version 5.00

Replace **accountname** with the name of the local user account that you want
unpackerr to run under. Make sure that account has all the permissions required
to access to all of the paths that unpackerr will use. Also make sure that the
"AppDirectory" and "Application" fields point to the location where you installed
unpackerr, making sure to double up the backslashes in the path.
to access all of the paths that unpackerr will use. Also make sure that the
"AppDirectory" and "Application" fields match the location where you installed
unpackerr (`C:\ProgramData\unpackerr` in the steps above), doubling the
backslashes in the path.

Save the file and then double-click it. You'll get a warning that importing
registry keys could harm your system, click "Yes".
Expand Down
59 changes: 35 additions & 24 deletions docs/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: Introduction and explanation of Unpackerr.

Unpackerr is an application that runs on Windows, macOS, Linux, FreeBSD and in Docker.
You can use it to watch a download folder and extract new items.
The more common use is to watch starr apps (radarr, sonarr, readarr, lidarr, whisparr)
The more common use is to watch Starr apps (Radarr, Sonarr, Readarr, Lidarr, Whisparr)
and extract items they download. It can do both, at the same time even.

## Features
Expand All @@ -28,18 +28,19 @@ and extract items they download. It can do both, at the same time even.
## Description

This application runs as a daemon on your download host. It checks for completed
downloads and extracts them so Lidarr, Radarr, Readarr, and Sonarr may import them.
There are a handful of options out there for extracting and deleting files after
your client downloads them. I just didn't care for any of them, so I wrote my own.
I wanted a small single-binary with reasonable logging that can extract downloaded
archives and clean up the mess after they've been imported.
downloads and extracts them so Lidarr, Radarr, Readarr, Sonarr, and Whisparr may
import them. There are a handful of options out there for extracting and deleting
files after your client downloads them. I just didn't care for any of them, so I
wrote my own. I wanted a small single-binary with reasonable logging that can extract
downloaded archives and clean up the mess after they've been imported.

Not a starr app user, and just need to extract files? We do that too. This
Not a Starr app user, and just need to extract files? We do that too. This
application can run standalone and extract files found in a "watch" folder. In other
words, you can configure this application to watch your download folder, and it will
happily extract everything you download. This has nothing to do with the four Starr
apps mentioned in the previous paragraph. This Folder-watch feature may be used with
or without Starr apps.
happily extract everything you download. This has nothing to do with the Starr
apps mentioned in the previous paragraph. This folder-watch feature may be used with
or without Starr apps. For a one-shot command-line extractor (no daemon, no Starr
polling), see [xt](/docs/xt).

## Archives Supported

Expand All @@ -49,34 +50,44 @@ encrypted rars and 7zips. And ISO disc images. Need something else? Ask. Does it
too much? Let me know what knobs you need.
[Open a request](https://github.com/Unpackerr/unpackerr/issues/new)!

Unpackerr will decompress archives of these types:

- `rar`, `tar`, `tgz`, `gz`, `zip`, `7z`, `bz2`, `tbz2`, `iso`
- Multi-file archives are supported with RAR and 7ZIP formats.
- Password protected archives are supported with RAR and 7ZIP formats.
- Archives are detected by the file extension. ISO is disabled by default.
Unpackerr uses [xtractr](https://github.com/golift/xtractr) and decompresses archives
of these types:

- Zip: `zip`
- RAR: `rar`, `r00`
- 7-Zip: `7z`, `7z.001`
- tar: `tar`, `tar.gz`, `tgz`, `tar.bz2`, `tbz`, `tbz2`, `tar.xz`, `txz`, `tar.z`, `tz`, `tlz`
- gzip / bzip2 / xz / zstd: `gz`, `gzip`, `bz2`, `xz`, `zst`, `zstd`
- Other compressors: `lz4`, `lz`, `lzip`, `lzma`, `lzma2`, `z`, `br`, `brotli`,
`s2`, `snappy`, `sz`, `zlib`, `zz`
- Packages and images: `iso`, `cpio`, `cpio.gz`, `cpgz`, `ar`, `deb`, `rpm`
- Cue sheets (FLAC splits): `cue`, `cue.txt`
- Multi-file archives are supported with RAR and 7-Zip.
- Password protected archives are supported with RAR and 7-Zip.
- Archives are detected by the file extension. ISO is disabled by default
(`extract_isos`).

## Starr Logic

The application polls Radarr, Readarr, Sonarr and Lidarr at the `interval` configured.
The queued items are inspected for completeness.
The application polls Radarr, Readarr, Sonarr, Lidarr, and Whisparr at the `interval`
configured. The queued items are inspected for completeness.

When Unpackerr finds an item in a starr app, the download location is checked for an
archive file. If an extractable archive exists, and the starr app has `status=Completed`
When Unpackerr finds an item in a Starr app, the download location is checked for an
archive file. If an extractable archive exists, and the Starr app has `status=Completed`
from your download client, Unpackerr will extract the file. Files are extracted to a
temporary folder, and then moved back into the download location for
_Completed Download Handling_ to import them. When the item falls out of the starr app
_Completed Download Handling_ to import them. When the item falls out of the Starr app
queue, the extracted files are deleted.

# Attribution
## Attribution

The following fine folks are providing their services, completely free! These service
integrations are used for things like storage, building, compiling, distribution and
documentation support. This project succeeds because of them. Thank you!

[![packagecloud](https://docs.golift.io/integrations/packagecloud.png "PackageCloud.io")](https://packagecloud.io)
[![GitHub](https://docs.golift.io/integrations/octocat.png "GitHub")](https://GitHub.com)
[![Docker Cloud](https://docs.golift.io/integrations/docker.png "Docker Cloud")](https://cloud.docker.com)
[![Docker Hub](https://docs.golift.io/integrations/docker.png "Docker Hub")](https://hub.docker.com/r/golift/unpackerr)
[![Homebrew](https://docs.golift.io/integrations/homebrew.png "Homebrew")](https://brew.sh)
[![Go Lift](https://docs.golift.io/integrations/golift.png "Go Lift")](https://golift.io)
[![CloudFlare](https://docs.golift.io/integrations/cloudflare.png "CloudFlare")](https://cloudflare.com)
[![Cloudflare](https://docs.golift.io/integrations/cloudflare.png "Cloudflare")](https://cloudflare.com)
Loading
Loading