Merge branch 'master' into patch-3

pull/278/head
TRaSH 3 years ago committed by GitHub
commit d9c1f58546
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@v2
- name: markdownlint
run: |
find ~+ ${github_workspace} -name '*.md' | xargs docker run --rm -v ${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE} markdownlint/markdownlint -r ~MD013,~MD033,~MD034,~MD046,~MD002
find ~+ ${github_workspace} -name '*.md' | xargs docker run --rm -v ${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE} markdownlint/markdownlint -r ~MD013,~MD033,~MD034,~MD046,~MD002,~MD041
yamllint:
runs-on: ubuntu-latest

@ -1,18 +1,6 @@
# Deluge - Basic Setup
This basic example is based on the use of docker images
!!! note ""
Keep in mind I've setup my paths so it works with hardlinks and you get instant moves.
!!! attention ""
The default path setup recommended by some docker developers that encourages people to use mounts like `/movies`, `/tv` and `/downloads` is very suboptimal. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move.
But you're able to change this, by not using the pre-defined/recommended paths like:
- `/downloads` => `/data/downloads`
- `/movies` => `/data/media/movies`
- `/tv` => `/data/media/tv`.
--8<-- "includes/downloaders/basic-setup.md"
------

@ -1,20 +1,6 @@
# NZBGet - Basic Setup
This basic example is based on the use of docker images
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! attention ""
The default path setup recommended by some docker developers that encourages people to use mounts like `/movies`, `/tv` and `/downloads` is very suboptimal. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move.
But you're able to change this, by not using the pre-defined/recommended paths like:
- `/downloads` => `/data/downloads`
- `/movies` => `/data/media/movies`
- `/tv` => `/data/media/tv`.
--8<-- "includes/downloaders/basic-setup.md"
------

@ -1,19 +1,8 @@
# NZBGet - Paths and Categories
This basic example is based on the use of docker images
--8<-- "includes/downloaders/path.md"
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! info
Pick one path layout and use it for all of them.
It doesn't matter if you prefer to use `/data`, `/shared`, `/storage` or whatever.
The screenshots in the examples are using the following root path `/data`
---
`Settings` => `PATHS`

@ -1,20 +1,6 @@
# SABnzbd - Basic Setup
This basic example is based on the use of docker images
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! attention ""
The default path setup recommended by some docker developers that encourages people to use mounts like `/movies`, `/tv` and `/downloads` is very suboptimal. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move.
But you're able to change this, by not using the pre-defined/recommended paths like:
- `/downloads` => `/data/downloads`
- `/movies` => `/data/media/movies`
- `/tv` => `/data/media/tv`.
--8<-- "includes/downloaders/basic-setup.md"
------

@ -1,19 +1,6 @@
# SABnzbd - Paths and Categories
This basic example is based on the use of docker images
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! info
Pick one path layout and use it for all of them.
It doesn't matter if you prefer to use `/data`, `/shared`, `/storage` or whatever.
The screenshots in the examples are using the following root path `/data`
--8<-- "includes/downloaders/path.md"
---

@ -1,20 +1,6 @@
# qBittorrent - Basic Setup
This basic example is based on the use of docker images
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! attention ""
The default path setup recommended by some docker developers that encourages people to use mounts like `/movies`, `/tv` and `/downloads` is very suboptimal. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move.
But you're able to change this, by not using the pre-defined/recommended paths like:
- `/downloads` => `/data/downloads`
- `/movies` => `/data/media/movies`
- `/tv` => `/data/media/tv`.
--8<-- "includes/downloaders/basic-setup.md"
------

@ -1,19 +1,8 @@
# qBittorrent - Paths
This basic example is based on the use of docker images
--8<-- "includes/downloaders/path.md"
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! info
Pick one path layout and use it for all of them.
It doesn't matter if you prefer to use `/data`, `/shared`, `/storage` or whatever.
The screenshots in the examples are using the following root path `/data`
---
`Options` => `Downloads`

@ -1,18 +1,6 @@
# ruTorrent - Basic Setup
This basic example is based on the use of docker images
!!! note ""
Keep in mind I've setup my paths so it works with hardlinks and you get instant moves.
!!! attention ""
The default path setup recommended by some docker developers that encourages people to use mounts like `/movies`, `/tv` and `/downloads` is very suboptimal. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move.
But you're able to change this, by not using the pre-defined/recommended paths like:
- `/downloads` => `/data/downloads`
- `/movies` => `/data/media/movies`
- `/tv` => `/data/media/tv`.
--8<-- "includes/downloaders/basic-setup.md"
------

