diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4a60daa1e..9f54fd860 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -83,7 +83,7 @@ Controls markdown linting rules. Key settings:
- `MD013: false` - No line length limit
- `MD033: {...}` - Allow specific HTML elements
-- `MD024: { "siblings_only": true }` - Allow duplicate headers only if not siblings
+- `MD024: false` - Allow duplicate headers
- `MD046: { "style": "fenced" }` - Use fenced code blocks
### `.typos.toml`
@@ -102,9 +102,9 @@ Defines all the hooks and their configuration.
The repository includes GitHub Actions workflows that run the same checks:
-- **quality-checks.yml**: Runs pre-commit hooks on pull requests
-- Separate jobs for markdown linting and spell checking
-- Caches dependencies for faster builds
+- **pre-commit.yml**: Runs all pre-commit hooks (markdown linting, spell checking, formatting) on pushes and pull requests to `master`/`main`
+- A single `documentation-quality` job runs the full hook suite via `pre-commit/action`
+- Caches pre-commit environments and pip dependencies for faster builds
## Contributing Guidelines
diff --git a/README.md b/README.md
index 7ef7bfcfd..259fa093b 100644
--- a/README.md
+++ b/README.md
@@ -25,5 +25,5 @@ Feel free to contribute directly on the wiki or via Github Pull Requests.
Please ensure to markdown is formatted properly.
- Install Markdownlint `npm install -g markdownlint-cli`
-- Run the linting to attempt to fix issues. `markdownlint -f '**/*.md' -c .markdownlint.jsonc`
+- Run the linting to attempt to fix issues. `markdownlint -f '**/*.md' -c .markdownlint.json`
- Note any errors and correct them. This command should be ran from your local repo.
diff --git a/docker-arm-synology.md b/docker-arm-synology.md
index 3640596bb..205ea0882 100644
--- a/docker-arm-synology.md
+++ b/docker-arm-synology.md
@@ -3,11 +3,13 @@ title: Installing Docker on a Synology ARM NAS
description: Step-by-step guide for installing Docker on ARM-based Synology NAS devices and running Servarr applications
published: true
date: 2022-05-18T15:47:17.201Z
-tags: docker, synology, arm, installation, nas
+tags: docker, synology, arm, installation, nas, deprecated
editor: markdown
dateCreated: 2021-07-12T20:22:05.719Z
---
+> **This guide is outdated and deprecated.** It dates from 2021 and relies on an unmaintained third-party bootstrap that installs Docker 20.10.0 and Docker Compose v1 (`docker-compose`). It has not been validated against current DSM releases and may no longer work. Prefer Synology's official Container Manager on supported hardware; use this only if you understand the risks. {.is-warning}
+
# Introduction
Synology only offer a Docker package on their `x64` based NAS. Using this method to install Docker on an `aarch64` NAS is totally unsupported/untested and totally at your own risk. It is entirely possible it will destroy your NAS.
diff --git a/lidarr/activity.md b/lidarr/activity.md
index a07c06c09..534ada0ef 100644
--- a/lidarr/activity.md
+++ b/lidarr/activity.md
@@ -44,9 +44,15 @@ Each row has action icons on the right:
- **Manual Import** (person icon): opens the manual import dialog for this item, letting you match and import it yourself.
- **Grab** (download icon): re-sends the release to the download client. Useful if the client removed an item that's still in the Lidarr queue.
-- **Remove** (✕): removes the item from the Lidarr queue. When removing, you can also choose to:
- - **Remove from Download Client:** deletes the item from the download client as well. Use this for unmatched items Lidarr shouldn't download.
- - **Add to Blocklist:** prevents Lidarr from grabbing this release again.
+- **Remove** (✕): opens the Remove dialog, where you choose a **Removal Method** and a **Blocklist Method**.
+ - Removal Method:
+ - **Remove from Download Client:** deletes the item from the download client as well. Use this for unmatched items Lidarr shouldn't download.
+ - **Change Category:** moves the item to the download client's post-import category instead of deleting it (only available when a post-import category is configured).
+ - **Ignore Download:** leaves the item in the download client but stops Lidarr from processing it any further.
+ - Blocklist Method:
+ - **Do Not Blocklist:** removes the item without blocklisting the release.
+ - **Blocklist and Search:** blocklists the release and triggers a new search for a replacement.
+ - **Blocklist Only:** blocklists the release without searching for a replacement.
### Queue options
diff --git a/lidarr/beets-integration.md b/lidarr/beets-integration.md
index 12d8550cb..c22455663 100644
--- a/lidarr/beets-integration.md
+++ b/lidarr/beets-integration.md
@@ -33,11 +33,11 @@ Platform notes:
Both patterns require that Lidarr doesn't overwrite tags after beets has written them. Set this before configuring either pattern:
-**Settings → Metadata → Write Audio Tags → Write Tags: Never**
+**Settings → Metadata → Write Metadata to Audio Files → Tag Audio Files with Metadata: Never**
With this set, Lidarr won't write or rewrite audio file tags at any point. Beets becomes the sole tag writer. Lidarr continues to manage file names and folder structure via its naming templates. Lidarr delegates only tag content to beets.
-> If you had **Write Tags** set to anything other than **Never**, consider running a beets pass over your existing library after changing this setting, since Lidarr tagged those files and they may have gaps that beets can fill.
+> If you had **Tag Audio Files with Metadata** set to anything other than **Never** (the other options are *For new downloads only*, *All files; initial import only*, and *All files; keep in sync with MusicBrainz*), consider running a beets pass over your existing library after changing this setting, since Lidarr tagged those files and they may have gaps that beets can fill.
{.is-info}
# Pattern 1: Import script (stateless, per-import)
@@ -138,7 +138,7 @@ foreach ($dir in $albumDirs) {
| **Benefit** | beets runs once at import time with any plugins you want, writing a full tag set that Lidarr wouldn't produce on its own. |
| **Benefit** | No persistent beets database to maintain or back up. |
| **Drawback** | Tags written at import time are never updated. If MusicBrainz data improves, or a plugin source updates its data (for example, updated ReplayGain values), the library files won't reflect it until you re-import or run beets manually. |
-| **Drawback** | Lidarr's **Write Tags: Never** setting means files you imported before configuring beets won't have their tags updated automatically. Run a manual beets pass to backfill those. |
+| **Drawback** | Lidarr's **Tag Audio Files with Metadata: Never** setting means files you imported before configuring beets won't have their tags updated automatically. Run a manual beets pass to backfill those. |
# Pattern 2: Side-by-side persistent beets
@@ -184,7 +184,7 @@ Two scenarios where the tools can conflict:
**Lidarr renames files after beets has tagged them.** When Lidarr renames a file (for example, because you change a naming template), the file path changes but the tags beets wrote remain. beets' persistent database will have the old path and will treat the file as missing. Resolution: after a Lidarr rename, run `beet update` to resync the beets database to the new paths, then a `beet import` pass if you want to re-enrich the renamed files.
-**Metadata refresh.** Lidarr periodically refreshes artist metadata from MusicBrainz and can overwrite file tags if Write Tags isn't set to Never. With **Write Tags: Never** set as described above, this doesn't occur.
+**Metadata refresh.** Lidarr periodically refreshes artist metadata from MusicBrainz and can overwrite file tags if **Tag Audio Files with Metadata** isn't set to Never. With **Tag Audio Files with Metadata: Never** set as described above, this doesn't occur.
## Trade-offs
@@ -199,6 +199,6 @@ Two scenarios where the tools can conflict:
# See also
- [Custom Scripts](/lidarr/custom-scripts): environment variables available to scripts and how to register them
-- [Settings: Metadata](/lidarr/settings#metadata): Write Tags setting and metadata consumer options
+- [Settings](/lidarr/settings): the **Tag Audio Files with Metadata** option lives under Settings → Metadata
- [beets documentation](https://beets.readthedocs.io/en/stable/)
- [beets installation guide](https://beets.readthedocs.io/en/stable/guides/installation.html)
diff --git a/lidarr/community-guide.md b/lidarr/community-guide.md
index 9b823912d..1a4f8624b 100644
--- a/lidarr/community-guide.md
+++ b/lidarr/community-guide.md
@@ -13,5 +13,5 @@ This guide's content now lives in these wiki pages:
- **Naming** → [Naming Guide](/lidarr/naming-guide)
- **Custom Formats and profile scoring** → [Custom Formats](/lidarr/tips-and-tricks#custom-formats)
-- **Quality and metadata profile configuration** → [Settings: Profiles](/lidarr/settings#profiles)
-- **Tag writing and hardlink considerations** → [Settings: Metadata](/lidarr/settings#metadata)
+- **Quality and metadata profile configuration** → [Settings: Metadata Profiles](/lidarr/settings#metadata-profiles)
+- **Tag writing and hardlink considerations** → [Settings: File Management](/lidarr/settings#file-management)
diff --git a/lidarr/concepts.md b/lidarr/concepts.md
index 91569b617..b490499b8 100644
--- a/lidarr/concepts.md
+++ b/lidarr/concepts.md
@@ -97,3 +97,16 @@ If you find that a `Release` or `Release Artist` is missing from MusicBrainz, yo
Two questions that come up often enough to answer here:
- *Why do I have the same file in my download folder and my library folder?*
+- *Why did importing fill up my disk?*
+
+When Lidarr imports a completed download, it doesn't move the file out of the download client's folder by default. The download usually needs to stay there so your torrent client can keep seeding. Instead, Lidarr puts a copy of each track into your library folder and leaves the original where the client downloaded it.
+
+How that copy is made depends on where the two folders live:
+
+- **Same filesystem → hardlink.** A hardlink is a second name for the *same* data on disk. The file appears in both your download folder and your library folder, but it only occupies the space once. Seeding continues uninterrupted because the bytes never move. This is the default and the reason both paths must be on the same volume.
+- **Different filesystems → copy.** Hardlinks can't span filesystems, so Lidarr falls back to copying the data. Now the bytes exist twice, which uses the extra disk space and the extra I/O. This is the usual cause of "importing filled up my disk."
+
+The behavior is controlled by **Use Hardlinks instead of Copy** under *Settings → Media Management* (an advanced setting, enabled by default). When it's on, Lidarr hardlinks where it can and copies where it can't; when it's off, Lidarr always copies. Disk-layout mistakes are by far the most common cause of unexpected copying — in Docker, the download folder and the library root must be reachable through the *same* volume mount for hardlinks to work.
+
+> Hardlinks only work when the source and destination are on the same filesystem. If your download folder and library folder are on different drives, volumes, or Docker mounts, Lidarr copies instead — using twice the space. See [TRaSH's Hardlink Guide](https://trash-guides.info/hardlinks) for setup details.
+{.is-info}
diff --git a/lidarr/faq.md b/lidarr/faq.md
index ba94ac012..e971f8e1f 100644
--- a/lidarr/faq.md
+++ b/lidarr/faq.md
@@ -131,7 +131,7 @@ Imports fail in one of a few ways:
- **The download finished but Lidarr won't import it.** This is almost always a match-quality rejection. Lidarr couldn't find a MusicBrainz release that resembles the file well enough. See [Import Troubleshooting](/lidarr/import-troubleshooting) for the match-quality rules, the fingerprinting fallback, when manual import is the expected path, and how to drive it.
- **You're importing an existing library and the match fails.** See [Importing an Existing Library](/lidarr/importing-existing-library) for the fresh-install walkthrough and the lenience rules that apply to library imports.
- **Lidarr can't read or write the folder.** The user account Lidarr runs as must have read and write access to both the download folder and the destination root folder. On Linux this is a UID/GID/permissions issue on a mount; on Windows it's Lidarr running as `LocalService` which can't reach a network share. See [Why can't Lidarr see my files on a remote server?](#why-cant-lidarr-see-my-files-on-a-remote-server) for the Windows case.
-- **Untagged or badly tagged files.** Files with generic filenames like `track01.mp3` and no tags give Lidarr nothing to match on. Run a tagger such as [MusicBrainz Picard](https://picard.musicbrainz.org/) or [Harmony](https://harmony.pulsewidth.org.uk/) before importing. See [Import Troubleshooting → Untagged or badly tagged files](/lidarr/import-troubleshooting#untagged-or-badly tagged-files).
+- **Untagged or badly tagged files.** Files with generic filenames like `track01.mp3` and no tags give Lidarr nothing to match on. Run a tagger such as [MusicBrainz Picard](https://picard.musicbrainz.org/) or [Harmony](https://harmony.pulsewidth.org.uk/) before importing. See [Import Troubleshooting → Untagged or badly tagged files](/lidarr/import-troubleshooting#untagged-or-badly-tagged-files).
### I copied files into Lidarr's root folder but Lidarr can't see them
@@ -294,7 +294,7 @@ As of Lidarr v2, **authentication is mandatory.** The config file must include `
#### Authentication Required
-If the UI only needs auth on remote access (not on LAN), set **Settings → General → Security → Authentication Required** to *Disabled For Local Addresses*. In the config file that's `DisabledForLocalAddresses`. The other valid value is `Enabled`.
+If the UI only needs auth on remote access (not on LAN), set **Settings → General → Security → Authentication Required** to *Disabled For Local Addresses*. In the config file that's `DisabledForLocalAddresses`. The other valid value is `Enabled`.
### Help I have locked myself out
diff --git a/lidarr/installation/freebsd.md b/lidarr/installation/freebsd.md
index 5c21f263d..78c0ba19b 100644
--- a/lidarr/installation/freebsd.md
+++ b/lidarr/installation/freebsd.md
@@ -8,7 +8,7 @@ editor: markdown
dateCreated: 2023-07-03T20:10:42.484Z
---
-## FreeBSD
+# FreeBSD
The Lidarr team only provides builds for FreeBSD. The FreeBSD community maintains Plugins and Ports.
diff --git a/lidarr/installation/reverse-proxy.md b/lidarr/installation/reverse-proxy.md
index f8a0503c8..fb3934c37 100644
--- a/lidarr/installation/reverse-proxy.md
+++ b/lidarr/installation/reverse-proxy.md
@@ -19,7 +19,7 @@ Sample config examples for configuring Lidarr to be accessible through a reverse
Add the following configuration to `nginx.conf` in the root of your Nginx configuration. Place the code block inside the `server` context. [Full example of a typical Nginx configuration](https://www.nginx.com/resources/wiki/start/topics/examples/full/)
-> If you're using a non-standard http/https server port, make sure your Host header also includes it, for example: `proxy_set_header Host $host:$server_port` or `proxy_set_header Host $http_host`
+> If you're using a non-standard http/https server port, make sure your `X-Forwarded-Host` header also includes it, for example: `proxy_set_header X-Forwarded-Host $host:$server_port` or `proxy_set_header X-Forwarded-Host $http_host`
{.is-warning}
```nginx
@@ -68,7 +68,7 @@ Nginx includes the `sites-enabled` folder by default. Check `nginx.conf` and add
> For subdomain configuration, set baseurl to `''` (empty). This assumes the default port `8686` and Lidarr on localhost (127.0.0.1). Line 5 sets the subdomain to `lidarr`.
{.is-info}
-> If you're using a non-standard http/https server port, make sure your Host header also includes it, for example: `proxy_set_header Host $host:$server_port` or `proxy_set_header Host $http_host`
+> If you're using a non-standard http/https server port, make sure your `X-Forwarded-Host` header also includes it, for example: `proxy_set_header X-Forwarded-Host $host:$server_port` or `proxy_set_header X-Forwarded-Host $http_host`
{.is-warning}
```nginx
diff --git a/lidarr/naming-guide.md b/lidarr/naming-guide.md
index d57286b32..29485b870 100644
--- a/lidarr/naming-guide.md
+++ b/lidarr/naming-guide.md
@@ -132,7 +132,7 @@ From Davo's [community guide](/lidarr/community-guide). Puts the album folder in
## B's convention
-Limits folder and file lengths to avoid Windows path-limit issues. **Not recommended for Windows**: the truncated paths can become inaccessible after a Lidarr rename on that OS. See the [FAQ entry on Windows folder access after rename](/lidarr/faq#why-cant-i-access-a-folder-in-windows-after-lidarr-rename). Useful for libraries containing artists with notoriously long album titles.
+Limits folder and file lengths to avoid Windows path-limit issues. **Not recommended for Windows**: the truncated paths can become inaccessible after a Lidarr rename on that OS. See [OS path limits and illegal characters](#os-path-limits-and-illegal-characters) above. Useful for libraries containing artists with notoriously long album titles.
### Standard Track Format
diff --git a/lidarr/settings.md b/lidarr/settings.md
index 65445fb0f..9f8021342 100644
--- a/lidarr/settings.md
+++ b/lidarr/settings.md
@@ -129,7 +129,6 @@ Click **Add (+)** to add a root folder. The path must exist and Lidarr must have
> Don't point a root folder at a cloud storage mount (Dropbox, OneDrive, Google Drive). Lidarr writes audio tags and metadata frequently; cloud storage APIs have rate limits that will cause failures.
{.is-warning}
-
## Metadata Profiles
{#metadata-profiles}
@@ -158,7 +157,6 @@ You can include or exclude secondary types (Compilation, Soundtrack, Spokenword,
> MusicBrainz determines release types. If a release you expect to see is missing, check its entry on MusicBrainz: the type may be `Unknown`, which Lidarr can't filter on, or the primary type may be one you have unchecked in your profile.
{.is-info}
-
## Release Profiles
{#release-profiles}
@@ -179,7 +177,6 @@ Release profiles filter and score releases based on their titles. Use them to re
> Release profiles apply at **grab/download time**: they filter and score releases from indexers before Lidarr sends anything to a download client. They have no effect on which MusicBrainz release (pressing, edition, format) Lidarr matches your already-downloaded files to during import. See [FAQ → Can Lidarr prefer a specific pressing or format during import?](/lidarr/faq#can-lidarr-prefer-a-specific-pressing-or-format-during-import) for the import side of this.
{.is-info}
-
## Custom Formats
{#custom-formats-2}
@@ -202,7 +199,7 @@ Common specification types for music:
| **Release Title** | The full release title string from the indexer. Supports regex. |
| **Release Group** | The release group part of the title, if parseable. |
| **Indexer Flag** | Indexer-specific flags (Freeleech, Halfleech, etc.) where the indexer supports them. |
-| **Source** | Audio source tag (CD, WEB, Vinyl, etc.) if present in the title. |
+| **Size** | The reported release size. Matches when the size falls between the configured **Minimum Size** and **Maximum Size** (in GB). |
For worked examples and suggested scoring values for a FLAC-focused library, see [Tips and Tricks → Custom Formats](/lidarr/tips-and-tricks#custom-formats).
@@ -214,7 +211,6 @@ Two ways to test how Lidarr will parse a release name before committing to a pro
**Via the Servarr Discord bot:** In the `#bot-spam` channel, run `/parser lidarr ` (for example, `/parser lidarr Artist.Album.2022.FLAC-GROUP`). The bot replies with the same parsed breakdown. Useful for quick spot-checks without opening the UI.
-
# Quality
{#quality}
@@ -233,7 +229,6 @@ For audio, size limits use **kilobits per second (kbps)**. Lidarr computes a bit
> FLAC is lossless and doesn't have a consistent bitrate; its effective bitrate varies by content. The FLAC entry in quality definitions serves primarily as a file-size sanity check rather than strict bitrate enforcement.
{.is-info}
-
# Download Clients
{#download-clients}
@@ -341,7 +336,6 @@ A mapping translates a remote path (as reported by the download client) to a loc
> If both Lidarr and the download client are in Docker containers on the same host with matching volume mounts, a remote path mapping isn't needed. See [TRaSH's Remote Path Mapping guide](https://trash-guides.info/Radarr/Radarr-remote-path-mapping/) for diagnosis and setup.
{.is-info}
-
# Connect
{#connections}
@@ -371,7 +365,6 @@ Click **Add (+)** and select a connection type. Most connections share these fie
For **Custom Script** connections, see the [Custom Scripts](/lidarr/custom-scripts) page for the full list of environment variables available per event.
-
# Tags
{#tags}
diff --git a/lidarr/system.md b/lidarr/system.md
index 0ad8e4d03..290af91e3 100644
--- a/lidarr/system.md
+++ b/lidarr/system.md
@@ -185,7 +185,7 @@ sudo systemctl start $app
#### Can’t install update because startup folder is in an App Translocation folder (macOS)
-{#cannot-install-update-because-startup-folder-is-in-an-app-translocation-folder.}
+{#cannot-install-update-because-startup-folder-is-in-an-app-translocation-folder-macos}
- macOS has moved Lidarr’s startup folder into an App Translocation path. This prevents Lidarr from updating itself. Remove the quarantine attribute or move Lidarr out of the Translocation folder and re-launch it from its permanent location.
@@ -292,7 +292,7 @@ RewriteRule /(.*) ws://127.0.0.1:8686/$1 [P,L]
{#fpcalc-upgrade}
-- Lidarr uses chromaprint audio fingerprinting to identify tracks. This depends on an external binary `fpcalc`. Lidarr v1 ships `fpcalc` for Windows, Linux, and macOS, but freeBSD requires you to provide it separately.
+- Lidarr uses chromaprint audio fingerprinting to identify tracks. This depends on an external binary `fpcalc`. The installed `fpcalc` is too old; Lidarr requires at least version 1.4.3. Lidarr v1 ships `fpcalc` for Windows, Linux, and macOS, but freeBSD requires you to provide it separately.
- Ensure the fpcalc binary bundled with Lidarr is executable (755 permissions). Look for it in Lidarr's installation directory (for example `/opt/Lidarr/fpcalc`). If it isn't executable, correct its permissions with the command below and restart Lidarr.
- Note that the fix may need `sudo`, and your path to Lidarr's binary folder may differ depending on your environment.
diff --git a/lidarr/tips-and-tricks.md b/lidarr/tips-and-tricks.md
index 80ae653de..3876d0a21 100644
--- a/lidarr/tips-and-tricks.md
+++ b/lidarr/tips-and-tricks.md
@@ -22,7 +22,7 @@ Your download folder and music library root folder can't be the same location. M
Keep two locations separate:
-```
+```text
/data/
downloads/ ← download client writes here
music/ ← Lidarr root folder (your library)
@@ -37,7 +37,7 @@ On import, Lidarr moves (or hardlinks) files from `downloads/` into `music/`. Th
If you're running more than one download client — say, a Usenet client alongside a torrent client — give each its own subfolder under `downloads/` and set a matching category in Lidarr:
-```
+```text
/data/
downloads/
usenet/ ← SABnzbd / NZBGet category: "lidarr"
@@ -421,4 +421,4 @@ As long as the root folder paths in the backup are still valid on the destinatio
- [Metadata Troubleshooting](/lidarr/metadata-troubleshooting) — when MusicBrainz data is missing or stale
- [Import Troubleshooting](/lidarr/import-troubleshooting) — when downloads finish but don't import
- [Troubleshooting](/lidarr/troubleshooting) — general runtime issues
-- [TRaSH Guides](https://trash-guides.info/) — community recipes for media server setups
\ No newline at end of file
+- [TRaSH Guides](https://trash-guides.info/) — community recipes for media server setups
diff --git a/lidarr/troubleshooting.md b/lidarr/troubleshooting.md
index 59bc3faf0..35471e232 100644
--- a/lidarr/troubleshooting.md
+++ b/lidarr/troubleshooting.md
@@ -63,7 +63,7 @@ To provide good and useful logs for sharing:
- When using [0bin](https://0bin.net/), be sure to disable colorization and don't burn after reading.
- To search across old log files in Windows, use the Notepad++ **Find in Files** function.
-- **Unix only:** To search across old log files, use `grep`. For example, to find entries for an artist or release named "Shooter": `grep -inr -C 100 -e 'Shooter' /path/to/logs/*.trace*.txt`. If your [Appdata Directory](/lidarr/appdata-directory) is in your home folder: `grep -inr -C 100 -e 'Shooter' /home/$User/.config/logs/*.trace*.txt`
+- **Unix only:** To search across old log files, use `grep`. For example, to find entries for an artist or release named "Shooter": `grep -inr -C 100 -e 'Shooter' /path/to/logs/*.trace*.txt`. If your [Appdata Directory](/lidarr/appdata-directory) is in your home folder: `grep -inr -C 100 -e 'Shooter' /home/$USER/.config/Lidarr/logs/*.trace*.txt`
```none
@@ -123,7 +123,7 @@ If an upgrade goes wrong, these steps will help you recover your installation.
## Determine the issue
-- The best place to look when the application won't start after an update is to review the [update logs](#update-logs-location) and see if the update completed successfully. If those don't have an issue then the next step is to look at your regular application log files, before trying to start again, use [Logging](/lidarr/settings#logging) and [Log Files](/lidarr/system#log-files) to find them and increase the log level.
+- The best place to look when the application won't start after an update is to review the [update logs](#update-logs-location) and see if the update completed successfully. If those don't have an issue then the next step is to look at your regular application log files, before trying to start again, use [Logging](#tracedebug-logs) and [Log Files](/lidarr/system#log-files) to find them and increase the log level.
- Most often, the host system messes with the `/tmp` directory and deletes critical Lidarr files during the upgrade, causing both the upgrade and rollback to fail. In this case, reinstall in-place over the existing installation.
### Migration Issue
@@ -199,11 +199,11 @@ Lidarr communicates with your download client via its API through the client's w
### SSL in use and incorrectly configured
-Ensure SSL encryption isn't turned on if you're using both your instance and your download client on a local network. See [the SSL FAQ entry](/lidarr/faq#invalid-certificate-and-other-HTTPS-or-SSL-issues) for more information.
+Ensure SSL encryption isn't turned on if you're using both your instance and your download client on a local network. See [the SSL FAQ entry](/radarr/faq#invalid-certificate-and-other-https-or-ssl-issues) for more information.
### Can’t see share on Windows
-The default user for a Windows service is `LocalService` which typically doesn’t have access to your shares. Edit the service and set it up to run as your own user, see the FAQ entry [why can’t see my files on a remote server](/lidarr/faq#why-cant-see-my-files-on-a-remote-server) for details.
+The default user for a Windows service is `LocalService` which typically doesn’t have access to your shares. Edit the service and set it up to run as your own user, see the FAQ entry [why can’t Lidarr see my files on a remote server](/lidarr/faq#why-cant-lidarr-see-my-files-on-a-remote-server) for details.
### Mapped network drives aren't reliable
diff --git a/prowlarr/faq.md b/prowlarr/faq.md
index 8182f3aee..415b49ef0 100644
--- a/prowlarr/faq.md
+++ b/prowlarr/faq.md
@@ -302,7 +302,7 @@ To request a feature for Prowlarr, first search on GitHub to ensure no similar r
- Continue with the steps noted below
- This means your SQLite database that stores most of the information for Prowlarr is corrupt. Your options are to try (a) backup(s), try recovering the existing database, try recovering the backup(s), or if all else fails starting over with a fresh new database.
- This error may show if the database file is not writable by the user/group \*Arr is running as. Permissions being the cause will likely only be an issue for new installs, migrated installs to a new server, if you recently modified your appdata directory permissions, or if you changed the user and group \*Arr run as.
-- Your best and first option is to [try restoring from a backup](#how-do-i-backuprestore-my-prowlarr)
+- Your best and first option is to [try restoring from a backup](#how-do-i-backuprestore-prowlarr)
- You can also try recovering your database. This is typically the only option for when this issue occurs after an update. Try the [sqlite3 `.recover` command](/useful-tools#recovering-a-corrupt-db)
- If your sqlite does not have `.recover` or you wish a more GUI (i.e. Windows) friendly way then follow [our instructions on this wiki.](/useful-tools#recovering-a-corrupt-db-ui)
- Another possible cause of you getting an error with your Database is that you're placing your database on a network drive (nfs or smb or something else not local). **SQLite is designed for situations where the data and application coexist on the same machine.** Thus your \*Arr AppData Folder (/config mount for docker) MUST be on local storage. [SQLite and network drives not play nice together and will cause a malformed database eventually](https://www.sqlite.org/draft/useovernet.html).
diff --git a/prowlarr/installation/reverse-proxy.md b/prowlarr/installation/reverse-proxy.md
index 203f19c83..bfe07febd 100644
--- a/prowlarr/installation/reverse-proxy.md
+++ b/prowlarr/installation/reverse-proxy.md
@@ -19,7 +19,7 @@ Sample config examples for configuring Prowlarr to be accessible through a rever
Add the following configuration to `nginx.conf` located in the root of your Nginx configuration. The code block should be added inside the `server context`. [Full example of a typical Nginx configuration](https://www.nginx.com/resources/wiki/start/topics/examples/full/)
-> If you're using a non-standard http/https server port, make sure your Host header also includes it, i.e.: `proxy_set_header Host $host:$server_port` or `proxy_set_header Host $http_host` as well as `proxy_set_header X-Forwarded-Host $host:$server_port` or `proxy_set_header X-Forwarded-Host $http_host` {.is-warning}
+> If you're using a non-standard http/https server port, make sure your `X-Forwarded-Host` header also includes it, i.e.: `proxy_set_header X-Forwarded-Host $host:$server_port` or `proxy_set_header X-Forwarded-Host $http_host` {.is-warning}
```nginx
location /prowlarr {
diff --git a/prowlarr/quick-start-guide.md b/prowlarr/quick-start-guide.md
index 998784ed5..7a7737d57 100644
--- a/prowlarr/quick-start-guide.md
+++ b/prowlarr/quick-start-guide.md
@@ -14,7 +14,8 @@ dateCreated: 2023-04-06T16:04:33.682Z
- [Indexers](#indexers)
- [Apps](#apps)
- [Application Settings](#application-settings)
-- [Download Clients](#download-clients)
+ - [Sync Profiles](#sync-profiles)
+- [Download Clients (Prowlarr Searches)](#download-clients-prowlarr-searches)
- [Usenet Client Settings](#usenet-client-settings)
- [Torrent Client Settings](#torrent-client-settings)
- [Testing the Download Client](#testing-the-download-client)
diff --git a/prowlarr/settings.md b/prowlarr/settings.md
index 68ef2e708..6f4453e7d 100644
--- a/prowlarr/settings.md
+++ b/prowlarr/settings.md
@@ -21,6 +21,7 @@ dateCreated: 2021-06-06T15:04:48.057Z
- [Applications](#applications)
- [Application Settings](#application-settings)
- [Testing the Application](#testing-the-application)
+ - [Sync Profiles](#sync-profiles)
- [Download Clients (Prowlarr Searches)](#download-clients-prowlarr-searches)
- [Usenet Client Settings](#usenet-client-settings)
- [Torrent Client Settings](#torrent-client-settings)
@@ -294,7 +295,7 @@ Click on `Settings` => `General`.
Proxy - This option allows you to run the information your Prowlarr pulls and searches for through a proxy. This can be useful if you're in a country that does not allow the downloading of Torrent files
- Use Proxy - Enable to use a Proxy
-- Proxy Type - Select your proxy type (HTTPS, Socks4, or Socks5)
+- Proxy Type - Select your proxy type (HTTP(S), Socks4, or Socks5)
- Hostname - Enter your proxy hostname (Do not include http/https or any other protocol)
- Port - Enter your proxy port
- Username - Enter your proxy username if applicable
diff --git a/prowlarr/supported.md b/prowlarr/supported.md
index 0ca32d7a4..f9897fbaf 100644
--- a/prowlarr/supported.md
+++ b/prowlarr/supported.md
@@ -71,7 +71,7 @@ Prowlarr can automatically sync indexers with various applications
- [Refer to the Settings Page](/prowlarr/settings#download-clients)
- uTorrent {#utorrent}
- [Refer to the Settings Page](/prowlarr/settings#download-clients)
- - Due to utorrent being adware and formerly spyware, it is not reconmended. Most users use qBittorrent
+ - Due to uTorrent being adware and formerly spyware, it is not recommended. Most users use qBittorrent
- Vuze {#vuze}
- [Refer to the Settings Page](/prowlarr/settings#download-clients)
diff --git a/prowlarr/troubleshooting.md b/prowlarr/troubleshooting.md
index ad6a3993d..537102b69 100644
--- a/prowlarr/troubleshooting.md
+++ b/prowlarr/troubleshooting.md
@@ -139,7 +139,7 @@ You can clear log files and the logs database directly from the UI, under `Syste
# Multiple Log Files
-Prowlarr uses rolling log files limited to 1MB each. The current log file is always Prowlarr.txt, for the the other files Prowlarr.0.txt is the next newest (the higher the number the older it is). This log file contains `fatal`, `error`, `warn`, and `info` entries.
+Prowlarr uses rolling log files limited to 1MB each. The current log file is always `prowlarr.txt`, for the the other files `prowlarr.0.txt` is the next newest (the higher the number the older it is). This log file contains `fatal`, `error`, `warn`, and `info` entries.
When Debug log level is enabled, additional `prowlarr.debug.txt` rolling log files will be present. This log files contains `fatal`, `error`, `warn`, `info`, and `debug` entries. It usually covers a 40h period.
@@ -307,6 +307,7 @@ This is typically caused by:
- local DNS issues - Try changing to a different DNS provider
- local IPv6 issues - typically IPv6 is enabled, but non-functional
- the use of Privoxy
+- podman/containerized setups where the CNI/netavark bridge MTU defaults to `1500` while DNS and non-Cloudflare sites still work, but Cloudflare-protected indexers time out. Recreate the container network with a lower MTU, e.g. `podman network create --opt mtu=1460 servarr`, then attach Prowlarr to it
## Sonarr HTTP 404 Errors
diff --git a/radarr/activity.md b/radarr/activity.md
index 7efb2d7fe..c00598e29 100644
--- a/radarr/activity.md
+++ b/radarr/activity.md
@@ -31,15 +31,22 @@ The queue shows all items the application can recognize that is in the specified
## Queue Statuses
-> Note the below is incomplete {.is-warning}
-
-| Icon | Status | Description | Resolution Steps |
-| ---------- | ------------------------ | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
-| grey clock | Release Pending | Download is awaiting Download Client to be available or for release to meet Delay Profile Rules | N/A |
-| yellow | Warning Unable to Import | \*Arr was unable to import the release. Review the tool tip for more details | [See the Troubleshooting Guide](/radarr/troubleshooting) |
-| purple | Download Importing | Download is Importing | N/A |
-| | | | |
-| | | | |
+> Hover over the status icon in the Queue to see the full status text and any associated messages. {.is-info}
+
+| Icon | Status | Description | Resolution Steps |
+| ------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
+| blue cloud-download | Downloading | Release is actively downloading in the Download Client | N/A |
+| blue cloud | Queued | Release is queued in the Download Client and has not started | N/A |
+| pause | Paused | Download is paused in the Download Client | Resume the download in your Download Client |
+| grey clock | Pending | Release is awaiting the Delay Profile to elapse before being grabbed | N/A |
+| yellow clock | Pending - Download Client Unavailable | \*Arr cannot reach the Download Client to send or check the release | [See the Troubleshooting Guide](/radarr/troubleshooting) |
+| grey download | Downloaded - Waiting to Import | Download completed and is queued for import | N/A |
+| blue download | Downloaded - Importing | Download completed and is being imported | N/A |
+| yellow download | Downloaded - Unable to Import Automatically | Download completed but \*Arr could not import it automatically. Review the tool tip for more details | [See the Troubleshooting Guide](/radarr/troubleshooting) |
+| red download | Downloaded - Waiting to Process | Download completed and is queued for failed-download handling | N/A |
+| yellow cloud-download | Warning | Download Client reported a warning for the release. Review the tool tip for more details | [See the Troubleshooting Guide](/radarr/troubleshooting) |
+| red cloud-download | Download Failed | The download failed in the Download Client | [See the Troubleshooting Guide](/radarr/troubleshooting) |
+| red download | Import Failed | The completed download could not be imported | [See the Troubleshooting Guide](/radarr/troubleshooting) |
# History
diff --git a/radarr/calendar.md b/radarr/calendar.md
index e18119501..1a352c8e8 100644
--- a/radarr/calendar.md
+++ b/radarr/calendar.md
@@ -10,4 +10,55 @@ dateCreated: 2021-05-25T01:29:31.158Z
# Calendar
-The calendar tab allows you to see any upcoming films (or recently released) that is presently monitored in your library. It is viewable week by week.
+The calendar tab allows you to see any upcoming films (or recently released) that is presently monitored in your library.
+
+## Views
+
+The calendar can be displayed in several views, selectable from the calendar header:
+
+- Day
+- Week
+- Month
+- Forecast
+- Agenda
+
+## Legend
+
+Events on the calendar are color coded to indicate their status:
+
+- Downloaded and Monitored
+- Downloaded but not Monitored
+- Missing, Monitored, and Considered Available
+- Missing, not Monitored
+- Queued
+- Unreleased
+
+> The cutoff-unmet icon is only shown when the **Icon for Cutoff Unmet** calendar option is enabled.
+{.is-info}
+
+## Calendar Options
+
+The calendar options (the gear/options modal) let you control what is displayed:
+
+- **Show Movie Information** - Show movie information such as title and year
+- **Show Cinema Release** - Show the cinema/theatrical release date
+- **Show Digital Release** - Show the digital release date
+- **Show Physical Release** - Show the physical release date
+- **Icon for Cutoff Unmet** - Show an icon for files when the quality cutoff has not been met
+- **Full Color Events** - Make the entire event background the status color rather than a colored edge
+
+Global display options (shared with the rest of the UI) such as **First Day of Week**, **Week Column Header**, **Time Format**, and **Enable Color-Impaired Mode** are also available here.
+
+# iCal Feed
+
+Radarr can provide your calendar as an iCal feed at `/feed/v3/calendar/Radarr.ics`. By default the feed contains the previous [7 days](https://github.com/Radarr/Radarr/blob/develop/src/Radarr.Api.V3/Calendar/CalendarFeedController.cs) (`pastDays`) and the next [28 days](https://github.com/Radarr/Radarr/blob/develop/src/Radarr.Api.V3/Calendar/CalendarFeedController.cs) (`futureDays`).
+
+The feed link can be generated in the calendar via the iCal feed button, where you can choose:
+
+- **Include Unmonitored** - Include unmonitored movies in the feed (`unmonitored`)
+- **Show as All-Day Events** - Display releases as all-day events
+- **Release Types** - Which release dates to include: Cinema Release, Digital Release, and/or Physical Release (`releaseTypes`)
+- **Tags** - Limit the feed to movies with the selected tag(s) (`tags`)
+
+> Google Calendar has internal issues that result in it no longer updating. This is a Google issue and not a Radarr issue. It can often be resolved by removing and re-adding the calendar.
+{.is-warning}
diff --git a/radarr/faq.md b/radarr/faq.md
index e87810bd6..213323abb 100644
--- a/radarr/faq.md
+++ b/radarr/faq.md
@@ -372,7 +372,7 @@ If Radarr is exposed so that the UI can be accessed from outside your local netw
- A useful tool for making these changes to your collection is [filebot](http://www.filebot.net/#download) which has paid version in both the Apple and Windows stores, but can be found for free on their legacy [SourceForge](https://sourceforge.net/projects/filebot/files/latest/download) site. It has both a GUI and CLI, so you can use whatever you’re comfortable with. For the above example, `{ny}` expands to `Name (Year)` and `{vf}` gives the resolution like `1080p`. There is nothing to infer quality, so you can fake it using `{ny}/{ny} [{dim[0] >= 1280 ? 'Bluray' : 'DVD'}-{vf}]` which will name anything lower than 720p to `[DVD-572p]` and greater or equal to 720p like `[Bluray-1080p]`.
-- See [Tips and Tricks Section => Create a Folder for Each Movie](/radarr/faq)radarr/tips-and-tricks#creating-a-folder-for-each-movie) for more details.
+- See [Tips and Tricks Section => Create a Folder for Each Movie](/radarr/tips-and-tricks#creating-a-folder-for-each-movie) for more details.
## Movie Folders Named Incorrectly
@@ -431,7 +431,7 @@ This could be because your indexer poorly matched it, or the uploader didn't nam
- Continue with the steps noted below
- This means your SQLite database that stores most of the information for Radarr is corrupt. Your options are to try (a) backup(s), try recovering the existing database, try recovering the backup(s), or if all else fails starting over with a fresh new database.
- This error may show if the database file is not writable by the user/group \*Arr is running as. Permissions being the cause will likely only be an issue for new installs, migrated installs to a new server, if you recently modified your appdata directory permissions, or if you changed the user and group \*Arr run as.
-- Your best and first option is to [try restoring from a backup](#how-do-i-backuprestore-my-radarr). However, for users receiving this after upgrading to v4 it is highly unlikely the backup itself will work and you'll need to try the other recovery methods mentioned.
+- Your best and first option is to [try restoring from a backup](#how-do-i-backuprestore-radarr). However, for users receiving this after upgrading to v4 it is highly unlikely the backup itself will work and you'll need to try the other recovery methods mentioned.
- You can also try recovering your database. This is typically the only option for when this issue occurs after an update. Try the [sqlite3 `.recover` command](/useful-tools#recovering-a-corrupt-db)
- If your sqlite does not have `.recover` or you wish a more GUI (i.e. Windows) friendly way then follow [our instructions on this wiki.](/useful-tools#recovering-a-corrupt-db-ui)
- Another possible cause of you getting an error with your Database is that you're placing your database on a network drive (nfs or smb or something else not local). **SQLite is designed for situations where the data and application coexist on the same machine.** Thus your \*Arr AppData Folder (/config mount for docker) MUST be on local storage. [SQLite and network drives not play nice together and will cause a malformed database eventually](https://www.sqlite.org/draft/useovernet.html).
diff --git a/radarr/installation/macos.md b/radarr/installation/macos.md
index 27a624103..2bade9f5f 100644
--- a/radarr/installation/macos.md
+++ b/radarr/installation/macos.md
@@ -15,7 +15,7 @@ dateCreated: 2023-07-03T20:12:05.036Z
> Radarr is not compatible with OSX versions < 10.15 (Catalina) due to .NET incompatibilities.
{.is-warning}
-1. Download the [MacOS App](https://radarr.servarr.com/v1/update/master/updatefile?os=osx&runtime=netcore&arch=x64&installer=true) or the [MacOS M1 App](https://radarr.servarr.com/v1/update/master/updatefile?os=osx&runtime=netcore&arch=arm64&installer=true) depending on your system architecture. architecture.
+1. Download the [MacOS App](https://radarr.servarr.com/v1/update/master/updatefile?os=osx&runtime=netcore&arch=x64&installer=true) or the [MacOS M1 App](https://radarr.servarr.com/v1/update/master/updatefile?os=osx&runtime=netcore&arch=arm64&installer=true) depending on your system architecture.
1. Open the archive and drag the Radarr icon to your Application folder.
1. Self-sign Radarr `codesign --force --deep -s - /Applications/Radarr.app && xattr -rd com.apple.quarantine /Applications/Radarr.app`
1. Start Radarr by double-clicking the icon or running `open /Applications/Radarr.app`
diff --git a/radarr/installation/multiple-instances.md b/radarr/installation/multiple-instances.md
index 844f5bf3d..aa48eec7f 100644
--- a/radarr/installation/multiple-instances.md
+++ b/radarr/installation/multiple-instances.md
@@ -44,7 +44,7 @@ This guide will show you how to run multiple instances of Radarr on Windows usin
#### Prerequisites (Service)
-- [You must have Radarr already installed](#windows)
+- [You must have Radarr already installed](/radarr/installation/windows)
- You must have [NSSM (Non-Sucking Service Manager](http://nssm.cc) installed. To install, download the latest release (2.24 at the time of writing) and copy either the 32-bit or 64-bit nssm.exe file to C:/windows/system32.
- If you aren’t sure if you have a 32-bit or 64-bit system, check Settings => System => About => System type.
@@ -93,7 +93,7 @@ separate locations. {.is-warning}
#### Prerequisites (Tray App)
-- [You must have Radarr already installed](#windows)
+- [You must have Radarr already installed](/radarr/installation/windows)
- Radarr's shortcut must be configured with a `/data=` argument in the 'target' field to allow multiple instances.
1. Navigate to the Startup Folder for the current user `%appdata%\Microsoft\Windows\Start Menu\Programs\Startup` and edit the existing shortcut if needed.
diff --git a/radarr/library.md b/radarr/library.md
index 58ddef9e1..cf4d68050 100644
--- a/radarr/library.md
+++ b/radarr/library.md
@@ -118,8 +118,26 @@ Library Import allows you to import existing organized movies and each movie's f
# Collections
-The wiki is developed and maintained by the community.
-This section has not had any contributions made to it to reflect and describe the collections page in Radarr.
+Collections groups movies that belong to a TMDb movie collection (for example, a film series). Collections are populated automatically from the metadata of movies you add; if a movie that is part of a collection is added to Radarr, that collection appears on this page.
+
+- If you have no collections, Radarr shows: "No collections found, to get started you'll want to add a new movie, or import some existing ones." Add or import a movie that belongs to a TMDb collection to populate this page.
+- Each collection can be configured by editing it. The editable options are:
+ - Monitored - Monitor to automatically have movies from this collection added to the library.
+ - Minimum Availability - The minimum availability the collection's movies must reach before Radarr will search for them (Announced, In Cinemas, or Released).
+ - Quality Profile - The quality profile applied to movies added from this collection.
+ - Root Folder - The root folder where movies added from this collection are placed.
+ - Tags - Tags applied to movies added from this collection.
+ - Search on Add - Search for movies in this collection when they are added to the library.
+- Selecting collections enables bulk editing via the footer, where you can apply changes to multiple collections at once:
+ - Monitor Collection - Set the monitored state of the selected collections.
+ - Monitor Movies - Set the monitored state of the movies within the selected collections.
+ - Quality Profile - Apply a quality profile to the selected collections.
+ - Minimum Availability - Apply a minimum availability to the selected collections.
+ - Root Folder - Apply a root folder to the selected collections.
+ - Search Movies on Add - Toggle searching for movies on add for the selected collections.
+
+> When a collection is monitored, Radarr automatically adds movies from that collection to your library as TMDb metadata is refreshed.
+{.is-info}
# Discover
@@ -152,5 +170,5 @@ Discover shows recommended Movies
1. Select any quality profiles you have already built ([More info](/radarr/settings#quality-profiles))
1. Do you want Radarr to monitor this movie for any upgrades in quality?
1. Would you like Radarr to automatically search for this movie after you add it?
- 1. Do you want Radarr to exclude these movies from any lists that would be imported? ([More info](/radarr/settings#list-exclusion))
+ 1. Do you want Radarr to exclude these movies from any lists that would be imported? ([More info](/radarr/settings#list-exclusions))
1. Finally, Add the movie to your library.
diff --git a/radarr/quick-start-guide.md b/radarr/quick-start-guide.md
index e90ed2af2..7fe305391 100644
--- a/radarr/quick-start-guide.md
+++ b/radarr/quick-start-guide.md
@@ -63,7 +63,7 @@ First we’re going to take a look at the `Media Management` settings where we c

1. Enable/Disable Renaming of your movies (as opposed to leaving the names that are currently there or as they were when you downloaded them).
-2. If you want illegal characters replaced or removed (`\ / : * ? " < > | ~ # % & + { }`).
+2. If you want illegal characters replaced or removed (`\ / < > ? * | "`).
3. This setting will dictate how Radarr handles colons within the movie file.
4. Here you will select the naming convention for the actual movie files.
5. *(Advanced Option) This is where you will set the naming convention for the folder that contains the video file.*
@@ -323,7 +323,7 @@ When you see the movie you want click on it.
1. Availability - When Radarr shall consider a movie is available.
- > For More Information on TMDB's Dates that impact the below Availabilities See [How Does Radarr Determine the Year of the Movie](#how-does-radarr-determine-the-year-of-a-movie)
+ > For More Information on TMDB's Dates that impact the below Availabilities See [How Does Radarr Determine the Year of the Movie](/radarr/faq#how-does-radarr-determine-the-year-of-a-movie)
{.is-info}
- **Announced**: Radarr shall consider movies available as soon as they are added to Radarr. This setting is recommended if you have good private trackers that do not have fakes.
diff --git a/radarr/settings.md b/radarr/settings.md
index 3bb39558e..9d96f8d63 100644
--- a/radarr/settings.md
+++ b/radarr/settings.md
@@ -147,7 +147,7 @@ Also, note that for each individual settings page, there are some options at the
- The characters are: `:` `\` `/` `>` `<` `?` `*` `|` `"`
- Colon (`:`) Replacement - This setting will dictate how Radarr handles colons within the movie file. This is only available when Replace Illegal Characters is enabled.
- - Smart Replace - Uses a dash when a colon is followed by a space (`": "` → `" - "`), and a dash otherwise (`":"` → `"-"`). This is the default.
+ - Smart Replace - Uses a space-dash-space when a colon is followed by a space (`": "` → `" - "`), and a dash otherwise (`":"` → `"-"`). This is the default.
- Example: Movie,The.mkv => Movie - The.mkv
- Delete - Self explanatory
- Example: Movie,The.mkv => MovieThe.mkv
@@ -956,7 +956,7 @@ Kodi will be one of the most commonly used options here if that is the software
Proxy - This option allows you to run the information your Radarr pulls and searches for through a proxy. This can be useful if you're in a country that does not allow the downloading of Torrent files
- Use Proxy - Enable to use a Proxy
-- Proxy Type - Select your proxy type (HTTPS, Socks4, or Socks5)
+- Proxy Type - Select your proxy type (HTTP(S), Socks4, or Socks5)
- Hostname - Enter your proxy hostname (Do not include http/https or any other protocol)
- Port - Enter your proxy port
- Username - Enter your proxy username if applicable
diff --git a/radarr/supported.md b/radarr/supported.md
index 5904f2b1d..cafc1546d 100644
--- a/radarr/supported.md
+++ b/radarr/supported.md
@@ -146,7 +146,7 @@ This page is the disambiguation page for all `supported` wiki links (i.e. typica
- Telegram {#telegram}
- Trakt {#trakt}
- Twitter {#twitter}
- - See this [Tips and Tricks entry](/useful-tools#twitter)
+ - See this [Tips and Tricks entry](/useful-tools#twitter-connect)
- Webhook {#webhook}
# Lists
@@ -259,7 +259,7 @@ This page is the disambiguation page for all `supported` wiki links (i.e. typica
- Movie Metadata - Create a `.nfo` with the movie metadata
- (Advanced Option) Movie Metadata URL - Create `movie.nfo` with TMDb and IMDb movie URLs
- Metadata Language - Select the language Radarr should use to write the metadata if available in that language
- - Movie Images - Create various Season images including posters and banners
+ - Movie Images - Create movie images such as `fanart.jpg` and `poster.jpg`
- Use Movie.nfo - Write the nfo file as `movie.nfo` rather than the default
- Collection Name - Radarr will write the collection name to the .nfo file
- Roksbox {#roksboxmetadata}
@@ -268,5 +268,5 @@ This page is the disambiguation page for all `supported` wiki links (i.e. typica
- Movie Images - Create `Movie.jpg`
- WDTV {#wdtvmetadata}
- Enable - Enable metadata file creation for this metadata type
- - Movie Metadata - Create `.xml` for each episode
+ - Movie Metadata - Create `.xml` for each movie
- Movie Images - Create `folder.jpg`
diff --git a/radarr/tips-and-tricks.md b/radarr/tips-and-tricks.md
index 2d4777db4..efd8795a2 100644
--- a/radarr/tips-and-tricks.md
+++ b/radarr/tips-and-tricks.md
@@ -86,11 +86,10 @@ If you need to clean up empty directories, this command will do that:
Alternatively in Windows you can run the following script in Powershell to iterate over each file in a directory, and move it to a folder with the same name.
```powershell
-Get-ChildItem -File
- | ForEach-Object {
+Get-ChildItem -File | ForEach-Object {
$dir = New-Item -ItemType Directory -Name $_.BaseName -Force
$_ | Move-Item -Destination $dir
- }
+}
```
# Configuring Radarr to Auto-Remove Completed Torrents
diff --git a/radarr/troubleshooting.md b/radarr/troubleshooting.md
index 6ccdcb59e..756abfc37 100644
--- a/radarr/troubleshooting.md
+++ b/radarr/troubleshooting.md
@@ -210,11 +210,11 @@ Radarr talks to you download client via it's API and accesses it via the client'
### SSL in use and incorrectly configured
-Ensure SSL encryption is not turned on if you're using both your instance and your download client on a local network. See [the SSL FAQ entry](/radarr/faq#invalid-certificate-and-other-HTTPS-or-SSL-issues) for more information.
+Ensure SSL encryption is not turned on if you're using both your instance and your download client on a local network. See [the SSL FAQ entry](/radarr/faq#invalid-certificate-and-other-https-or-ssl-issues) for more information.
### Can’t see share on Windows
-The default user for a Windows service is `LocalService` which typically doesn’t have access to your shares. Edit the service and set it up to run as your own user, see the FAQ entry [why can’t see my files on a remote server](/radarr/faq#why-cant-i-see-my-files-on-a-remote-server) for details.
+The default user for a Windows service is `LocalService` which typically doesn’t have access to your shares. Edit the service and set it up to run as your own user, see the FAQ entry [why can’t see my files on a remote server](/radarr/faq#why-can-radarr-not-see-my-files-on-a-remote-server) for details.
### Mapped network drives are not reliable
diff --git a/readarr/installation/multiple-instances.md b/readarr/installation/multiple-instances.md
index 74b38c129..77b6315df 100644
--- a/readarr/installation/multiple-instances.md
+++ b/readarr/installation/multiple-instances.md
@@ -59,7 +59,7 @@ This guide will show you how to run multiple instances of Readarr on Windows usi
#### Prerequisites (Service)
-- [You must have Readarr already installed](#windows)
+- [You must have Readarr already installed](/readarr/installation/windows)
- You must have [NSSM (Non-Sucking Service Manager](http://nssm.cc) installed. To install, download the latest release (2.24 at the time of writing) and copy either the 32-bit or 64-bit nssm.exe file to C:/windows/system32.
- If you aren’t sure if you have a 32-bit or 64-bit system, check Settings => System => About => System type.
@@ -104,7 +104,7 @@ separate locations. {.is-warning}
#### Prerequisites (Tray App)
-- [You must have Readarr already installed](#windows)
+- [You must have Readarr already installed](/readarr/installation/windows)
- Readarr must be configured with a `/data=` argument to allow multiple instances
- Navigate to the Startup Folder for the current user `%appdata%\Microsoft\Windows\Start Menu\Programs\Startup` and edit the existing shortcut if needed.
diff --git a/readarr/installation/reverse-proxy.md b/readarr/installation/reverse-proxy.md
index 4b414960c..ba3c57191 100644
--- a/readarr/installation/reverse-proxy.md
+++ b/readarr/installation/reverse-proxy.md
@@ -30,7 +30,7 @@ Sample config examples for configuring Readarr to be accessible from the outside
Add the following configuration to `nginx.conf` located in the root of your Nginx configuration. The code block should be added inside the `server context`. [Full example of a typical Nginx configuration](https://www.nginx.com/resources/wiki/start/topics/examples/full/)
-> If you're using a non-standard http/https server port, make sure your Host header also includes it, i.e.: `proxy_set_header Host $host:$server_port` or `proxy_set_header Host $http_host` {.is-warning}
+> If you're using a non-standard http/https server port, make sure your `X-Forwarded-Host` header also includes it, i.e.: `proxy_set_header X-Forwarded-Host $host:$server_port` or `proxy_set_header X-Forwarded-Host $http_host` {.is-warning}
```nginx
location ^~ /readarr {
@@ -76,7 +76,7 @@ By default Nginx includes the `sites-enabled` folder. You can check this in `ngi
> For this configuration it is recommended to set baseurl to '' (empty). This configuration assumes you are using the default `8787` and Readarr is accessible on the localhost (127.0.0.1). For this configuration the subdomain `readarr` is chosen (line 5). {.is-info}
-> If you're using a non-standard http/https server port, make sure your Host header also includes it, i.e.: `proxy_set_header Host $host:$server_port` or `proxy_set_header Host $http_host` {.is-warning}
+> If you're using a non-standard http/https server port, make sure your `X-Forwarded-Host` header also includes it, i.e.: `proxy_set_header X-Forwarded-Host $host:$server_port` or `proxy_set_header X-Forwarded-Host $http_host` {.is-warning}
```nginx
server {
diff --git a/readarr/supported.md b/readarr/supported.md
index 6795baede..7ae950d40 100644
--- a/readarr/supported.md
+++ b/readarr/supported.md
@@ -144,7 +144,7 @@ This page is the disambiguation page for all "supported" wiki links (i.e. typica
- Synology Indexer {#synologyindexer}
- Telegram {#telegram}
- Twitter {#twitter}
- - See this [Tips and Tricks entry](/useful-tools#twitter)
+ - See this [Tips and Tricks entry](/useful-tools#twitter-connect)
- Webhook {#webhook}
# Lists
diff --git a/servarr/servarr-install-script.sh b/servarr/servarr-install-script.sh
index 14ba89a46..dff44fd97 100644
--- a/servarr/servarr-install-script.sh
+++ b/servarr/servarr-install-script.sh
@@ -37,21 +37,21 @@ red='\033[0;31m'
brown='\033[0;33m'
reset='\033[0m' # No Color
-scriptversion="3.1.17"
-scriptdate="2025-10-27"
+scriptversion="3.1.19"
+scriptdate="2026-06-30"
set -euo pipefail
### Am I root?, need root! GROOT!
if [ "$EUID" -ne 0 ]; then
- echo -e ${red}"Please run as root!"
+ echo -e "${red}Please run as root!"
echo -e "Exiting script!"
exit
fi
### Title Splash
-echo -e ${brown}
+echo -e "${brown}"
echo -e "#############################################################"
echo -e "# #"
echo -e "# Welcome to the Servarr Community Installation Script! #"
@@ -62,51 +62,43 @@ echo -e "# If you have not done so, exit the script and read the #"
echo -e "# Boilerplate Warning just to CYA. Enjoy your new setup! #"
echo -e "# #"
echo -e "#############################################################"
-echo -e ${reset}
+echo -e "${reset}"
echo -e "Running Servarr Install Script - Version ${brown}[$scriptversion]${reset} as of ${brown}[$scriptdate]${reset}"
echo ""
echo "Select the application to install: "
echo ""
-select app in lidarr prowlarr radarr whisparr whisparr-v3 quit; do
+select app in lidarr prowlarr radarr whisparr quit; do
case $app in
lidarr)
app_port="8686" # Default App Port; Modify config.xml after install if needed
- app_prereq="curl sqlite3 libsqlite3-0 libchromaprint-tools mediainfo" # Required packages
+ app_prereq="curl sqlite3 libsqlite3-0 libicu-dev libchromaprint-tools mediainfo" # Required packages
app_umask="0002" # UMask the Service will run as
branch="master" # {Update me if needed} branch to install
break
;;
prowlarr)
app_port="9696" # Default App Port; Modify config.xml after install if needed
- app_prereq="curl sqlite3 libsqlite3-0" # Required packages
+ app_prereq="curl sqlite3 libsqlite3-0 libicu-dev" # Required packages
app_umask="0002" # UMask the Service will run as
branch="master" # {Update me if needed} branch to install
break
;;
radarr)
app_port="7878" # Default App Port; Modify config.xml after install if needed
- app_prereq="curl sqlite3 libsqlite3-0" # Required packages
+ app_prereq="curl sqlite3 libsqlite3-0 libicu-dev" # Required packages
app_umask="0002" # UMask the Service will run as
branch="master" # {Update me if needed} branch to install
break
;;
whisparr)
app_port="6969" # Default App Port; Modify config.xml after install if needed
- app_prereq="curl sqlite3 libsqlite3-0" # Required packages
+ app_prereq="curl sqlite3 libsqlite3-0 libicu-dev" # Required packages
app_umask="0002" # UMask the Service will run as
branch="nightly" # {Update me if needed} branch to install
break
;;
- whisparr-v3)
- app=whisparr
- app_port="6969" # Default App Port; Modify config.xml after install if needed
- app_prereq="curl sqlite3 libsqlite3-0" # Required packages
- app_umask="0002" # UMask the Service will run as
- branch="eros" # {Update me if needed} branch to install
- break
- ;;
quit)
exit 0
;;
@@ -125,11 +117,11 @@ datadir="/var/lib/$app/" # {Update me if needed} AppData directory to use
app_bin=${app^} # Binary Name of the app
if [[ $app != 'prowlarr' ]]; then
- echo -e ${red}" WARNING! WARNING! WARNING!"${reset}
+ echo -e "${red} WARNING! WARNING! WARNING!${reset}"
echo ""
echo -e " It is ${red}CRITICAL${reset} that the ${brown}User${reset} and ${brown}Group${reset} you select"
echo -e " to run ${brown}[${app^}]${reset} will have both ${red}READ${reset} and ${red}WRITE${reset} access"
- echo -e " to your Media Library and Download Client directories!"${reset}
+ echo -e " to your Media Library and Download Client directories!${reset}"
sleep 5
fi
@@ -219,7 +211,7 @@ echo -e "Directories ${yellow}$bindir${reset} and ${yellow}$datadir${reset} crea
# Check if prerequisite packages are already installed and install them if needed
echo ""
-echo -e ${yellow}"Checking Pre-Requisite Packages..."${reset}
+echo -e "${yellow}Checking Pre-Requisite Packages...${reset}"
sleep 3
missing_packages=()
@@ -231,7 +223,7 @@ done
if [ ${#missing_packages[@]} -eq 0 ]; then
echo ""
- echo -e ${green}"All prerequisite packages are already installed!"${reset}
+ echo -e "${green}All prerequisite packages are already installed!${reset}"
else
echo ""
echo -e "Installing missing prerequisite packages: ${brown}${missing_packages[*]}${reset}"
@@ -249,31 +241,31 @@ case "$ARCH" in
"armhf") DLURL="${dlbase}&arch=arm" ;;
"arm64") DLURL="${dlbase}&arch=arm64" ;;
*)
- echo -e ${red}"Your arch is not supported!"
- echo -e "Exiting installer script!"${reset}
+ echo -e "${red}Your arch is not supported!"
+ echo -e "Exiting installer script!${reset}"
exit 1
;;
esac
-echo -e ${yellow}"Removing tarballs..."${reset}
+echo -e "${yellow}Removing tarballs...${reset}"
sleep 3
# -f to Force so we do not fail if it doesn't exist
rm -f "${app^}".*.tar.gz
echo ""
-echo -e ${yellow}"Downloading required files..."${reset}
+echo -e "${yellow}Downloading required files...${reset}"
echo ""
wget --content-disposition "$DLURL"
echo ""
-echo -e ${yellow}"Download complete!"${reset}
+echo -e "${yellow}Download complete!${reset}"
echo ""
-echo -e ${yellow}"Extracting tarball!"${reset}
+echo -e "${yellow}Extracting tarball!${reset}"
tar -xvzf "${app^}".*.tar.gz >/dev/null 2>&1
echo ""
-echo -e ${yellow}"Installation files downloaded and extracted!"${reset}
+echo -e "${yellow}Installation files downloaded and extracted!${reset}"
# remove existing installs
echo ""
-echo -e "Removing existing installation files from ${brown}[$bindir]"${reset}
+echo -e "Removing existing installation files from ${brown}[$bindir]${reset}"
rm -rf "$bindir"
sleep 2
echo ""
@@ -292,7 +284,7 @@ sleep 2
# Check GLIBC version and create symlink to system SQLite if needed
echo ""
-echo -e ${yellow}"Checking GLIBC version for SQLite compatibility..."${reset}
+echo -e "${yellow}Checking GLIBC version for SQLite compatibility...${reset}"
GLIBC_VERSION=$(ldd --version | awk '/ldd/{print $NF}')
GLIBC_MAJOR=$(echo "$GLIBC_VERSION" | cut -d. -f1)
GLIBC_MINOR=$(echo "$GLIBC_VERSION" | cut -d. -f2)
@@ -300,7 +292,7 @@ GLIBC_MINOR=$(echo "$GLIBC_VERSION" | cut -d. -f2)
# Check if GLIBC is older than 2.38
if [ "$GLIBC_MAJOR" -lt 2 ] || { [ "$GLIBC_MAJOR" -eq 2 ] && [ "$GLIBC_MINOR" -lt 38 ]; }; then
echo ""
- echo -e ${yellow}"Detected GLIBC ${GLIBC_VERSION} (older than 2.38)."${reset}
+ echo -e "${yellow}Detected GLIBC ${GLIBC_VERSION} (older than 2.38).${reset}"
echo -e "Creating symlink to system SQLite library..."
# Backup original and create symlink based on architecture
@@ -315,14 +307,14 @@ if [ "$GLIBC_MAJOR" -lt 2 ] || { [ "$GLIBC_MAJOR" -eq 2 ] && [ "$GLIBC_MINOR" -l
if [ -f "$SYSTEM_SQLITE" ]; then
ln -s "$SYSTEM_SQLITE" "$bindir/libe_sqlite3.so"
- echo -e ${green}"Symlink created. ${app^} will use system SQLite at $SYSTEM_SQLITE"${reset}
+ echo -e "${green}Symlink created. ${app^} will use system SQLite at $SYSTEM_SQLITE${reset}"
else
- echo -e ${red}"System SQLite library not found at $SYSTEM_SQLITE"${reset}
- echo -e ${red}"This should not happen as libsqlite3-0 is a prerequisite."${reset}
+ echo -e "${red}System SQLite library not found at $SYSTEM_SQLITE${reset}"
+ echo -e "${red}This should not happen as libsqlite3-0 is a prerequisite.${reset}"
fi
sleep 2
else
- echo -e ${green}"GLIBC ${GLIBC_VERSION} is compatible with bundled SQLite."${reset}
+ echo -e "${green}GLIBC ${GLIBC_VERSION} is compatible with bundled SQLite.${reset}"
fi
# Configure Autostart
@@ -392,7 +384,7 @@ if [ "${STATUS}" = "active" ]; then
echo ""
else
echo ""
- echo -e ${red}"${app^} failed to start."${reset}
+ echo -e "${red}${app^} failed to start.${reset}"
echo ""
echo "Please try again. Exiting script."
echo
diff --git a/sonarr/contributing.md b/sonarr/contributing.md
index 1ed25358b..7bc89d525 100644
--- a/sonarr/contributing.md
+++ b/sonarr/contributing.md
@@ -46,7 +46,7 @@ Sonarr is written in C# (backend) and JS (frontend). The backend is built on the
1. Clone the repository into your development machine. [*info*](https://docs.github.com/en/get-started/quickstart/fork-a-repo)
> Be sure to run lint `yarn lint --fix` on your code for any front end changes before committing.
-For css changes `yarn stylelint-windows --fix` {.is-info}
+For css changes `yarn stylelint --fix` {.is-info}
### Building the frontend
diff --git a/sonarr/custom-scripts.md b/sonarr/custom-scripts.md
index 10523753a..591ca816f 100644
--- a/sonarr/custom-scripts.md
+++ b/sonarr/custom-scripts.md
@@ -19,7 +19,7 @@ Sonarr can execute a custom script when an episode is newly imported or renamed.
Note that the following will only be logged for custom scripts:
- Script `stdout` output will be logged as `Debug`
-- Script `stderr` output will be logged as `Info`
+- Script `stderr` output will be logged as `Error`
- The trigger of the script will be logged in `Trace`
# Environment Variables
diff --git a/sonarr/installation/freebsd.md b/sonarr/installation/freebsd.md
index 9aae08c27..99d48dd8c 100644
--- a/sonarr/installation/freebsd.md
+++ b/sonarr/installation/freebsd.md
@@ -69,7 +69,7 @@ iocage create -n "sonarr" -r 13.1-RELEASE ip4_addr="vnet0|10.0.0.100/24" vnet="o
iocage console sonarr
```
-## Sonarr Mono Installation
+## Sonarr Package Installation
Back on the jails list find your newly created jail for `sonarr` and click "Shell"
@@ -214,7 +214,7 @@ sysrc sonarr_user="USER_YOU_WANT"
sysrc sonarr_group="GROUP_YOU_WANT"
```
-`sonarr` stores its data, config, logs, and PID files in `/usr/local/sonarr` by default. The service file will create this and take ownership of it IF AND ONLY IF IT DOES NOT EXIST. If you want to store these files in a different place (e.g., a dataset mounted into the jail for easier snapshots) then you will need to change it using `sysrc`
+`sonarr` stores its data, config, logs, and PID files in `/var/db/sonarr` by default (matching the `sonarr_data_dir` default in the rc script above). The service file will create this and take ownership of it IF AND ONLY IF IT DOES NOT EXIST. If you want to store these files in a different place (e.g., a dataset mounted into the jail for easier snapshots) then you will need to change it using `sysrc`
```shell
sysrc sonarr_data_dir="DIR_YOU_WANT"
@@ -243,7 +243,7 @@ You can now safely close the shell
> The service script should now work around the lack of VNET and/or IP6 thus removing the requirement for VNET or ip6=inherit
{.is-info}
-### BSD Mono SSL Issues
+### BSD SSL Certificate Issues
- SSL or other Certificate issues (i.e. `unable to verify SSL certificate`)
- - See [this TrueNAS forum post as you'll need to update and sync mono's certs](https://www.truenas.com/community/threads/sonarr-radarr-probably-other-arr-jails-unable-to-verify-ssl-certificates-after-latest-update.96008/)
+ - See [this TrueNAS forum post for jail certificate troubleshooting](https://www.truenas.com/community/threads/sonarr-radarr-probably-other-arr-jails-unable-to-verify-ssl-certificates-after-latest-update.96008/)
diff --git a/sonarr/installation/linux.md b/sonarr/installation/linux.md
index e3864217d..3b838260d 100644
--- a/sonarr/installation/linux.md
+++ b/sonarr/installation/linux.md
@@ -3,7 +3,7 @@ title: Sonarr Linux Installation
description: Linux installation guide for Sonarr
published: true
date: 2024-04-05T19:14:26.741Z
-tags: sonarr
+tags: sonarr, installation, linux
editor: markdown
dateCreated: 2023-07-03T20:13:25.657Z
---
@@ -12,6 +12,160 @@ dateCreated: 2023-07-03T20:13:25.657Z
*It is assumed you have a basic knowledge of linux or the ability to google / learn as necessary. Otherwise it is suggested to use an OS you know and understand*
+## Debian / Ubuntu
+
+> Note: Raspberry Pi OS and Raspbian are both flavors of Debian {.is-info}
+
+### Easy Install
+
+For the Debian / Ubuntu / Raspbian beginners there isn't an Apt Repository or Deb package.
+
+If you want an easy life, follow this community provided and maintained `Easy Install` script for a base Debian (Raspbian / Raspberry Pi OS) / Ubuntu install.
+
+**For the official installation instructions that are 'Hands on' follow the [Debian / Ubuntu Hands on Install](#debian-ubuntu-hands-on-install) steps further below.**
+
+[Please see the \*Arr Community Installation Script](/install-script)
+
+> Sonarr uses a bundled version of ffprobe for media file analysis and does not require ffprobe or ffmpeg to be installed on the system. If Sonarr says ffprobe is not found this can typically be fixed with a reinstall.
+{.is-info}
+
+### Debian / Ubuntu Hands on Install
+
+You'll need to install the binaries using the below commands.
+
+> The steps below will download the stable version (`main` release branch) of Sonarr and install it into `/opt`
+> Sonarr will run under the user `sonarr` and group `media`; `media` is the commonly suggested group to run the \*Arrs, download clients, and media server under.
+> Sonarr's configuration files will be stored in `/var/lib/sonarr`
+{.is-success}
+
+- Ensure you have the required prerequisite packages:
+
+```shell
+sudo apt install curl sqlite3 wget
+```
+
+> **Installation Prerequisites**
+> The below instructions are based on the following prerequisites. Change the instructions as needed to suit your specific needs if necessary.
+> \* The user `sonarr` is created
+> \* The user `sonarr` is part of the group `media`
+> \* Your download clients and media server run as and are a part of the group `media`
+> \* Your paths used by your download clients and media server are accessible (read/write) to the group `media`
+> \* You created the directory `/var/lib/sonarr` and ensured the user `sonarr` has read/write permissions for it
+{.is-danger}
+
+> By continuing below, you acknowledge that you have read and met the above requirements. {.is-success}
+
+- Download the correct binaries for your architecture.
+ - You can determine your architecture with `dpkg --print-architecture`
+ - AMD64 (`amd64`) use `arch=x64`
+ - ARM, armf, and armh (`armhf`) use `arch=arm`
+ - ARM64 (`arm64`) use `arch=arm64`
+
+```shell
+wget --content-disposition 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64'
+```
+
+- Uncompress the files:
+
+```shell
+tar -xvzf Sonarr*.linux*.tar.gz
+```
+
+- Move the files to `/opt/`
+
+```shell
+sudo mv Sonarr /opt/
+```
+
+> Note: This assumes you will run as the user `sonarr` and group `media`. You may change this to fit your usecase. It's important to choose these correctly to avoid permission issues with your media files. We suggest you keep at least the group name identical between your download client(s) and Sonarr.
+{.is-danger}
+
+- Ensure ownership of the binary directory.
+
+```shell
+sudo chown sonarr:media -R /opt/Sonarr
+```
+
+- Configure systemd so Sonarr can autostart at boot.
+
+> The below systemd creation script will use a data directory of `/var/lib/sonarr`. Ensure it exists or modify it as needed. For the default data directory of `/home/$USER/.config/Sonarr` simply remove the `-data` argument. Note: that `$USER` is the User Sonarr runs as and is defined below.
+{.is-danger}
+
+```shell
+cat << EOF | sudo tee /etc/systemd/system/sonarr.service > /dev/null
+[Unit]
+Description=Sonarr Daemon
+After=syslog.target network.target
+[Service]
+User=sonarr
+Group=media
+UMask=0002
+Type=simple
+ExecStart=/opt/Sonarr/Sonarr -nobrowser -data=/var/lib/sonarr
+TimeoutStopSec=20
+KillMode=process
+Restart=on-failure
+[Install]
+WantedBy=multi-user.target
+EOF
+```
+
+- Reload systemd:
+
+```shell
+sudo systemctl -q daemon-reload
+```
+
+- Enable the Sonarr service:
+
+```shell
+sudo systemctl enable --now -q sonarr
+```
+
+- (Optional) Remove the tarball:
+
+```shell
+rm Sonarr*.linux*.tar.gz
+```
+
+Typically to access the Sonarr web GUI browse to `http://{Your server IP Address}:8989`
+
+If Sonarr did not appear to start, then check the status of the service:
+
+```shell
+sudo journalctl --since today -u sonarr
+```
+
+---
+
+### Uninstall
+
+To uninstall and purge:
+> Warning: This will destroy your application data. {.is-danger}
+
+```bash
+sudo systemctl stop sonarr
+sudo rm -rf /opt/Sonarr
+sudo rm -rf /var/lib/sonarr
+sudo rm -rf /etc/systemd/system/sonarr.service
+sudo systemctl -q daemon-reload
+```
+
+To uninstall and keep your application data:
+
+```bash
+sudo systemctl stop sonarr
+sudo rm -rf /opt/Sonarr
+sudo rm -rf /etc/systemd/system/sonarr.service
+sudo systemctl -q daemon-reload
+```
+
+---
+
+## Other Distributions
+
+Official builds and packages for other platforms are linked from the Sonarr download page.
+
- [Debian](https://sonarr.tv/#downloads-linux-debian)
- [Ubuntu](https://sonarr.tv/#downloads-linux-ubuntu)
- [ArchLinux](https://aur.archlinux.org/packages/sonarr/)
diff --git a/sonarr/installation/multiple-instances.md b/sonarr/installation/multiple-instances.md
index c1800ce7b..96c41afbf 100644
--- a/sonarr/installation/multiple-instances.md
+++ b/sonarr/installation/multiple-instances.md
@@ -38,7 +38,7 @@ This guide will show you how to run multiple instances of Sonarr on Windows usin
#### Prerequisites (Service)
-- [You must have Sonarr already installed](#windows)
+- [You must have Sonarr already installed](/sonarr/installation/windows)
- You must have [NSSM (Non-Sucking Service Manager](http://nssm.cc) installed. To install, download the latest release (2.24 at the time of writing) and copy either the 32-bit or 64-bit nssm.exe file to C:/windows/system32.
- If you aren’t sure if you have a 32-bit or 64-bit system, check Settings => System => About => System type.
@@ -83,7 +83,7 @@ separate locations. {.is-warning}
#### Prerequisites (Tray App)
-- [You must have Sonarr already installed](#windows)
+- [You must have Sonarr already installed](/sonarr/installation/windows)
- Sonarr must be configured with a `/data=` argument to allow multiple instances
- Navigate to the Startup Folder for the current user `%appdata%\Microsoft\Windows\Start Menu\Programs\Startup` and edit the existing shortcut if needed.
diff --git a/sonarr/quick-start-guide.md b/sonarr/quick-start-guide.md
index c01440ae2..9618e5ec0 100644
--- a/sonarr/quick-start-guide.md
+++ b/sonarr/quick-start-guide.md
@@ -142,7 +142,7 @@ Downloading and importing is where most people experience issues. From a high le
- Sonarr will send a download request to your client, and associate it with a label or category name that you have configured in the download client settings.
- Examples: movies, tv, series, music, etc.
- Sonarr will monitor your download clients active downloads that use that category name. This monitoring occurs via your download client's API.
-- Completed files are left in their original location to allow you to seed the file (ratio or time can be adjusted in the download client or from within Sonarr under the specific download client). When files are imported to your media folder Sonarr will hardlinkthe file if supported by your setup or copy if not hard links are not supported.
+- Completed files are left in their original location to allow you to seed the file (ratio or time can be adjusted in the download client or from within Sonarr under the specific download client). When files are imported to your media folder Sonarr will hardlink the file if supported by your setup or copy if hard links are not supported.
- Hard links are enabled by default. [A hard link will allow not use any additional disk space.](https://trash-guides.info/Hardlinks/Hardlinks-and-Instant-Moves/) The file system and mounts must be the same for your completed download directory and your media library. If the hard link creation fails or your setup does not support hard links then Sonarr will fall back and copy the file.
- If the "Completed Download Handling - Remove" option is enabled in Sonarr's settings, Sonarr will delete the torrent from your client and ask the client to remove the torrent data, but only if the client reports that seeding is complete and torrent is stopped (paused on completion).
@@ -154,7 +154,7 @@ Downloading and importing is where most people experience issues. From a high le
After setting up your profiles/quality sizes and added your indexers and download client(s) it’s time to import your existing organized media library.
-Coming soon - Contributions Welcome
+This is done from the `Library Import` view (accessed via `Add New` => `Import Existing Series`). The steps for this are detailed below.
## Importing Existing Media
diff --git a/sonarr/settings.md b/sonarr/settings.md
index bdeeeb99c..dc79d2792 100644
--- a/sonarr/settings.md
+++ b/sonarr/settings.md
@@ -149,10 +149,10 @@ Also, note that for each individual settings page, there are some options at the
- Colon Replacement Format - Select how colons are handled in episode names
- Delete - Remove colons (e.g. `Series Title Part 1`)
- - Dash - Replace with a dash (e.g. `Series Title - Part 1`)
- - Space Dash - Replace with a space and a dash (e.g. `Series Title - Part 1`)
+ - Dash - Replace with a dash (e.g. `Series Title-Part 1`)
+ - Space Dash - Replace with a space and a dash (e.g. `Series Title -Part 1`)
- Space Dash Space - Replace with a space, dash, and space (e.g. `Series Title - Part 1`)
- - Smart - Replaces a colon followed by a space with ` - `, otherwise deletes the colon (Default)
+ - Smart - Replaces a colon followed by a space with ` - `, otherwise replaces it with a dash (Default)
- Custom - Use a custom replacement string
### Standard Episode Format
@@ -185,7 +185,7 @@ Standard Episode Format - Set the naming convention for your Standard Series Typ
- `{Series TitleTheWithoutYear}` = Series Name's Title!, The
- `{Series CleanTitleTheWithoutYear}` = Series Names Title!, The
- `{Series TitleFirstCharacter}` = S
-- `{Series Year}` = (2010)
+- `{Series Year}` = 2010
### Series IDs
@@ -305,7 +305,7 @@ See [Standard Episode Format](/sonarr/settings#standard-episode-format) for more
- `{Series TitleTheWithoutYear}` = Series Title, The
- `{Series CleanTitleTheWithoutYear}` = Series Title, The
- `{Series TitleFirstCharacter}` = S
-- `{Series Year}` = (2010)
+- `{Series Year}` = 2010
### Series IDs
@@ -335,7 +335,7 @@ Name for the `Specials` (Season) folder
## Multi-Episode Style
- `Extend` = `S01E01-02-03`
-- `Duplicate` = `S01E01.S01E01`
+- `Duplicate` = `S01E01.S01E02`
- `Repeat` = `S01E01E02E03`
- `Scene` = `S01E01-E02-E03`
- `Range` = `S01E01-03`
@@ -501,7 +501,9 @@ Profiles is where Custom Format Scores are configured.
- Source - The source where a release was ripped from (e.g. BLURAY).
- Resolution - The resolution parsed from either the release name or media info (if available).
- Size - This is matched against the release size. The release size is converted to gigabytes and compared against the min and max values.
-- Group - This is matched against the group that Sonarr parses based on Sonarr's group detection logic.
+- Release Group - This is matched against the release group that Sonarr parses based on Sonarr's group detection logic.
+- Indexer Flag - This is matched against the indexer flags reported for the release (e.g. Freeleech).
+- Release Type - This is matched against the type of release Sonarr parses: Single Episode, Multi-Episode, or Season Pack.
### Profiling Settings and Ranking
@@ -530,8 +532,9 @@ Profiles is where Custom Format Scores are configured.
- Preferred Protocol - This will either be `Usenet` or `Torrent` depending on which download protocol you prefer
- Usenet Delay - Set by the number of minutes you will want to wait before the download to start
- Torrent Delay - Set by the number of minutes you will want to wait before the download to start
-- Bypass if Highest Quality - Bypass delay when release has the highest enabled quality profile with the preferred protocol
-- Bypass if Highest Quality - Bypass delay when release has the highest enabled quality profile with the preferred protocol
+- Bypass if Highest Quality - Bypass delay when release has the highest enabled quality in the quality profile with the preferred protocol
+- Bypass if Above Custom Format Score - Bypass delay when release has a score higher than the configured minimum custom format score
+ - Minimum Custom Format Score - Minimum Custom Format Score required to bypass delay for the preferred protocol
- Tags - With giving this delay profile a tag you will be able to tag a given series to have it play by the rules set here.
- Wrench icon - This will allow you to edit the delay profile
- Plus icon (+) - Create a new delay profile
@@ -891,7 +894,7 @@ If you download using a BitTorrent client, the process is slightly different:
### List Options
-- (Advanced Option) List Update Interval - How often should Radarr poll the list for updates? This is provided dependent as per the UI.
+- (Advanced Option) List Update Interval - How often should Sonarr poll the list for updates? This is provider dependent as per the UI.
- (Advanced Option) Clean Library Level - Series in library will be removed or unmonitored if not in at least one of your list(s)
- Disabled - Do not clean the library (Recommended)
- Log Only - Only log the series are not on the list(s) and take no other actions
@@ -1005,7 +1008,7 @@ If you download using a BitTorrent client, the process is slightly different:
- Proxy - This option allows you to run the information your Sonarr pulls and searches for through a proxy. This can be useful if you're in a country that does not allow the downloading of Torrent files
- Use Proxy - Enable to use a Proxy
-- Proxy Type - Select your proxy type (HTTPS, Socks4, or Socks5)
+- Proxy Type - Select your proxy type (HTTP(S), Socks4, or Socks5)
- Hostname - Enter your proxy hostname (Do not include http/https or any other protocol)
- Port - Enter your proxy port
- Username - Enter your proxy username if applicable
@@ -1022,7 +1025,7 @@ If you download using a BitTorrent client, the process is slightly different:
## Analytics
-- Analytics - Send anonymous usage and error information to Sonarr's servers (SkyHook). This includes information on your browser, which Sonarr WebUI pages you use, error reporting as well as OS and runtime version. We will use this information to prioritize features and bug fixes.
+- Analytics - Send anonymous usage and error information to Sonarr's servers. This includes information on your browser, which Sonarr WebUI pages you use, error reporting as well as OS and runtime version. We will use this information to prioritize features and bug fixes.
## Updates
diff --git a/sonarr/supported.md b/sonarr/supported.md
index 1036fdfa1..742ee596f 100644
--- a/sonarr/supported.md
+++ b/sonarr/supported.md
@@ -68,8 +68,7 @@ This page is the disambiguation page for all "supported" wiki links (i.e. typica
- Newznab is a standardized API used by many usenet indexing sites. Many presets are available, but all require an API key to be accessible.
- Indexer Applications like [Prowlarr](/prowlarr) and [NZBHydra2](https://github.com/theotherp/nzbhydra2) can provide advanced capabilities such as stat tracking.
- omgwtfnzbs {#omgwtfnzbs}
- - A defunct legacy implementation of a private usenet indexer. Use Newznab instead.
- - [Refer to the Settings Page](/sonarr/settings#indexer-settings)
+ - The native omgwtfnzbs implementation has been removed from Sonarr. Add it via the generic Newznab indexer instead.
## Torrents
@@ -122,7 +121,7 @@ This page is the disambiguation page for all "supported" wiki links (i.e. typica
- Discord {#discord}
- By far one of the most common ways to push notifications of actions happening on your Sonarr
- Supported field types:
- `Overview, Rating, Genres, Quality, Group, Size, Links, Release, Poster, Fanart, CustomFormats, CustomFormatScore, Indexer`
+ `Overview, Rating, Genres, Quality, Group, Size, Links, Release, Poster, Fanart, Indexer, CustomFormats, CustomFormatScore`
- Email {#email}
- Simply send yourself or somebody you want to annoy with email. If you're using Gmail, you need to enable less secure apps. If you're using Gmail and have 2-factor authentication enabled you need to use an App Specific password.
@@ -158,7 +157,7 @@ This page is the disambiguation page for all "supported" wiki links (i.e. typica
- Telegram {#telegram}
- Trakt {#trakt}
- Twitter {#twitter}
- - See this [Tips and Tricks entry](/useful-tools#twitter)
+ - See this [Tips and Tricks entry](/useful-tools#twitter-connect)
- Webhook {#webhook}
## Deprecated Notifications
diff --git a/sonarr/tips-and-tricks.md b/sonarr/tips-and-tricks.md
index bcc7ef742..22a4456d1 100644
--- a/sonarr/tips-and-tricks.md
+++ b/sonarr/tips-and-tricks.md
@@ -2,16 +2,62 @@
title: Sonarr Tips and Tricks
description: Advanced tips, optimization techniques, and workflow improvements for experienced Sonarr users
published: true
-date: 2021-12-22T19:56:48.398Z
+date: 2026-06-27T00:00:00.000Z
tags: tips, tricks, optimization, workflow, advanced, sonarr
editor: markdown
dateCreated: 2021-08-14T15:15:35.157Z
---
-# Coming Soon
+# TRaSH's Custom Formats
-Contributions Welcome
+- [TRaSH has a guide](https://trash-guides.info/Sonarr/sonarr-collection-of-custom-formats/) on how to use [Sonarr => Settings => Custom Formats](/sonarr/settings#custom-formats-2) as well as a shared repository of Custom Formats.
# Syncing Two Sonarr Instances
- TRaSH has [a guide](https://trash-guides.info/Radarr/Tips/Sync-2-radarr-sonarr/) on how to sync two (or more) instances
+
+# Renaming Series Folders
+
+- If you change your Series Folder Format after Sonarr has already created folders, Sonarr does not rename the existing folders automatically. See [this FAQ entry](/sonarr/faq#rename-folders) for the steps to trigger a rename.
+
+# Creating a Folder for Each Series
+
+- This is only needed to clean up / organize an existing library to facilitate importing into Sonarr. Below are a few different methods.
+
+## Filebot
+
+> Filebot is supported on Windows, Linux, and MacOS {.is-info}
+
+- [Filebot](https://www.filebot.net/) is a fantastic utility for getting your episodes organized in a way that Sonarr can successfully parse. Version 4.7.9 can still be downloaded for free from a SourceForge mirror, but there are also paid versions in the Windows and Apple stores. On Linux, your distribution of choice may have a package for it, like in Arch's AUR package or `.deb` files for Debian/Ubuntu from their download page. It has both a GUI and a CLI, so it should satisfy almost everyone.
+
+- There is great help available, including their format expressions page. Filebot's TV format expressions can produce a `Series Name (Year)/Season XX/` layout that Sonarr parses cleanly.
+
+- To keep this pattern for future imports, you should set:
+
+- [Settings => Media Management (Advanced Settings Shown) => Series Folder Format](/sonarr/settings#media-management)
+
+ - Series Folder: `{Series TitleYear}`
+ - Season Folder: `Season {season:00}`
+
+- Note: You can adjust the tokens above using any of the [series naming tokens](/sonarr/settings#series-folder-format) that Sonarr supports.
+
+## Linux Bash Script
+
+The following script will take all video files within your selected folder and move each into a folder based on the series portion of its name. Note that this does not go into subfolders within the starting/selected folder. Sort the resulting folders before importing — this is a starting point, not a parser.
+
+```shell
+cd /path/to/your/episode/files/
+find . -maxdepth 1 -type f \( -iname "*.mkv" -o -iname "*.mp4" \) -exec sh -c 'mkdir "${1%.*}" ; mv "${1%}" "${1%.*}" ' _ {} \;
+```
+
+## Windows Powershell
+
+Alternatively in Windows you can run the following script in Powershell to iterate over each file in a directory, and move it to a folder with the same name.
+
+```powershell
+Get-ChildItem -File
+ | ForEach-Object {
+ $dir = New-Item -ItemType Directory -Name $_.BaseName -Force
+ $_ | Move-Item -Destination $dir
+ }
+```
diff --git a/sonarr/troubleshooting.md b/sonarr/troubleshooting.md
index 6078995c5..ee2cbdaa3 100644
--- a/sonarr/troubleshooting.md
+++ b/sonarr/troubleshooting.md
@@ -374,7 +374,7 @@ This can also occur if you have a release in your download client but that media
On TVDB, when episode names are unknown they'll be titled TBA and there is a 24 hour cache on the API. Typically, changes to the TVDB website take 24-48 hours to reach Sonarr due to TVDB cache, Skyhook cache and the series refresh interval.
-The [Episode Title Required](/sonarr/settings#importing) setting in Sonarr controls import behavior when the title is TBA, but after 24 hours from the episode's air date the release will be imported even if the title is still TBA. There is also no automatic follow up renaming of TBA titled files.
+The [Episode Title Required](/sonarr/settings#importing) setting in Sonarr controls import behavior when the title is TBA, but after 48 hours from the episode's air date the release will be imported even if the title is still TBA. There is also no automatic follow up renaming of TBA titled files.
### The underlying connection was closed: An unexpected error occurred on a send
diff --git a/sonarr/wanted.md b/sonarr/wanted.md
index 1f6c25c70..1ad2b78b2 100644
--- a/sonarr/wanted.md
+++ b/sonarr/wanted.md
@@ -21,7 +21,7 @@ The Wanted => Missing section contains a list of the episodes you have marked to
- Filter - The filter button (top right) lets you toggle between viewing Monitored and Unmonitored missing episodes.
-> This search process cannot be canceled once started without restarting Sonarr.
+> This search process cannot be canceled once started without restarting Sonarr or disabling all of your indexers.
{.is-info}
At the top of the page is `Manual Import` which allows you to arbitrarily import media files from any destination Sonarr can access for series that already exist in Sonarr.
diff --git a/useful-tools.md b/useful-tools.md
index 9b3c29426..206b58641 100644
--- a/useful-tools.md
+++ b/useful-tools.md
@@ -31,6 +31,7 @@ dateCreated: 2021-06-05T20:51:53.183Z
- [Petio](#petio)
- [Other Projects and Programs - \*Arr Related](#other-projects-and-programs---arr-related)
- [Remote Control](#remote-control)
+ - [Managarr](#managarr)
- [LunaSea](#lunasea)
- [Radarr \& Sonarr Companion - Android App](#radarr--sonarr-companion---android-app)
- [nzb360 - Android App](#nzb360---android-app)
@@ -57,6 +58,7 @@ dateCreated: 2021-06-05T20:51:53.183Z
- [Tdarr](#tdarr)
- [tdarr\_inform](#tdarr_inform)
- [Deleterr](#deleterr)
+ - [Prunerr](#prunerr)
- [Twitter Connect](#twitter-connect)
The following apps are companions to the \*Arr Suite of Applications or media hoarding in general. They are not maintained, developed, nor supported by the \*Arr Development Team. Please direct any specific support questions to the respective application development team.
@@ -119,17 +121,18 @@ Please note that the gif does not cover the `VACUUM;` command
The below instructions are for \*Nix Operating Systems, but the concept will be similar on Windows Command Line.
-> This uses the [sqlite3 `.recover` command](https://www.sqlite.org/cli.html#recover_data_from_a_corrupted_database) is ideal. Note that it requires Sqlite 3.29+
+> This uses the [sqlite3 `.recover` command](https://www.sqlite.org/cli.html#recover_data_from_a_corrupted_database), which is ideal. Note that it requires Sqlite 3.29+
{.is-info}
-> Given sqlite3 is required by \*Arrs it is assumed you have sqlite3 installed on your system {.is-info}
+> The `sqlite3` command-line tool (Debian/Ubuntu package `sqlite3`) provides the `.recover` command and is separate from the SQLite library the \*Arrs ship with. Install it with `sudo apt install sqlite3`, or the equivalent package on other distributions. Check your version with `sqlite3 --version`; if it is older than 3.29 upgrade sqlite3 or use [the UI method above](#recovering-a-corrupt-db-ui) instead. {.is-info}
1. Stop the application
1. SSH into your box or otherwise get a shell up
-1. Enter `sqlite3 ".recover" | sqlite3