@ -8,18 +8,10 @@
The screenshots in the examples are using the following root path `/data`
- [Sonarr](#sonarr)
- [Radarr](#radarr)
- [SABnzbd](#sabnzbd)
- [NZBGet](#nzbget)
- [qBittorrent](#qbittorent)
- [Deluge](#deluge)
- [ruTorrent](#rutorrent)
## Sonarr
??? example "Sonarr Examples"
## Sonarr
`Settings` => `Media Management` => `Importing`
![sonarr-enable-hardlinks](images/sonarr-enable-hardlinks.png)
@ -34,9 +26,9 @@
![sonarr-tv](images/sonarr-tv.png)
??? example "Radarr Examples"
## Radarr
## Radarr
??? example "Radarr Examples"
`Settings` => `Media Management` => `Importing`
@ -52,9 +44,9 @@
![radarr-movies](images/radarr-movies.png)
??? example "SABnzbd Examples"
## SABnzbd
## SABnzbd
??? example "SABnzbd Examples"
`SABnzbd config` => `Folders`
@ -64,9 +56,9 @@
![sabnzbd-categories](images/sabnzbd-categories.png)
??? example "NZBGet Examples"
## NZBGet
## NZBGet
??? example "NZBGet Examples"
`Settings` => `PATHS`
@ -76,25 +68,25 @@
![nzbget-settings-categories](images/nzbget-settings-categories.png)
??? example "qBittorrent Examples"
## qBittorrent
## qBittorrent
??? example "qBittorrent Examples"
`Options` => `Downloads`
![qbt-options-downloads](images/qbt-options-downloads.png)
??? example "Deluge Example"
## Deluge
## Deluge
??? example "Deluge Example"
`Preferences` => `Downloads`
![deluge-preferences-downloads](images/deluge-preferences-downloads.png)
??? example "ruTorrent Examples"
## ruTorrent
## ruTorrent
??? example "ruTorrent Examples"
`../config/rtorrent/config/rtorrent.rc` (path to your appdata)

@ -20,111 +20,15 @@
For example `/<path_to_data>/data`, or even `/data`.
## Folder Structure
!!! attention
It doesn't really matter which path you use for your media and appdata,
the only thing you should avoid is `/home`.
Because user folders in `/home` are expected to have some restrictive permissions.
It just could end up creating a permissions mess, so it's better to just avoid entirely.
For this example we're going to make use of a share called `data`.
The `data` folder has sub-folders for `torrents` and `usenet` and each of these have sub-folders for `tv`, `movie` and `music` downloads to keep things neat. The `media` folder has nicely named `TV`, `Movies` and `Music` sub-folders, this is your library and what youd pass to Plex, Emby or JellyFin.
*In this examples I'm using lower case on all folder on purpose, being Linux is case sensitive.*
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```
### Breakdown of the Folder Structure
!!! info
The paths you use on the inside matter. Because of how Dockers volumes work, passing in two or three volumes such as the commonly suggested `/tv`, `/movies` and `/downloads` makes them look like two or three file systems, even if they arent. This means hard links wont work and instead of an instant move, a slower and more I/O intensive copy + delete is used.
#### Torrent clients
qBittorrent, Deluge, ruTorrent
The reason why we use `/data/torrents` for the torrent client is because it only needs access to the torrent files. In the torrent software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/torrents/{tv|movies|music}`.
--8<-- "includes/hardlinks/folder-structure.md"
```none
data
└── torrents
├── movies
├── music
└── tv
```
--8<-- "includes/hardlinks/breakdown-folder-structure.md"
#### Usenet clients
NZBGet or SABnzbd
The reason why we use `/data/usenet` for the usenet client is because it only needs access to the usenet files. In the usenet software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/usenet/{tv|movies|music}`.
```none
data
└── usenet
├── movies
├── music
└── tv
```
#### The arr(s)
Sonarr, Radarr and Lidarr
Sonarr, Radarr and Lidarr gets access to everything because the download folder(s) and media folder will look like and be one file system. Hard links will work and moves will be atomic, instead of copy + delete.
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```
#### Media Server
Plex, Emby, JellyFin and Bazarr
Plex, Emby, JellyFin and Bazarr only needs access to your media library, which can have any number of sub folders like Movies, Kids Movies, TV, Documentary TV and/or Music as sub folders.
```none
data
└── media
├── movies
├── music
└── tv
```
**Don't forget to look at the [Examples](/Hardlinks/Examples/) how to setup the paths inside your applications.**
--8<-- "includes/hardlinks/permissions.md"
## Docker-compose Example
@ -140,3 +44,5 @@ data
```yml
--8<-- "includes/docker/docker-compose.yml"
```
--8<-- "includes/hardlinks/docker-compose-commands.md"

@ -4,117 +4,10 @@
I'm not going to explain how to install all the applications, I will only explain which folder structure we recommend.
------
---
## Folder Structure
--8<-- "includes/hardlinks/folder-structure.md"
!!! attention
--8<-- "includes/hardlinks/breakdown-folder-structure.md"
It doesn't really matter which path you use for your media,
the only thing you should avoid is `/home`.
Because user folders in `/home` are expected to have some restrictive permissions.
It just could end up creating a permissions mess, so it's better to just avoid entirely.
For this example we're going to make use of a share called `data`.
The `data` folder has sub-folders for `torrents` and `usenet` and each of these have sub-folders for `tv`, `movie` and `music` downloads to keep things neat. The `media` folder has nicely named `TV`, `Movies` and `Music` sub-folders, this is your library and what youd pass to Plex, Emby or JellyFin.
*I'm using lower case on all folder on purpose, being Linux is case sensitive.*
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```
## Breakdown of the Folder Structure
### Torrent clients
qBittorrent, Deluge, ruTorrent
The reason why we use `/data/torrents` for the torrent client is because it only needs access to the torrent files. In the torrent software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/torrents/{tv|movies|music}`.
```none
data
└── torrents
├── movies
├── music
└── tv
```
### Usenet clients
NZBGet or SABnzbd
The reason why we use `/data/usenet` for the usenet client is because it only needs access to the usenet files. In the usenet software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/usenet/{tv|movies|music}`.
```none
data
└── usenet
├── movies
├── music
└── tv
```
### The arr(s)
Sonarr, Radarr and Lidarr
Sonarr, Radarr and Lidarr gets access to everything because the download folder(s) and media folder will look like and be one file system. Hard links will work and moves will be atomic, instead of copy + delete.
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```
### Media Server
Plex, Emby, JellyFin and Bazarr
Plex, Emby, JellyFin and Bazarr only needs access to your media library, which can have any number of sub folders like Movies, Kids Movies, TV, Documentary TV and/or Music as sub folders.
```none
data
└── media
├── movies
├── music
└── tv
```
------
## Permissions
Recursively chown user and group and Recursively chmod to 775/664
```bash
sudo chown -R $USER:$USER /data
sudo chmod -R a=,a+rX,u+w,g+w /data
```
**Don't forget to look at the [Examples](/Hardlinks/How-to-setup-for/) how to setup the paths inside the applications.**
--8<-- "includes/hardlinks/permissions.md"

@ -74,75 +74,7 @@ data
└── tv
```
## Breakdown of the Folder Structure
!!! info
The paths you use on the inside matter. Because of how Dockers volumes work, passing in two or three volumes such as the commonly suggested `/tv`, `/movies` and `/downloads` makes them look like two or three file systems, even if they arent. This means hard links wont work and instead of an instant move, a slower and more I/O intensive copy + delete is used.
### Torrent clients
qBittorrent, Deluge, ruTorrent
The reason why we use `/data/torrents` for the torrent client is because it only needs access to the torrent files. In the torrent software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/torrents/{tv|movies|music}`.
```none
data
└── torrents
├── movies
├── music
└── tv
```
### Usenet clients
NZBGet or SABnzbd
The reason why we use `/data/usenet` for the usenet client is because it only needs access to the usenet files. In the usenet software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/usenet/{tv|movies|music}`.
```none
data
└── usenet
├── movies
├── music
└── tv
```
### The arr(s)
Sonarr, Radarr and Lidarr
Sonarr, Radarr and Lidarr gets access to everything because the download folder(s) and media folder will look like and be one file system. Hard links will work and moves will be atomic, instead of copy + delete.
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```
### Media Server
Plex, Emby, JellyFin and Bazarr
Plex, Emby, JellyFin and Bazarr only needs access to your media library, which can have any number of sub folders like Movies, Kids Movies, TV, Documentary TV and/or Music as sub folders.
```none
data
└── media
├── movies
├── music
└── tv
```
--8<-- "includes/hardlinks/breakdown-folder-structure.md"
------
@ -240,7 +172,7 @@ sudo chmod -R a=,a+rX,u+w,g+w /volume1/data /volume1/docker
------
### Run the Docker Compose
## Run the Docker Compose
!!! important
make sure you deleted/removed all your existing dockers from the GUI and also remove your native installs of these applications !!!
@ -266,9 +198,4 @@ You will notice that all the images will be downloaded, and after that the conta
Just don't use the GUI !!!
??? hint "docker-compose commands - [CLICK TO EXPAND]"
- `sudo docker-compose up -d` (This Docker-compose command helps builds the image, then creates and starts Docker containers. The containers are from the services specified in the compose file. If the containers are already running and you run docker-compose up, it recreates the container.)
- `sudo docker-compose pull` (Pulls an image associated with a service defined in a docker-compose.yml)
- `sudo docker-compose down` (The Docker-compose down command also stops Docker containers like the stop command does. But it goes the extra mile. Docker-compose down, doesnt just stop the containers, it also removes them.)
- `sudo docker system prune -a --volumes --force` (Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.)
--8<-- "includes/hardlinks/docker-compose-commands.md"

@ -51,7 +51,7 @@ services:
- /etc/localtime:/etc/localtime:ro
- /docker/appdata/bazarr:/config
- /data/media:/data/media
sabnzbd:
sabnzbd:
container_name: sabnzbd
image: ghcr.io/hotio/sabnzbd:latest
restart: unless-stopped

@ -0,0 +1,15 @@
This basic example is based on the use of docker images
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! attention ""
The default path setup suggested by some docker developers that encourages people to use mounts like `/movies`, `/tv` and `/downloads` is very suboptimal because it makes them look like two or three file systems, even if they arent. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move, resulting in a slower and more I/O intensive copy + delete is used.
But you're able to change this, by not using the pre-defined/recommended paths like:
- `/downloads` => `/data/downloads`
- `/movies` => `/data/media/movies`
- `/tv` => `/data/media/tv`.

@ -0,0 +1,14 @@
This basic example is based on the use of docker images
!!! tip ""
Keep in mind the path are setup so it works with hardlinks and instant moves.
More info [HERE](/Hardlinks/Hardlinks-and-Instant-Moves/){:target="_blank" rel="noopener noreferrer"}
!!! info
Pick one path layout and use it for all of them.
It doesn't matter if you prefer to use `/data`, `/shared`, `/storage` or whatever.
The screenshots in the examples are using the following root path `/data`

@ -0,0 +1,69 @@
### Breakdown of the Folder Structure
#### Torrent clients
qBittorrent, Deluge, ruTorrent
The reason why we use `/data/torrents` for the torrent client is because it only needs access to the torrent files. In the torrent software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/torrents/{tv|movies|music}`.
```none
data
└── torrents
├── movies
├── music
└── tv
```
#### Usenet clients
NZBGet or SABnzbd
The reason why we use `/data/usenet` for the usenet client is because it only needs access to the usenet files. In the usenet software settings, youll need to reconfigure paths and you can sort into sub-folders like `/data/usenet/{tv|movies|music}`.
```none
data
└── usenet
├── movies
├── music
└── tv
```
#### The arr(s)
Sonarr, Radarr and Lidarr
Sonarr, Radarr and Lidarr gets access to everything because the download folder(s) and media folder will look like and be one file system. Hard links will work and moves will be atomic, instead of copy + delete.
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```
#### Media Server
Plex, Emby, JellyFin and Bazarr
Plex, Emby, JellyFin and Bazarr only needs access to your media library, which can have any number of sub folders like Movies, Kids Movies, TV, Documentary TV and/or Music as sub folders.
```none
data
└── media
├── movies
├── music
└── tv
```
------
**Don't forget to look at the [Examples](/Hardlinks/Examples/) how to setup the paths inside the applications.**

@ -0,0 +1,8 @@
### Docker-Compose Commands
??? hint "docker-compose commands - [CLICK TO EXPAND]"
- `sudo docker-compose up -d` (This Docker-compose command helps builds the image, then creates and starts Docker containers. The containers are from the services specified in the compose file. If the containers are already running and you run docker-compose up, it recreates the container.)
- `sudo docker-compose pull` (Pulls an image associated with a service defined in a docker-compose.yml)
- `sudo docker-compose down` (The Docker-compose down command also stops Docker containers like the stop command does. But it goes the extra mile. Docker-compose down, doesnt just stop the containers, it also removes them.)
- `sudo docker system prune -a --volumes --force` (Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.)

@ -0,0 +1,33 @@
## Folder Structure
!!! attention
It doesn't really matter which path you use for your media and appdata,
the only thing you should avoid is `/home`.
Because user folders in `/home` are expected to have some restrictive permissions.
It just could end up creating a permissions mess, so it's better to just avoid entirely.
For this example we're going to make use of a share called `data`.
The `data` folder has sub-folders for `torrents` and `usenet` and each of these have sub-folders for `tv`, `movie` and `music` downloads to keep things neat. The `media` folder has nicely named `TV`, `Movies` and `Music` sub-folders, this is your library and what youd pass to Plex, Emby or JellyFin.
*In this examples I'm using lower case on all folder on purpose, being Linux is case sensitive.*
```none
data
├── torrents
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── movies
│ ├── music
│ └── tv
└── media
├── movies
├── music
└── tv
```

@ -0,0 +1,8 @@
### Permissions
Recursively chown user and group and Recursively chmod to 775/664
```bash
sudo chown -R $USER:$USER /data
sudo chmod -R a=,a+rX,u+w,g+w /data
```
Loading…
Cancel
Save