diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..8a4dfb9 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +mediastack.guide \ No newline at end of file diff --git a/README.md b/README.md index d2bdf81..36d0d91 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # mediastack.guide Content for MediaStack.Guide Website + +Goto: [https://MediaStack.Guide](https://MediaStack.Guide) \ No newline at end of file diff --git a/docs/assets/favicon.ico b/docs/assets/favicon.ico new file mode 100644 index 0000000..cfcc086 Binary files /dev/null and b/docs/assets/favicon.ico differ diff --git a/docs/configuration/bazaar.md b/docs/configuration/bazaar.md new file mode 100644 index 0000000..cc5c9b7 --- /dev/null +++ b/docs/configuration/bazaar.md @@ -0,0 +1,20 @@ +# Bazarr - Subtitle Manager + +Bazarr is a companion application to Sonarr and Radarr. It can manage and download subtitles based on your requirements. You define your preferences by TV show or movie and Bazarr takes care of everything for you. + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three \ No newline at end of file diff --git a/docs/configuration/gluetun.md b/docs/configuration/gluetun.md new file mode 100644 index 0000000..f748167 --- /dev/null +++ b/docs/configuration/gluetun.md @@ -0,0 +1,45 @@ +# Gluetun VPN - Secure Outbound Network Traffic + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + +--- + +## Intro + +Gluetun is a "Lightweight swiss-knife-like VPN client to multiple VPN service providers", it has built-in support for many Internet VPN Providers such as NordVPN / Private Internet Access (PIA), and also supports customised configurations that support OpenVPN and Wireguard solutions. + + + +The Gluetun docker container is the MOST IMPORTANT container in the Media-Guide, as it + + + +The Gluetun docker container will establish a secure VPN tunnel to your choice of VPN service provider, and then it will force all of the other docker applications in the stack to use the VPN tunnel, if they need to communicate out to the Internet. If Gluetun drops the VPN tunnel at any time, for any reason, then all Internet traffic between the docker applications and the Internet are blocked until the VPN connection is re-established. This provides encrypted security to all data transfers, and assurance that unencrypted data will not be sent if there is a network error. + +All local data traffic between the applications in the docker stack, use the basic HTTP / unencrypted protocol, as the data in not going out to the Internet. This saves a considerable amount of configuration of digital certificates on portals / data traffic which will only be used internally. + +**NOTE:** All network traffic going in and out of the **DOCKER\_SUBNET** goes through the Gluetun security container. Some guides advise to only secure the network traffic for the download clients, this guide takes a more secure approach and secures ALL network going out to the Internet. + + + + +- Gluetun Docker Image: [https://hub.docker.com/r/qmcgaw/gluetun](https://hub.docker.com/r/qmcgaw/gluetun) +- Gluetun Wiki: [https://github.com/qdm12/gluetun/wiki](https://github.com/qdm12/gluetun/wiki) + + + +> NOTE: If the Gluetun container is not running, or does not have an active VPN connection, then no traffic from any of the Docker containers will be allowed to go out to the Internet; it is all blocked unless a secure VPN tunnel is active through Gluetun VPN. + +> NOTE: If you are using an active VPN account and are not able to secure a VPN connection, you should seek assistance before progressing. + +> Synology users may need to check VPN / TUN prerequisite details in this article, and seek guidance from the Synology community: [Synology prerequisites · qdm12/gluetun Wiki](https://github.com/qdm12/gluetun/wiki/Synology-prerequisites) \ No newline at end of file diff --git a/docs/configuration/jellyfin.md b/docs/configuration/jellyfin.md new file mode 100644 index 0000000..6191a86 --- /dev/null +++ b/docs/configuration/jellyfin.md @@ -0,0 +1,345 @@ +# Jellyfin - Media Server + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + + + + +\#### Configuring Jellyfin to access all Media Libraries + +Firstly, head over and set up accounts at Fanart and Opensubtitles, so you can enrich your Jellyfin media content. Once you have accounts, you'll need to copy the API Key from each of your account profiles +[https://fanart.tv](https://fanart.tv/) +[https://opensubtitles.com](https://opensubtitles.com/) (opensubtitles.org and opensubtitles.com are the same, but .com is the newer site for accounts) + + + +* Head over to Jellyfin at [http://localhost:8096](http://localhost:8096/) where you will be welcomed to Jellyfin, choose your desired language and select "Next". +* Create a username / password for the first user account (it will become the admin account) - you can have a blank password if you desire - Select "Next". +* DO NOT ADD MEDIA at this time, select "Next", as we want to set up Fanart and other plugins first. +* Select your Metadata Language and Country and select "Next". +* Set up remote access: Remote connections (Ticked), Enable port mapping (No / Unticked) - Select "Next", the "Finsh". +* You'll be presented with a signin page, use the username / password entered previously. + + +Press the hamburger icon (3 lines) in top left corner to open the menu, then select "Dashboard", go down the bottom of the menu and open "Plugins", the select "Repositories" up the top, and add the following: + +Repository Name: Daniel Adov +Repository URL: [https://raw.githubusercontent.com/danieladov/JellyfinPluginManifest/master/manifest.json](https://raw.githubusercontent.com/danieladov/JellyfinPluginManifest/master/manifest.json) + +Using the "Plugins" -- "Catalogue" menu, add the following plugins to your Jellyfin instance: + + +* AniDB +* AniList +* Fanart +* Merge Versions +* Open Subtitles +* Playback Reporting +* Reports +* Skin Manager +* TMDb Box Sets +* Tvmaze +* TheTVDB + + +These plugins should already be installed by default: + + +* AudioDB +* MusicBrainz - Installed by default +* OMDb - Installed by default +* Studio Images +* TMDb + + +Now that all of the plugins have been installed, go to Docker / Portainer, select the Jellyfin container and restart it. Then come back to Jellyfin config. + +Open the hamburger menu in top left corner again and then select "Dashboard", go down the bottom of the menu and open "Plugins", and configure the following plugins: + + +* AniDB - Defaults +* AniList - Defaults +* Fanart - Add "Personal API Key" from your Fanart.tv account, and save. +* Merge Versions - Defaults +* Open Subtitles - Add Username / Password / API Key from your OpenSubtitles.com account, and save. +* Playback Reporting - Defaults +* Reports - Defaults +* Skin Manager - Select a skin of your choosing, however further customisation is outside the scope of this guide. +* TMDb - Include adult content (Optional), Import season name (Ticked), Max Cast Members (25), Image Scaling (Optional), and save. +* TMDb Box Sets - Defaults +* Tvmaze - Nil +* TheTVDB - If there is no API Key pre-installed, you will need to register at [https://TheTVDB.com](https://thetvdb.com/) to obtain one. + + +"Playback" -- "Transcoding" +Depending on the computer / NAS you are running Docker / Jellyfin, its possible to use hardware acceleration for transcoding - this configuration has been set up to map /dev/dri from the docker container to the host, so it will work, but will be dependent upon your personal hardware configuration. You will need to seek further advise from the Jellyfin community at Reddit / Discord / Youtube on settings for your hardware. + +Refer: [Hardware Acceleration | Jellyfin](https://jellyfin.org/docs/general/administration/hardware-acceleration/) +DLNA (Digital Living Network Alliance): As this guide and configuration is built around a secure contained network for the entire media docker stack, the ports and services needed to support DLNA have not been mapped and exposed to the host network. The docker configuration can be customised to allow for DLNA, however it is outside the scope of this starter guide. So these settings won't work unless the docker-compose is reconfigured by yourself. + +"Libraries" -- "Display" +Date added behavior for new content: change to "Use date scanned into library". + +"Libraries" -- "Metadata" +Select your language and country prior to setting up libraries and importing metadata. + + +\## Adding Movie Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Movies +Display Name: Movies +Folders: Add - /data/media/movies +Preferred Language: Personal Choice +Country: Personal Choice, however it is linked to media ratings on IMDB, and will allow restrictions to children and other users depending on the content you have in the library. + +Enable real time monitoring: Ticked + +Order for Metadata Downloaders: + +* TheMovieDB +* The Open Movie Database +* AniList +* AniDB + +Automatically refresh metadata from the internet: Never + +Order for Image Fetchers: + +* Fanart +* TheMovieDB +* The Open Movie Database +* AniList +* AniDB +* Embedded Image Extractor (should be first for dedicated libraries with home video recordings / personal media) +* Screen Grabber (should be second for dedicated libraries with home video recordings / personal media) + +Subtitle Downloads + +* Language: Personal Choice +* Subtitle Downloaders - Open Subtitles: Ticked (Disable for libraries with dedicated home video recordings / personal media) + + +NOTE: If you choose to use an adult movie library, use the same process as above to set up a new / separate adult library, so access to be restricted to certain user accounts. + +\## Adding Music Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Music +Display Name: Music +Folders: Add - /data/media/music +Preferred Language: Personal Choice +Country: Personal Choice, however it is linked to media ratings on OMDB, and will allow restricting content to other users. + +Enable real time monitoring: Ticked + +Order for Metadata Downloaders (Artists): + +* + +* MusicBrainz +* + +* TheAudioDB + + +Order for Metadata Downloaders (Albums): + +* + +* MusicBrainz +* + +* TheAudioDB + + +Order for Image Fetchers (Artists): + +* + +* Fanart +* + +* TheAudioDB + + +Order for Image Fetchers (Albums): + +* + +* Fanart +* + +* TheAudioDB + + +Automatically refresh metadata from the internet: Never + +Order for Image Fetchers (Music Videos): + +* + +* Fanart +* + +* Embedded Image Extractor +* + +* Screen Grabber + + +Save artwork into media folders: Ticked + + +\## Adding TV Shows / Series Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Shows +Display Name: Series +Folders: Add - /data/media/series +Preferred Language: Personal Choice +Country: Personal Choice, however it is linked to the media rating on IMDB, +and will allow restrictions to children and other users depending on the categorisation you allow other users to access. + +Enable real time monitoring: Ticked + +Order for Metadata Downloaders (TV Shows): + +* + +* TheTVDB +* + +* Tvmaze +* + +* AniList +* + +* AniDB +* + +* TheMovieDB +* + +* The Open Movie Database +* + +* Missing Episode Fetcher + + +Order for Metadata Downloaders (Seasons): + +* + +* TheTVDB +* + +* AniDB +* + +* TheMovieDB + + + +Order for Metadata Downloaders (Episodes): + +* + +* TheTVDB +* + +* Tvmaze +* + +* AniDB +* + +* TheMovieDB +* + +* The Open Movie Database + + +Automatically refresh metadata from the internet: Never + +Order for Image Fetchers (TV Shows): + +* Fanart +* TVmaze +* TheTVDB +* AniDB +* AniList +* TheMovieDB + +Order for Image Fetchers (Seasons): + +* Fanart +* TVmaze +* TheTVDB +* AniDB +* AniList +* TheMovieDB + + +Order for Image Fetchers (Episodes): + +* TVmaze +* TheTVDB +* TheMovieDB +* The Open Movie Database +* Embedded Image Extractor +* Screen Grabber + +Subtitle Downloads + +* Language: Personal Choice +* Subtitle Downloaders - Open Subtitles: Ticked (Disable for libraries with dedicated home video recordings / personal media) + + +\## Adding Books Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Books +Display Name: Books +Folders: Add - /data/media/books + +Enable real time monitoring: Ticked + + +\## Adding Comic / Manga Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Books +Display Name: Comics +Folders: Add - /data/media/comics + +Enable real time monitoring: Ticked + + +\## Adding Photo Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Photos +Display Name: Photos +Folders: Add - /data/media/photos + +Enable real time monitoring: Ticked + +Order for Image Fetchers (Videos): + +* Embedded Image Extractor +* Screen Grabber + + + \ No newline at end of file diff --git a/docs/configuration/jellyseerr.md b/docs/configuration/jellyseerr.md new file mode 100644 index 0000000..4b4d2dd --- /dev/null +++ b/docs/configuration/jellyseerr.md @@ -0,0 +1,174 @@ +# Jellyseerr - Media Request Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + + + + + + +PART 11 - Configuring Jellyseerr + + +[http://localhost:5055](http://localhost:5055) jellyseerr + + + +When you open Jellyseer for the first time, you'll be asked to sign in… select "Use your Jellyfin Account", and enter the details from your Jellyfin server in order to link it to Jellyseerr. + +Jellyfin URL: [http://localhost:8096](http://localhost:8096) +Email Address: The email address is only used if you want to set up notifications when media has been downloaded, however it is a mandatory field. +Username: Same username as Jellyfin +Password: Same password as Jellyfin + +After connecting Jellyseerr to Jellyfin, you will need to synchronise the libraries between the two applications. + +Select "Sync Libraries", then use the slide toggle to select "Movies" and "Series", However…. DO NOT PRESS "START SCAN", skip the library scan and go straight to "Continue". + +**NOTE**: We skip the library scan on initial setup as it can take quite a while to scan the libraries, it is also dependant on Jellyfin having its libraries fully scanned and up to date, so it will be better to scan the libraries after all the configurations are completed. + +NOTE: Adult Content - Jellyseerr does not manage Adult content requests, so if you are using Whisparr, the library will appear in "Jellyfin Libraries", however there is no need to activate it for syncing. If the library exists in Jellyfin, it will be seen in Jellyseerr, you just don't need to enable it. + + +Radarr Settings: + +Setting up non-4K defaults + +Select "Add Radarr Server" +Default Server: Yes +4K Server: No +Server Name: Radarr - FHD 1080P +Hostname of IP Address: localhost +Port: 7878 +Use SSL: No +API Key: Can be found in Radarr application on "Settings" -- "General" page. +[http://localhost:7878/settings/general](http://localhost:7878/settings/general) +URL Base: Empty +Quality Profile: HD-1080p +Root Folder: /data/media/movies +Minimum Availability: Released +Tags: Empty +External URL: [http://media-server:7878](http://media-server:7878) (Radarr's network address, used in links when sending email notifications) +Enable Scan: Yes +Enable Automatic Search: Yes + +Test and Save. + +Setting up 4K defaults +Default Server: Yes +4K Server: Yes +Server Name: Radarr - UHD 4K +Hostname of IP Address: localhost +Port: 7878 +Use SSL: No +API Key: Can be found in Radarr application on "Settings" -- "General" page. +[http://localhost:7878/settings/general](http://localhost:7878/settings/general) +URL Base: Empty +Quality Profile: Ultra-HD +Root Folder: /data/media/movies +Minimum Availability: Released +Tags: Empty +External URL: [http://media-server:7878](http://media-server:7878) (Radarr's network address, used in links when sending email notifications) +Enable Scan: Yes +Enable Automatic Search: Yes + +Test and Save. + + +Sonarr Settings: + +Setting up non-4K defaults + +Select "Add Sonarr Server" +Default Server: Yes +4K Server: No +Server Name: Sonarr - FHD 1080P +Hostname of IP Address: localhost +Port: 8989 +Use SSL: No +API Key: Can be found in Radarr application on "Settings" -- "General" page. +[http://localhost:8989/settings/general](http://localhost:8989/settings/general) +URL Base: Empty +Quality Profile: HD-1080p +Root Folder: /data/media/series +Language Profile: **\* Personal Choice \*** +Tags: Empty +URL Base: Empty +Anime Quality Profile: HD-1080p +Anime Root Folder: /data/media/anime +Anime Language Profile: **\* Personal Choice \*** +Anime Tags: Empty +Season Folders: Yes +External URL: [http://media-server:8989](http://media-server:8989) (Sonarr's network address, used in links when sending email notifications) +Enable Scan: Yes +Enable Automatic Search: Yes + +Test and Save. + + + + +Setting up 4K defaults + +Select "Add Sonarr Server" +Default Server: Yes +4K Server: No +Server Name: Sonarr - UHD 4K +Hostname of IP Address: localhost +Port: 8989 +Use SSL: No +API Key: Can be found in Radarr application on "Settings" -- "General" page. +[http://localhost:8989/settings/general](http://localhost:8989/settings/general) +URL Base: Empty +Quality Profile: Ultra-HD +Root Folder: /data/media/series +Language Profile: **\* Personal Choice \*** +Tags: Empty +URL Base: Empty +Anime Quality Profile: Ultra-4K +Anime Root Folder: /data/media/anime +Anime Language Profile: **\* Personal Choice \*** +Anime Tags: Empty +Season Folders: Yes +External URL: [http://media-server:8989](http://media-server:8989) (Sonarr's network address, used in links when sending email notifications) +Enable Scan: Yes +Enable Automatic Search: Yes + +Test and Save. + + +After adding the connectors to Radarr and Sonarr, Jellyseerr will be fully functional, however we want to do some additional configurations before importing users and media information from Jellyfin. + +Go to "Settings" -- "General" and make any changes to region and language as needed. + + +Go to "Settings" -- "Users" and make any changes for users, you may want to change the default permissions assigned to new users. + +If you want to allow all users to automatically request, approve and download any media type and quality up to 1080P, then you would select "Request", "Auto-Approved", and "Auto-Request". You can select additional permissions and allow automated 4K requests, however the data will quickly add up on the server if is it not controlled, so grant this privilege with due care. + +NOTE: These privileges / permissions are applied when new accounts are created or imported from Jellyfin, they do not effect existing user accounts. + + +Go to "Settings" -- "Jellyfin" and select "Start Scan" to commence scanning the Jellyfin libraries for all media. + +Go to "Settings" -- "Notifications", you can add any email server settings or integrations if you want to get notifications on the status of your media requests. + +Go to the "Users" menu, and you can now create local users, or "Import Jellyfin Users" (preferred). The new users will be granted the privileges / permissions which we set up earlier. + + diff --git a/docs/configuration/lidarr.md b/docs/configuration/lidarr.md new file mode 100644 index 0000000..deaf75a --- /dev/null +++ b/docs/configuration/lidarr.md @@ -0,0 +1,18 @@ +# Lidarr - Music Library Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three \ No newline at end of file diff --git a/docs/configuration/mylar.md b/docs/configuration/mylar.md new file mode 100644 index 0000000..ac05de7 --- /dev/null +++ b/docs/configuration/mylar.md @@ -0,0 +1,18 @@ +# Mylar - Comic Library Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/configuration/plex.md b/docs/configuration/plex.md new file mode 100644 index 0000000..c7485df --- /dev/null +++ b/docs/configuration/plex.md @@ -0,0 +1,345 @@ +# Plex - Media Server + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + + + + +\#### Configuring Plex to access all Media Libraries + +==Firstly, head over and set up accounts at Fanart and Opensubtitles, so you can enrich your Jellyfin media content. Once you have accounts, you'll need to copy the API Key from each of your account profiles== +[https://fanart.tv](https://fanart.tv/) +[https://opensubtitles.com](https://opensubtitles.com/) (opensubtitles.org and opensubtitles.com are the same, but .com is the newer site for accounts) + + + +* Head over to Jellyfin at [http://localhost:8096](http://localhost:8096/) where you will be welcomed to Jellyfin, choose your desired language and select "Next". +* Create a username / password for the first user account (it will become the admin account) - you can have a blank password if you desire - Select "Next". +* DO NOT ADD MEDIA at this time, select "Next", as we want to set up Fanart and other plugins first. +* Select your Metadata Language and Country and select "Next". +* Set up remote access: Remote connections (Ticked), Enable port mapping (No / Unticked) - Select "Next", the "Finsh". +* You'll be presented with a signin page, use the username / password entered previously. + + +Press the hamburger icon (3 lines) in top left corner to open the menu, then select "Dashboard", go down the bottom of the menu and open "Plugins", the select "Repositories" up the top, and add the following: + +Repository Name: Daniel Adov +Repository URL: [https://raw.githubusercontent.com/danieladov/JellyfinPluginManifest/master/manifest.json](https://raw.githubusercontent.com/danieladov/JellyfinPluginManifest/master/manifest.json) + +Using the "Plugins" -- "Catalogue" menu, add the following plugins to your Jellyfin instance: + + +* AniDB +* AniList +* Fanart +* Merge Versions +* Open Subtitles +* Playback Reporting +* Reports +* Skin Manager +* TMDb Box Sets +* Tvmaze +* TheTVDB + + +These plugins should already be installed by default: + + +* AudioDB +* MusicBrainz - Installed by default +* OMDb - Installed by default +* Studio Images +* TMDb + + +Now that all of the plugins have been installed, go to Docker / Portainer, select the Jellyfin container and restart it. Then come back to Jellyfin config. + +Open the hamburger menu in top left corner again and then select "Dashboard", go down the bottom of the menu and open "Plugins", and configure the following plugins: + + +* AniDB - Defaults +* AniList - Defaults +* Fanart - Add "Personal API Key" from your Fanart.tv account, and save. +* Merge Versions - Defaults +* Open Subtitles - Add Username / Password / API Key from your OpenSubtitles.com account, and save. +* Playback Reporting - Defaults +* Reports - Defaults +* Skin Manager - Select a skin of your choosing, however further customisation is outside the scope of this guide. +* TMDb - Include adult content (Optional), Import season name (Ticked), Max Cast Members (25), Image Scaling (Optional), and save. +* TMDb Box Sets - Defaults +* Tvmaze - Nil +* TheTVDB - If there is no API Key pre-installed, you will need to register at [https://TheTVDB.com](https://thetvdb.com/) to obtain one. + + +"Playback" -- "Transcoding" +Depending on the computer / NAS you are running Docker / Jellyfin, its possible to use hardware acceleration for transcoding - this configuration has been set up to map /dev/dri from the docker container to the host, so it will work, but will be dependent upon your personal hardware configuration. You will need to seek further advise from the Jellyfin community at Reddit / Discord / Youtube on settings for your hardware. + +Refer: [Hardware Acceleration | Jellyfin](https://jellyfin.org/docs/general/administration/hardware-acceleration/) +DLNA (Digital Living Network Alliance): As this guide and configuration is built around a secure contained network for the entire media docker stack, the ports and services needed to support DLNA have not been mapped and exposed to the host network. The docker configuration can be customised to allow for DLNA, however it is outside the scope of this starter guide. So these settings won't work unless the docker-compose is reconfigured by yourself. + +"Libraries" -- "Display" +Date added behavior for new content: change to "Use date scanned into library". + +"Libraries" -- "Metadata" +Select your language and country prior to setting up libraries and importing metadata. + + +\## Adding Movie Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Movies +Display Name: Movies +Folders: Add - /data/media/movies +Preferred Language: Personal Choice +Country: Personal Choice, however it is linked to media ratings on IMDB, and will allow restrictions to children and other users depending on the content you have in the library. + +Enable real time monitoring: Ticked + +Order for Metadata Downloaders: + +* TheMovieDB +* The Open Movie Database +* AniList +* AniDB + +Automatically refresh metadata from the internet: Never + +Order for Image Fetchers: + +* Fanart +* TheMovieDB +* The Open Movie Database +* AniList +* AniDB +* Embedded Image Extractor (should be first for dedicated libraries with home video recordings / personal media) +* Screen Grabber (should be second for dedicated libraries with home video recordings / personal media) + +Subtitle Downloads + +* Language: Personal Choice +* Subtitle Downloaders - Open Subtitles: Ticked (Disable for libraries with dedicated home video recordings / personal media) + + +NOTE: If you choose to use an adult movie library, use the same process as above to set up a new / separate adult library, so access to be restricted to certain user accounts. + +\## Adding Music Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Music +Display Name: Music +Folders: Add - /data/media/music +Preferred Language: Personal Choice +Country: Personal Choice, however it is linked to media ratings on OMDB, and will allow restricting content to other users. + +Enable real time monitoring: Ticked + +Order for Metadata Downloaders (Artists): + +* + +* MusicBrainz +* + +* TheAudioDB + + +Order for Metadata Downloaders (Albums): + +* + +* MusicBrainz +* + +* TheAudioDB + + +Order for Image Fetchers (Artists): + +* + +* Fanart +* + +* TheAudioDB + + +Order for Image Fetchers (Albums): + +* + +* Fanart +* + +* TheAudioDB + + +Automatically refresh metadata from the internet: Never + +Order for Image Fetchers (Music Videos): + +* + +* Fanart +* + +* Embedded Image Extractor +* + +* Screen Grabber + + +Save artwork into media folders: Ticked + + +\## Adding TV Shows / Series Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Shows +Display Name: Series +Folders: Add - /data/media/series +Preferred Language: Personal Choice +Country: Personal Choice, however it is linked to the media rating on IMDB, +and will allow restrictions to children and other users depending on the categorisation you allow other users to access. + +Enable real time monitoring: Ticked + +Order for Metadata Downloaders (TV Shows): + +* + +* TheTVDB +* + +* Tvmaze +* + +* AniList +* + +* AniDB +* + +* TheMovieDB +* + +* The Open Movie Database +* + +* Missing Episode Fetcher + + +Order for Metadata Downloaders (Seasons): + +* + +* TheTVDB +* + +* AniDB +* + +* TheMovieDB + + + +Order for Metadata Downloaders (Episodes): + +* + +* TheTVDB +* + +* Tvmaze +* + +* AniDB +* + +* TheMovieDB +* + +* The Open Movie Database + + +Automatically refresh metadata from the internet: Never + +Order for Image Fetchers (TV Shows): + +* Fanart +* TVmaze +* TheTVDB +* AniDB +* AniList +* TheMovieDB + +Order for Image Fetchers (Seasons): + +* Fanart +* TVmaze +* TheTVDB +* AniDB +* AniList +* TheMovieDB + + +Order for Image Fetchers (Episodes): + +* TVmaze +* TheTVDB +* TheMovieDB +* The Open Movie Database +* Embedded Image Extractor +* Screen Grabber + +Subtitle Downloads + +* Language: Personal Choice +* Subtitle Downloaders - Open Subtitles: Ticked (Disable for libraries with dedicated home video recordings / personal media) + + +\## Adding Books Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Books +Display Name: Books +Folders: Add - /data/media/books + +Enable real time monitoring: Ticked + + +\## Adding Comic / Manga Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Books +Display Name: Comics +Folders: Add - /data/media/comics + +Enable real time monitoring: Ticked + + +\## Adding Photo Content +"Libraries" -- "Libraries" and select "Add Media Library" +Content Type: Photos +Display Name: Photos +Folders: Add - /data/media/photos + +Enable real time monitoring: Ticked + +Order for Image Fetchers (Videos): + +* Embedded Image Extractor +* Screen Grabber + + + \ No newline at end of file diff --git a/docs/configuration/prowlarr.md b/docs/configuration/prowlarr.md new file mode 100644 index 0000000..dcfbe0e --- /dev/null +++ b/docs/configuration/prowlarr.md @@ -0,0 +1,407 @@ +# Prowlarr - Index Search Manager + +Prowlarr is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports both Torrent Trackers and Usenet Indexers. It integrates seamlessly with Sonarr, Radarr, Lidarr, Readarr, and Whisparr offering complete management of your indexers with no per app Indexer setup required (Prowlarr does it all). + + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +!!! Info "Additional Application Information - External Links" + - Local WebUI Address:    [http://localhost:9696](http://localhost:9696) + - Application Website:      [https://wiki.servarr.com/prowlarr](https://wiki.servarr.com/prowlarr) + - Docker Information:       [https://docs.linuxserver.io/images/docker-prowlarr](https://docs.linuxserver.io/images/docker-prowlarr) + + + + + +## Authentication Options + +Go to the [Prowlarr WebUI](http://localhost:9696). If this is the first time using Prowlarr, you will be presented with an ==Authentication Required== dialog, as Prowlarr now allows admins to prevent unauthorised access to the application. You can select ==Forms (Login Page)== --> ==Disabled for Local Address== --> Add ==Username== and ==Password== --> ==Save== to continue. + +
+ ![Prowlarr Authenication Options](../img/prowlarr-authentication.png){ width="300" } +
Prowlarr Authenication Options
+
+ + +!!! Notice "Change Password Options Afterwards" + + If you have set up username / password authentication and cannot log into Prowlarr, or you just want to simply disable authentication all together, you can follow the details on the Prowlarr Wiki page: [https://wiki.servarr.com/prowlarr/faq#can-i-disable-forced-authentication](https://wiki.servarr.com/prowlarr/faq#can-i-disable-forced-authentication). + + + +## Configuring FlareSolverr + +Select ==Settings== --> ==Indexer Proxies== --> ==+== (Plus Button) + + +
+ ![Prowlarr Add Indexer Proxy](../img/prowlarr-add-flaresolverr.png){ width="300" } +
Prowlarr Add Indexer Proxy
+
+ + +
+ ![Prowlarr Add FlareSolverr Proxy](../img/prowlarr-flaresolverr-config.png){ width="300" } +
Prowlarr Add FlareSolverr Proxy
+
+ + + + + +
+ ![Prowlarr FlareSolverr Proxy List](../img/prowlarr-flaresolverr-list.png){ width="300" } +
Prowlarr FlareSolverr Proxy List
+
+ + + + +## Adding Indexers + +Prowlarr is an Index Search Server, which means it needs to connect Torrent and Usenet Indexers on the Internet, and send search requests out the these indexers, which will provide any search results back to + +Select ==Indexers== --> ==Add Indexer== + + + + +
+ ![Prowlarr Add Indexer](../img/prowlarr-add-indexer.png){ width="300" } +
Prowlarr Add Indexer
+
+ + + + + +### Add Torrent Indexers + + +
+ ![Prowlarr Add NZB Indexer](../img/prowlarr-add-nzb-indexer.png){ width="300" } +
Prowlarr Add NZB Indexer
+
+ +!!! Success + + Add some information about ratios and seeding days + + +### Add Usenet Indexers + + +
+ ![Prowlarr Add Torrent Indexer](../img/prowlarr-add-torrent-indexer.png){ width="300" } +
Prowlarr Add Torrent Indexer
+
+ + +### Advanced Indexer Settings + +
+ ![Prowlarr Test Search Indexer](../img/prowlarr-indexer-advanced.png){ width="300" } +
Prowlarr Test Search Indexer
+
+ + + +!!! Note + + Add something about search priority + +
+ ![Prowlarr Indexer Listing](../img/prowlarr-indexer-listing.png){ width="300" } +
Prowlarr Indexer Listing
+
+ + +### Test Search Index + + +
+ ![Prowlarr Test Search Indexer](../img/prowlarr-test-search.png){ width="300" } +
Prowlarr Test Search Indexer
+
+ + +## Add Download Clients + +### Add Torrent Downloader + +If you've already followed the qBittorent configuration guide, you may have already added the qBittorent download client to all of your *ARR Media Applications. However, Prowlarr needs to be configured with some additional settings, so you can automate downloading of certain media categories, into the correct download folders, so they are managed by the correct *ARR Media Library Managers. + +Add the qBittorrent download client to Prowlarr: ==Prowlarr== --> ==Settings== --> ==Download Clients==. + + +
+ ![Prowlarr Add qBittorrent Download Client](../img/qbittorrent-edit-download-client.png){ width="300" } +
Prowlarr Add qBittorrent Download Client
+
+ + +Scroll down the bottom of the ==Edit Download Client== dialog box and press the ==+== (plus) button in ==Mapped Categories== to map multiple categories into your main download categories. + + +
+ ![Prowlarr Edit qBittorrent Download Category Mappings](../img/prowlarr-qbittorrent-add-mapped-categories.png){ width="300" } +
qBittorrent Edit Download Category Mappings
+
+ +Add each of the ==Download Client Categories== listed in the table below, and select the tick boxes next to each of the ==Mapped Categories== to set up the automatic download mappings. + + +| Download Client Category | Mapped Categories | Group ID | +|--------------------------|-------------------|---------:| +| prowlarr | Other | (0) | +| prowlarr |       Other/Misc | (10) | +| prowlarr |       Other/Hashed | (20) | +| console | Console | (1000) | +| console |       Console/NDS | (1010) | +| console |       Console/PSP | (1020) | +| console |       Console/Wii | (1030) | +| console |       Console/XBox | (1040) | +| console |       Console/XBox 360 | (1050) | +| console |       Console/Wiiware | (1060) | +| console |       Console/XBox 360 DLC | (1070) | +| console |       Console/PS3 | (1080) | +| console |       Console/Other | (1090) | +| console |       Console/3DS | (1110) | +| console |       Console/PS Vita | (1120) | +| console |       Console/WiiU | (1130) | +| console |       Console/XBox One | (1140) | +| console |       Console/PS4 | (1180) | +| movies | Movies | (2000) | +| movies |       Movies/Foreign | (2010) | +| movies |       Movies/Other | (2020) | +| movies |       Movies/SD | (2030) | +| movies |       Movies/HD | (2040) | +| movies |       Movies/UHD | (2045) | +| movies |       Movies/BluRay | (2050) | +| movies |       Movies/3D | (2060) | +| movies |       Movies/DVD | (2070) | +| movies |       Movies/WEB-DL | (2080) | +| audio | Audio | (3000) | +| audio |       Audio/MP3 | (3010) | +| audio |       Audio/Video | (3020) | +| audio |       Audio/Audiobook | (3030) | +| audio |       Audio/Lossless | (3040) | +| audio |       Audio/Other | (3050) | +| audio |       udio/Foreign | (3060) | +| software | PC | (4000) | +| software |       PC/0day | (4010) | +| software |       PC/ISO | (4020) | +| software |       PC/Mac | (4030) | +| software |       PC/Mobile-Other | (4040) | +| software |       PC/Games | (4050) | +| software |       PC/Mobile-iOS | (4060) | +| software |       PC/Mobile-Android | (4070) | +| series | TV | (5000) | +| series |       TV/WEB-DL | (5010) | +| series |       TV/Foreign | (5020) | +| series |       TV/SD | (5030) | +| series |       TV/HD | (5040) | +| series |       TV/UHD | (5045) | +| series |       TV/Other | (5050) | +| series |       TV/Sport | (5060) | +| anime |       TV/Anime | (5070) | +| series |       TV/Documentary | (5080) | +| xxx | XXX | (6000) | +| xxx |       XXX/DVD | (6010) | +| xxx |       XXX/WMV | (6020) | +| xxx |       XXX/XviD | (6030) | +| xxx |       XXX/x264 | (6040) | +| xxx |       XXX/UHD | (6045) | +| xxx |       XXX/Pack | (6050) | +| xxx |       XXX/ImageSet | (6060) | +| xxx |       XXX/Other | (6070) | +| xxx |       XXX/SD | (6080) | +| xxx |       XXX/WEB-DL | (6090) | +| books | Books | (7000) | +| books |       Books/Mags | (7010) | +| books |       Books/EBook | (7020) | +| comics |       Books/Comics | (7030) | +| books |       Books/Technical | (7040) | +| books |       Books/Other | (7050) | +| books |       Books/Foreign | (7060) | +| prowlarr | Other | (8000) | +| prowlarr |       Other/Misc | (8010) | +| prowlarr |       Other/Hashed | (8020) | + + +Once you have added all of the mapped categories, the config should look like this: + +
+ ![Prowlarr List qBittorrent Download Category Mappings](../img/prowlarr-qbittorrent-list-mapped-categories.png){ width="300" } +
qBittorrent List Download Category Mappings
+
+ + + + +### Add Usenet Downloader + + + + + +If you've already followed the SABnzbd configuration guide, you may have already added the SABnzbd download client to all of your *ARR Media Applications. However, Prowlarr needs to be configured with some additional settings, so you can automate downloading of certain media categories, into the correct download folders, so they are managed by the correct *ARR Media Library Managers. + +Add the SABnzbd download client to Prowlarr: ==Prowlarr== --> ==Settings== --> ==Download Clients==. + + +
+ ![Prowlarr Add SABnzbd Download Client](../img/sabnzbd-edit-download-client.png){ width="300" } +
Prowlarr Add SABnzbd Download Client
+
+ + +Scroll down the bottom of the ==Edit Download Client== dialog box and press the ==+== (plus) button in ==Mapped Categories== to map multiple categories into your main download categories. + + +
+ ![Prowlarr Edit SABnzbd Download Category Mappings](../img/prowlarr-sabnzbd-add-mapped-categories.png){ width="300" } +
SABnzbd Edit Download Category Mappings
+
+ +Add each of the ==Download Client Categories== listed in the table below, and select the tick boxes next to each of the ==Mapped Categories== to set up the automatic download mappings. + + + + +Once you have added all of the mapped categories, the config should look like this: + +
+ ![Prowlarr List SABnzbd Download Category Mappings](../img/prowlarr-sabnzbd-list-mapped-categories.png){ width="300" } +
SABnzbd List Download Category Mappings
+
+ + + + +## Connect ARR Apps to Prowlarr + +Once Prowlarr is configured with all the Torrent and Usenet indexers, it needs to be connected to all of the other *ARR Media Library Managers (Radarr / Sonarr / Readarr), so they can all use Prowlarr as the master index manager. + +Add *ARR applications: ==Prowlarr== --> ==Settings== --> ==Apps== then add each of the applications. + + +
+ ![Prowlarr Connect ARR Applications](../img/prowlarr-connect-app-applications.png){ width="300" } +
Prowlarr Connect ARR Applications
+
+ + + + + +[http://localhost:9696/settings/general](http://localhost:9696/settings/general) + + + +| Library Manager | Server Address | Retrieve API Key | +|-----------------|----------------|------------------| +| Prowlarr | http://localhost:9696 | | +| Radarr | http://localhost:7878 | [http://localhost:7878/settings/general](http://localhost:7878/settings/general) | +| Sonarr | http://localhost:8989 | [http://localhost:8989/settings/general](http://localhost:8989/settings/general) | +| Readarr | http://localhost:8787 | [http://localhost:8787/settings/general](http://localhost:8787/settings/general) | +| Lidarr | http://localhost:8686 | [http://localhost:8686/settings/general](http://localhost:8686/settings/general) | +| Whisparr | http://localhost:6969 | [http://localhost:6969/settings/general](http://localhost:6969/settings/general) | +| Mylar | http://localhost:8090 | [http://localhost:8090/config#tabs-2](http://localhost:8090/config#tabs-2) | + + + + +
+ ![Prowlarr Connect ARR Applications](../img/prowlarr-add-app-applications.png){ width="300" } +
Prowlarr Connect ARR Applications
+
+ + + + +!!! Warning "Warning: Mylar API Key Needs Manual Activation" + + The API Key for system integration is not enabled by default for Mylar, it needs manual activation the first time use. + + Open Mylar API Key link in the table above, then select ==Web Interface== --> ==Tick "Enable API"== --> ==Generate Mylar API Key== --> ==Save Changes== at bottom of page. + + Copy the API Key from the Mylar portal and copy it into the Prowlarr integration settings above. + + + + +
+ ![Prowlarr List ARR Applications](../img/prowlarr-list-app-applications.png){ width="300" } +
Prowlarr List ARR Applications
+
+ + +### Test Connected ARR Apps + + + +| Library Manager | List of Indexers | +|-----------------|------------------| +| Radarr | [http://localhost:7878/settings/indexers](http://localhost:7878/settings/indexers) | +| Sonarr | [http://localhost:8989/settings/indexers](http://localhost:8989/settings/indexers) | +| Readarr | [http://localhost:8787/settings/indexers](http://localhost:8787/settings/indexers) | +| Lidarr | [http://localhost:8686/settings/indexers](http://localhost:8686/settings/indexers) | +| Whisparr | [http://localhost:6969/settings/indexers](http://localhost:6969/settings/indexers) | +| Mylar | [http://localhost:8090/config#tabs-4](http://localhost:8090/config#tabs-4) | + + + + +
+ ![Radarr List Imported Indexers](../img/radarr-list-imported-indexers.png){ width="300" } +
Radarr List Imported Indexers
+
+ + + + + + +!!! Warning "Warning: Mylar Imported Indexers Need Manual Activation" + + If Prowlarr has the Mylar API Key, it can synchronise its list of indexers across to Mylar, however Mylar does not list / enable them automatically, it needs manual setup to enable import the Prowlarr indexers for first time use. + + Open Mylar "Search Providers" link in the table above, then select ==Search Providers== --> ==Tick "Use Newznab"== --> ==Tick "Torrents"== --> ==Tick "Enable Torznab"==. + + Test some of the imported Torrent and Usenet indexers, then select ==Save Changes== at the bottom of the page. + + + +
+ ![Mylar Enable Imported Indexers](../img/mylar-enable-imported-indexers.png){ width="300" } +
Mylar Enable Imported Indexers
+
+ + +!!! Danger "Notice: Do Not Attempt to Update Library Managers Just Yet" + + At this point in the configuration guide, all of the ARR applications have been integrated with Prowlarr and they are able to do searches and commence downloading media, however each of the applications still need to be configured with media locations and meta data information, please avoid using the ARR Media Library Managed to download media content until you have configured each of the applications, in the relevant guides. + + +## Additional Configuration Items + +### Change Date and Languages + +To change the date and language in the WebUI Portal, select ==Settings== --> ==UI== + + +
+ ![Prowlarr WebUI Date and Language Settings](../img/prowlarr-date-language.png){ width="300" } +
Prowlarr WebUI Date and Language Settings
+
+ + + +### Miscellaneous Points + diff --git a/docs/configuration/qbittorrent.md b/docs/configuration/qbittorrent.md new file mode 100644 index 0000000..f0f11a1 --- /dev/null +++ b/docs/configuration/qbittorrent.md @@ -0,0 +1,314 @@ +# qBittorent - Torrent Download Client + +qBittorrent is a well established open-source BitTorrent download client. qBittorrent features a light footprint, whilst providing all the features you may need. It uses the high-tech libtorrent-rasterbar library, which means greater download and upload speed, as well as excellent support of the latest features in the BitTorrent protocol qBittorrent is fast, stable and provides unicode support as well as many features. + +!!! Info "Additional Application Information - External Links" + - Local WebUI Address:    [http://localhost:8200](http://localhost:8200) + - Application Website:      [https://www.qbittorrent.org/](https://www.qbittorrent.org/) + - Docker Information:       [https://docs.linuxserver.io/images/docker-qbittorrent](https://docs.linuxserver.io/images/docker-qbittorrent) + + +## Login to WebUI + +The default username and password in earlier versions of qBittorrent, used to be ==admin== and ==adminadmin== respectively, however the password is now randomly generated every time qBittorrent is started until a permanent password is set. + +The randomised password can be viewed in your docker logs by using the following command, then changed to a permanent password once you have logged in. + + +``` +sudo docker logs qbittorrent +``` + +Log output: + +``` +The WebUI administrator username is: admin +The WebUI administrator password was not set. A temporary password is provided for this session: hIk7RrW3e9 +You should set your own password in program preferences. +``` + + +Go to the [qBittorrent WebUI](http://localhost:8200) and log into the application + +
+ ![qBittorrent Login Screen](../img/qbittorrent-login.png){ width="300" } +
qBittorrent Login Screen
+
+ +!!! Tip "Set A Permanent Login Password" + + Default Username and Password can be changed by navigating to ==Options Icon== --> ==Web UI== --> ==Authentication== + +## Change Default Options + +Open the Options dialog and make the following changes in order to the default settings. + +### Download Paths + +Goto: ==Options Icon== --> ==Downloads== + +
+ ![qBittorrent Download Options](../img/qbittorrent-downloads.png){ width="300" } +
qBittorrent Download Options
+
+ + +### Connection Settings + +Goto: ==Options Icon== --> ==Connection== + +
+ ![qBittorrent Connection Options](../img/qbittorrent-connection.png){ width="300" } +
qBittorrent Connection Options
+
+ +!!! Warning "Listening Port" + + The listening port of ==6881== should not be changed, its embedded into the qBittorrent Docker image and routes traffic through the secure Gluetun VPN container. + + If you need to change the incoming connection port, change the following variable settings in the ==docker-compose.env== file, and redeploy the qBittorrent Docker configuration: + + - `QBIT_PORT_TCP=6881` + - `QBIT_PORT_UDP=6881` + + Once you've changed these settings in the ==docker-compose.env== file and redeployed the configuration, all incoming TCP/UDP connections on the new port numbers will be routed in through the secure Gluetun VPN connection, then Docker will redirect the traffic to the qBittorrent container, which will still be listening on port 6881. + + > NOTE: Under NO circumstances should your change the 6881 port inside the application WebUI, and certainly do not enable UPnP / NAT-PMP. The incoming connection is not coming through your home router, it is coming through the secure Gluetun VPN connection. + + +!!! Hint "Connection Limits" + + These are the default connection limits, you can tune these yourself once you have set up your qBittorrent client. + + > NOTE: Having too many peer connections and concurrent download sessions may be very ineffficient, and slow down your overall completion rate. + + > Changing these settings to high will consume your Internet bandwidth and RAM untilisation on your host computer. + +### Download Speed + + +Goto: ==Options Icon== --> ==Speed== + +
+ ![qBittorrent Download Speed](../img/qbittorrent-speed.png){ width="300" } +
qBittorrent Download Speed
+
+ +!!! Hint "Download Speed" + + These are the default Global and Alternate rate limits, so you can limit the amount of download bandwith you allow qBittorrent to consume. + + If you have a low Internet connection and only want to download while your sleeping, then restrict the ==Global Rate Limits== to a smaller limit, then set the ==Alternate Rate Limits== to a higher number (or "0" for unlimited), then enable the schedule for when the alternate rate limit should be used... i.e. when you're sleeping. + + > NOTE: If you have a poor internet connection, you should set these limits below your ISP Internet connection speed. + + > You can test your Internet speed at [https://www.speedtest.net/](https://www.speedtest.net/), however just remember your qBittorrent connection goes through the secure Gluetun VPN connection, so that will be a little bit slower due to the additional overheads for the VPN encryption. + + +### BitTorrent Settings + + +Goto: ==Options Icon== --> ==BitTorrent== + +
+ ![qBittorrent BitTorrent Settings](../img/qbittorrent-bittorrent.png){ width="300" } +
qBittorrent BitTorrent Settings
+
+ +!!! Hint "Torrent Queueing" + + Change the ==Torrent Queueing== settings to tune how many active downloads / uploads / torrents your qBittorrent client will run concurrently. + + > NOTE: Having too many peer connections and concurrent download sessions may be very ineffficient, and slow down your overall completion rate. + + > Changing these settings to high will consume your Internet bandwidth and RAM untilisation on your host computer. + +!!! Warning "Seeding Limits" + + Eanble the ==Seeding Limits== settings so you are able to seed the torrents after you have finished downloading them. + + > NOTE: Many private torrent sites / trackers will ban users if they do not seed files after downloading them, and you will to keep your seeding ratio above a minimum level. Private torrent site seed ratios are different, so keeping a reasonable ratio helps maintain good standing in these sites. + + + +### WebUI Settings + + +Goto: ==Options Icon== --> ==Web UI== + +
+ ![qBittorrent WebUI Settings](../img/qbittorrent-webui.png){ width="300" } +
qBittorrent WebUI Settings
+
+ +!!! Warning "Web User Interface (Remote control)" + + The WebUI port of ==8200== should not be changed, its embedded into the qBittorrent Docker image and routes traffic through the secure Gluetun VPN container. + + If you need to change the incoming WebUI port, change the following variable settings in the ==docker-compose.env== file, and redeploy the qBittorrent Docker configuration: + + - `WEBUI_PORT_QBITTORRENT=8200` + + Once you've changed these settings in the ==docker-compose.env== file and redeployed the configuration, all incoming WebUI connections on the new port number will be routed in through the secure Gluetun VPN connection, then Docker will redirect the traffic to the qBittorrent WebUI, which will still be listening on port 8200. + + > NOTE: Under NO circumstances should your change the 8200 port inside the application WebUI, and certainly do not enable UPnP / NAT-PMP. The incoming connection is not coming through your home router, it is coming through the secure Gluetun VPN connection. + +!!! Hint "Authentication" + + Change the default Username and Password in this section, or disable user authentication entirely for clients on the localhost or local network. + + > The Docker subnetwork for our media stack is 172.28.10.0/24, as we are going to be setting up a Nginx reverse proxy with secure authencation throught the SWAG / Cloudflare connection, we can add this address into the authentication bypass, as SWAG / Cloudflare Zero Trust will handle authentication and authorisation into your home network + +!!! Hint "Use alternative Web UI" + + ==Themepark Themes== have been enabled in the qBittorrent YAML file, you can disable the theme there, or change the theme by setting the following variable in the ==docker-compose.env== environment file, and redeploying the qBittorrent image in Docker. + + - `TP_THEME=nord` + + +## Download Categories + +When setting up our media libraries and folders, its important to store certain media types in their own folders, so each of the applications can then be set up to manage, rename and fetch meta data, depending on the media type... i.e. movies, TV shows (series), music etc.. in each of the folders. + +To help control the management of media files, we use "download categories" in the Torrent / Usenet download clients, which are then linked to certain folders, so media in the same categories are downloaded into the correct folders, so the *ARR Media Library Managers and Jellyfin can manage the media after its been downloaded. + +For example, when a movie is downloaded by qBittorrent, it is assigned the ==movie== category and will be downloaded into the folder ==/data/torrents/movies== inside the qBittorrent Docker container, which is actually mounted on the localhost filesystem in the ==FOLDER_FOR_MEDIA/torrents/movies== folder. + +Once the download has been completed, qBittorrent tells the *ARR Media Library Manager responisble for ==movies== it has completed (which is "Radarr"), then Radarr moves the file into its own folder ==/data/media/movies==, which is actually mounted on the localhost filesystem in the ==FOLDER_FOR_MEDIA/media/movies== folder. + + +Goto: Right click ==Categories== --> ==Add Category== + +
+ ![qBittorrent Download Categories](../img/qbittorrent-category-1.png){ width="300" } +
qBittorrent Add Category - Step 1
+
+ +!!! Warning "Warning: Category Names and Save Paths Are Case Senstive" + + ==Category Names== and ==Save Paths== are case senstive and must be added in lower case, to match the underlaying Linux filesystem inside the Docker images, and / or, the localhost, and also for communication between the different applications. + +Goto: ==Options Icon== --> ==Downloads== + +Create a new category for each folder located in the `/data/torrents` folder, except for the ==complete== and ==incomplete== folders, as these are working folders, not specifically set up to manage categories. + +Refer to the host / container folder mapping diagram, which was set up during preparation: [Docker Host / Container Folder Mapping](../preparation/setting-up-folders.md#folder-mappings-between-host-and-docker-containers) + +
+ ![qBittorrent Download Categories](../img/qbittorrent-category-2.png){ width="300" } +
qBittorrent Add Category - Step 2
+
+ +!!! Hint "Save Path" + + ==Save Path== needs to have the full path and category name as listed on the container's filesystem. + + The container's filesystem is mapped to the Docker host's filesystem, so `/data/torrents/anime` will map to `FOLDER_FOR_MEDIA/torrents/anime` on the Docker host. + +Continue to add the following categories: + +
+ ![qBittorrent Download Categories](../img/qbittorrent-category-3.png){ width="300" } +
qBittorrent Add Category - Step 3
+
+ + +!!! Warning "Categories Failing To Sort Into Correct Folders" + + If files are being downloaded by the *ARR Media Library Managers and they are not being sorted correctly by categories and folders, check the following setting on the Downloads Options page: + + - ==Default Torrent Management Mode:== `Automatic` + +## Test Secure Connection + +As the Gluetun container is providing an encrypted VPN tunnel for the entire Docker stack, its important to first check the VPN is providing privacy / obscurity for your Internet connection and torrent traffic. + +From any computer in your network, you will be able to see what the IP Address for your Internet connection is by going to [ifconfig.io](http://ifconfig.io) + +Now log onto your Docker host and attach the console to the qBittorrent container using the following command: + +``` bash +sudo docker exec -it qbittorrent bash +``` + +!!! Note "Connecting To qBittorrent Container with Portainer" + + You can also connect to the qBittorrent container using Portainer, by selecting the container you with to connect to, then select `>_ Console` + + +Once you have successfully connected to the qBittorrent Docker container, run the following command on the console, to check the IP Address which it is using through the VPN tunnel. + +``` bash +curl ifconfig.io +``` + +The IP address of the remote / secure VPN connection will be displayed. Type `exit` to disconnect from the Docker interactive session. + +> NOTE: If the Gluetun container is not running, or does not have an active VPN connection, then no traffic from any of the Docker containers will be allowed to go out to the Internet; it is all blocked unless a secure VPN tunnel is active through Gluetun VPN. + + +## Download Torrent Test File + +Now qBittorrent is fully configured and secure behind the Gluetun VPN, you should check downloads are working correctly, by downloading a simple Torrent test file. + + +### Manual Watch Download + +Head over to the BitTorrent download page at Ubuntu [https://ubuntu.com/download/alternative-downloads](https://ubuntu.com/download/alternative-downloads) and download the Ubuntu server ".torrent" file to your computer, then copy the ".torrent" file into copy it into the ==FOLDER_FOR_MEDIA/watch== folder on the Docker host, which is mapped to the qBittorrent container folder ==/data/watch==. + +As qBittorrent is monitoring the ==/data/watch== folder inside the container for incoming ".torrent" files, the torrent download will start immediately after the torrent file has been copied. Once completed, the downloaded torrent will be moved to the ==/data/torrents/complete== folder, as no category was provided using the manual download step (==FOLDER_FOR_MEDIA/torrents/complete==). + +This is a good process if you need to use qBittorrent to manually download torrent files. + +### Download Link with Category + +You can also download torrents by copying the Download URL or Magnet Link address of the torrent, and clicking on the "Add Torrent Link" button. + +Paste the link into the "Download URL or Magnet Link address" field, and select the category which best suits the torrent. In this case, we'll select one of the other torrent download links from the Ubuntu BitTorrent download page, select the "==software==" Category, then select ==Download==. + +
+ ![qBittorrent Completed Downloads](../img/qbittorrent-completed.png){ width="300" } +
qBittorrent Completed Downloads
+
+ +If you inspect the completed torrent downloads, you will notice the manual download was not association with a category and was moved into the ==/data/torrents== directory, while the second download was assigned a category and was moved into the ==/data/torrents/software== directory. + +The downloaded test torrents can now be safely deleted using the WebUI. + +## Add qBittorent to *ARR Apps + + + +
+ ![qBittorrent Add Downloader to *ARR Applications](../img/qbittorrent-download-client.png){ width="300" } +
qBittorrent Add Downloader to *ARR Applications
+
+ + + +
+ ![qBittorrent Edit Download Client](../img/qbittorrent-edit-download-client.png){ width="300" } +
qBittorrent Edit Download Client
+
+ + + +| *ARR Application | Add Downloader Page | Default Category | +|------------------|---------------------|-------------------| +|Prowlarr: | [http://localhost:9696/settings/downloadclients](http://localhost:9696/settings/downloadclients) | prowlarr | +|Radarr: | [http://localhost:7878/settings/downloadclients](http://localhost:7878/settings/downloadclients) | movies | +|Sonarr: | [http://localhost:8989/settings/downloadclients](http://localhost:8989/settings/downloadclients) | series | +|Lidarr: | [http://localhost:8686/settings/downloadclients](http://localhost:8686/settings/downloadclients) | music | +|Readarr: | [http://localhost:8787/settings/downloadclients](http://localhost:8787/settings/downloadclients) | books | +|Whisparr: | [http://localhost:6969/settings/downloadclients](http://localhost:6969/settings/downloadclients) | xxx | +|Mylar3: | [http://localhost:8090/config#tabs-3](http://localhost:8090/config#tabs-3) | comics | + + + + +
+ ![Mylar3 Add qBittorrent Download Client](../img/qbittorrent-mylar-add-downloader.png){ width="300" } +
Mylar3 Add qBittorrent Download Client
+
+ + diff --git a/docs/configuration/radarr.md b/docs/configuration/radarr.md new file mode 100644 index 0000000..7ee06ac --- /dev/null +++ b/docs/configuration/radarr.md @@ -0,0 +1,336 @@ +# Radarr - Movie Library Manager + +Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available. + +!!! Info "Additional Application Information - External Links" + - Local WebUI Address:    [http://localhost:7878](http://localhost:7878) + - Application Website:      [https://wiki.servarr.com/en/radarr](https://wiki.servarr.com/en/radarr) + - Docker Information:       [https://docs.linuxserver.io/images/docker-radarr](https://docs.linuxserver.io/images/docker-radarr) + +## Check Secure VPN Connection + +If your are using the fully secure media stack configuration and routing all outbound network traffic via the Gluetun VPN container, you can check whether the secure VPN tunnel has been established with the following Docker commands: + +!!! Note "Checking if Docker Container is Connected / Hidden behind Secure VPN" + + === "Linux Shell" + + ``` bash + sudo docker exec -it radarr bash + ``` + + === "Windows PowerShell" + + ``` powershell + docker exec -it radarr bash + ``` + + === "MacOS Shell" + + ``` bash + docker exec -it radarr bash + ``` + + === "Synology NAS (SSH)" + + ``` bash + sudo docker exec -it radarr bash + ``` + + === "Portainer GUI" + + From the Portainer WebUI, find the container you wish to connect to, then select the `>_ Console` link. + + Once you have successfully connected to the Docker container, run the following command on the console, to check the IP Address which it is using through the VPN tunnel. + + ``` bash + curl ifconfig.io + ``` + + The IP Address in the Docker container should be different to your home IP Address, check this at [https://ifconfig.io](https://ifconfig.io). + +> If the Docker container is configured to connect to the Internet through the Gluetun VPN container and there is no active VPN connection, then no network traffic will be passed out to the Internet. The Gluetun VPN connection is a safeguard for secure network transfers and activates a "hard block" when there is no VPN connection established. + +!!! Warning + + You can disregard the above security check if you are not routing this Docker traffic through the Gluetun VPN container. + +## Configuration Prerequisites + +Before following this guide, you should have already completed: + +- Configured and integrated the Prowlarr Index Search Manager:       [Prowlarr Configuration Guide](prowlarr.md) +- Synchronised the Prowlarr Indexers to each ARR Application:       [Connect ARR Apps to Prowlarr](prowlarr.md#connect-arr-apps-to-prowlarr) +- Configured and integrated qBittorrent Torrent download client:       [Add qBittorent to *ARR Apps](qbittorrent.md#add-qbittorent-to-arr-apps) +- Configured and integrated SABnzbd Usenet download client:       [Add SABnzbd to *ARR Apps](sabnzbd.md#add-sabnzbd-to-arr-apps) + + +!!! Warning "Warning: This guide assumes you have followed the above pre-requisite configurations" + + This guide assumes you have already configured the above components using the associated guides listed above, and that Radarr is already integrated into Prowlarr, and connected to both Torrent and Usenet download clients. + + + +## Change Date and Languages + +To change the date and language in the WebUI Portal, select ==Settings== --> ==UI== + + +
+ ![Radarr WebUI Date and Language Settings](../img/radarr-date-language.png){ width="300" } +
Radarr WebUI Date and Language Settings
+
+ + + +## Certification Country Metadata + +To change the Certification Country for metadata information and ratings in the WebUI Portal, select ==Settings== --> ==Metadata== and select the appropriate country in the ==Certification Country== drop down menu, and save settings. + + +
+ ![Radarr Certification Country for Metadata](../img/radarr-certification-country-metadata.png){ width="300" } +
Radarr Certification Country for Metadata
+
+ + +
+ ![Radarr Metadata Settings](../img/radarr-metadata.png){ width="300" } +
Radarr Metadata Settings
+
+ + + +## Set File Naming Standards + +Radarr is a Library Manager for movie media files, and managed the files inside the `/data/media/movies` directory, where the Jellyfin media player will read them, so we need to make sure we use the folder and file naming structure which Jellyfin needs, so the movies can be easily imported into Jellyfin when it scans the folder for new / deleted content. + + +!!! Note "Note: Radarr Should Manage All Files / Naming For The Media Player" + + The ARR Media Library Managers should be used for all the adding, renaming, deleting of all media from each of your libraries and the managed filesystem. This gives you greater control over the media you choose to download / import into each of the media managers, while Jellyfin simply undertakes a scan of the filesystem on a regular basis to see if the media manager has made any changes... like added new media, or imported a better quality of existing media. + + Your Jellyfin media player, or any other media player you choose to use (Plex / Emby / Kodi etc..), should be set to read-only access to the media library directory, this prevents your media player from deleting media files being managed by the ARR managers. + + Addtionally, many users give their family members / friends an account on their media server, who in-turn accidently delete media from inside the media player after they've watched the media. Blocking your media player from deleting files will save your media from accidently / unintentional deletion. + +To set up naming standards, browse to ==Settings== --> ==Media Management== and make following settings: + +| Format Name | Format Setting (Jellyfin Standard) | +|------------------------|------------------------------------| +| Colon Replacement: | ==Replace with Dash== | +| Standard Movie Format: | `{Movie CleanTitle} {(Release Year)} {imdbid-{ImdbId}} - {edition-{Edition Tags}} {[Custom Formats]}{[Quality Full]}{[MediaInfo 3D]}{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels}]{MediaInfo AudioLanguages}[{Mediainfo VideoCodec}]{-Release Group}` | +| Movie Folder Format: | `{Movie CleanTitle} {(Release Year)} - [imdbid-{ImdbId}]` | + +
+ ![Radarr Movie Naming Settings](../img/radarr-file-naming.png){ width="300" } +
Radarr Movie Naming Settings
+
+ +!!! Note "Naming Standards for Different Media Players" + + The naming formats listed above will work fine for Jellyfin and many other media players, however you may need to consult the file-format requirements of your alternate media player if the above do not work correctly. + + Jellyfin Naming Standards: [https://jellyfin.org/docs/general/server/media/movies/](https://jellyfin.org/docs/general/server/media/movies/) + + Alternate Radarr Naming Guidance: [https://wiki.servarr.com/radarr/settings#media-management](https://wiki.servarr.com/radarr/settings#media-management) + + + + +To adjust Radarr file management settings, browse to ==Settings== --> ==Media Management== and scroll down to ==File Management== and make any necessary changes. + +> Note: The defaults below should be acceptible, unless you need to make custom changes based on your storage / retention requirements. + + +
+ ![Radarr Movie File Management](../img/radarr-file-management.png){ width="300" } +
Radarr Movie File Management
+
+ + + +## Set Media Storage Folder + +Radarr has now been configured so it can start importing / downloading any media using the correct file naming formats for Jellyfin (or your alternate media player). + +To link your media library and being importing movies, select ==Radarr== --> ==Movies== --> ==Import Existing Movies== + +
+ ![Radarr Import Media Library](../img/radarr-import-existing-movies.png){ width="300" } +
Radarr Import Media Library
+
+ +As this is the first time running the import wizard, you need to tell Radarr where your media is located, select ==Start Import== then navigate to the `/data/media/movies` directory and press == + +
+ ![Radarr Start Import Prompt](../img/radarr-start-import.png){ width="300" } +
Radarr Start Import Prompt
+
+ +
+ ![Radarr Select Media Library Folder](../img/radarr-select-media-folder.png){ width="300" } +
Radarr Select Media Library Folder
+
+ +If you have successfully mapped the root media folder to `/data/media/movies` and you don't yet have any folders or media in this directory, then you will see the following display, and there will be no value in the "Unmapped Folders" column. + +
+ ![Radarr Mapped Media Library Folder](../img/radarr-mapped-media-folder.png){ width="300" } +
Radarr Mapped Media Library Folder
+
+ +!!! Note "Adding and Removing Root Media Folders" + + You can also map media folders by going to ==Radarr== --> ==Settings== --> ==Media Management== then scroll to the bottom of the page and click on ==Add Root Folder==. + + The root media folder for Radarr should be set to: `/data/media/movies` + +## Importing Media Files + +You have now mapped your media folder correctly, however you will need to import any ==Unmapped Folders== so Radarr can manage them in the media manager. + +!!! Warning "Import Test Movies" + + If you don't have any movies to import in your library yet, you can create the following folders in your ==movies== folder on your Docker host computer to help test the import process: + + - "Big Buck Bunny (2008) - [imdbid-tt1254207]" + - "Jaws (1975) - [imdbid-tt0073195]" + - "Spaceballs (1987) - [imdbid-tt0094012]" + +
+ ![Radarr Test Import Folders](../img/radarr-test-import-folders.png){ width="300" } +
Radarr Test Import Folders
+
+ + +When you navigate ==Movies== --> ==Library Import==, you will now see there are ==Unmapped Folders== listed against the `/data/media/movies` folder. Click the folder to import the unmapped movie folders. + + +
+ ![Radarr Import Unmapped Folder](../img/radarr-unmapped-folders.png){ width="300" } +
Radarr Import Unmapped Folder
+
+ +Radarr will + +
+ ![Radarr Import Unmapped Folders](../img/radarr-import-unmapped-folders.png){ width="300" } +
Radarr Import Unmapped Folders
+
+ + +
+ ![Radarr Imported Mapped Media](../img/radarr-imported-mapped-media.png){ width="300" } +
Radarr Imported Mapped Media
+
+ + +In the main library view, select ==Options== to adjust the view to your liking. + +
+ ![Radarr Adjust Display Options](../img/radarr-display-options.png){ width="300" } +
Radarr Adjust Display Options
+
+ + + +## Download Missing Media Files + + +
+ ![Radarr View Media Details](../img/radarr-view-media-details.png){ width="300" } +
Radarr View Media Details
+
+ + +
+ ![Radarr Download Searched Media](../img/radarr-download-searched-media.png){ width="300" } +
Radarr Download Searched Media
+
+ + +
+ ![Radarr Downloading Searched Media](../img/radarr-downloading-searched-media.png){ width="300" } +
Radarr Downloading Searched Media
+
+ + +
+ ![Radarr Downloaded Searched Media](../img/radarr-downloaded-searched-media.png){ width="300" } +
Radarr Downloaded Searched Media
+
+ +
+ ![Radarr Updated Media Library](../img/radarr-updated-media-library.png){ width="300" } +
Radarr Updated Media Library
+
+ + + + + +## Search For Missing Media + + +
+ ![Radarr Search for Missing Media Files](../img/radarr-search-missing-media-files.png){ width="300" } +
Radarr Search for Missing Media Files
+
+ + +
+ ![Radarr Select Media From Search Results](../img/radarr-select-search-results.png){ width="300" } +
Radarr Select Media From Search Results
+
+ + + + +## Set Download Media Profiles + + +## Set Download Media Quality + + +## Extra Configuration Settings + + + + + + + + + + + + + + + + + + + + + + + + + +## <<< CURRENTLY EDITING UP TO HERE >>> + + +!!! Success + + Add some information about ratios and seeding days + + + +## Additional Configuration Items + +### Change Date and Languages + +### Miscellaneous Points + diff --git a/docs/configuration/readarr.md b/docs/configuration/readarr.md new file mode 100644 index 0000000..a04d401 --- /dev/null +++ b/docs/configuration/readarr.md @@ -0,0 +1,18 @@ +# Readarr - Book / ePub Library Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/configuration/sabnzbd.md b/docs/configuration/sabnzbd.md new file mode 100644 index 0000000..c2f1133 --- /dev/null +++ b/docs/configuration/sabnzbd.md @@ -0,0 +1,437 @@ +# SABnzbd - Usenet Download Client + +SABnzbd is a well established open-source Usenet download client. SABnzbd is a multi-platform binary newsgroup downloader. The program works in the background and simplifies the downloading verifying and extracting of files from Usenet. SABnzbd uses NZB files (similar to .torrent files, but for Usenet), instead of browsing Usenet directly. NZBs need to be downloaded from Usenet indexing services, which we will configure in Prowlarr. + +!!! Info "Additional Application Information - External Links" + - Local WebUI Address:    [http://localhost:8100](http://localhost:8100) + - Application Website:      [https://sabnzbd.org/](https://sabnzbd.org/) + - Docker Information:       [https://docs.linuxserver.io/images/docker-sabnzbd](https://docs.linuxserver.io/images/docker-sabnzbd) + + +The first time you access SABnzbd via your web browser, you may need to use the IP Address of your docker host, as it has a builtin hostname verification security feature, and you will be presented with this error message: + +Access denied - Hostname verification failed: https://sabnzbd.org/hostname-check + +In order to access the SABnzbd web browser using the docker hostname (not IP address), you will need to add the docker hostname and FQDN to the ==host_whitelist== in the configuration file, located in the ==(FOLDER_FOR_DATA)/sabnzbd== folder. + +``` +vi /mediastackdata/sabnzbd/sabnzbd.ini +``` + +host_whitelist = localhost,dockerhost,dockerhost.domain.com +local_ranges = 192.168.1.0/24,172.28.10.0/24 + +``` +sudo docker container restart sabnzbd +``` + +## Quick-Start Wizard + +Go to the [SABnzbd WebUI](http://localhost:8100). If this is the first time using the application, you will be presented with the SABnzbd Quick-Start Wizard, choose your desired langauge and select ==Start Wizard== to continue. + +
+ ![SABnzbd Quick-Start Wizard (Language)](../img/sabnzbd-wizard-language.png){ width="300" } +
SABnzbd Quick-Start Wizard (Language)
+
+ +Enter the server, username and password for one of your Usenet servers, enable "SSL" encryption, and then select ==Test Server== to test the connection. + +Select ==Next== if the server test is successful. + +
+ ![SABnzbd Quick-Start Wizard (Server)](../img/sabnzbd-wizard-server.png){ width="300" } +
SABnzbd Quick-Start Wizard (Server)
+
+ +You will then be presented with the ==Setup is now complete!== page, however the links and the download folders will be incorrect. + +Select ==Go to SABnzbd== to close the Wizard, we will update the incorrect settings in the next steps. + +
+ ![SABnzbd Quick-Start Wizard (Complete)](../img/sabnzbd-wizard-complete.png){ width="300" } +
SABnzbd Quick-Start Wizard (Complete)
+
+ +## Change Default Settings + +Select the ==Cog Icon== on the top right, and open ==SABnzbd Settings==. + + +### General Settings + +
+ ![SABnzbd Folders General](../img/sabnzbd-general.png){ width="300" } +
SABnzbd Folders General
+
+ + + +### Configure Working Folders + + +
+ ![SABnzbd Folders Settings](../img/sabnzbd-folders.png){ width="300" } +
SABnzbd Folders Settings
+
+ + +### Managing Usenet Servers + + +
+ ![SABnzbd Servers Settings](../img/sabnzbd-servers.png){ width="300" } +
SABnzbd Servers Settings
+
+ + + + +
+ ![SABnzbd Advanced Connection Settings](../img/sabnzbd-advanced.png){ width="300" } +
SABnzbd Advanced Connection Settings
+
+ + + +
+ ![SABnzbd Completed Server List](../img/sabnzbd-servers-complete.png){ width="300" } +
SABnzbd Completed Server List
+
+ + + + + + + +Download the SABnzbd 1000MB test file at: [https://sabnzbd.org/tests/test_download_1000MB.nzb](https://sabnzbd.org/tests/test_download_1000MB.nzb) + + + + + +
+ ![SABnzbd Category Settings](../img/sabnzbd-categories.png){ width="300" } +
SABnzbd Category Settings
+
+ + + + +
+ ![SABnzbd Connection Status](../img/sabnzbd-status.png){ width="300" } +
SABnzbd Connection Status
+
+ +
+ ![SABnzbd Test Download](../img/sabnzbd-downloading.png){ width="300" } +
SABnzbd Test Download
+
+ + + + +
+ ![SABnzbd Connection Summary](../img/sabnzbd-connections.png){ width="300" } +
SABnzbd Connection Summary
+
+ + + + + + + + + + + + +======================== + + + + +!!! Tip "Default Login Credentials" + + - Username:       ==admin== + - Password:       ==adminadmin== + + Default Username and Password can be changed by navigating to ==Options Icon== --> ==Web UI== --> ==Authentication== + +## Change Default Options + +Open the Options dialog and make the following changes in order to the default settings. + +### Download Paths + +Goto: ==Options Icon== --> ==Downloads== + +
+ ![qBittorrent Download Options](../img/qbittorrent-downloads.png){ width="300" } +
qBittorrent Download Options
+
+ + +### Connection Settings + +Goto: ==Options Icon== --> ==Connection== + +
+ ![qBittorrent Connection Options](../img/qbittorrent-connection.png){ width="300" } +
qBittorrent Connection Options
+
+ +!!! Warning "Listening Port" + + The listening port of ==6881== should not be changed, its embedded into the qBittorrent Docker image and routes traffic through the secure Gluetun VPN container. + + If you need to change the incoming connection port, change the following variable settings in the ==docker-compose.env== file, and redeploy the qBittorrent Docker configuration: + + - `QBIT_PORT_TCP=6881` + - `QBIT_PORT_UDP=6881` + + Once you've changed these settings in the ==docker-compose.env== file and redeployed the configuration, all incoming TCP/UDP connections on the new port numbers will be routed in through the secure Gluetun VPN connection, then Docker will redirect the traffic to the qBittorrent container, which will still be listening on port 6881. + + > NOTE: Under NO circumstances should your change the 6881 port inside the application WebUI, and certainly do not enable UPnP / NAT-PMP. The incoming connection is not coming through your home router, it is coming through the secure Gluetun VPN connection. + + +!!! Hint "Connection Limits" + + These are the default connection limits, you can tune these yourself once you have set up your qBittorrent client. + + > NOTE: Having too many peer connections and concurrent download sessions may be very ineffficient, and slow down your overall completion rate. + + > Changing these settings to high will consume your Internet bandwidth and RAM untilisation on your host computer. + +### Download Speed + + +Goto: ==Options Icon== --> ==Speed== + +
+ ![qBittorrent Download Speed](../img/qbittorrent-speed.png){ width="300" } +
qBittorrent Download Speed
+
+ +!!! Hint "Download Speed" + + These are the default Global and Alternate rate limits, so you can limit the amount of download bandwith you allow qBittorrent to consume. + + If you have a low Internet connection and only want to download while your sleeping, then restrict the ==Global Rate Limits== to a smaller limit, then set the ==Alternate Rate Limits== to a higher number (or "0" for unlimited), then enable the schedule for when the alternate rate limit should be used... i.e. when you're sleeping. + + > NOTE: If you have a poor internet connection, you should set these limits below your ISP Internet connection speed. + + > You can test your Internet speed at [https://www.speedtest.net/](https://www.speedtest.net/), however just remember your qBittorrent connection goes through the secure Gluetun VPN connection, so that will be a little bit slower due to the additional overheads for the VPN encryption. + + +### BitTorrent Settings + + +Goto: ==Options Icon== --> ==BitTorrent== + +
+ ![qBittorrent BitTorrent Settings](../img/qbittorrent-bittorrent.png){ width="300" } +
qBittorrent BitTorrent Settings
+
+ +!!! Hint "Torrent Queueing" + + Change the ==Torrent Queueing== settings to tune how many active downloads / uploads / torrents your qBittorrent client will run concurrently. + + > NOTE: Having too many peer connections and concurrent download sessions may be very ineffficient, and slow down your overall completion rate. + + > Changing these settings to high will consume your Internet bandwidth and RAM untilisation on your host computer. + +!!! Warning "Seeding Limits" + + Eanble the ==Seeding Limits== settings so you are able to seed the torrents after you have finished downloading them. + + > NOTE: Many private torrent sites / trackers will ban users if they do not seed files after downloading them, and you will to keep your seeding ratio above a minimum level. Private torrent site seed ratios are different, so keeping a reasonable ratio helps maintain good standing in these sites. + + + +### WebUI Settings + + +Goto: ==Options Icon== --> ==Web UI== + +
+ ![qBittorrent WebUI Settings](../img/qbittorrent-webui.png){ width="300" } +
qBittorrent WebUI Settings
+
+ +!!! Warning "Web User Interface (Remote control)" + + The WebUI port of ==8200== should not be changed, its embedded into the qBittorrent Docker image and routes traffic through the secure Gluetun VPN container. + + If you need to change the incoming WebUI port, change the following variable settings in the ==docker-compose.env== file, and redeploy the qBittorrent Docker configuration: + + - `WEBUI_PORT_QBITTORRENT=8200` + + Once you've changed these settings in the ==docker-compose.env== file and redeployed the configuration, all incoming WebUI connections on the new port number will be routed in through the secure Gluetun VPN connection, then Docker will redirect the traffic to the qBittorrent WebUI, which will still be listening on port 8200. + + > NOTE: Under NO circumstances should your change the 8200 port inside the application WebUI, and certainly do not enable UPnP / NAT-PMP. The incoming connection is not coming through your home router, it is coming through the secure Gluetun VPN connection. + +!!! Hint "Authentication" + + Change the default Username and Password in this section, or disable user authentication entirely for clients on the localhost or local network. + + > The Docker subnetwork for our media stack is 172.28.10.0/24, as we are going to be setting up a Nginx reverse proxy with secure authencation throught the SWAG / Cloudflare connection, we can add this address into the authentication bypass, as SWAG / Cloudflare Zero Trust will handle authentication and authorisation into your home network + +!!! Hint "Use alternative Web UI" + + ==Themepark Themes== have been enabled in the qBittorrent YAML file, you can disable the theme there, or change the theme by setting the following variable in the ==docker-compose.env== environment file, and redeploying the qBittorrent image in Docker. + + - `TP_THEME=nord` + + +## Download Categories + +When setting up our media libraries and folders, its important to store certain media types in their own folders, so each of the applications can then be set up to manage, rename and fetch meta data, depending on the media type... i.e. movies, TV shows (series), music etc.. in each of the folders. + +To help control the management of media files, we use "download categories" in the Torrent / Usenet download clients, which are then linked to certain folders, so media in the same categories are downloaded into the correct folders, so the *ARR Media Library Managers and Jellyfin can manage the media after its been downloaded. + +For example, when a movie is downloaded by qBittorrent, it is assigned the ==movie== category and will be downloaded into the folder ==/data/torrents/movies== inside the qBittorrent Docker container, which is actually mounted on the localhost filesystem in the ==FOLDER_FOR_MEDIA/torrents/movies== folder. + +Once the download has been completed, qBittorrent tells the *ARR Media Library Manager responisble for ==movies== it has completed (which is "Radarr"), then Radarr moves the file into its own folder ==/data/media/movies==, which is actually mounted on the localhost filesystem in the ==FOLDER_FOR_MEDIA/media/movies== folder. + + +Goto: Right click ==Categories== --> ==Add Category== + +
+ ![qBittorrent Download Categories](../img/qbittorrent-category-1.png){ width="300" } +
qBittorrent Add Category - Step 1
+
+ +!!! Warning "Warning: Category Names and Save Paths Are Case Senstive" + + ==Category Names== and ==Save Paths== are case senstive and must be added in lower case, to match the underlaying Linux filesystem inside the Docker images, and / or, the localhost. + +Goto: ==Options Icon== --> ==Downloads== + +
+ ![qBittorrent Download Categories](../img/qbittorrent-category-2.png){ width="300" } +
qBittorrent Add Category - Step 2
+
+ +!!! Hint "Save Path" + + ==Save Path== only needs to have the category name, and not the full path, as it is relative to the ==Default Save Path:== which was set as `/data/torrents` above. + + Therefore adding "movies" into the ==Save Path== field will actually be `/data/torrents/movies`. + +Continue to add the following categories: + +
+ ![qBittorrent Download Categories](../img/qbittorrent-category-3.png){ width="300" } +
qBittorrent Add Category - Step 3
+
+ + +!!! Warning "Categories Failing To Sort Into Correct Folders" + + If files are being downloaded by the *ARR Media Library Managers and they are not being sorted correctly by categories and folders, check the following setting on the Downloads Options page: + + - ==Default Torrent Management Mode:== `Automatic` + +## Test Secure Connection + +As the Gluetun container is providing an encrypted VPN tunnel for the entire Docker stack, its important to first check the VPN is providing privacy / obscurity for your Internet connection and torrent traffic. + +From any computer in your network, you will be able to see what the IP Address for your Internet connection is by going to [ifconfig.io](http://ifconfig.io) + +Now log onto your Docker host and attach the console to the qBittorrent container using the following command: + +``` bash +sudo docker exec -it qbittorrent bash +``` + +!!! Note "Connecting To qBittorrent Container with Portainer" + + You can also connect to the qBittorrent container using Portainer, by selecting the container you with to connect to, then select `>_ Console` + + +Once you have successfully connected to the qBittorrent Docker container, run the following command on the console, to check the IP Address which it is using through the VPN tunnel. + +``` bash +curl ifconfig.io +``` + +The IP address of the remote / secure VPN connection will be displayed. Type `exit` to disconnect from the Docker interactive session. + +> NOTE: If the Gluetun container is not running, or does not have an active VPN connection, then no traffic from any of the Docker containers will be allowed to go out to the Internet; it is all blocked unless a secure VPN tunnel is active through Gluetun VPN. + +> NOTE: If you are using an active VPN account and are not able to secure a VPN connection, you should seek assistance before progressing. + +> Synology users may need to check VPN / TUN prerequisite details in this article, and seek guidance from the Synology community: [Synology prerequisites · qdm12/gluetun Wiki](https://github.com/qdm12/gluetun/wiki/Synology-prerequisites) + + + +## Download Torrent Test File + +Now qBittorrent is fully configured and secure behind the Gluetun VPN, you should check downloads are working correctly, by downloading a simple Torrent test file. + +### Manual Watch Download + +Head over to [https://ubuntu.com/download/alternative-downloads](https://ubuntu.com/download/alternative-downloads) to Ubuntu's BitTorrent page, and download one of the ".torrent" files, and copy it into the ==FOLDER_FOR_MEDIA/watch== folder on the Docker host, which is mapped to the qBittorrent container folder ==/data/watch==. + +As qBittorrent is monitoring the ==/data/watch== folder inside the container for incoming ".torrent" files, the torrent download will start after a short period. Once completed, the downloaded torrent will be moved to the root of the ==/data/torrents== folder, as no category was provided using the manual download step (==FOLDER_FOR_MEDIA/torrents==). + +This is a good process to use qBittorrent manually for your own download requirements. + +### Download Link with Category + +You can also download torrents by copying the Download URL or Magnet Link address of the torrent, and clicking on the "Add Torrent Link" button. + +Paste the link into the "Download URL or Magnet Link address" field, and select the category which best suits the torrent. In this case, we'll select one of the other torrent download links from the Ubuntu test above, use the "==software==" Category, then select ==Download==. + +
+ ![qBittorrent Completed Downloads](../img/qbittorrent-completed.png){ width="300" } +
qBittorrent Completed Downloads
+
+ +If you inspect the completed torrent downloads, you will notice the manual download was not association with a category and was moved into the ==/data/torrents== directory, while the second download was assigned a category and was moved into the ==/data/torrents/software== directory. + +The downloaded test torrents can now be safely deleted using the WebUI. + + +## Add SABnzbd to *ARR Apps + + + +
+ ![SABnzbd Add Downloader to *ARR Applications](../img/sabnzbd-download-client.png){ width="300" } +
SABnzbd Add Downloader to *ARR Applications
+
+ + + +
+ ![SABnzbd Edit Download Client](../img/sabnzbd-edit-download-client.png){ width="300" } +
SABnzbd Edit Download Client
+
+ +!!! Note "Note: SABnzbd API Key" + + You can find your SABnzbd API key at: [http://localhost:8100/sabnzbd/config/general/](http://localhost:8100/sabnzbd/config/general/) + +| *ARR Application | Add Downloader Page | Default Category | +|------------------|---------------------|-------------------| +|Prowlarr: | [http://localhost:9696/settings/downloadclients](http://localhost:9696/settings/downloadclients) | prowlarr | +|Radarr: | [http://localhost:7878/settings/downloadclients](http://localhost:7878/settings/downloadclients) | movies | +|Sonarr: | [http://localhost:8989/settings/downloadclients](http://localhost:8989/settings/downloadclients) | series | +|Lidarr: | [http://localhost:8686/settings/downloadclients](http://localhost:8686/settings/downloadclients) | music | +|Readarr: | [http://localhost:8787/settings/downloadclients](http://localhost:8787/settings/downloadclients) | books | +|Whisparr: | [http://localhost:6969/settings/downloadclients](http://localhost:6969/settings/downloadclients) | xxx | +|Mylar3: | [http://localhost:8090/config#tabs-3](http://localhost:8090/config#tabs-3) | comics | + + + + +
+ ![Mylar3 Add SABnzbd Download Client](../img/sabnzbd-mylar-add-downloader.png){ width="300" } +
Mylar3 Add SABnzbd Download Client
+
+ + diff --git a/docs/configuration/sonarr.md b/docs/configuration/sonarr.md new file mode 100644 index 0000000..b9bd91c --- /dev/null +++ b/docs/configuration/sonarr.md @@ -0,0 +1,18 @@ +# Sonarr - TV Series Library Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/configuration/tdarr.md b/docs/configuration/tdarr.md new file mode 100644 index 0000000..a3b025d --- /dev/null +++ b/docs/configuration/tdarr.md @@ -0,0 +1,18 @@ +# Tdarr - Ditributed Media Transcoding Service + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/configuration/unpackerr.md b/docs/configuration/unpackerr.md new file mode 100644 index 0000000..1d61e57 --- /dev/null +++ b/docs/configuration/unpackerr.md @@ -0,0 +1,18 @@ +# Unpackerr - + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/configuration/whisparr.md b/docs/configuration/whisparr.md new file mode 100644 index 0000000..acc0083 --- /dev/null +++ b/docs/configuration/whisparr.md @@ -0,0 +1,18 @@ +# Whisparr - Adult Library Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/help/1.md b/docs/help/1.md new file mode 100644 index 0000000..fd21a16 --- /dev/null +++ b/docs/help/1.md @@ -0,0 +1,3 @@ +!!! Success "Warning:       Page Under Development" + + Content on this old page has been migrated to new section, and page is marked for deletion. diff --git a/docs/help/2.md b/docs/help/2.md new file mode 100644 index 0000000..fd21a16 --- /dev/null +++ b/docs/help/2.md @@ -0,0 +1,3 @@ +!!! Success "Warning:       Page Under Development" + + Content on this old page has been migrated to new section, and page is marked for deletion. diff --git a/docs/help/3.md b/docs/help/3.md new file mode 100644 index 0000000..c49a8bd --- /dev/null +++ b/docs/help/3.md @@ -0,0 +1,548 @@ + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## 2 + +## 3 + +## 4 +## 5 +## 6 +## 7 + + + +**PART 8 - Configuring the \*ARR Media Library Managers / Index Manager** + +Prowlarr \*ARR Indexer and Search Manager: [http://localhost:9696](http://localhost:9696/) + +Now that we have both the Download Clients set up on Page 1, we're going to set up Prowlarr, which is an index and search manager for all the ARR applications; it handles search requests on behalf of Sonarr, Radarr, Lidarr etc.. to all the indexers, and returns the results to each ARR application that initiated the index search. + +1\. In "Indexers" -- "Add Indexer", to get started, add about eight indexers which are listed as public - these will mostly be Torrent indexers, as all NZB Indexers are private and you need an account to access the indexer services. + +2\. Make sure you select a Base URL and test the connection before saving. Some indexers have multiple URLs to choose from, and you may need to change the Base URL if any on them fail the connection test. + +3\. Once you have several indexers, select "Test All Indexers" to test their connectivity / status. + +4\. You can also test the "Search" function by typing "Big Buck Bunny" and checking that results are returned - Do not download anything yet, there is much more to set up before importing media. + +**NOTE:** If you're using Windows as your Docker host, you may need to open up network ports in the Windows 11 firewall, before you can access the web portals from the local network: + +* + + +5\. "Settings" -- "Indexers" menu: Only used if you need index proxies + +6\. "Settings" -- "Apps" menu: Go to all the other ARR applications listed below, then navigate to "Settings" -- "General" and copy the API Key from each application. Then back in Prowlarr, click "Add Application", and use the API Key to link the other application to Prowlarr. + +**For example: To add Radarr** + +* Name: Radarr +* Sync Level: Full Sync +* Prowlarr: Add "[http://localhost:9696](http://localhost:9696)" Check the field to see if the text is actually in there. +* Reader: Add "[http://localhost:7878](http://localhost:7878)" Check the field to see if the text is actually in there. +* API Key: Copied from Radarr application in "Settings" -- "General" +* Test and Save + +Repeat this step for all \*ARR applications until you have Lidarr, Mylar, Radarr, Readarr, Sonarr and Whisparr listed in the Prowlarr applications - There should be six. + +**NOTE For Mylar:** Go to "Settings" -- "Web Interface" -- Tick Enable API -- Generate API Key -- Save Changes -- Restart Mylar -- API Key can now be copied. + + + +\*ARR Application:​ + +Link to API Key:​ + +Lidarr + +[http://localhost:8686/settings/general](http://localhost:8686/settings/general) + +Mylar3 + +[http://localhost:8090/config](http://localhost:8090/config) Then Select "Web Interface" Tab + +Radarr + +[http://localhost:7878/settings/general](http://localhost:7878/settings/general) + +Readarr + +[http://localhost:8787/settings/general](http://localhost:8787/settings/general) + +Sonarr + +[http://localhost:8989/settings/general](http://localhost:8989/settings/general) + +Whisparr + +[http://localhost:6969/settings/general](http://localhost:6969/settings/general) + +Prowlarr + +[http://localhost:9696/settings/downloadclients](http://localhost:9696/settings/downloadclients) + + + +7\. "Settings" -- "Download Clients" menu: + + +* Go to all SEVEN of the ARR applications listed in the table below, then navigate to "Settings" -- "Download Clients" and add the following two download clients to each of the seven applications. Make sure you change the category for each application… the categories MUST be in lowercase. + + + +ARR Application:​ + +Download Category: +(must be in lowercase)​ + +Prowlarr + +prowlarr + +Lidarr + +music + +Mylar3 + +comics + +Rradarr + +movies + +Readarr + +books + +Sonarr + +series + +Whisparr + +adult + + + +* Add NZBGet + * Name: NZBGet + * Host: localhost + * Port: 6789 + * Username: nzbget Empty if you removed this earlier + * Password: tegbzn6789 Empty if you removed this earlier + * Category: < --- In "lowercase" - refer to table above, for each \*ARR application category +* Add Transmission + * Name: Transmission + * Enabled: Ticked + * Host: localhost + * Port: 9091 + * Username: empty + * Password: empty + * Category: < --- In "lowercase" - refer to table above, for each \*ARR application category + + + +8\. Add the "Root Folder" for all of the \*ARR medial managers, so they are able to access / manage the media in each library. + +**NOTE: It is recommended you allow all of the Media Library Managers to totally manage your media, including the renaming and sorting of media into its own media folder structure and naming conventions. Select "Show Advanced" and follow the naming conventions in the table below, for the relevant media managers. + +NOTE: Do not add your own media into your media folders yet, we will prepare all of your existing media in steps further below, before importing into each of the media libraries, to ensure they're in a format that the \*ARR applications will each read be able to identify and match to Internet media lookup searches.** + + + +Library Manager:​ + +Media Path:​ + +Media Renaming Conventions:​ + +Lidarr: +[http://localhost:8686/settings/mediamanagement](http://localhost:8686/settings/mediamanagement) + +/data/media/music + +[Lidarr Settings](https://wiki.servarr.com/lidarr/settings) +(No guidance available - refer to other apps in wiki) + +Mylar3: +[http://localhost:8090/config](http://localhost:8090/config) + +/data/media/comics + +[Folder and File formats · mylar3/mylar3 Wiki](https://github.com/mylar3/mylar3/wiki/Folder-and-File-formats) (minor guidance) + +Radarr: +[http://localhost:7878/settings/mediamanagement](http://localhost:7878/settings/mediamanagement) + +/data/media/movies + +[Radarr Settings](https://wiki.servarr.com/radarr/settings#community-naming-suggestions) + +Readarr: +[http://localhost:8787/settings/mediamanagement](http://localhost:8787/settings/mediamanagement) + +/data/media/books + +[Readarr Settings](https://wiki.servarr.com/readarr/settings#book-file-naming) + +Sonarr: +[http://localhost:8989/settings/mediamanagement](http://localhost:8989/settings/mediamanagement) + +/data/media/series + +[Sonarr Settings](https://wiki.servarr.com/sonarr/settings#community-naming-suggestions) + +[Whisparr: +http://localhost:6969/settings/mediamanagement](http://Whisparr: http://localhost:6969/settings/mediamanagement) + +/data/media/adult + +[Whisparr Settings](https://wiki.servarr.com/whisparr/settings#community-naming-suggestions) + + +**NOTE:** Prowlarr is an index and search manager, it does not manage media libraries. + + +**Example set up steps for Radarr to manage media renaming** + +* [http://localhost:7878/settings/mediamanagement](http://localhost:7878/settings/mediamanagement) + + +* Turn on "Show Advanced" options +* Rename Movies: Ticked +* Replace Characters: Ticked +* Colon Replace: Replace with Space Dash Space +* Standard Movie Format: {Movie Title} ({Release Year}) - {Quality Title} {MediaInfo Simple} +* Movie Folder Format: {Movie Title} ({Release Year}) \[imdbid-{ImdbId}\] +* Create Empty Folders: Not Ticked +* Delete Empty Folders: Ticked # Depends on your preference +* Unmonitor Deleted Movies: Ticked +* Propers and Repacks: Prefer and Upgrade +* Analyze video files: Ticked +* Rescan Movie Folder: Always +* Change File Date: None +* Recycle Bin: Optional +* Set Permissions: Ticked # Depends on your preference +* Chmod Folder: 775 # Depends on your preference +* Chmod Group: users # Depends on your preference + + +**Example set up steps for Sonarr to manage media renaming** + +* [http://localhost:8989/settings/mediamanagement](http://localhost:8989/settings/mediamanagement) + + +* Turn on "Show Advanced" options +* Rename Episodes: Ticked +* Replace Illegal Characters: Ticked +* + +* Standard Episode Format: + * {Series Title} S{season:00}E{episode:00} - {Episode Title} {Quality Title} {MediaInfo Simple} +* Daily Episode Format: + * {Series Title} {Air-Date} - {Episode Title} {Quality Title} {MediaInfo Simple} +* Anime Episode Format: + * {Series Title} S{season:00}E{episode:00} - {Episode Title} {Quality Title} {MediaInfo Simple} +* Series Folder Format: + * {Series Title} ({Series Year}) \[imdbid-{ImdbId}\] +* Multi-Episode Style: Extend +* Create Empty Folders: Not Ticked +* Delete Empty Folders: Ticked # Depends on your preference +* Unmonitor Deleted Episodes: Ticked +* Propers and Repacks: Prefer and Upgrade +* Analyze video files: Ticked +* Rescan Episode Folder: Always +* Change File Date: None +* Recycle Bin: Optional +* Set Permissions: Ticked # Depends on your preference +* Chmod Folder: 775 # Depends on your preference +* Chmod Group: users # Depends on your preference + + +Complete remaining Media Library Managers as per step 8 guidance and table. + + + +**Mylar3 needs extra steps to get set up properly and integrated into Prowlarr** + +9\. Complete these additional steps to configure Mylar3, which are slightly different to the rest of the \*ARR family + + +* Go to Mylar3 "Settings" -- "Web Interface": +* ComicVine API Key: + * Go over to ComicVine at Gamespot, and register for a user account: [Comic Vine](https://comicvine.gamespot.com) When you're logged in to ComicVine, head to this page for your personal API Key: [Comic Reviews, News, and Forums - Comic Vine](https://comicvine.gamespot.com/api/) + * Copy your Comic Vine API Key, then goto Mylar3 "Settings" -- "Web Interface" and copy the key into the field on the top right +* Basic HTTP Host: 0.0.0.0 +* HTTP Port: 8090 +* Authentication: None +* HTTP Usernam: Empty +* HTTP Password: Empty +* Comic Path Location: /data/media/comics +* Enforce Permissions: ticked +* Directory CHMOD: 0777 +* File CHMOD: 0660 +* Owner: 1000 --- Change this to the numeric PUID value of the Docker user account you created earlier +* Group: 1000 --- Change this to the numeric PGID value of the Docker user account you created earlier + + +* Mylar3 "Settings" -- "Download Settings" + + +* NZBget: Ticked +* NZBGet Host: [http://localhost](http://localhost) +* NZBGet Port: 6789 +* NZBGet Username: Empty the field +* NZBGet Password: Empty the field +* NZBGet Download Directory: /data/usenet +* NZBGet Category: comics +* Enable Completed Download Handling: Ticked +* Usenet Retention (in days) - This depends on your Usenet service provider + + + +* Use Torrents: Tickered +* Minimum # of seeders: 3 +* NOTE: Seed numbers is a personnal choice, the lower the number could result in stalled downloads +* Transmission: Ticked +* Transmission Host: [http://localhost](http://localhost) +* Transmission Username: Empty the field +* Transmission Password: Empty the field +* Transmission Directory: /data/torrents + + + +* Mylar3 "Settings" -- "Search Providers" +* Torrents: Ticked +* Enabled Torznab: Ticked +* Use Newznab: Ticked + + +**NOTE:** There is no need to manually update the Torrent / Usenet settings listed on this page, Prowlarr will +automatically make the relevant changes to search providers as they're added to the \*ARR Index Manager. + + +10\. Finish the basic customisation below for all of the \*ARR settings: + + +\*ARR Application: + +Link to Settings Page + +Prowlarr + +[http://localhost:9696/settings](http://localhost:9696/settings) + +Lidarr + +[http://localhost:8686/settings](http://localhost:8686/settings) + +Mylar3 + +[http://localhost:8090/config](http://localhost:8090/config) Then Select "Web Interface" Tab + +Radarr + +[http://localhost:7878/settings](http://localhost:7878/settings) + +Readarr + +[http://localhost:8787/settings](http://localhost:8787/settings) + +Sonarr + +[http://localhost:8989/settings](http://localhost:8989/settings) + +Whisparr + +[http://localhost:6969/settings](http://localhost:6969/settings) + + +"Settings" -- "UI" menu: + +* Set up all the system locale / date and time formats for your region / liking + + +"Settings" -- "Indexers" menu: + +* These are a list of indexers, which are configured using Prowlarr, and replicated to each of the ARR applications. If you need to update your indexers, do this in Prowlarr. + + +"Settings" -- "Quality" menu: + +* This page allows you to configure all the general quality, size limits, for all the different download options. + + +Home Page For Each \*APP Application: + +* Click "Options" icon on right hand side and select the viewable options to suit your needs. + + +Test Each of Your \*APP Application: + +* From the application home page, select "Add New", and search title for each application's media category. +* You should get search results for each of the media types that each application is responsible for managing. + + + +**NOTE: Whisparr - Adult Movie Industry Metadata** + +Whisparr will correctly locate metadata for adult movie industry content, however Jellyfin does not, for reasons we won't go into here. However, you can save the metadata for adult content from Whisparr into the movie folder on the hard drive, then Jellyfin can be set up to read and import the metadata correctly. + +Go to "Whisparr" -- "Settings" -- "Metadata" -- "Edit Kodi (XBMC) / Emby Metadata" and select all options, except for "Use Movie.nfo", and save. This will create .nfo and cover art files inside the movie folder, which Jellyfin will scrape during import of the adult library. + +**NOTE:** This technique can be used for other media types which do not work well in Jellyfin metadata look ups. + + +NOTE: If you have following this guide step by step, you'll probably notice the theme used across most of the applications is, or is not to your likely, you can change the theme to something that suites you suit by editing the following variable in the .ENV file, and redeploying your media stack configuration discussed on Page 1. + + +Code: + + TP_THEME=nord + + +Refer to colour these codes at: [Aquamarine - theme.park Docs](https://docs.theme-park.dev/theme-options/aquamarine/) + + + + +**PART 9 - Organising Your Media Library And Importing Into \*ARR Apps** + +Now that we've set up the Media Library Managers and Index Manager with the correct settings, including filenames for all media content, we can commence importing any of your current media repositories into the respective Media Library Managers for each media format type. + +**NOTE: The success of importing media files into the media libraries and having them identified correctly by the library managers, depends heavily on the how well they are organised and named in the first place. Don't expect to load random files which have no naming conventions, or cannot identify what the content is, to be picked up and imported correctly. Do some effort first to save you importing time - otherwise: the old adage is… shit in, shit out.** + +My personal preference is to use Filebot with the following renaming conventions to get things organised, before I manually add anything into the \*ARR media folders. + + +**Filebot Renaming Preset String for Series / TV Shows:** + +D:/Storage/renaming/series/{ny.colon(' - ').ascii()} \[tmdbid-{id}\]/Season {s00}/{ny.colon(' - ').ascii()} {s00e00} - {t.ascii()} {" - $hd $vf $vc $ac"} + + +**Filebot Renaming Preset String for Movies / Adult:** + +D:/Storage/renaming/movies/{ny.colon(' - ').ascii()} \[imdbid-{imdbid}\]/{ny.colon(' - ').ascii()} {" - $hd $vf $vc $ac"} + + +**Filebot Renaming Preset String for Music / Audio:** + +D:/Storage/renaming/music/{artist.upperInitial().ascii()}/{album.upperInitial().ascii()} ({y})/{albumArtist.upperInitial().ascii()} - {album.upperInitial().ascii()} - {pi.pad(3)+' - '} {t.ascii()} + + +Change "D:/Storage" to suit your requirements. Being on the same drive / partition as the original media which is being renamed, will save considerable time moving files between partitions or across network shares. i.e. Don't use a different partition / HDD as the destination, it will take forever. + +**NOTE:** Do all media renaming outside of \*ARR folders, then slowly control the import of the renamed media into each of the Library Managers. + +Once you have prepared all of your current media folders, start importing a few series / movies at a time, to ensure the \*ARR Library Manager is detecting the new media, and that you're comfortable with the process. + +As you start adding files in the following folders, the files will be immediately accessible in each of the \*ARR apps + + + +Host Computer Folder Location: + +\*ARR Library Manager + +FOLDER\_FOR\_MEDIA/adult + +Whisparr + +FOLDER\_FOR\_MEDIA/books + +Readarr + +FOLDER\_FOR\_MEDIA/comics + +Mylar3 + +FOLDER\_FOR\_MEDIA/movies + +Radarr + +FOLDER\_FOR\_MEDIA/music + +Lidarr + +FOLDER\_FOR\_MEDIA/series + +Sonarr + + + +Head over the your \*ARR application to "Settings" -- "Media Management"… you'll note that the root folder "/data/media/series" etc... inside each Docker container now says there are a number of "Unmapped Folders". + +To import the new media you copied into your FOLDER\_FOR\_MEDIA folders, open the link that says "Path: /data/media/series", it will now show the series / movies which you added, and will attempt to identify these new series / movies by looking them up via the Internet databases. + +NOTE: This could take some time depending on how large the media library is. + +NOTE: DO NOT IMPORT ANY MOVIE / SERIES WHICH ARE INCORRENTLY IDENTIFIED, RENAME THEM AND TRY TO IMPORT THEM AGAIN LATER + +Select all of the folders / media which has been correctly identified by using the checkboxes on the left hand side, then down the bottom select whether to monitor the first season, or the entire season (this is your personal choice), then select the option "Import \* Series" - This will commence the import and renaming if you opted to rename. + +For any movie / series which was incorrectly identified, go to your local media directory and rename the folder, and then import the new folder after the \*ARR manager correctly identifies the folder content. + +Once identified, select "Import \* Series". If successful, you will receive a message that says: All series in /data/media/imports have been imported. + +Use the same process in all of the other \*ARR applications to import your existing media library into the corresponding \*ARR Media Library Manager. + +NOTE:: If you do a lot of transcoding and changing the encoding types / bitrates across your library, the Filebot renaming strings can be used to update your media library as needed, however you'll need to refresh your \*ARR Media Library Managers / Jellyfin to make sure they pick up the new names. + + + + + + + + + + + + + + +**WARNING - THE BELOW INFORMATION IS STILL BEING FORMATTED FOR PRESENTATION - IT SHOULD BE ACCURATE, BUT DIFFICULT TO READ. AM CURRENTLY FORMATTING NOW.**​ + + + + + + + + + +**PART 10 - Configuring Jellyfin Media Server** + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/help/4.md b/docs/help/4.md new file mode 100644 index 0000000..fd21a16 --- /dev/null +++ b/docs/help/4.md @@ -0,0 +1,3 @@ +!!! Success "Warning:       Page Under Development" + + Content on this old page has been migrated to new section, and page is marked for deletion. diff --git a/docs/help/5.md b/docs/help/5.md new file mode 100644 index 0000000..fd21a16 --- /dev/null +++ b/docs/help/5.md @@ -0,0 +1,3 @@ +!!! Success "Warning:       Page Under Development" + + Content on this old page has been migrated to new section, and page is marked for deletion. diff --git a/docs/help/application-websites.md b/docs/help/application-websites.md new file mode 100644 index 0000000..735be34 --- /dev/null +++ b/docs/help/application-websites.md @@ -0,0 +1,18 @@ +# Application Home Sites + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/help/contributing.md b/docs/help/contributing.md new file mode 100644 index 0000000..d8b3a56 --- /dev/null +++ b/docs/help/contributing.md @@ -0,0 +1,196 @@ +# Contributing to MediaStack.Guide + + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + +Anyone can easily join and contribute to the https://MediaStack.Guide GitHub repo, to improve the overall documentation / website by following these steps. + +First, you will need an active GitHub.com account if you are looking to push changes / updates back to the https://MediaStack.Guide repo on GitHub + +Setting up your environment to run MkDocs for Development / Contribution to https://MediaStack.Guide + +**Download and Install Microsoft Visual Studio Code** + - https://code.visualstudio.com/download + +**Download and Install Git for Windows** + - https://git-scm.com/download/win + +**Download and Install Python** + - https://www.python.org/downloads + +**Download and Install Miniconda** + - https://docs.conda.io/en/latest/miniconda.html + +**Goto Visual Studio Code Extentions (Ctrl+Shift+X) and Install:** + - Python (by Microsoft)                            Or at: https://marketplace.visualstudio.com/items?itemName=ms-python.python + - Python Environment Manager               Or at: https://marketplace.visualstudio.com/items?itemName=donjayamanne.python-environment-manager + - Start git-bash                                         Or at: https://marketplace.visualstudio.com/items?itemName=McCarter.start-git-bash + - GitHub Repositories                               Or at: https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub + - GitHub Pull Requests and Issues           Or at: https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github + - YAML                                                     Or at: https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml + - shell-format https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format + +**Optional Visual Studio Code Extentions:** + - Azure Repos (Optional for TFVC)           Or at: https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-repos + - WSL (optional) - If using WSL                Or at: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl + - WSL Recommender - If using WSL         Or at: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl-recommender + +**Test all of the programs are working correctly:** + - Open Windows Start Menu, you should be able to see: + - Anaconda Prompt (Miniconda3) + - Git Bash + - Python 3.11 (64-bit) + + - Start "Git Bash" and run these commands to see if they're in the environment path (may need a reboot if this is the first time running them) + - Execute "conda" + - Execute "pip" + - Execute "py --version" + +>The above tests should confirm you have the correct packages installed and the paths are working, in order to create the Conda environment needed to host the MkDocs files while editing / contributing on your local system. + + +Start "Git Bash" from the Windows Start Menu, and create a folder to replicate any GitHub repos to.. i.e. "C:\GitHub" + +``` +mkdir C:\GitHub +cd C:\GitHub +git clone https://github.com/geekau/mediastack.guide.git +cd mediastack.guide +code . +``` + +Visual Studio will now open and ask you to trust the files you have pull from GitHub into the "C:\GitHub\mediastack.guide" folder - Select Yes to trust the folder. + + +**Select Python Intepreter** + +In Visual Studio Code opening the Command Palette (Ctrl+Shift+P), start typing "Python: Select Interpreter" - Press Enter + +Select: "Python 3.9... ('base') C:\ProgramData\Miniconda3\python.exe **Conda**" + +**Select Terminal Intepreter** + +In Visual Studio Code opening the Command Palette (Ctrl+Shift+P), start typing "Terminal: Select Default Profile" - Press Enter and select: "Git Bash" + +From the top menu, select "Terminal" --> "New Terminal" (Ctrl+Shift+`), the new terminal should now be "Git Bash". + +**Setup Python environment to support the downloaded MediaStack.Guide files** + +From the Git Bash terminal, type ls -la, you should be inside the "C:\GitHub\mediastack.guide" folder, and be able to see the following files: + +- init_setup.sh - Script to built a local Python environment on your system for development / testing +- requirements.txt - Includes the files needed as part of the local environment (MkDocs, Material for MkDocs, Awesome Pages for MkDocs etc..) +- runtime.txt - Sets the Conda sets the Python version to 3.7, so all developers contributing on MediaStack.Guide repo are all using the same version + +As this is the first time using the Git Bash terminal, you may need to initialiase it with the following command, then closing / restarting the terminal window: + +``` +conda init bash +``` + +If you are in the correct folder and can see all of these files, then you can execute the following command in the Git Bash terminal to build your environment: + +``` +bash init_setup.sh +``` + +>This will take a few minutes to build your local environment, depending on your Internet speed. + +**Activate the virtual environment for the mediastack.guide project** + +In order to run any of the commands / scripts which have now been set up in the "ENV" environment, you need to activiate the environment with the following command: + +``` +conda activiate ./env +``` + +Now the environment has been activated, you can call commands from that environment, to help you develop and test using the environment which is now standardised for all contributing developers. + +Type the following command to run a local webserver on port 8888, which will serve all of the MkDocs files from your working copy + +``` +mkdocs serve +``` + +You should see the following output: +``` +$ mkdocs serve +INFO - Building documentation... +INFO - Cleaning site directory +INFO - Documentation built in 0.02 seconds +INFO - [12:00:00] Watching paths for changes: 'docs', 'mkdocs.yml' +INFO - [12:00:00] Serving on http://127.0.0.1:8000/ +``` + +You should be able to open a web browser on http://127.0.0.1:8000/ and see all of the files you have pulled down from the repository, and they will automatically update on the local web server as you make any file saves to your local copy of the repository. + +>Press CTRL+C to exit the mkdocs server + +**Project development branches on GitHub** + +If you make changes to your local copies of the files and want to "push" them back up to the GitHub repository, there are currently three branches being used for development / release: + +- commits: This is the branch that all community contributions should be pushed to. +- preview: The review committee will pull changes which have been uploaded to the commit branch, into the preview branch, in order to stage any updates, prior to going into the main branch. +- main: This is the "main" / production branch, that is linked to the https://MediaStack.Guide web server, and all updates will be reviewed rigoursly prior to merging from the preview branch. + + +**Viewing development / production branches on the website** + +- main: https://MediaStack.Guide +- preview: https:// +- commits: https:// + + +**Open Markdown preview window in the side window** + +In Visual Studio Code opening the Command Palette (Ctrl+Shift+P), start typing "Markdown: Open Preview to the Side" - Press Enter + + +**Environments are not working** + +If the commands for conda, pip, bash, py etc... are not working, you may need to add these folders to your "PATH" system environment variable, and restart your computer: +``` +C:\Program Files\Python311\ +C:\Program Files\Python311\Scripts\ +C:\ProgramData\Miniconda3 +C:\ProgramData\Miniconda3\Scripts +C:\ProgramData\Miniconda3\shell\condabin +``` + +**Additional guidance on how to set up Python and Conda with Visual Studio Code** + +Setup Anaconda (Python) to Work With Visual Studio Code on Windows: + - https://opensourceoptions.com/blog/setup-anaconda-python-to-work-with-visual-studio-code-on-windows/ + +Python for Visual Studio Code: + - https://docs.anaconda.com/anaconda/user-guide/tasks/integration/python-vsc/ + + +**Some guidance on how to work collaboratively with others, using Visual Studio Code and GitHub** + +Good reading on how to Collaborate on GitHub using Visual Studio Code + - https://code.visualstudio.com/docs/sourcecontrol/overview + - https://code.visualstudio.com/docs/sourcecontrol/github + - https://code.visualstudio.com/docs/sourcecontrol/faq + +signing commits +https://ona.io/home/signing-git-commits-using-your-gpg-key/ + +git config --global commit.gpgsign true diff --git a/docs/help/template.md b/docs/help/template.md new file mode 100644 index 0000000..8ffa3e0 --- /dev/null +++ b/docs/help/template.md @@ -0,0 +1,272 @@ +# Markdown Examples Used Throughout Site + +## Copy and Paste These As Needed + +For full documentation visit [mkdocs.org](https://www.mkdocs.org). + + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + +
+ +
+ + +
+ + + + +## Commands + +* `mkdocs new [dir-name]` - Create a new project. +* `mkdocs serve` - Start the live-reloading docs server. +* `mkdocs build` - Build the documentation site. +* `mkdocs -h` - Print help message and exit. + +### Third Heading + +This is the third heading. + +#### Fourth Heading + +This is the fourth heading. + +##### Fifth Heading + +This is the fifth heading. + +## Project layout + + mkdocs.yml # The configuration file. + docs/ + index.md # The documentation homepage. + ... # Other markdown pages, images and other files. + +``` mermaid +graph TB + c1-->a2 + subgraph Download Clients + a1-->a2 + end + subgraph two + b1-->b2 + end + subgraph three + c1-->c2 + end +``` + +``` mermaid +flowchart LR + subgraph Download Clients + SABnzbd-->VPN + qBittorrent-->VPN + end + subgraph Internet + VPN-->gateway[VPN Gateway] + end +``` + + +
+ +
+ + +
+ + + + + +!!! note "This is a note code fence" + + Select something below: + + FOLDER_FOR_CONFIGS + FOLDER_FOR_MEDIA + + + === "Linux Shell" + + ``` bash + export FOLDER_FOR_CONFIGS=/home/geekau/docker + export FOLDER_FOR_MEDIA=/home/geekau/media-stack + + sudo -E mkdir -p $FOLDER_FOR_CONFIGS/{authelia,bazarr,ddns-updater,gluetun,heimdall,jellyfin,jellyseerr,lidarr,mylar3,portainer,prowlarr,qbittorrent,radarr,readarr,sabnzbd,sonarr,swag,tdarr,tdarr_transcode_cache,unpackerr,whisparr} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/media/{adult,anime,audio,books,comics,movies,music,photos,podcasts,series,software} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/usenet/{adult,anime,audio,books,comics,movies,music,prowlarr,podcasts,series,software} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/torrents/{adult,anime,audio,books,comics,movies,music,prowlarr,podcasts,series,software} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/watch + sudo -E chmod -R 775 $FOLDER_FOR_CONFIGS $FOLDER_FOR_MEDIA + sudo -E chown -R geekau:geekau $FOLDER_FOR_CONFIGS $FOLDER_FOR_MEDIA + ``` + + === "Windows PowerShell" + + ``` powershell + set FOLDER_FOR_CONFIGS=D:\Storage\Docker + set FOLDER_FOR_MEDIA=D:\Storage\Media-Stack + + FOR /D %I IN (authelia bazarr ddns-updater gluetun heimdall jellyfin jellyseerr lidarr mylar3 portainer prowlarr qbittorrent radarr readarr sabnzbd sonarr swag tdarr tdarr_transcode_cache unpackerr whisparr) DO mkdir %FOLDER_FOR_CONFIGS%\%I + FOR /D %I IN (adult anime audio books comics movies music photos podcasts series software) DO mkdir %FOLDER_FOR_MEDIA%\media\%I + FOR /D %I IN (adult anime audio books comics movies music podcasts prowlarr series software) DO mkdir %FOLDER_FOR_MEDIA%\usenet\%I + FOR /D %I IN (adult anime audio books comics movies music podcasts prowlarr series software) DO mkdir %FOLDER_FOR_MEDIA%\torrents\%I + mkdir %FOLDER_FOR_MEDIA%\watch + ``` + + === "MacOS Shell" + + ``` bash + Waiting Testing + ``` + + === "Synology NAS (SSH)" + + ``` bash + Synology - ADD HERE + ``` + + + + +!!! danger + + === "C" + + ``` c + #include + + int main(void) { + printf("Hello world!\n"); + return 0; + } + ``` + + === "C++" + + ``` c++ + #include + + int main(void) { + std::cout << "Hello world!" << std::endl; + return 0; + } + ``` + + + +![Image title](https://dummyimage.com/600x400/eee/aaa){ loading=lazy,align=left } + +++ctrl+alt+del++ + +++ctrl+shift+d++ + +
+ ![Image title](https://dummyimage.com/600x400/){ width="300" } +
Image caption
+
+ +!!! note + + This is a Note field... copy this example + +--- + +!!! abstract + + This is an Abstract field... copy this example + +--- + +!!! info + + This is an Info field... copy this example + + === "Linux Shell" + ``` shell + This is linux code + ``` + === "Windows Prompt" + ``` powershell + This is linux code + ``` + === "Synology SSH" + ``` putty + This is linux code + ``` + +--- + +!!! tip + + This is a Tip field... copy this example + +--- + +!!! success + + This is a Success field... copy this example + +--- + +!!! question + + This is a Question field... copy this example + +--- + +!!! warning + + This is a Warning field... copy this example + +--- + +!!! failure + + This is a Failure field... copy this example + +--- + +!!! danger + + This is a Danger field... copy this example + +--- + +!!! bug + + This is a Bug field... copy this example + +--- + +!!! example + + This is an Example field... copy this example + +--- + +!!! quote + + This is a Quote field... copy this example + +--- + + diff --git a/docs/img/docker-compose-install-windows.png b/docs/img/docker-compose-install-windows.png new file mode 100644 index 0000000..64bb7e5 Binary files /dev/null and b/docs/img/docker-compose-install-windows.png differ diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/docs/img/mylar-enable-imported-indexers.png b/docs/img/mylar-enable-imported-indexers.png new file mode 100644 index 0000000..d0a7047 Binary files /dev/null and b/docs/img/mylar-enable-imported-indexers.png differ diff --git a/docs/img/prowlarr-add-app-applications.png b/docs/img/prowlarr-add-app-applications.png new file mode 100644 index 0000000..98fa6b5 Binary files /dev/null and b/docs/img/prowlarr-add-app-applications.png differ diff --git a/docs/img/prowlarr-add-flaresolverr.png b/docs/img/prowlarr-add-flaresolverr.png new file mode 100644 index 0000000..44f673b Binary files /dev/null and b/docs/img/prowlarr-add-flaresolverr.png differ diff --git a/docs/img/prowlarr-add-indexer.png b/docs/img/prowlarr-add-indexer.png new file mode 100644 index 0000000..ece40ea Binary files /dev/null and b/docs/img/prowlarr-add-indexer.png differ diff --git a/docs/img/prowlarr-add-nzb-indexer.png b/docs/img/prowlarr-add-nzb-indexer.png new file mode 100644 index 0000000..277d4e4 Binary files /dev/null and b/docs/img/prowlarr-add-nzb-indexer.png differ diff --git a/docs/img/prowlarr-add-torrent-indexer.png b/docs/img/prowlarr-add-torrent-indexer.png new file mode 100644 index 0000000..fd10d9a Binary files /dev/null and b/docs/img/prowlarr-add-torrent-indexer.png differ diff --git a/docs/img/prowlarr-authentication.png b/docs/img/prowlarr-authentication.png new file mode 100644 index 0000000..fb4cfac Binary files /dev/null and b/docs/img/prowlarr-authentication.png differ diff --git a/docs/img/prowlarr-connect-app-applications.png b/docs/img/prowlarr-connect-app-applications.png new file mode 100644 index 0000000..db61e6d Binary files /dev/null and b/docs/img/prowlarr-connect-app-applications.png differ diff --git a/docs/img/prowlarr-date-language.png b/docs/img/prowlarr-date-language.png new file mode 100644 index 0000000..0e96a01 Binary files /dev/null and b/docs/img/prowlarr-date-language.png differ diff --git a/docs/img/prowlarr-flaresolverr-config.png b/docs/img/prowlarr-flaresolverr-config.png new file mode 100644 index 0000000..0f29041 Binary files /dev/null and b/docs/img/prowlarr-flaresolverr-config.png differ diff --git a/docs/img/prowlarr-flaresolverr-list.png b/docs/img/prowlarr-flaresolverr-list.png new file mode 100644 index 0000000..544d60b Binary files /dev/null and b/docs/img/prowlarr-flaresolverr-list.png differ diff --git a/docs/img/prowlarr-indexer-advanced.png b/docs/img/prowlarr-indexer-advanced.png new file mode 100644 index 0000000..84501c3 Binary files /dev/null and b/docs/img/prowlarr-indexer-advanced.png differ diff --git a/docs/img/prowlarr-indexer-listing.png b/docs/img/prowlarr-indexer-listing.png new file mode 100644 index 0000000..c611acb Binary files /dev/null and b/docs/img/prowlarr-indexer-listing.png differ diff --git a/docs/img/prowlarr-list-app-applications.png b/docs/img/prowlarr-list-app-applications.png new file mode 100644 index 0000000..4311c64 Binary files /dev/null and b/docs/img/prowlarr-list-app-applications.png differ diff --git a/docs/img/prowlarr-qbittorrent-add-mapped-categories.png b/docs/img/prowlarr-qbittorrent-add-mapped-categories.png new file mode 100644 index 0000000..cdb261b Binary files /dev/null and b/docs/img/prowlarr-qbittorrent-add-mapped-categories.png differ diff --git a/docs/img/prowlarr-qbittorrent-list-mapped-categories.png b/docs/img/prowlarr-qbittorrent-list-mapped-categories.png new file mode 100644 index 0000000..17037ac Binary files /dev/null and b/docs/img/prowlarr-qbittorrent-list-mapped-categories.png differ diff --git a/docs/img/prowlarr-sabnzbd-add-mapped-categories.png b/docs/img/prowlarr-sabnzbd-add-mapped-categories.png new file mode 100644 index 0000000..905da04 Binary files /dev/null and b/docs/img/prowlarr-sabnzbd-add-mapped-categories.png differ diff --git a/docs/img/prowlarr-sabnzbd-list-mapped-categories.png b/docs/img/prowlarr-sabnzbd-list-mapped-categories.png new file mode 100644 index 0000000..d3353b8 Binary files /dev/null and b/docs/img/prowlarr-sabnzbd-list-mapped-categories.png differ diff --git a/docs/img/prowlarr-test-search.png b/docs/img/prowlarr-test-search.png new file mode 100644 index 0000000..a1aa8bf Binary files /dev/null and b/docs/img/prowlarr-test-search.png differ diff --git a/docs/img/qbittorrent-bittorrent.png b/docs/img/qbittorrent-bittorrent.png new file mode 100644 index 0000000..de47f6f Binary files /dev/null and b/docs/img/qbittorrent-bittorrent.png differ diff --git a/docs/img/qbittorrent-category-1.png b/docs/img/qbittorrent-category-1.png new file mode 100644 index 0000000..bc02529 Binary files /dev/null and b/docs/img/qbittorrent-category-1.png differ diff --git a/docs/img/qbittorrent-category-2.png b/docs/img/qbittorrent-category-2.png new file mode 100644 index 0000000..0e12a75 Binary files /dev/null and b/docs/img/qbittorrent-category-2.png differ diff --git a/docs/img/qbittorrent-category-3.png b/docs/img/qbittorrent-category-3.png new file mode 100644 index 0000000..81670ff Binary files /dev/null and b/docs/img/qbittorrent-category-3.png differ diff --git a/docs/img/qbittorrent-completed.png b/docs/img/qbittorrent-completed.png new file mode 100644 index 0000000..7df3ee2 Binary files /dev/null and b/docs/img/qbittorrent-completed.png differ diff --git a/docs/img/qbittorrent-connection.png b/docs/img/qbittorrent-connection.png new file mode 100644 index 0000000..b59a879 Binary files /dev/null and b/docs/img/qbittorrent-connection.png differ diff --git a/docs/img/qbittorrent-download-client.png b/docs/img/qbittorrent-download-client.png new file mode 100644 index 0000000..c844517 Binary files /dev/null and b/docs/img/qbittorrent-download-client.png differ diff --git a/docs/img/qbittorrent-downloads.png b/docs/img/qbittorrent-downloads.png new file mode 100644 index 0000000..30f7b3a Binary files /dev/null and b/docs/img/qbittorrent-downloads.png differ diff --git a/docs/img/qbittorrent-edit-download-client.png b/docs/img/qbittorrent-edit-download-client.png new file mode 100644 index 0000000..0800433 Binary files /dev/null and b/docs/img/qbittorrent-edit-download-client.png differ diff --git a/docs/img/qbittorrent-login.png b/docs/img/qbittorrent-login.png new file mode 100644 index 0000000..f20398b Binary files /dev/null and b/docs/img/qbittorrent-login.png differ diff --git a/docs/img/qbittorrent-mylar-add-downloader.png b/docs/img/qbittorrent-mylar-add-downloader.png new file mode 100644 index 0000000..e10f900 Binary files /dev/null and b/docs/img/qbittorrent-mylar-add-downloader.png differ diff --git a/docs/img/qbittorrent-speed.png b/docs/img/qbittorrent-speed.png new file mode 100644 index 0000000..0b4537b Binary files /dev/null and b/docs/img/qbittorrent-speed.png differ diff --git a/docs/img/qbittorrent-webui.png b/docs/img/qbittorrent-webui.png new file mode 100644 index 0000000..60822b7 Binary files /dev/null and b/docs/img/qbittorrent-webui.png differ diff --git a/docs/img/radarr-certification-country-metadata.png b/docs/img/radarr-certification-country-metadata.png new file mode 100644 index 0000000..48f646e Binary files /dev/null and b/docs/img/radarr-certification-country-metadata.png differ diff --git a/docs/img/radarr-certification-country.png b/docs/img/radarr-certification-country.png new file mode 100644 index 0000000..5acdc95 Binary files /dev/null and b/docs/img/radarr-certification-country.png differ diff --git a/docs/img/radarr-date-language.png b/docs/img/radarr-date-language.png new file mode 100644 index 0000000..b3cd38c Binary files /dev/null and b/docs/img/radarr-date-language.png differ diff --git a/docs/img/radarr-display-options.png b/docs/img/radarr-display-options.png new file mode 100644 index 0000000..54384e2 Binary files /dev/null and b/docs/img/radarr-display-options.png differ diff --git a/docs/img/radarr-download-searched-media.png b/docs/img/radarr-download-searched-media.png new file mode 100644 index 0000000..affe829 Binary files /dev/null and b/docs/img/radarr-download-searched-media.png differ diff --git a/docs/img/radarr-downloaded-searched-media.png b/docs/img/radarr-downloaded-searched-media.png new file mode 100644 index 0000000..c32ddf1 Binary files /dev/null and b/docs/img/radarr-downloaded-searched-media.png differ diff --git a/docs/img/radarr-downloading-searched-media.png b/docs/img/radarr-downloading-searched-media.png new file mode 100644 index 0000000..31e378e Binary files /dev/null and b/docs/img/radarr-downloading-searched-media.png differ diff --git a/docs/img/radarr-file-management.png b/docs/img/radarr-file-management.png new file mode 100644 index 0000000..13bdcc3 Binary files /dev/null and b/docs/img/radarr-file-management.png differ diff --git a/docs/img/radarr-file-naming.png b/docs/img/radarr-file-naming.png new file mode 100644 index 0000000..9578067 Binary files /dev/null and b/docs/img/radarr-file-naming.png differ diff --git a/docs/img/radarr-import-existing-movies.png b/docs/img/radarr-import-existing-movies.png new file mode 100644 index 0000000..f0da85a Binary files /dev/null and b/docs/img/radarr-import-existing-movies.png differ diff --git a/docs/img/radarr-import-unmapped-folders.png b/docs/img/radarr-import-unmapped-folders.png new file mode 100644 index 0000000..81f4182 Binary files /dev/null and b/docs/img/radarr-import-unmapped-folders.png differ diff --git a/docs/img/radarr-imported-mapped-media.png b/docs/img/radarr-imported-mapped-media.png new file mode 100644 index 0000000..ed5532c Binary files /dev/null and b/docs/img/radarr-imported-mapped-media.png differ diff --git a/docs/img/radarr-list-imported-indexers.png b/docs/img/radarr-list-imported-indexers.png new file mode 100644 index 0000000..5f98ed2 Binary files /dev/null and b/docs/img/radarr-list-imported-indexers.png differ diff --git a/docs/img/radarr-mapped-media-folder.png b/docs/img/radarr-mapped-media-folder.png new file mode 100644 index 0000000..96d32e6 Binary files /dev/null and b/docs/img/radarr-mapped-media-folder.png differ diff --git a/docs/img/radarr-metadata.png b/docs/img/radarr-metadata.png new file mode 100644 index 0000000..6e8433b Binary files /dev/null and b/docs/img/radarr-metadata.png differ diff --git a/docs/img/radarr-search-missing-media-files.png b/docs/img/radarr-search-missing-media-files.png new file mode 100644 index 0000000..6dc6d8e Binary files /dev/null and b/docs/img/radarr-search-missing-media-files.png differ diff --git a/docs/img/radarr-select-media-folder.png b/docs/img/radarr-select-media-folder.png new file mode 100644 index 0000000..ef81266 Binary files /dev/null and b/docs/img/radarr-select-media-folder.png differ diff --git a/docs/img/radarr-select-search-results.png b/docs/img/radarr-select-search-results.png new file mode 100644 index 0000000..44df90c Binary files /dev/null and b/docs/img/radarr-select-search-results.png differ diff --git a/docs/img/radarr-start-import.png b/docs/img/radarr-start-import.png new file mode 100644 index 0000000..2fc424f Binary files /dev/null and b/docs/img/radarr-start-import.png differ diff --git a/docs/img/radarr-test-import-folders.png b/docs/img/radarr-test-import-folders.png new file mode 100644 index 0000000..84e58a1 Binary files /dev/null and b/docs/img/radarr-test-import-folders.png differ diff --git a/docs/img/radarr-unmapped-folders.png b/docs/img/radarr-unmapped-folders.png new file mode 100644 index 0000000..335e299 Binary files /dev/null and b/docs/img/radarr-unmapped-folders.png differ diff --git a/docs/img/radarr-updated-media-library.png b/docs/img/radarr-updated-media-library.png new file mode 100644 index 0000000..48ebb55 Binary files /dev/null and b/docs/img/radarr-updated-media-library.png differ diff --git a/docs/img/radarr-view-media-details.png b/docs/img/radarr-view-media-details.png new file mode 100644 index 0000000..13d2603 Binary files /dev/null and b/docs/img/radarr-view-media-details.png differ diff --git a/docs/img/sabnzbd-advanced.png b/docs/img/sabnzbd-advanced.png new file mode 100644 index 0000000..f22c142 Binary files /dev/null and b/docs/img/sabnzbd-advanced.png differ diff --git a/docs/img/sabnzbd-categories.png b/docs/img/sabnzbd-categories.png new file mode 100644 index 0000000..5f26aa3 Binary files /dev/null and b/docs/img/sabnzbd-categories.png differ diff --git a/docs/img/sabnzbd-connections.png b/docs/img/sabnzbd-connections.png new file mode 100644 index 0000000..f5cad74 Binary files /dev/null and b/docs/img/sabnzbd-connections.png differ diff --git a/docs/img/sabnzbd-download-client.png b/docs/img/sabnzbd-download-client.png new file mode 100644 index 0000000..d350aec Binary files /dev/null and b/docs/img/sabnzbd-download-client.png differ diff --git a/docs/img/sabnzbd-downloading.png b/docs/img/sabnzbd-downloading.png new file mode 100644 index 0000000..6d2b16e Binary files /dev/null and b/docs/img/sabnzbd-downloading.png differ diff --git a/docs/img/sabnzbd-edit-download-client.png b/docs/img/sabnzbd-edit-download-client.png new file mode 100644 index 0000000..1dec157 Binary files /dev/null and b/docs/img/sabnzbd-edit-download-client.png differ diff --git a/docs/img/sabnzbd-folders.png b/docs/img/sabnzbd-folders.png new file mode 100644 index 0000000..6b763c8 Binary files /dev/null and b/docs/img/sabnzbd-folders.png differ diff --git a/docs/img/sabnzbd-general.png b/docs/img/sabnzbd-general.png new file mode 100644 index 0000000..9e14363 Binary files /dev/null and b/docs/img/sabnzbd-general.png differ diff --git a/docs/img/sabnzbd-mylar-add-downloader.png b/docs/img/sabnzbd-mylar-add-downloader.png new file mode 100644 index 0000000..1c4d298 Binary files /dev/null and b/docs/img/sabnzbd-mylar-add-downloader.png differ diff --git a/docs/img/sabnzbd-servers-complete.png b/docs/img/sabnzbd-servers-complete.png new file mode 100644 index 0000000..4dcc298 Binary files /dev/null and b/docs/img/sabnzbd-servers-complete.png differ diff --git a/docs/img/sabnzbd-servers.png b/docs/img/sabnzbd-servers.png new file mode 100644 index 0000000..4e5d2f0 Binary files /dev/null and b/docs/img/sabnzbd-servers.png differ diff --git a/docs/img/sabnzbd-status.png b/docs/img/sabnzbd-status.png new file mode 100644 index 0000000..f7b310b Binary files /dev/null and b/docs/img/sabnzbd-status.png differ diff --git a/docs/img/sabnzbd-wizard-complete.png b/docs/img/sabnzbd-wizard-complete.png new file mode 100644 index 0000000..bf4ea8d Binary files /dev/null and b/docs/img/sabnzbd-wizard-complete.png differ diff --git a/docs/img/sabnzbd-wizard-language.png b/docs/img/sabnzbd-wizard-language.png new file mode 100644 index 0000000..fb76f80 Binary files /dev/null and b/docs/img/sabnzbd-wizard-language.png differ diff --git a/docs/img/sabnzbd-wizard-server.png b/docs/img/sabnzbd-wizard-server.png new file mode 100644 index 0000000..1fb7a7e Binary files /dev/null and b/docs/img/sabnzbd-wizard-server.png differ diff --git a/docs/img/screenshot.png b/docs/img/screenshot.png new file mode 100644 index 0000000..e69de29 diff --git a/docs/img/windows-docker-desktop-enable-ubuntu.png b/docs/img/windows-docker-desktop-enable-ubuntu.png new file mode 100644 index 0000000..24e690f Binary files /dev/null and b/docs/img/windows-docker-desktop-enable-ubuntu.png differ diff --git a/docs/img/windows-docker-installed.png b/docs/img/windows-docker-installed.png new file mode 100644 index 0000000..8b88fab Binary files /dev/null and b/docs/img/windows-docker-installed.png differ diff --git a/docs/img/windows-install-wsl-update.png b/docs/img/windows-install-wsl-update.png new file mode 100644 index 0000000..1e55c4f Binary files /dev/null and b/docs/img/windows-install-wsl-update.png differ diff --git a/docs/img/windows-install-wsl.png b/docs/img/windows-install-wsl.png new file mode 100644 index 0000000..6d06fa2 Binary files /dev/null and b/docs/img/windows-install-wsl.png differ diff --git a/docs/img/windows-wsl-installed.png b/docs/img/windows-wsl-installed.png new file mode 100644 index 0000000..3d589bf Binary files /dev/null and b/docs/img/windows-wsl-installed.png differ diff --git a/docs/index.md b/docs/index.md index 000ea34..ef05025 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,17 +1,67 @@ -# Welcome to MkDocs +# Welcome to MediaStack.Guide -For full documentation visit [mkdocs.org](https://www.mkdocs.org). +With many people owning digital media such as CDs, DVD, and Blu-ray disks, home movies, personal photos, personal music collection, its common that people want to build home media servers in order to manage and access their digital libraries from any device within their home network, their mobile devices, and even remotely when they may be away on holidays or having a lunch break at work. -## Commands +This guide will help you rapidly deploy all the applications you need in a full Docker build media stack, to operate a Jellyfin, Jellyseerr, *ARR Media Library Managers (Prowlarr / Sonarr / Radarr / Lidarr / Readarr etc..) and Tdarr Automated Media Transcoding. -* `mkdocs new [dir-name]` - Create a new project. -* `mkdocs serve` - Start the live-reloading docs server. -* `mkdocs build` - Build the documentation site. -* `mkdocs -h` - Print help message and exit. +## Why MediaStack.Guide -## Project layout +Building a good home media stack is not an easy task for people who aren't computer savy. Reasearching / picking the right applications for each role you need can be a frustrating activity if you don't know how each of the applications work, and worse, if you need to link them together to build a full home media solution. - mkdocs.yml # The configuration file. - docs/ - index.md # The documentation homepage. - ... # Other markdown pages, images and other files. +While there are many good technical sites on the Internet which discuss how to configure some of the applications, these take time to set up and configure each of the applications one-by-one, before moving on to a different website to configure the next application - there really aren't many sites dedicated to covering a "complete setup" of all the applications needed, and covering the configuration steps for all of the applications so they all work together. + +By following MediaStack.Guide, you can essentially have all of the applications downloaded and installed in less than 10 minutes using our customised Docker Compose files, then work through our detailed configuration guides to link all of the applications together, without needing a great technical understanding. + +This build is also built on Docker, its the only application / service you need to install, then you just download each application as a Docker image and deploy it... There's no issues trying to install each application individually directly onto your host operating system, and it can all be simply deleted at any time, without losing any of your media files or configuration settings. + +Our approach is simple deployment and ease of use for greater user uptick. + +> Note: Download and install times depend mostly on the speed of your Internet link. + +## Features + +- Host your media stack using Docker on any Operating System or NAS Device (Windows / Linux / Synology) +- Rapidly deploy full media stack with Docker Compose files in matter of minutes +- Stream your full media library to any media device on your home network +- 100% network encryption for all services connecting via the Internet (VPN and Zero Trust) +- Dedicated *ARR (starr) media library managers for your movies, tv shows, anime, music, comics, and books +- Access all of your media stack applications from the Internet with Nginx Reverse Proxy +- Internet access to your full media library using your own DDNS or DNS address +- Internet access secured by Cloudflare Zero Trust Network Access and Multifactor Authentication + +## Security + +MediaStack.Guide focuses heavily on privacy for individuals and provides two different security models to cater for your privacy choice: + +- Fully secured configuration - where all Internet connections are fully encrypted end-to-end, and +- Partially secured configuration - where only the Internet connections for Usenet / Torrents clients and Meta-Data servers are encrypted. + +The external / outbound VPN connection is established using the Gluetun VPN docker container, if the VPN connection fails / drops, or is stopped for any reason, then all outbound traffic is completely restricted until the VPN connection is re-established. + +You can also access your home media server from the Internet as the guide will walk you through the configuration needed to establish a Nginx reverse proxy, secured by Cloudflare's Zero Trust Network Access framework, digital SSL certificates, with integrated Multifactor Authentication (MFA) for anyone connecting from the Internet. + +!!! note "Note: Remote access from the Internet requires a valid domain name" + + In order to connect to your home network using the Nginx reverse proxy and Cloudflare zero trust infrastructure, you will need a domain name, either one you register and pay for yourself, or you can register with many of the free DDNS providers available on the Internet. + + The domain name is required in order for free SSL certificates to be installed on your external connection, using Let's Encrypt or ZeroSSL certificate providers. + +## Disclaimer + +### Warranties + +MediaStack.Guide pulls together over 20 different open source applications, in order to provide the best components for your home based media stack. While the applications chosen for MediaStack.Guide are all excellent products, they are open source and many of them are developed by volunteers / contributors, and don't come with any warranties or consumer protection, additionally, these applications have been containerised into Docker images so they are easier to download, configure and deploy. + +While we have taken great care and time to test all of these applications so they work together to provide the best media guide we can for people to follow, the information on this website is for general informational purposes only. MediaStack.Guide makes no representation or warranty, express or implied. Your use of the site is solely at your own risk. We will provide links to websites and support forums for the applications we discuss throughout this guide, so any expert help outside of the scope of this website can be followed to the application developers. + +### Piracy Notice + +The intent of MediaStack.Guide is to guide you through the steps needed to setup and configure a home media stack, so you can host your own digital media (movies / picture / music / literature), or other digital media where you have rights to host and view that media. MediaStack.Guide also provides steps on how to access and download digital media from the Internet, where you may need to restore missing / corrupted copies of digital media you have legal rights to do, or replace it with better qualities (resolution / sound). + +While you are able to purchase various copies of licensed / copyright digital media and store these in your home media libraries, your legal obligations and right to download, store and view digital media is between you and the owner of the digital media. Your downloading and use of licensed digital media is solely at your own risk. + +!!! warning "Warning: Piracy Notice" + + This guide is not about, nor promotes, the illegal piracy of digital media content from their respected / licensed owners. + + This guide assumes no responsibility for users who may access or download digital media content, which they do not have legal rights. diff --git a/docs/installation/collective-install.md b/docs/installation/collective-install.md new file mode 100644 index 0000000..80c97a9 --- /dev/null +++ b/docs/installation/collective-install.md @@ -0,0 +1,20 @@ +# Collective Docker Compose Installation + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + +sudo docker compose --file docker-compose-mediastack.yaml --env-file docker-compose.env up -d + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three diff --git a/docs/installation/customising-environment.md b/docs/installation/customising-environment.md new file mode 100644 index 0000000..961f2eb --- /dev/null +++ b/docs/installation/customising-environment.md @@ -0,0 +1,516 @@ +# Docker Environment File + +The docker applications are deployed and configured using an environment file, which ensures all variables and settings are shared consistantly across all of the applications as they are deployed. + +The environment file is called `docker-compose.env`, and it is exactly the same file located in each of the folders + +!!! note "File: docker-compose.env                     <-- Default Configuration File" + + ``` + ################################################################################# + ################################################################################# + ################################################################################# + ## + ## Docker Compose Environment Variable file for Jellyfin / *ARR Media Stack + ## + ## Update any of the environment variables below as required. + ## + ## It is highly recommended Linux users set up a "docker" user, so the + ## applications can access the local filesystem with this user's access + ## privileges. Use PUID / PGID to map user access between the Docker apps + ## and local filesystem. + ## + ## The MediaStack Guide is located at https://mediastake.guide + ## + ################################################################################# + ################################################################################# + ################################################################################# + + #Name of the project in Docker + COMPOSE_PROJECT_NAME=mediastack + + # This is the network subnet which will be used inside the docker "media_network", change as required. + # LOCAL_SUBNET is your home network and is needed so the VPN client allows access to your home computers. + DOCKER_SUBNET=172.28.10.0/24 + DOCKER_GATEWAY=172.28.10.1 + LOCAL_SUBNET=192.168.1.0/24 # Update for your home network + LOCAL_DOCKER_IP=192.168.1.10 # Update for your home network + + # Each of the "*ARR" applications have been configured so the theme can be changed to your needs. + # Refer to Theme Park for more info / options: https://docs.theme-park.dev/theme-options/aquamarine/ + TP_THEME=nord + + # These are the folders on your local host computer / NAS running docker, they MUST exist + # and have correct permissions for PUID and PGUI prior to running the docker compose. + # + # Use the commands in the Guide to create all the sub-folders in each of these folders. + + # Host Data Folders - Will accept Linux, Windows, NAS folders. + # Make sure these folders exists before running the "docker compose" command. + FOLDER_FOR_MEDIA=/mediastack # Update for your folders + FOLDER_FOR_DATA=/mediastackdata # Update for your folders + + # File access, date and time details for the containers / applications to use. + # Run "sudo id docker" on host computer to find PUID / PGID and update these to suit. + PUID=1000 + PGID=1000 + UMASK=0002 + TIMEZONE=Europe/Zurich + + # Update your own Internet VPN provide details below + # Online documentation: https://github.com/qdm12/gluetun-wiki/tree/main/setup/providers + VPN_TYPE=openvpn + VPN_SERVICE_PROVIDER=VPN provider name + VPN_USERNAME= + VPN_PASSWORD= + + SERVER_COUNTRIES= # Comma separated list of countries + SERVER_REGIONS= # Comma separated list of regions + SERVER_CITIES= # Comma separated list of server cities + SERVER_HOSTNAMES= # Comma separated list of server hostnames + SERVER_CATEGORIES= # Comma separated list of server categories + + # Fill in this item ONLY if you're using a custom OpenVPN configuration + # Should be inside gluetun data folder - Example: /gluetun/custom-openvpn.conf + # You can then edit it inside the FOLDER_FOR_DATA location for gluetun. + OPENVPN_CUSTOM_CONFIG= + + # Fill in these items ONLY if you change VPN_TYPE to "wireguard" + VPN_ENDPOINT_IP= + VPN_ENDPOINT_PORT= + WIREGUARD_PUBLIC_KEY= + WIREGUARD_PRIVATE_KEY= + WIREGUARD_PRESHARED_KEY= + WIREGUARD_ADDRESSES= + + # These are the default ports used to access each of the application in your web browser. + # You can safely change these if you need, but they can't conflict with other active ports. + QBIT_PORT_TCP=6881 + QBIT_PORT_UDP=6881 + FLARESOLVERR_PORT=8191 + + TDARR_SERVER_PORT=8266 + WEBUI_PORT_TDARR=8265 + + WEBUI_PORT_BAZARR=6767 + WEBUI_PORT_DDNS_UPDATER=6500 + WEBUI_PORT_JELLYFIN=8096 + WEBUI_PORT_JELLYSEERR=5055 + WEBUI_PORT_LIDARR=8686 + WEBUI_PORT_MYLAR3=8090 + WEBUI_PORT_PORTAINER=9443 + WEBUI_PORT_PROWLARR=9696 + WEBUI_PORT_QBITTORRENT=8200 + WEBUI_PORT_RADARR=7878 + WEBUI_PORT_READARR=8787 + WEBUI_PORT_SONARR=8989 + WEBUI_PORT_SABNZBD=8100 + WEBUI_PORT_WHISPARR=6969 + + # SWAG is configured for Reverse Proxy. Set your Internet gateway to redirect incoming ports 80 and 443 + # to the ports used below (using Docker IP Address), and they will be translated back to 80 and 443 by SWAG. + # Change these port numbers if you have conflicting services running on the Docker host computer. + + REVERSE_PROXY_PORT_HTTP=5080 + REVERSE_PROXY_PORT_HTTPS=5443 + + # SWAG REVERSE PROXY SETTINGS: + URL=your-domain-name-goes-here.com + SUBDOMAINS=wildcard + VALIDATION=dns + DNSPLUGIN=cloudflare + CERTPROVIDER= + PROPAGATION= + DUCKDNSTOKEN= + EMAIL= + ONLY_SUBDOMAINS=false + EXTRA_DOMAINS= + STAGING=false + + ``` + + + +PART 3 - Configuring the Docker Compose Environment Settings + +This implementation will use a docker compose configuration file and an accompanying environment file, containing all of the variables for the docker compose file, so it can be customised to your individual requirements. This allows complex docker builds to be rapidly deployed over and over with relative ease, and minimal input. In fact, it is quicker and easier to delete all of the docker applications and redeploy it again, rather than trying to do any fault finding when errors occur. It is also a simply way to upgrade application versions, by deleting the entire docker stack, and redeploying again using updated images. + +Download Docker Compose Media Stack - Yaml file +Download Docker Compose Media Stack - Environment file + +Below are some of the planning details / settings you need to consider, which are located inside the Environment File - they should be updated to suit your needs. + +Define Docker Stack and Local Network Details: + +You can change the subnet / gateway of the network inside docker where these applications will be deployed, if you are not experienced with docker, then leave the subnet / gateway settings alone. + +Put your internal home network details into the LOCAL_SUBNET variable, this will tell the VPN client to allow local computers on this network, they are allowed to access each of the applications inside the secure docker stack. + +DOCKER_SUBNET=172.28.10.0/24 +DOCKER_GATEWAY=172.28.10.1 +LOCAL_SUBNET=192.168.1.0/24 <-- your local / home network subnet details here + +Once the docker stack has been created and the VPN connection established, Gluetun also allows all computers on the local network, to piggy back off the VPN connection and send all web traffic from your local computer through the secure tunnel. You can change your web proxy to the IP address of your Docker host, using port 8888. A point to remember, if your Docker stack is disabled / turned off, then your web browsers will stop working until you restart the Docker host / stack, or remove the proxy setting in your web browsers. + +Set up VPN Connection for Entire Docker Stack: + +Its a mandatory requirement you have an active VPN connection, otherwise Gluetun will not establish a VPN tunnel, and there will be no data forwarded to the Internet for the entire docker stack. + +A full list of supported VPN / Wireguard providers can be found on the Gluetun wiki on the right hand side menu: Home · qdm12/gluetun Wiki + +Gluetun also supports custom VPN configurations if you have alternate VPN setups, the docker compose file has the necessary variables if you need to set up a custom VPN connection, including Wireguard. + +VPN_SERVICE_PROVIDER=VPN provider name +VPN_USERNAME= +VPN_PASSWORD= +SERVER_REGION= + +Main Folders For Media and Docker Persistent Configurations: + +This is the most important component of your media server, were data is going to be stored, and how all the different Docker applications are going to access the different media / configuration files. + +When you set up folders / volumes on the host computer, you need to map them in the Docker configuration, so the applications can access the data. The docker compose file has already set up all the correct folder mappings between the host computer and docker applications by using environment variables in the YAML file, however you will need to update the variables below so the the docker compose build knows which folders to map. + +When considering media storage, you also need to consider files are going to be downloaded by the Docker applications and moved between folders, which are actually being moved by the underlaying host computer. So you need to consider what happens when moving a 10GB file between two folders inside different Docker applications, may in fact be getting transferred to different HDDs / Filesystems / Volumes, on the host system - this can greatly slow down the performance of disk operations and docker performance. + +It is highly recommended the locations you choose for the MEDIA, TORRENTS, USENET, and WATCH folders, are located on the same HDD / Volume / Partition on the local host computer. The Docker stack has been carefully planned, and as long as these host folders are using these principles, then the Docker application will take advantage of Atomic Moves (instant) inside the containers. + +FOLDER_FOR_DOCKER_DATA= # Folder to store persistent configuration settings for all the docker applications +FOLDER_FOR_MEDIA= # Folder where root of media library exists +FOLDER_FOR_TORRENTS= # Folder where all torrent files will be downloaded (Transmission) +FOLDER_FOR_USENET= # Folder where all NZB Usenet files will be downloaded (NZBGet) +FOLDER_FOR_WATCH= # Folder to place NZB and Torrent files for manual downloading + +The following table provides examples on how the folders located on the Host computer, will be mapped to the folders inside the Docker containers. + + +Environment Variable:​ +Synology Example:​ +Linux Example:​ +Windows Example:​ +Docker Path:​ +FOLDER_FOR_DOCKER_DATA /volume1/docker /opt/docker D:\Docker Differs by container +FOLDER_FOR_MEDIA /volume1/media /opt/media D:\Media /data/media +FOLDER_FOR_TORRENTS /volume1/data/torrents /opt/torrents D:\Torrents /data/torrents +FOLDER_FOR_USENET /volume1/data/usenet /opt/usenet D:\Usenet /data/usenet +FOLDER_FOR_WATCH /volume1/data/watch /opt/watch D:\Watch /data/watch + +You need to define your own folders for Synology / Linux / Windows, however the locations you define in the variables, will be mapped to the docker application as per the Docker Path column. + +NOTE: It is recommended the folders you use on the host computer, remain empty until completing the entire guide and setting up all the applications. So if you plan to use folder names that current have media, you should rename the old folders, create new ones, then copy the media into the new folders after completing this guide. + + + + + + +# Docker Media Stack +>You can download these files easily, by going to [https://github.com/geekau/mediastack](https://github.com/geekau/mediastack) then selecting "**Code**" --> "**Download Zip**". + +These Docker Compose configurations will help you rapidly deploy all the applications you need in a Docker stack, to operate a Jellyfin, Jellyseerr, Torrent, Usenet, \*ARR Media Library Managers, Reverse Proxy, MFA Authenticated Access, and Tdarr Automated Media Transcoding enabled media stack, and has been thoroughly testing on Linux, Windows and Synology NAS servers. + + +## 2 - Edit the "docker-compose.env" file, and update variables to suit your environment. + + +``` +DOCKER_SUBNET=172.28.10.0/24 +DOCKER_GATEWAY=172.28.10.1 +LOCAL_SUBNET=192.168.1.0/24 +LOCAL_DOCKER_IP=192.168.1.123 +``` + + +### Docker Host Folders Locations: +Add the folder locations to the ENV file, where your docker configurations and media / downloads will be stored: +>Folders need to exist before running "docker compose" commands. Valid choices are Linux, Windows or NAS folder naming conventions. +``` +FOLDER_FOR_MEDIA=/mediastack +FOLDER_FOR_DATA=/mediastackdata +``` + +### At Linux / Synology terminal, use the "id" command to identify user ID and group ID. +``` +sudo id username +uid=1000(username) gid=1000(username) groups=1000(username) +``` +Update the ENV file with these details: +``` +PUID=1000 <-- Update this value from "id" command +PGID=1000 <-- Update this value from "id" command +TIMEZONE=Australia/Brisbane +``` +Update your local Timezone using this list: [List of Timezone Database - Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) + +### Update your VPN Service Provider details for Gluetun to create VPN tunnel. +Add your VPN service provider details. +>If you don't have a VPN service provider configured, Gluetun will not establish a secure VPN tunnel, and will not allow any network traffic out onto the Internet. +``` +VPN_SERVICE_PROVIDER=VPN provider name +VPN_USERNAME= +VPN_PASSWORD= +SERVER_REGION= +``` +== **All containers are initally configured to sit behind the VPN connection for security / privacy. If you want the containers to have direct Internet access, follow the steps in each of the YAML files to change the network configuration, and restart the container.** == + + + + + +**PART 3 - Configuring the Docker Compose Environment Settings** + +This implementation will use a docker compose configuration file and an accompanying environment file, containing all of the variables for the docker compose file, so it can be customised to your individual requirements. This allows complex docker builds to be rapidly deployed over and over with relative ease, and minimal input. In fact, it is quicker and easier to delete all of the docker applications and redeploy it again, rather than trying to do any fault finding when errors occur. It is also a simply way to upgrade application versions, by deleting the entire docker stack, and redeploying again using updated images. + +[**Download Docker Compose Media Stack - Yaml file**](https://github.com/geekau/mediastack/blob/main/docker-compose-mediastack.yaml) +[**Download Docker Compose Media Stack - Environment file**](https://github.com/geekau/mediastack/blob/main/docker-compose-mediastack.env) + +Below are some of the planning details / settings you need to consider, which are located inside the Environment File - they should be updated to suit your needs. + +**Define Docker Stack and Local Network Details:** + +You can change the subnet / gateway of the network inside docker where these applications will be deployed, if you are not experienced with docker, then leave the subnet / gateway settings alone. + +Put your internal home network details into the **LOCAL\_SUBNET** variable, this will tell the VPN client to allow local computers on this network, they are allowed to access each of the applications inside the secure docker stack. + +**DOCKER\_SUBNET**\=172.28.10.0/24 +**DOCKER\_GATEWAY**\=172.28.10.1 +**LOCAL\_SUBNET**\=192.168.1.0/24 <-- your local / home network subnet details here + +Once the docker stack has been created and the VPN connection established, Gluetun also allows all computers on the local network, to piggy back off the VPN connection and send all web traffic from your local computer through the secure tunnel. You can change your web proxy to the IP address of your Docker host, using port 8888. A point to remember, if your Docker stack is disabled / turned off, then your web browsers will stop working until you restart the Docker host / stack, or remove the proxy setting in your web browsers. + +**Set up VPN Connection for Entire Docker Stack:** + +Its a mandatory requirement you have an active VPN connection, otherwise Gluetun will not establish a VPN tunnel, and there will be no data forwarded to the Internet for the entire docker stack. + +A full list of supported VPN / Wireguard providers can be found on the Gluetun wiki on the right hand side menu: [Home · qdm12/gluetun Wiki](https://github.com/qdm12/gluetun/wiki) + +Gluetun also supports custom VPN configurations if you have alternate VPN setups, the docker compose file has the necessary variables if you need to set up a custom VPN connection, including Wireguard. + +**VPN\_SERVICE\_PROVIDER**\=VPN provider name +**VPN\_USERNAME**\= +**VPN\_PASSWORD**\= +**SERVER\_REGION**\= + +**Main Folders For Media and Docker Persistent Configurations:** + +This is the most important component of your media server, were data is going to be stored, and how all the different Docker applications are going to access the different media / configuration files. + +When you set up folders / volumes on the host computer, you need to map them in the Docker configuration, so the applications can access the data. The docker compose file has already set up all the correct folder mappings between the host computer and docker applications by using environment variables in the YAML file, however you will need to update the variables below so the the docker compose build knows which folders to map. + +When considering media storage, you also need to consider files are going to be downloaded by the Docker applications and moved between folders, which are actually being moved by the underlaying host computer. So you need to consider what happens when moving a 10GB file between two folders inside different Docker applications, may in fact be getting transferred to different HDDs / Filesystems / Volumes, on the host system - this can greatly slow down the performance of disk operations and docker performance. + +It is highly recommended the locations you choose for the MEDIA, TORRENTS, USENET, and WATCH folders, are located on the same HDD / Volume / Partition on the local host computer. The Docker stack has been carefully planned, and as long as these host folders are using these principles, then the Docker application will take advantage of Atomic Moves (instant) inside the containers. + +**FOLDER\_FOR\_DOCKER\_DATA**\= # Folder to store persistent configuration settings for all the docker applications +**FOLDER\_FOR\_MEDIA**\= # Folder where root of media library exists +**FOLDER\_FOR\_TORRENTS**\= # Folder where all torrent files will be downloaded (Transmission) +**FOLDER\_FOR\_USENET**\= # Folder where all NZB Usenet files will be downloaded (NZBGet) +**FOLDER\_FOR\_WATCH**\= # Folder to place NZB and Torrent files for manual downloading + +The following table provides examples on how the folders located on the Host computer, will be mapped to the folders inside the Docker containers. + + + +Environment Variable:​ + +Synology Example:​ + +Linux Example:​ + +Windows Example:​ + +Docker Path:​ + +FOLDER\_FOR\_DOCKER\_DATA + +/volume1/docker + +/opt/docker + +D:\\Docker + +Differs by container + +FOLDER\_FOR\_MEDIA + +/volume1/media + +/opt/media + +D:\\Media + +/data/media + +FOLDER\_FOR\_TORRENTS + +/volume1/data/torrents + +/opt/torrents + +D:\\Torrents + +/data/torrents + +FOLDER\_FOR\_USENET + +/volume1/data/usenet + +/opt/usenet + +D:\\Usenet + +/data/usenet + +FOLDER\_FOR\_WATCH + +/volume1/data/watch + +/opt/watch + +D:\\Watch + +/data/watch + + +You need to define your own folders for Synology / Linux / Windows, however the locations you define in the variables, will be mapped to the docker application as per the Docker Path column. + +**NOTE:** It is recommended the folders you use on the host computer, remain empty until completing the entire guide and setting up all the applications. So if you plan to use folder names that current have media, you should rename the old folders, create new ones, then copy the media into the new folders after completing this guide. + + + +**PART 4 - Folders for Media Categories and Docker Applications** + +Now that you have identified the folders where you are going to locate your media types, download files, and docker configuration settings, you need to set up the sub-folders in each of these areas, so they are consistent between the host computer and each of the docker containers. + +Synology Users: Ideally you should create these folders in "File Station", but it will take a while to do them individually, so you can do them using SSH, logged into the Synology OS. Refer to the Docker / Portainer guide if needed, and minimise the amount of unnecessary commands executed while in SSH session: [Tutorial - Ultimate Starter - Docker, Portainer, Portainer Agents, and Auto-Updating Everything with Watchtower](https://www.synoforum.com/resources/ultimate-starter-docker-portainer-portainer-agents-and-auto-updating-everything-with-watchtower.183/) + + +**FOLDER\_FOR\_DOCKER\_DATA Sub-Folders:** + +These folders will hold all the persistent configuration settings for each of the docker containers being deployed in the docker compose file. If one of the containers / applications become corrupt, you can delete it and redeploy it using the same configuration information. If you want to reset the configuration for one of the applications, you just need to delete the contents of the respective folder and restart the container. + +Synology NAS Users: Make sure a suitable volume / share is created using DSM before executing by SSH. + +Code: + + cd /volume1/docker + pwd # check you're in correct folder before next command + sudo mkdir gluetun jellyfin jellyseerr lidarr mylar nzbget prowlarr qbittorrent radarr readarr sabnzbd sonarr transmission whisparr + + +Linux Users: + +Code: + + cd /opt/docker + sudo mkdir gluetun jellyfin jellyseerr lidarr mylar nzbget prowlarr qbittorrent radarr readarr sabnzbd sonarr transmission whisparr + + +Windows Users: + +Code: + + cd D:\Docker + mkdir gluetun,jellyfin,jellyseerr,lidarr,mylar,nzbget,prowlarr,qbittorrent,radarr,readarr,sabnzbd,sonarr,transmission,whisparr + + + +**FOLDER\_FOR\_MEDIA **Sub-Folders**:** + +Each of the media subfolders will store your media based on the media category... i.e. Anime in the "anime" folder, and Movies in the "movies" folder etc... Each of the \*ARR media libraries which are responsible for managing media types, will be linked to that media folder inside the container. + +i.e. Radarr will be linked to managed the movies located in the "/data/movies" folder, which will be mapped back to the "movies" sub-folder inside FOLDER\_FOR\_MEDIA on the host computer. + +Synology NAS Users: Make sure a suitable volume / share is created using DSM before executing by SSH. + +Code: + + cd /volume1/media + pwd # check you're in correct folder before next command + sudo mkdir adult anime audio books comics movies music photos podcasts series software + + +Linux Users: + +Code: + + cd /opt/media + sudo mkdir adult anime audio books comics movies music photos podcasts series software + + +Windows Users: + +Code: + + cd D:\Media + mkdir adult,anime,audio,books,comics,movies,music,photos,podcasts,series,software + + + +**FOLDER\_FOR\_TORRENTS **Sub-Folders**:** + +The sub-folders inside the Torrent folder, is to handle category downloading by Transmission. + +Synology NAS Users: Make sure a suitable volume / share is created using DSM before executing by SSH. + +Code: + + cd /volume1/data/torrents + pwd # check you're in correct folder before next command + sudo mkdir adult anime audio books comics movies music podcasts prowlarr series software + + +Linux Users: + +Code: + + cd /opt/torrents + sudo mkdir adult anime audio books comics movies music podcasts prowlarr series software + + +Windows Users: + +Code: + + cd D:\Torrents + mkdir adult,anime,audio,books,comics,movies,music,podcasts,prowlarr,series,software + + + +**FOLDER\_FOR\_USENET **Sub-Folders**:** + +The sub-folders inside the Usenet folder, is to handle category downloading by NZBGet. + +Synology NAS Users: Make sure a suitable volume / share is created using DSM before executing by SSH. + +Code: + + cd /volume1/data/usenet + pwd # check you're in correct folder before next command + sudo mkdir adult anime audio books comics movies music podcasts prowlarr series software incomplete intermediate queue tmp scripts + + +Linux Users: + +Code: + + cd /opt/usenet + sudo mkdir adult anime audio books comics movies music podcasts prowlarr series software incomplete intermediate queue tmp scripts + + +Windows Users: + +Code: + + cd D:\Usenet + mkdir adult,anime,audio,books,comics,movies,music,podcasts,prowlarr,series,software,incomplete,intermediate,queue,tmp,scripts + + + +**FOLDER\_FOR\_WATCH **Sub-Folders**:** + +Nothing... there are no sub-folders needed for the Watch folder, however whenever you place a .nzb or .torrent file into this folder, it will automatically be picked up by either NZBGet or Transmission and commence downloading the files manually. + +Once manual .nzb and .torrent files have been downloaded by NZBGet and Transmission, they will be saved in the FOLDER\_FOR\_USENET and FOLDER\_FOR\_TORRENTS respectively. If they are media files, they will not be imported into any of the \*ARR media libraries / Jellyfin automatically, they will need to be manually imported into the media managers / Jellyfin. + +The Watch folder and manual downloading will help users who want to download none media centre oriented files, such as torrents for Ubuntu ISO files etc... then the download clients will do all the work of pulling in the files for you. \ No newline at end of file diff --git a/docs/installation/default-environment.md b/docs/installation/default-environment.md new file mode 100644 index 0000000..dc484f4 --- /dev/null +++ b/docs/installation/default-environment.md @@ -0,0 +1,222 @@ +# Docker Environment File + + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + +The docker applications are deployed and configured using an environment file, which ensures all variables and settings are shared consistantly across all of the applications as they are deployed. + +The environment file is called `docker-compose.env`, and it is exactly the same file located in each of the folders + +!!! note "File: docker-compose.env                     <-- Default Configuration File" + + ``` + ################################################################################# + ################################################################################# + ################################################################################# + ## + ## Docker Compose Environment Variable file for Jellyfin / *ARR Media Stack + ## + ## Update any of the environment variables below as required. + ## + ## It is highly recommended Linux users set up a "docker" user, so the + ## applications can access the local filesystem with this user's access + ## privileges. Use PUID / PGID to map user access between the Docker apps + ## and local filesystem. + ## + ## The MediaStack Guide is located at https://mediastake.guide + ## + ################################################################################# + ################################################################################# + ################################################################################# + + #Name of the project in Docker + COMPOSE_PROJECT_NAME=mediastack + + # This is the network subnet which will be used inside the docker "media_network", change as required. + # LOCAL_SUBNET is your home network and is needed so the VPN client allows access to your home computers. + DOCKER_SUBNET=172.28.10.0/24 + DOCKER_GATEWAY=172.28.10.1 + LOCAL_SUBNET=192.168.1.0/24 # Update for your home network + LOCAL_DOCKER_IP=192.168.1.10 # Update for your home network + + # Each of the "*ARR" applications have been configured so the theme can be changed to your needs. + # Refer to Theme Park for more info / options: https://docs.theme-park.dev/theme-options/aquamarine/ + TP_THEME=nord + + # These are the folders on your local host computer / NAS running docker, they MUST exist + # and have correct permissions for PUID and PGUI prior to running the docker compose. + # + # Use the commands in the Guide to create all the sub-folders in each of these folders. + + # Host Data Folders - Will accept Linux, Windows, NAS folders. + # Make sure these folders exists before running the "docker compose" command. + FOLDER_FOR_MEDIA=/mediastack # Update for your folders + FOLDER_FOR_DATA=/mediastackdata # Update for your folders + + # File access, date and time details for the containers / applications to use. + # Run "sudo id docker" on host computer to find PUID / PGID and update these to suit. + PUID=1000 + PGID=1000 + UMASK=0002 + TIMEZONE=Europe/Zurich + + # Update your own Internet VPN provide details below + # Online documentation: https://github.com/qdm12/gluetun-wiki/tree/main/setup/providers + VPN_TYPE=openvpn + VPN_SERVICE_PROVIDER=VPN provider name + VPN_USERNAME= + VPN_PASSWORD= + + SERVER_COUNTRIES= # Comma separated list of countries + SERVER_REGIONS= # Comma separated list of regions + SERVER_CITIES= # Comma separated list of server cities + SERVER_HOSTNAMES= # Comma separated list of server hostnames + SERVER_CATEGORIES= # Comma separated list of server categories + + # Fill in this item ONLY if you're using a custom OpenVPN configuration + # Should be inside gluetun data folder - Example: /gluetun/custom-openvpn.conf + # You can then edit it inside the FOLDER_FOR_DATA location for gluetun. + OPENVPN_CUSTOM_CONFIG= + + # Fill in these items ONLY if you change VPN_TYPE to "wireguard" + VPN_ENDPOINT_IP= + VPN_ENDPOINT_PORT= + WIREGUARD_PUBLIC_KEY= + WIREGUARD_PRIVATE_KEY= + WIREGUARD_PRESHARED_KEY= + WIREGUARD_ADDRESSES= + + # These are the default ports used to access each of the application in your web browser. + # You can safely change these if you need, but they can't conflict with other active ports. + QBIT_PORT_TCP=6881 + QBIT_PORT_UDP=6881 + FLARESOLVERR_PORT=8191 + + TDARR_SERVER_PORT=8266 + WEBUI_PORT_TDARR=8265 + + WEBUI_PORT_BAZARR=6767 + WEBUI_PORT_DDNS_UPDATER=6500 + WEBUI_PORT_JELLYFIN=8096 + WEBUI_PORT_JELLYSEERR=5055 + WEBUI_PORT_LIDARR=8686 + WEBUI_PORT_MYLAR3=8090 + WEBUI_PORT_PORTAINER=9443 + WEBUI_PORT_PROWLARR=9696 + WEBUI_PORT_QBITTORRENT=8200 + WEBUI_PORT_RADARR=7878 + WEBUI_PORT_READARR=8787 + WEBUI_PORT_SONARR=8989 + WEBUI_PORT_SABNZBD=8100 + WEBUI_PORT_WHISPARR=6969 + + # SWAG is configured for Reverse Proxy. Set your Internet gateway to redirect incoming ports 80 and 443 + # to the ports used below (using Docker IP Address), and they will be translated back to 80 and 443 by SWAG. + # Change these port numbers if you have conflicting services running on the Docker host computer. + + REVERSE_PROXY_PORT_HTTP=5080 + REVERSE_PROXY_PORT_HTTPS=5443 + + # SWAG REVERSE PROXY SETTINGS: + URL=your-domain-name-goes-here.com + SUBDOMAINS=wildcard + VALIDATION=dns + DNSPLUGIN=cloudflare + CERTPROVIDER= + PROPAGATION= + DUCKDNSTOKEN= + EMAIL= + ONLY_SUBDOMAINS=false + EXTRA_DOMAINS= + STAGING=false + ``` + + + +PART 3 - Configuring the Docker Compose Environment Settings + +This implementation will use a docker compose configuration file and an accompanying environment file, containing all of the variables for the docker compose file, so it can be customised to your individual requirements. This allows complex docker builds to be rapidly deployed over and over with relative ease, and minimal input. In fact, it is quicker and easier to delete all of the docker applications and redeploy it again, rather than trying to do any fault finding when errors occur. It is also a simply way to upgrade application versions, by deleting the entire docker stack, and redeploying again using updated images. + +Download Docker Compose MediaStack - Yaml file +Download Docker Compose MediaStack - Environment file + +Below are some of the planning details / settings you need to consider, which are located inside the Environment File - they should be updated to suit your needs. + +Define Docker Stack and Local Network Details: + +You can change the subnet / gateway of the network inside docker where these applications will be deployed, if you are not experienced with docker, then leave the subnet / gateway settings alone. + +Put your internal home network details into the LOCAL_SUBNET variable, this will tell the VPN client to allow local computers on this network, they are allowed to access each of the applications inside the secure docker stack. + +DOCKER_SUBNET=172.28.10.0/24 +DOCKER_GATEWAY=172.28.10.1 +LOCAL_SUBNET=192.168.1.0/24 <-- your local / home network subnet details here + +Once the docker stack has been created and the VPN connection established, Gluetun also allows all computers on the local network, to piggy back off the VPN connection and send all web traffic from your local computer through the secure tunnel. You can change your web proxy to the IP address of your Docker host, using port 8888. A point to remember, if your Docker stack is disabled / turned off, then your web browsers will stop working until you restart the Docker host / stack, or remove the proxy setting in your web browsers. + +Set up VPN Connection for Entire Docker Stack: + +Its a mandatory requirement you have an active VPN connection, otherwise Gluetun will not establish a VPN tunnel, and there will be no data forwarded to the Internet for the entire docker stack. + +A full list of supported VPN / Wireguard providers can be found on the Gluetun wiki on the right hand side menu: Home · qdm12/gluetun Wiki + +Gluetun also supports custom VPN configurations if you have alternate VPN setups, the docker compose file has the necessary variables if you need to set up a custom VPN connection, including Wireguard. + +VPN_SERVICE_PROVIDER=VPN provider name +VPN_USERNAME= +VPN_PASSWORD= +SERVER_REGION= + +Main Folders For Media and Docker Persistent Configurations: + +This is the most important component of your media server, were data is going to be stored, and how all the different Docker applications are going to access the different media / configuration files. + +When you set up folders / volumes on the host computer, you need to map them in the Docker configuration, so the applications can access the data. The docker compose file has already set up all the correct folder mappings between the host computer and docker applications by using environment variables in the YAML file, however you will need to update the variables below so the the docker compose build knows which folders to map. + +When considering media storage, you also need to consider files are going to be downloaded by the Docker applications and moved between folders, which are actually being moved by the underlaying host computer. So you need to consider what happens when moving a 10GB file between two folders inside different Docker applications, may in fact be getting transferred to different HDDs / Filesystems / Volumes, on the host system - this can greatly slow down the performance of disk operations and docker performance. + +It is highly recommended the locations you choose for the MEDIA, TORRENTS, USENET, and WATCH folders, are located on the same HDD / Volume / Partition on the local host computer. The Docker stack has been carefully planned, and as long as these host folders are using these principles, then the Docker application will take advantage of Atomic Moves (instant) inside the containers. + +FOLDER_FOR_DATA= # Folder to store persistent configuration settings for all the docker applications +FOLDER_FOR_MEDIA= # Folder where root of media library exists +FOLDER_FOR_TORRENTS= # Folder where all torrent files will be downloaded (Transmission) +FOLDER_FOR_USENET= # Folder where all NZB Usenet files will be downloaded (NZBGet) +FOLDER_FOR_WATCH= # Folder to place NZB and Torrent files for manual downloading + +The following table provides examples on how the folders located on the Host computer, will be mapped to the folders inside the Docker containers. + + +Environment Variable:​ +Synology Example:​ +Linux Example:​ +Windows Example:​ +Docker Path:​ +FOLDER_FOR_DATA /volume1/docker /opt/docker D:\Docker Differs by container +FOLDER_FOR_MEDIA /volume1/media /opt/media D:\Media /data/media +FOLDER_FOR_TORRENTS /volume1/data/torrents /opt/torrents D:\Torrents /data/torrents +FOLDER_FOR_USENET /volume1/data/usenet /opt/usenet D:\Usenet /data/usenet +FOLDER_FOR_WATCH /volume1/data/watch /opt/watch D:\Watch /data/watch + +You need to define your own folders for Synology / Linux / Windows, however the locations you define in the variables, will be mapped to the docker application as per the Docker Path column. + +NOTE: It is recommended the folders you use on the host computer, remain empty until completing the entire guide and setting up all the applications. So if you plan to use folder names that current have media, you should rename the old folders, create new ones, then copy the media into the new folders after completing this guide. + + + + diff --git a/docs/installation/individual-install.md b/docs/installation/individual-install.md new file mode 100644 index 0000000..d02ed1e --- /dev/null +++ b/docs/installation/individual-install.md @@ -0,0 +1,131 @@ +# Individual Docker Compose Installation + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + + +## 4 - Install the Docker applications individually as you need them. + +**NOTE: Gluetun MUST be installed as the first container**, as it sets up the VPN and the internal Bridge network the other containers will join (**media_network**). + + +### Deploy VPN and Internal Docker Bridge "media_network": +``` +sudo docker compose --file docker-compose-gluetun.yaml --env-file docker-compose.env up -d +``` +**NOTE - Windows users:** Do not use the "**sudo**" at the front of the commands. + +==**NOTE:** "WARNING: Found orphan containers (gluetun, qbittorrent, sabnzbd, prowlarr, prowlarr) for this project"== + +This ==WARNING== can be safely ignored, as we're loading the project apps one at a time, rather than all in one YAML file. + +## Deploy Media Server and Content Request Manager: +``` +sudo docker compose --file docker-compose-jellyfin.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-jellyseerr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-plex.yaml --env-file docker-compose.env up -d +``` + + +## Deploy Index Manager and Media Library Managers: +``` +sudo docker compose --file docker-compose-prowlarr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-lidarr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-mylar3.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-radarr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-readarr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-sonarr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-whisparr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-bazarr.yaml --env-file docker-compose.env up -d +``` + + +## Deploy Download Clients: +``` +sudo docker compose --file docker-compose-qbittorrent.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-sabnzbd.yaml --env-file docker-compose.env up -d +``` + + +## Deploy Archive Unpacker and Automatic Video Re-encoding: +``` +sudo docker compose --file docker-compose-unpackerr.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-tdarr.yaml --env-file docker-compose.env up -d +``` + + +## Deploy Reverse Proxy (with SSL Certbot) and Cloudflare Proxy +``` +sudo docker compose --file docker-compose-swag.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-authelia.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-heimdall.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-ddns-updater.yaml --env-file docker-compose.env up -d +sudo docker compose --file docker-compose-flaresolverr.yaml --env-file docker-compose.env up -d +``` +>The "your-domain-name.com" / IP Address validation is performed when the container is started for the first time. Nginx won't be up and start the web server, until ssl certs are successfully generated and installed. + +## Deploy Portainer-CE to View Docker via GUI +``` +sudo docker compose --file docker-compose-portainer.yaml --env-file docker-compose.env up -d +``` + + + + + + + + +**PART 6 - Deploying the Docker Compose Media Stack** + + +When you deploy the docker compose build, it will download 12 Docker images from the public DockerHub repository before building the Docker containers and secure network. As its the first time you've deployed the docker compose stack, it will take a few minutes to download the necessary Docker images. If you need to redeploy the docker compose due to customisation, or fixing a fault, the containers will be instantly, as the images will still be available on your host computer. + +You can deploy the docker compose build two ways, either via the Linux terminal (PowerShell for Windows), or via Portainer if you installed it as part of the earlier Docker / Portainer guide: [Tutorial - Ultimate Starter - Docker, Portainer, Portainer Agents, and Auto-Updating Everything with Watchtower](https://www.synoforum.com/resources/ultimate-starter-docker-portainer-portainer-agents-and-auto-updating-everything-with-watchtower.183/) + +If you have issues loading the YAML file, whether its corrupt, or you've made changes, you can copy and paste the entire YAML file contents to an online YAML Validation Tool, and it will advise if, and where, there are errors in the YAML code, so you can fix it. + +**Online YAML Validator:** [Validate YAML - Online YAML Tools](https://onlineyamltools.com/validate-yaml) + +**NOTE:** Don't add any of your current media files into the folders you created above, we'll add all the media at the end in a structured process / format. + + +**Deployment via Synology SSH / Linux Terminal / Windows** **PowerShell****:** + +Deploying the docker compose media stack is exactly the same process using Synology SSH / Linux Terminal / Windows PowerShell, as the only difference between these systems is the paths for each Operating System, however we've added the paths for the relevant Operating Systems into the Environment file, so Docker will just pick this up during the build and map the local folders you've already declared. + +Execute the following command to build the docker compose media stack: + + +Code: + + sudo docker compose --file docker-compose-mediastack.yaml --project-name media_stack --env-file docker-compose-mediastack.env up + + +You will notice all of the images being downloaded from DockerHub, then all of the containers will display their log output on the screen, which is an easy way to identify if any errors occur. + +Press "CTRL+ C" to exit the docker console, if you're happy there were no errors and you want it to run in "detached mode" (i.e. in the background), the run the command again with the "-d" (detached) argument. + + +Code: + + sudo docker compose --file docker-compose-mediastack.yaml --project-name media_stack --env-file docker-compose-mediastack.env up -d + + +NOTE: While you now have a running media stack in Docker, you will need to manage all changes / executions from the terminal window / PowerShell from now on, and that's OK, however if you want the flexibility and ease of use to change / save settings in an easy to use GUI, then Portainer may be the way to load and manage your docker compose media stake. + \ No newline at end of file diff --git a/docs/installation/portainer.md b/docs/installation/portainer.md new file mode 100644 index 0000000..73e9d99 --- /dev/null +++ b/docs/installation/portainer.md @@ -0,0 +1,85 @@ +# Portainer - Docker GUI + +# Collective Docker Compose Installation + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + +## Heading Two + +## Heading Three + + + + + + +https://www.synoforum.com/resources/ultimate-starter-docker-portainer-portainer-agents-and-auto-updating-everything-with-watchtower.183/ + + + + + +**Deployment via Portainer GUI on Synology / Linux / Windows:** + +Deploying the docker compose media stack via Portainer, will be exactly the same on Synology / Linux / Windows, assuming Portainer has already been installed on the Docker Host, and the file paths have been updated in the ENV file for each respective Operating System. + +\- Open Portainer at: [https://localhost:9443](https://localhost:9443) + +\- Connect to your local Docker environment in the Portainer portal, then select "Stack" in the left menu, then "Add Stack" on the right side of the page. + +\- Stack Name: "media\_stack" <-- Must be lowercase and only use underscores or hyphens + +\- Select: "Upload" -- Press "Upload File", then select the "docker-compose-mediastack.yaml" file and save. + +\- Select: "Load Variables From .ENV File", then select the "docker-compose-mediastack.env" file and save. + +\- "Enable access control": Disable this if you do not have multiple users in Portainer (Optional) + +\- Select "Deploy The Stack". + +\- Go make a coffee if this is the first time downloading the images, it will take a few minutes. + + +**Configuration Persistence for Docker Containers:** + +Great care has been taken to make sure all of the configuration settings in each of the docker containers, have been mapped into their individual folders in the **FOLDER\_FOR\_DOCKER\_DATA** location; if you check these folders, they are now full and contained the configuration of each application. + +This means you can completely delete all Docker containers, Docker images, uninstall the Docker application, and then rebuild everything again, and as long as you use the same .YAML and .ENV files with their settings, then your whole media stack will be rebuilt and operate exactly how is was running prior to you stopping it. + +This also allows you to easily migrate to new servers / host computers, fire up the docker compose media stack, and be up and running again as soon as the docker images have been downloaded. + +Back up the **OLDER\_FOR\_DOCKER\_DATA** sub-folders to save you rebuilding after a system failure / migration. + + +**Test Redeploying Your Docker Compose Media Stack:** + +Now is the best time to validate your docker compose configuration, open some of the applications using the links at the very top to make sure they're up and running, then: + +\- If you used docker compose command at the terminal / PowerShell, go to the .ENV file, then make the following change, and run the docker compose up command again. + + +Code: + + TP_THEME=dracula + + +\- If you used Portainer, go to "Stacks" -- "media\_stack" -- "Editor", find "TP\_THEME" down the bottom in the variables, and change the value to "dracula", then select "Actions: Update The Stack". + +Once you have redeployed the docker compose via the terminal / Portainer, go back into the applications using the links up the top again, and check that your chance has occurred. + +**NOTE:** The TP\_THEME is used in all docker containers, except Jellyfin, Jellyseerr, and Whisparr. + + + + diff --git a/docs/javascripts/extra.js b/docs/javascripts/extra.js new file mode 100644 index 0000000..e69de29 diff --git a/docs/javascripts/tablesort.js b/docs/javascripts/tablesort.js new file mode 100644 index 0000000..10f5a56 --- /dev/null +++ b/docs/javascripts/tablesort.js @@ -0,0 +1,6 @@ +document$.subscribe(function() { + var tables = document.querySelectorAll("article table:not([class])") + tables.forEach(function(table) { + new Tablesort(table) + }) +}) \ No newline at end of file diff --git a/docs/preparation/docker-compose-files.md b/docs/preparation/docker-compose-files.md new file mode 100644 index 0000000..3f67060 --- /dev/null +++ b/docs/preparation/docker-compose-files.md @@ -0,0 +1,13 @@ +# Docker Compose Files + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + +## Download Compose Files +Goto: [https://github.com/geekau/mediastack](https://github.com/geekau/mediastack) + +Download this repository to your computer by selecting "**Code**" --> "**Download Zip**". + +Describe + diff --git a/docs/preparation/installing-docker.md b/docs/preparation/installing-docker.md new file mode 100644 index 0000000..fd3902f --- /dev/null +++ b/docs/preparation/installing-docker.md @@ -0,0 +1,199 @@ +# Installing Docker on Host Computer + +Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly, without interferring with the applications on the host system. + +When you build a Virtual Machine, you need to install an operating system, and then install all of the applications inside each virtual computer. With Docker, you only need to virtualise the application, and the Docker environment manages all the connectivity between applications, access to your local hard drives or access to the Internet. Docker allows you to containerise each application, rather than installing all applications into a Virtual Machine. + +As Docker can be installed on many different Operating Systems and NAS devices, its extremely easy to deploy the same Docker applications across all of these differnt systems, which means the MediaStack.Guide can be easily used by many people with different systems and configurations. MediaStack.Guide is easy to deploy and support, even for beginners. + +## Which Operating System? + +Traditionally, Docker is built around Linux, but it has significant support across the community, and is now supported on Linux distributions, Windows and Mac computers, as well as many Network Attached Storage (NAS) servers, and even the humble Raspberry Pi... and many many more. Running Docker apps is now easier than ever, and the same application can be run on any operating system, as long has it has Docker. + + + + + + +Basic intro to Docker... embed Docker intro video etc.. + +Provide steps to install Docker on Windows, Linux, MacOS, Synology NAS and other hosts where possible + + + +Radarr is a movie collection manager for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new movies and will interface with clients and indexers to grab, sort, and rename them. It can also be configured to automatically upgrade the quality of existing files in the library when a better quality format becomes available. + +!!! Info "Additional Application Information - External Links" + - Local WebUI Address:    [http://localhost:7878](http://localhost:7878) + - Application Website:      [https://wiki.servarr.com/en/radarr](https://wiki.servarr.com/en/radarr) + - Docker Information:       [https://docs.linuxserver.io/images/docker-radarr](https://docs.linuxserver.io/images/docker-radarr) + + +Docker official installation instructions are located at: [Official: Install Docker Engine](https://docs.docker.com/engine/install/) + +https://www.coretechnologies.com/products/AlwaysUp/Apps/StartDockerDaemonAsAWindowsService.html + +If your are using the fully secure media stack configuration and routing all outbound network traffic via the Gluetun VPN container, you can check whether the secure VPN tunnel has been established with the following Docker commands: + +!!! Warning "Checking if Docker Container is Connected / Hidden behind Secure VPN" + +### Ubuntu Linux Installation + +Linux is by far the easiest to install Docker + +``` bash +sudo apt-get install net-tools docker docker-compose +``` + +### Windows 10 / 11 Installation + +Many Windows users give up on deploying Docker applications, as they don't feel confident enough to install Linux in a virtual machine / separate computer, however we're going to . + +What if I told you MediaStack runs extremely well on a Windows computer, and requires very little knowledge of Linux in order to get you up and running with a full time media stack... + + +For Windows systems, we need to install and run Windows Subsystem for Linux and Docker together + +Open PowerShell and "Run as Administrator" + +``` powershell +wsl --install -d ubuntu +dism /online /enable-feature /featurename:microsoft-windows-subsystem-linux /all /norestart +dism /online /enable-feature /featurename:virtualmachineplatform /all /norestart +dism /online /enable-feature /featurename:hypervisorplatform /all /norestart +wsl --set-default-version 2 +``` + +
+ ![Windows - Install Windows Subsystem for Linux](../img/windows-install-wsl.png){ width="300" } +
Windows - Install Windows Subsystem for Linux
+
+ +> YOU MUST REBOOT your Windows computer before proceeding with WSL / Docker setup. + +After rebooting, Ubuntu for WSL will commence installing, accept all defaults and set a basic username and password. The username and password don't need to be the same you use to log into Windows, they can be different, but you will need to remember these. + +After installing Ubuntu for WSL, update WSL and check it is set to run as version 2: + +``` powershell +wsl --update +wsl --status +``` + +Download and install the Microsoft "WSL2 Linux kernel update package for x64 machines" update: + +- [https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi) + + +
+ ![Windows - Install WSL2 Linux Kernel Update](../img/windows-install-wsl-update.png){ width="300" } +
Windows - Install WSL2 Linux Kernel Update
+
+ + +
+ ![Windows - WSL2 Installed](../img/windows-wsl-installed.png){ width="300" } +
Windows - WSL2 Installed
+
+ + + + +sudo docker compose --file docker-compose-media-stack.yaml --env-file docker-compose.env up -d + + + + + + + + + + + + + + + + +Download and install Docker Desktop for Windows: + +- [https://docs.docker.com/desktop/install/windows-install/](https://docs.docker.com/desktop/install/windows-install/) + +> You MUST select: "Use WSL 2 instead of Hyper-V" during installation + + +
+ ![Windows - Docker Desktop Installed](../img/windows-docker-installed.png){ width="300" } +
Windows - Docker Desktop Installed
+
+ + +
+ ![Windows - WSL2 Installed](../img/windows-wsl-installed.png){ width="300" } +
Windows - WSL2 Installed
+
+ + +
+ ![Windows - Docker Desktop Enable Ubuntu Integration](../img/windows-docker-desktop-enable-ubuntu.png){ width="300" } +
Windows - Docker Desktop Enable Ubuntu Integration
+
+ + + +To install Docker Daemon as a native Windows Service, run the following command in Administrative PowerShell prompt: + + + + + +``` +cd "C:\Program Files\Docker\Docker\resources" +./dockerd --register-service +``` + +SETUP DOCKER DAEMON: https://www.coretechnologies.com/products/AlwaysUp/Apps/StartDockerDaemonAsAWindowsService.html + + +### MacOS Installation + +``` bash +docker exec -it radarr bash +``` + +### Synology NAS Installation + +``` bash +sudo docker exec -it radarr bash +``` + + + + +> If the Docker container is configured to connect to the Internet through the Gluetun VPN container and there is no active VPN connection, then no network traffic will be passed out to the Internet. The Gluetun VPN connection is a safeguard for secure network transfers and activates a "hard block" when there is no VPN connection established. + + + + +
+ ![Windows - Install Windows Subsystem for Linux](../img/windows-install-wsl.png){ width="300" } +
Windows - Install Windows Subsystem for Linux
+
+ + +## Set Up Docker User / Access + + +## Set up Docker App Folders + + +## Basic Docker Commands + +## Extra Docker Resources + + + + + + diff --git a/docs/preparation/mediastack-applications.md b/docs/preparation/mediastack-applications.md new file mode 100644 index 0000000..56b7a0a --- /dev/null +++ b/docs/preparation/mediastack-applications.md @@ -0,0 +1,147 @@ +# MediaStack Applications + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + +List of all Media-Stack applications used in this guide and their roles + +## Heading Two + + + + + +## Heading Three + + + +## Application Portals: + + Portal | Application | Function +-------- | -------- | -------- +[https://localhost:9443](https://localhost:9443)|Portainer|GUI Interface for Docker Management +[http://localhost:6767](http://localhost:6767)|Bazarr|Subtitle Manager for Radarr / Sonarr +[http://localhost:8191](http://localhost:8191)|FlareSolverr|Provides status message only +[http://localhost:8096](http://localhost:8096)|Jellyfin|(Media Player) +[http://localhost:5055](http://localhost:5055)|Jellyseerr|(Content Request Management) +[http://localhost:8686](http://localhost:8686)|Lidarr|(Library Manager - Music) +[http://localhost:8090](http://localhost:8090)|Mylar3|(Library Manager - Comics) +[http://localhost:9696](http://localhost:9696)|Prowlarr|(Index and Search Management) +[http://localhost:7878](http://localhost:7878)|Radarr|(Library Manager - Movies) +[http://localhost:8787](http://localhost:8787)|Readarr|(Library Manager - Books) +[http://localhost:8100](http://localhost:8100)|SABnzbd|(Library Manager - TV Shows) +[http://localhost:8989](http://localhost:8989)|Sonarr|(Library Manager - TV Shows) +[http://localhost:8265](http://localhost:8265)|Tdarr|Automatic Audio/Video Library Transcoding +[http://localhost:6969](http://localhost:6969)|Whisparr|(Library Manager - XXX) +[http://localhost:8200](http://localhost:8200)|qBittorrent|(Downloader - Torrents) +[http://localhost:5080](http://localhost:5080)|SWAG - Nginx|Web Server for Reverse Proxy HTTP +[http://localhost:5433](http://localhost:5433)|SWAG - Nginx|Web Server for Reverse Proxy HTTPS +[http://localhost:6500](http://localhost:6500)|DDNS-Updater|Web Portal - DDNS-Updater Status + +**Default qBittorrent Portal Access:** Username: **admin** Password: **adminadmin** + + + + +**PART 2 - Docker Media Applications and Their Roles / Functions** + +This guide will focus on Jellyfin and the \*ARR media libraries in order to manage your media libraries and make your media accessible across your home network and devices. + + + +The table below shows the docker applications which will be installed, their default port numbers and what function they perform: + + + +Portal URL:​ + +Application:​ + +Role / Function:​ + +No Portal --> + +Gluetun + +VPN Client - Supports extensive Internet providers and protocols + +[http://localhost:6789](http://localhost:6789) + +NZBGet + +Download client - Used to download NZB from Usenet groups + +[http://localhost:9091](http://localhost:9091) + +Transmission + +Download Client - Used to download torrent files + +[http://localhost:8096](http://localhost:8096) + +Jellyfin + +Media Library / Player - Organise, manage, and share digital media files to networked devices + +[http://localhost:5055](http://localhost:5055) + +Jellyseerr + +Request management and media discovery tool (Overseerr Fork for Jellyfin) + +[http://localhost:9696](http://localhost:9696) + +Prowlarr + +Index and Search Management for "\*ARR" applications below + +[http://localhost:8686](http://localhost:8686) + +Lidarr + +Library Manager for Music content management + +[http://localhost:8090](http://localhost:8090) + +Mylar3 + +Library Manager for Comic content management + +[http://localhost:7878](http://localhost:7878) + +Radarr + +Library Manager for Movie content management + +[http://localhost:8787](http://localhost:8787) + +Readarr + +Library Manager for Book / Epub content management + +[http://localhost:8989](http://localhost:8989) + +Sonarr + +Library Manager for TV Show / Series / Anime content management + +[http://localhost:6969](http://localhost:6969) + +Whisparr +(see note) + +Library Manager for Adult movie content management + + +**NOTE:** This guide also includes Whisparr which is a Library Manager for movies from the Adult entertainment industry. It is included as its part of the \*ARR product family, we don't judge what people do / don't watch, but we do urge the use of access controls / security on adult content, so minors and other groups are not exposed to this content if they are not of legal age under your regional laws. + +In order to deploy the docker-compose file and host the applications, Docker must be installed as a prerequisite on your Linux, Windows, or Synology hosting environment. The following guide will help set up your Docker environment, and help manage the applications once they are installed: + +[Tutorial - Ultimate Starter - Docker, Portainer, Portainer Agents, and Auto-Updating Everything with Watchtower](https://www.synoforum.com/resources/ultimate-starter-docker-portainer-portainer-agents-and-auto-updating-everything-with-watchtower.183/) + +**NOTE:** This guide assumes you have installed Docker, and Portainer for managing your docker environment. + + diff --git a/docs/preparation/networking-architecture.md b/docs/preparation/networking-architecture.md new file mode 100644 index 0000000..dc6ed3f --- /dev/null +++ b/docs/preparation/networking-architecture.md @@ -0,0 +1,19 @@ +# Networking Architecture + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +Describe the network architecture of the two different Docker network deployment options, the secure VPN connection, and how to change docker containers between the direct connection mode and VPN container mode. + +Also describe the incoming / remote network connectivity from the Internet (using a DNS entry), to access Jellyfin and all other Media-Stack portals via the Reverse Proxy. + +External / Remote connectivity to be discussed lightly here, and broken down into more detail in the "Configure Remote Access" menu stack + +## Heading Two + +## Heading Three \ No newline at end of file diff --git a/docs/preparation/prepare-media-library.md b/docs/preparation/prepare-media-library.md new file mode 100644 index 0000000..281fb44 --- /dev/null +++ b/docs/preparation/prepare-media-library.md @@ -0,0 +1,42 @@ +# Preparing Your New Media Library + +In order for your *ARR Media Library Managers and Jellyfin applications to effectively identify the correct titles and meta data for all of your media, its important you follow the recommended file naming conventions for these applications. + +The best way to set up your media library, is to allow the *ARR Media Library Managers to be able to add / remove / change all of the file and folder names based on each title (using the Jellyfin formats), then Jellyfin will be able to easily identify each media object and fetch the relevant meta data and artwork. + +The *ARR Media Library Managers already do an excellent job of identifying and renaming media files and folders, however, if you are setting up your media libraries for the first time and your current media files are poorly named, it is recommended to use FileBot to scan and rename everything initially and then import the newly organised media files and folders into the *ARR Library Managers, so they can then continue to manager your media. + +!!! Tip "Tip:       This Section Is Only For New Media Libraries" + + The following steps + + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + +## Prepare / rename media library if needed: +If you are setting up your media server and media libraries for the very first time, or your media is very poorly named, it is recommended you use Filebot with the following naming standards below, to initially sort all of your media. Otherwise the Media Library Managers and Jellyfin may not be able to identify your media titles, media art, and subtitles, if the original filenames are of a poor standard. + +Change =="D:/Storage"== to suit your needs, however use the same disk as the original media, so it is renamed quickly in place, rather than copied to a different disk or network; this could take a great deal of time to complete depending on size of the libraries / media you are renaming. + +>This can be skipped if you have a well organised / structured media library already. + +### Filebot Renaming Preset String for Series / TV Shows + +``` powershell +D:/Storage/renamed/series/{ny.colon(' - ').ascii()} [tmdbid-{id}]/Season {s00}/{ny.colon(' - ').ascii()} {s00e00} - {t.ascii()} {" - $hd $vf $vc $ac"} +``` + +### Filebot Renaming Preset String for Movies / Adult + +``` powershell +D:/Storage/renamed/movies/{ny.colon(' - ').ascii()} [imdbid-{imdbid}]/{ny.colon(' - ').ascii()} {" - $hd $vf $vc $ac"} +``` + +### Filebot Renaming Preset String for Music / Audio + +``` powershell +D:/Storage/renamed/music/{artist.upperInitial().ascii()}/{album.upperInitial().ascii()} ({y})/{albumArtist.upperInitial().ascii()} - {album.upperInitial().ascii()} - {pi.pad(3)+' - '} {t.ascii()} +``` diff --git a/docs/preparation/setting-up-folders.md b/docs/preparation/setting-up-folders.md new file mode 100644 index 0000000..558a45f --- /dev/null +++ b/docs/preparation/setting-up-folders.md @@ -0,0 +1,234 @@ +# Setting Up Application and Media Folders + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +## Set up all of the folders / subfolders: +The commands suit the folders defined above in your ENV file for `FOLDER_FOR_MEDIA` and `FOLDER_FOR_DATA`. + +## For Linux hosted data folders: +If you used Linux / NAS folders in the ENV file, then use the following commands to create the necessary folders: + + + + + +!!! note "Select the correct operating system to execute desired commands:" + + - `FOLDER_FOR_MEDIA` + - `FOLDER_FOR_DATA` + - `UID` + - `GID` + + === "Linux Shell" + + The Docker process on most Linux distros run as the "docker" user, and all network shares normally have Group ID as "users", so we only need to declare the User ID which Docker uses to access shares in the "FOLDER_FOR_MEDIA" folder. + + Check your Docker user ID with the command `id docker`, and update the PUID value below. + + ``` bash + export FOLDER_FOR_MEDIA=/mediastack + export FOLDER_FOR_DATA=/mediastackdata + + export PUID=1000 + export PGID=1000 + + sudo -E mkdir -p $FOLDER_FOR_DATA/{authelia,bazarr,ddns-updater,gluetun,heimdall,jellyfin,jellyseerr,lidarr,mylar3,plex,portainer,prowlarr,qbittorrent,radarr,readarr,sabnzbd,sonarr,swag,tdarr/{server,configs,logs},tdarr_transcode_cache,unpackerr,whisparr} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/media/{anime,audio,books,comics,movies,music,photos,series,xxx} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/usenet/{anime,audio,books,comics,complete,console,incomplete,movies,music,prowlarr,series,software,xxx} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/torrents/{anime,audio,books,comics,complete,console,incomplete,movies,music,prowlarr,series,software,xxx} + sudo -E mkdir -p $FOLDER_FOR_MEDIA/watch + sudo -E chmod -R 775 $FOLDER_FOR_MEDIA $FOLDER_FOR_DATA + sudo -E chown -R $PUID:$PGID $FOLDER_FOR_MEDIA $FOLDER_FOR_DATA + ``` + + === "Windows Command Prompt" + + ``` + set FOLDER_FOR_MEDIA=D:\MediaStack + set FOLDER_FOR_DATA=D:\MediaStackData + + FOR /D %I IN (authelia bazarr ddns-updater gluetun heimdall jellyfin jellyseerr lidarr mylar3 plex portainer prowlarr qbittorrent radarr readarr sabnzbd sonarr swag tdarr tdarr_transcode_cache unpackerr whisparr) DO mkdir %FOLDER_FOR_DATA%\%I + FOR /D %I IN (server configs logs) DO mkdir %FOLDER_FOR_DATA%\tdarr\%I + FOR /D %I IN (anime audio books comics movies music photos series xxx) DO mkdir %FOLDER_FOR_MEDIA%\media\%I + FOR /D %I IN (anime audio books comics complete console incomplete movies music prowlarr series software xxx) DO mkdir %FOLDER_FOR_MEDIA%\usenet\%I + FOR /D %I IN (anime audio books comics complete console incomplete movies music prowlarr series software xxx) DO mkdir %FOLDER_FOR_MEDIA%\torrents\%I + mkdir %FOLDER_FOR_MEDIA%\watch + ``` + + === "MacOS Shell" + + ``` bash + Waiting Testing + ``` + + === "Synology NAS (SSH)" + + The Docker process on Synology NAS runs as "root", so user and group permissions for $FOLDER_FOR_DATA will be set as "root". All "Shared Folders" you create manually have Group ID as "users", so we only need to declare the User ID (PUID) which Docker uses to access files inside the "FOLDER_FOR_MEDIA" folder. + + Check your Docker user ID with the command `id docker`, and update the PUID value below. + + ``` bash + export FOLDER_FOR_MEDIA=/mediastack + export FOLDER_FOR_DATA=/mediastackdata + export PUID=1030 + + sudo mkdir -p $FOLDER_FOR_DATA/{authelia,bazarr,ddns-updater,gluetun,heimdall,jellyfin,jellyseerr,lidarr,mylar3,plex,portainer,prowlarr,qbittorrent,radarr,readarr,sabnzbd,sonarr,swag,tdarr/{server,configs,logs},tdarr_transcode_cache,unpackerr,whisparr} + sudo mkdir -p $FOLDER_FOR_MEDIA/media/{anime,audio,books,comics,movies,music,photos,series,xxx} + sudo mkdir -p $FOLDER_FOR_MEDIA/usenet/{anime,audio,books,comics,complete,console,incomplete,movies,music,prowlarr,series,software,xxx} + sudo mkdir -p $FOLDER_FOR_MEDIA/torrents/{anime,audio,books,comics,complete,console,incomplete,movies,music,prowlarr,series,software,xxx} + sudo mkdir -p $FOLDER_FOR_MEDIA/watch + sudo chmod -R 777 $FOLDER_FOR_MEDIA $FOLDER_FOR_DATA + sudo chown -R root:root $FOLDER_FOR_DATA + sudo chown -R $PUID:users $FOLDER_FOR_MEDIA/{media,usenet,torrents,watch} + ``` + + + + +### For Window hosted data folders: +If you used Windows folders in the ENV file, then use the following commands to create the necessary folders: +### Folder mappings between host and Docker containers: +After you run the commands above (Linux or Windows), **this will be your folder structure INSIDE your docker containers**: + +!!! note "Folders on Host <--> " + + ``` { .text .no-copy } + $ tree $FOLDER_FOR_MEDIA + + ⠀⠀⠀⠀⠀Docker Host Computer:⠀⠀⠀⠀⠀⠀⠀⠀⠀Inside Docker Containers: + ├── /FOLDER_FOR_MEDIA ⠀ ├── /data + ⠀⠀⠀⠀⠀├── media ⠀⠀⠀⠀├── media <-- Media is stored / managed under this folder + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── anime │⠀⠀⠀⠀├── anime <-- Sonarr Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── audio │⠀⠀⠀⠀├── audio <-- Lidarr Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── books │⠀⠀⠀⠀├── books <-- Readarr Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── comics │⠀⠀⠀⠀├── comics <-- Mylar3 Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── movies │⠀⠀⠀⠀├── movies <-- Radarr Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── music │⠀⠀⠀⠀├── music <-- Lidarr Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── photos │⠀⠀⠀⠀├── photos <-- N/A - Add Personal Photos + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── series │⠀⠀⠀⠀├── series <-- Sonarr Media Library Manager + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀└── xxx │⠀⠀⠀⠀└── xxx <-- Whisparr Media Library Manager + ⠀⠀⠀⠀⠀├── torrents ⠀⠀⠀⠀├── torrents <-- Folder for Torrent Downloads Data + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── anime │⠀⠀⠀⠀├── anime <-- Anime Category (Sonarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── audio │⠀⠀⠀⠀├── audio <-- Audio Category (Lidarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── books │⠀⠀⠀⠀├── books <-- Book Category (Readarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── comics │⠀⠀⠀⠀├── comics <-- Comic Category (Mylar3) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── complete │⠀⠀⠀⠀├── complete <-- Completed / General Downloads + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── console │⠀⠀⠀⠀├── console <-- Comic Category (Manual DL) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── incomplete │⠀⠀⠀⠀├── incomplete <-- Incomplete / Working Downloads + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── movies │⠀⠀⠀⠀├── movies <-- Movie Category (Radarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── music │⠀⠀⠀⠀├── music <-- Music Category (Lidarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── prowlarr │⠀⠀⠀⠀├── prowlarr <-- Uncategorised Downloads from Prowlarr + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── series │⠀⠀⠀⠀├── series <-- TV Series (Sonarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── software │⠀⠀⠀⠀├── software <-- Software Category (Manual DL) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀└── xxx │⠀⠀⠀⠀└── xxx <-- Adult / XXX Category (Whisparr) + ⠀⠀⠀⠀⠀├── usenet ⠀⠀⠀⠀├── usenet <-- Folder for Usenet Downloads Data + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── anime │⠀⠀⠀⠀├── anime <-- Anime Category (Sonarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── audio │⠀⠀⠀⠀├── audio <-- Audio Category (Lidarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── books │⠀⠀⠀⠀├── books <-- Book Category (Readarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── comics │⠀⠀⠀⠀├── comics <-- Comic Category (Mylar3) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── complete │⠀⠀⠀⠀├── complete <-- Completed / General Downloads + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── console │⠀⠀⠀⠀├── console <-- Comic Category (Manual DL) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── incomplete │⠀⠀⠀⠀├── incomplete <-- Incomplete / Working Downloads + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── movies │⠀⠀⠀⠀├── movies <-- Movie Category (Radarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── music │⠀⠀⠀⠀├── music <-- Music Category (Lidarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── prowlarr │⠀⠀⠀⠀├── prowlarr <-- Uncategorised Downloads from Prowlarr + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── series │⠀⠀⠀⠀├── series <-- TV Series (Sonarr) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀├── software │⠀⠀⠀⠀├── software <-- Software Category (Manual DL) + ⠀⠀⠀⠀⠀│⠀⠀⠀⠀└── xxx │⠀⠀⠀⠀└── xxx <-- Adult / XXX Category (Whisparr) + ⠀⠀⠀⠀⠀└── watch ⠀⠀⠀⠀└── watch <-- Add .nzb and .torrent files for manual download + + ``` + + + + + +**PART 5 - File Permissions Between Docker Containers and Host Computer** + +One of the biggest issues new users face with using Docker and accessing files on the host computer, is the inability of the container applications accessing folders / files due to incorrect permissions. If the container has incorrect permissions to the local filesystem, then access will be denied, and the container applications do not function as expected. + +To overcome this issue, Docker can access the folders / files of the local host computer, as a specific user and group which exists on the local system, however its imperative the local user and group which is specified in the ENV file configuration, actually exists and has the correct permissions to the folder and files on the host. + +For Synology / Linux users, follow the earlier guide on setting up Docker / Portainer, and create the "docker" user as documented: [Tutorial - Ultimate Starter - Docker, Portainer, Portainer Agents, and Auto-Updating Everything with Watchtower](https://www.synoforum.com/resources/ultimate-starter-docker-portainer-portainer-agents-and-auto-updating-everything-with-watchtower.183/) + +When logged into the terminal on Linux and Synology (via SSH), run the following command: + + +Code: + + sudo id docker + + +This will return an entry similar to:⠀⠀⠀⠀**uid=131(docker) gid=123(docker) groups=123(docker)** + +This means the "docker" user has User ID of 131, Group ID of 123, and is in the following groups... just 123, which is docker. If you convert the uid and gid to PUID and PGID respectively, your config should look like this: + +**PUID**\=131 +**PGID**\=123 +**UMASK**\=0002 <-- Don't change this unless you know what you're doing +**TIMEZONE**\=Europe/Zurich + +Update your local Timezone using this list: [List of tz database time zones - Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) + +**NOTE:** PUID / PGID will vary from system to system, you can't use Docker configurations from the Internet and expect them to work, unless you adjust the PUID / PGID values to match your system. + + +**File Permissions for Synology NAS Users:** + +Synology DSM has a very complex set of permissions and folder attributes underneath the DSM web interface, effectively where the shares are located in "File Station", the the underlying folder permissions are "777" (and more), which you don't want to mess with at the command line. + + +Code: + + drwxrwxrwx+ 1 root root 436 Jan 1 00:10 /volume1/docker + + +This means the root user and root group own the /volume1/docker share, however all of the folders and files have 777 permissions inherited recursively throughout the sub-folder structure. + +This might sound a bit complex, but the key point is just to use the DSM File Station web interface, and add the "docker" user to either the main shared folder, such as "/volume1/docker", or just to the selective sub-folders within a shared folder, such as "/volume1/data/torrents", "/volume1/data/usenet", and "/volume1/data/watch". This would mean the "docker" user only has access to the folders (and sub-folders) of torrents, usenet, and watch, inside the shared folder /volume1/data. + +Ultimately, you need to ensure the "docker" user has read/write access to whatever folders you are using on the Synology NAS, using DSM Portal. + + +**File Permissions for Linux OS Users:** + +When you created the "docker" user for Linux, you also created a "docker" group. Additionally, you added your own Linux user account into the "docker" group, so you want to apply "docker:docker" permissions to folders for the correct access permissions to filter through the file structure. + +If you want to be security conscience and only allow members of the "docker" group (and running docker applications) access to the docker and media folders, you can execute the following commands, which also turn on the SetGid bit for the group, so any new folder / file created inside these folders will have full permissions to anyone in the "docker" group; so being a member of the "docker" group is key. + + +Code: + + sudo chmod -R u+rwx,g+rws,o+rx,o-w /mediastack /mediastackdata + sudo chown -R docker:docker /mediastack /mediastackdata + + + +Code: + + drwxrwsr-x+ 15 docker docker 4096 Jan 01 00:10 /mediastack + drwxrwsr-x+ 12 docker docker 4096 Jan 01 00:10 /mediastackdata + + + +If you don't share your Linux host computer with other users and you are having problems with access and permissions, you can always use the following commands, which allow everyone to have absolute access: + + +Code: + + sudo chmod -R 777 /mediastack /mediastackdata + sudo chown -R docker:docker /mediastack /mediastackdata + + +**NOTE:** If you ever experience issues with file / permission access issues, then rerun both the "chmod" and "chown" commands above, and restart your docker media stack. + + +**File Permissions for Windows OS Users:** + +Is this even needed, does Docker run as system or local user account? - needs testing. + + diff --git a/docs/remote-access/authelia.md b/docs/remote-access/authelia.md new file mode 100644 index 0000000..20efeea --- /dev/null +++ b/docs/remote-access/authelia.md @@ -0,0 +1,54 @@ +# Authelia - Authentication and Authorisation Server + +Authelia is an open-source Authentication and Authorization (AA) Server and portal fulfilling the identity and access management (IAM) role of information security in providing multi-factor authentication and single sign-on (SSO) for your applications via a web portal. We will integrate it into the SWAG Nginx Reverse Proxy to manage remote secure access into your home media stack network. + +--- + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three + + + + +## Activate Authelia Integration in SWAG Container + +How to set up users, passwords and groups in Authelia +[https://www.authelia.com/reference/guides/passwords/](https://www.authelia.com/reference/guides/passwords/) + + +[https://www.authelia.com/integration/prologue/get-started/](https://www.authelia.com/integration/prologue/get-started/) + + +``` +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/authelia-server.conf +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/authelia-location.conf + +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/site-confs/default.conf +include /config/nginx/authelia-server.conf; + +sudo cp $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/authelia-server.conf.sample $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/authelia-server.conf +sudo cp $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/authelia-location.conf.sample $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/authelia-location.conf +``` + diff --git a/docs/remote-access/cloudflare-domain-management.md b/docs/remote-access/cloudflare-domain-management.md new file mode 100644 index 0000000..a1a4225 --- /dev/null +++ b/docs/remote-access/cloudflare-domain-management.md @@ -0,0 +1,77 @@ +# Cloudflare - Domain Management + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three + + + + + +## Configuring SWAG HTTP / DNS +In order for the Certbot tool inside SWAG to be able to request / issue a digital SSL certificate from Let's Encrypt or ZeroSSL, you need to set up the validation type in ENV. +``` +sudo vi docker-compose.env +VALIDATION=dns +DNSPLUGIN=cloudflare +``` +If you're using "dns" as the validation process, select the DNS plugin that suits your environment, and make appropriate updates. + +DNS plugins are located: "**FOLDER_FOR_CONFIGS/swag/dns-conf/**" + +>The domain name you used in "**URL**" MUST resolve back to your Internet IP address, and your Internet Router / Firewall be set up to forward the ports **80** and **443** to your Docker host IP address, on ports **5080** and **5443** respectively. + +Refer to: + +- [https://docs.linuxserver.io/general/swag#cert-provider-lets-encrypt-vs-zerossl](https://docs.linuxserver.io/general/swag#cert-provider-lets-encrypt-vs-zerossl) +- [https://docs.linuxserver.io/general/swag#web-hosting-examples](https://docs.linuxserver.io/general/swag#web-hosting-examples) +- [https://docs.linuxserver.io/general/swag#reverse-proxy](https://docs.linuxserver.io/general/swag#reverse-proxy) +- [https://docs.linuxserver.io/general/swag#authorization-method](https://docs.linuxserver.io/general/swag#authorization-method) + +SWAG has many different plugins available to help validate your "your-domain-name.com" / IP address, via DNS, they are located in the $FOLDER_FOR_CONFIGS/swag/dns-conf folder. +For example, to set up the Cloudflare plugin, edit the following: +``` +sudo vi $FOLDER_FOR_CONFIGS/swag/dns-conf/cloudflare.ini +``` +**You can then update the ENV file, delete the SWAG container and re-deploy it, to build a new container with the updated configurations.** + +###Once your SWAG Server has validated "your-domain-name.com" / IP address, and installed an SSL certificate, the Nginx web server will start working. + +###If you have forwarded ports 80 and 443 to the Docker host on 5080 and 5443, then you should be able to access the Nginx web server welcome page from the Internet. + +You can use an online remote web browser to check if your site is accessible from the Internet. Go to [https://www.browserling.com](https://www.browserling.com) and put in your domain name to test. + +>NOTE: All HTTP traffic on port 80 is automatically redirected to HTTPS on port 443, so it helps to have both ports open and redirected. + + + + + + + + + + + + diff --git a/docs/remote-access/cloudflare-zero-trust.md b/docs/remote-access/cloudflare-zero-trust.md new file mode 100644 index 0000000..4302b2b --- /dev/null +++ b/docs/remote-access/cloudflare-zero-trust.md @@ -0,0 +1,26 @@ +# Cloudflare - Zero Trust Network Access + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three diff --git a/docs/remote-access/ddns-updater.md b/docs/remote-access/ddns-updater.md new file mode 100644 index 0000000..04674a0 --- /dev/null +++ b/docs/remote-access/ddns-updater.md @@ -0,0 +1,62 @@ +# DDNS-Updater - Keep Dynamic IP / DNS Mappings Updated + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three + + + + +## Configuring DDNS-Updater for Reverse Proxy + +Reference: [https://hub.docker.com/r/qmcgaw/ddns-updater](https://hub.docker.com/r/qmcgaw/ddns-updater) + +If you have a Dynamic IP address, you will need a way to keep your Dynamic IP Address insync with your registered domain name. The DNS-Updater container supports MANY DDNS service providers, however we need to use Cloudflare as part of the Authelia zero trust framework for our multifacture authentication, so it makes sense to use Cloudflare to also host your domain and update it with DDNS-Updater. Head over to Cloudflare and register a free account: [https://dash.cloudflare.com/sign-up](https://dash.cloudflare.com/sign-up) + +Once you have registered a free account with Cloudflare, you can transfer your existing domain to Cloudflare with "Domain Registration" --> "Transfer Domains", or you can purchase a new domain inside Cloudflare with "Domain Registration" --> "Purchase Domains". + +If you don't want to pay for a domain and want to use a free DDNS domain, then check out the DDNS-Updater documenation and follow the DDNS set up for your preferred option. + +Configure the DDNS-Updater by editing the "config.json" file with the details and credentials for your DDNS provider. + +``` +sudo vi FOLDER_FOR_CONFIGS/ddns-updater/config.json + +{ + "settings": [ + { + "provider": "cloudflare", + "zone_identifier": "zone id", + "domain": "your-domain-name.com", + "host": "@", + "ttl": 600, + "token": "yourtoken", + "ip_version": "ipv4" + } + ] +} +``` + +Restart the DDNS-Updater container, then check the status at: [http://localhost:6500](http://localhost:6500) + diff --git a/docs/remote-access/heimdall.md b/docs/remote-access/heimdall.md new file mode 100644 index 0000000..bddeb25 --- /dev/null +++ b/docs/remote-access/heimdall.md @@ -0,0 +1,64 @@ +# Heimdall - Website Link Manager + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three + + + + + + +## Activate Heimdall Integration in SWAG Container +``` +sudo cp $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/heimdall.subfolder.conf.sample $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/heimdall.subfolder.conf +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/heimdall.subfolder.conf + +#Enable this line +include /config/nginx/authelia-location.conf; + +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/site-confs/default.conf + +``` + + +# THESE ARE ITEMS FOR NOTES ONLY AT THIS POINT + +``` +Text Editor - Open: + +heimdall.subfolder.conf.sample +sudo vi $FOLDER_FOR_CONFIGS/swag/www/index.html +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/site-confs/default.conf +sudo vi $FOLDER_FOR_CONFIGS/swag/nginx/site-confs/default.conf +sudo -E vi $FOLDER_FOR_CONFIGS/authelia/ +sudo -E vi $FOLDER_FOR_CONFIGS/authelia/ + +``` + + +[https://www.linuxserver.io/blog/zero-trust-hosting-and-reverse-proxy-via-cloudflare-swag-and-authelia](https://www.linuxserver.io/blog/zero-trust-hosting-and-reverse-proxy-via-cloudflare-swag-and-authelia) + +Test... + diff --git a/docs/remote-access/nginx-reverse-proxy.md b/docs/remote-access/nginx-reverse-proxy.md new file mode 100644 index 0000000..7258e44 --- /dev/null +++ b/docs/remote-access/nginx-reverse-proxy.md @@ -0,0 +1,120 @@ +# Nginx - Reverse Proxy + + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three + + + + + + + +## For Reverse Proxy into your network (from the Internet): + + Portal | Application | Function +-------- | -------- | -------- +[http://your-domain-name.com](http://your-domain-name.com)|SWAG|Reverse Proxy +[https://your-domain-name.com](http://your-domain-name.com)|SWAG|Reverse Proxy + +The SWAG container provides Nginx Reverse Proxy and MFA running on ports **5080/HTTP** and **5443/HTTPS**, so they don't conflict with other services running on the Docker host computer. To access your Reverse Proxy from the Internet, you need to set up your gateway / router, to allow Internet ports **80** and **443** into your network, but redirect them to the Docker host IP Address on ports **5080** and **5443** respectively. + +Port **80** will be accessible on the Internet and redirected to the Reverse Proxy on port **5080**, however it will redirect to HTTPS protocol using port **443** via the Internet, which will also be redirected to the Reverse Proxy on port **5443**. Reverse Proxy port numbers can be changed as required in the ENV file if required. + +The SWAG container requires a resolvable domain name, and will automatically install SSL certificates using either Let's Encrypt or Zero SSL providers, and is also able to provide Multi-Factor Authentication (MFA), to provide strong security for your Internet connected applications. + + - [https://www.linuxserver.io/blog/zero-trust-hosting-and-reverse-proxy-via-cloudflare-swag-and-authelia](https://www.linuxserver.io/blog/zero-trust-hosting-and-reverse-proxy-via-cloudflare-swag-and-authelia) + + + + + +# THESE ARE ITEMS FOR NOTES ONLY AT THIS POINT + + + +cat /home/geekau/docker/swag/nginx/proxy-confs/sabnzbd.subfolder.conf.sample + +/home/geekau/docker/swag/nginx/proxy-confs/sabnzbd.subfolder.conf.sample + + + + +$FOLDER_FOR_CONFIGS/swag/ +$FOLDER_FOR_CONFIGS/swag/dns-conf/ +$FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/ +$FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sabnzbd.subfolder.conf.sample +$FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sonarr.subfolder.conf.sample +$FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sonarr.subdomain.conf.sample +$FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sonarr.subfolder.conf.sample +$FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sonarr.subdomain.conf.sample +$FOLDER_FOR_CONFIGS/swag/nginx/ +$FOLDER_FOR_CONFIGS/swag/nginx/ +$FOLDER_FOR_CONFIGS/swag/nginx/proxy.conf +$FOLDER_FOR_CONFIGS/swag/nginx/nginx.conf + + + +sudo -E cp $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sabnzbd.subfolder.conf.sample $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sabnzbd.subfolder.conf +sudo -E cp $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sonarr.subfolder.conf.sample $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/sonarr.subfolder.conf +ls -la $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/*.conf +ls -la $FOLDER_FOR_CONFIGS/swag/nginx/proxy-confs/ + +mv /mnt/user/appdata/swag/nginx/proxy-confs/sonarr.subdomain.conf.sample /mnt/user/appdata/swag/nginx/proxy-confs/sonarr.subdomain.conf + + + +audiobookshelf.subdomain.conf.sample +audiobookshelf.subfolder.conf.sample +authelia.subdomain.conf.sample +bazarr.subdomain.conf.sample +bazarr.subfolder.conf.sample +filebot.subdomain.conf.sample +filebot.subfolder.conf.sample +jellyfin.subdomain.conf.sample +jellyfin.subfolder.conf.sample +jellyseerr.subdomain.conf.sample +lidarr.subdomain.conf.sample +lidarr.subfolder.conf.sample +mylar.subdomain.conf.sample +mylar.subfolder.conf.sample +portainer.subdomain.conf.sample +portainer.subfolder.conf.sample +prowlarr.subdomain.conf.sample +prowlarr.subfolder.conf.sample +qbittorrent.subdomain.conf.sample +qbittorrent.subfolder.conf.sample +radarr.subdomain.conf.sample +radarr.subfolder.conf.sample +readarr.subdomain.conf.sample +readarr.subfolder.conf.sample +sabnzbd.subdomain.conf.sample +sabnzbd.subfolder.conf.sample +sonarr.subdomain.conf.sample +sonarr.subfolder.conf.sample +tdarr.subdomain.conf.sample + + + diff --git a/docs/remote-access/secure-web-app-gateway.md b/docs/remote-access/secure-web-app-gateway.md new file mode 100644 index 0000000..14adfbb --- /dev/null +++ b/docs/remote-access/secure-web-app-gateway.md @@ -0,0 +1,26 @@ +# SWAG - Secure Web Application Gateway + +## Heading One + +!!! Danger "Warning:       Page Under Development" + + This page is still under development and may not have accurate information, and should be considered incomplete / inaccurate until this notice is removed. + + + +"Configure Remote Access" Menu and Pages will document steps in order to configure all the applications to allow remote access into your home network / Jellyfin server from the Internet. + +These pages to document the integrated of: + +- Cloudflare for Domain Name Registration and Hosting (Your Own Internet Address) +- DDNS-Updater to Update DNS Records Hosted on Cloudflare DNS, or Public DDNS Provider +- Authelia for User Authentication / Authorisation - AA Server +- Cloudflare Zero Trust Network Access +- Nginx Reverse Proxy Server (SWAG) +- Automate SSL Install with Let's Encrypt / ZeroSSL Certificate Authorities +- Heimdall (Link Manager) - Configure Links for All Internet Web Services.... Jellyfin / *ARR Apps etc.. + + +## Heading Two + +## Heading Three diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 0000000..940bb96 --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,30 @@ +.md-grid { + max-width: 1840px; +} + +.md-typeset .admonition, +.md-typeset details { + border-width: 2px; + border-left-width: 8px; +} + +.md-header__button.md-icon { + color: black; +} + +.md-header { + border-bottom: 0.1rem solid rgb(16, 23, 212); +} + +.md-tabs { + border-bottom: 0.1rem solid rgb(16, 198, 43); +} + +[data-md-color-scheme="default"] { + --md-default-fg-color--light: rgba(9, 19, 214, 0.697); +} + +[data-md-color-scheme="slate"] { + --md-default-fg-color--light: rgb(37, 206, 37); + .md-header .border-bottom {0.05rem solid red;} +} diff --git a/init_setup.sh b/init_setup.sh index b7aa11a..9b01017 100644 --- a/init_setup.sh +++ b/init_setup.sh @@ -1,3 +1,29 @@ -conda create --prefix ./env python=3.12 -y +#!/bin/bash + +echo [$(date +%T)]: "SCRIPT STARTS" + +# Check if runtime.txt exists +if [ ! -f runtime.txt ]; then + echo [$(date +%T)]: "ERROR: runtime.txt file not found" + exit 1 +fi + +# Read the Python version from runtime.txt +_VERSION_=$(cat runtime.txt) + +# Check if the version format is valid (number dot number) +if [[ ! $_VERSION_ =~ ^[0-9]+\.[0-9]+$ ]]; then + echo [$(date +%T)]: "ERROR: Invalid Python version format in runtime.txt. Expected format: number.number (e.g., 3.7)" + exit 1 +fi + +echo [$(date +%T)]: "creating environment with python ${_VERSION_}" +conda create --prefix ./env python=${_VERSION_} -y + +echo [$(date +%T)]: "activate environment" source activate ./env + +echo [$(date +%T)]: "install requirements" pip install -r requirements.txt + +echo [$(date +%T)]: "SCRIPT ENDS" diff --git a/mkdocs.yml b/mkdocs.yml index cb52e8d..c2d96a9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1 +1,194 @@ -site_name: MediaStack.Guide +# yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json + +site_name: MediaStack.Guide                                   DOCUMENTION UNDER HEAVY DEVELOPMENT +site_url: https://mediastack.guide/ +site_description: > + Quick-start guide to set up a full VPN encrypted streaming media service, with reverse-proxy / MFA access from the Internet, for Linux, Windows, Synology NAS, and more... Full Docker deployment for Jellyfin, Jellyseerr, Gluetun, DDNS-Updater, Prowlarr, Radarr, Sonarr, Lidarr, Mylar, Readarr, Whisparr, Bazarr, qBittorrent, SABnzbd, Unpackerr, SWAG, Heimdall, Authelia, Flaresolverr, and Portainer. + +repo_name: mediastack.guide +repo_url: https://github.com/geekau/mediastack.guide +edit_uri: blob/main/docs/ + +plugins: + - search + - glightbox + - git-revision-date-localized: + enable_creation_date: false +# - typeset + +nav: + - Home: index.md + - Preparation: + - MediaStack Applications: preparation/mediastack-applications.md + - Networking Architecture: preparation/networking-architecture.md + - Installing Docker on Host: preparation/installing-docker.md + - Setting Up App / Media Folders: preparation/setting-up-folders.md + - Prepare Media Library: preparation/prepare-media-library.md + - Docker Compose Files: preparation/docker-compose-files.md + - Installation: + - Default Environment: installation/default-environment.md + - Customising Environment: installation/customising-environment.md + - Individual Install: installation/individual-install.md + - Collective Install: installation/collective-install.md + - Portainer (Docker GUI): installation/portainer.md + - Configure Media Apps: + - Gluetun (VPN Client): configuration/gluetun.md + - qBittorrent (Torrent Downloads): configuration/qbittorrent.md + - SABnzbd (Usenet Downloads): configuration/sabnzbd.md + - Prowlarr (Index Search): configuration/prowlarr.md + - Radarr (Movie Library): configuration/radarr.md + - Sonarr (Series Library): configuration/sonarr.md + - Lidarr (Music Library): configuration/lidarr.md + - Readarr (Book Library): configuration/readarr.md + - Mylar (Comic Library): configuration/mylar.md + - Whisparr (Adult Library): configuration/whisparr.md + - Bazaar (Subtitles): configuration/bazaar.md + - Tdarr (Transcoding): configuration/tdarr.md + - Unpackerr (Unzip Archives): configuration/unpackerr.md + - Jellyfin (Media Server): configuration/jellyfin.md + - Jellyseerr (Request Manager): configuration/jellyseerr.md + - Plex (Media Server): configuration/plex.md + - Configure Remote Access: + - Cloudflare Domain Management: remote-access/cloudflare-domain-management.md + - DDNS-Updater: remote-access/ddns-updater.md + - Secure Web App Gateway: remote-access/secure-web-app-gateway.md + - Nginx - Reverse Proxy: remote-access/nginx-reverse-proxy.md + - Authelia (AA Server): remote-access/authelia.md + - Heimdall (Link Manager): remote-access/heimdall.md + - Cloudflare Zero Trust: remote-access/cloudflare-zero-trust.md + - Help: + - Application Websites: help/application-websites.md + - Contributing: help/contributing.md + - Template: help/template.md + - OLD DOCS: + - Old Notes 1: help/1.md + - Old Notes 2: help/2.md + - Old Notes 3: help/3.md + - Old Notes 4: help/4.md + - Old Notes 5: help/5.md + +theme: + name: material + custom_dir: overrides + favicon: assets/favicon.ico + + features: + - announce.dismiss + - content.action.edit + - content.action.view + - content.code.annotate + - content.code.copy + - content.tabs.link + - navigation.instant + - navigation.tracking + - navigation.top + - navigation.footer + - navigation.tabs + - navigation.sections + - navigation.expand + - navigation.prune + - navigation.indexes + - toc.follow + - toc.integrate + - search.suggest + - search.highlight + + palette: + - media: "(prefers-color-scheme: light)" + scheme: default + primary: deep purple + accent: light green + toggle: + icon: material/lightbulb + name: Switch to Dark Mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: yellow + accent: red + toggle: + icon: material/lightbulb-outline + name: Switch to Light Mode + + icon: + logo: assets/header-logo + repo: fontawesome/brands/github + admonition: + note: fontawesome/solid/note-sticky + abstract: fontawesome/solid/book + info: fontawesome/solid/circle-info + tip: fontawesome/solid/bullhorn + success: fontawesome/solid/check + question: fontawesome/solid/circle-question + warning: fontawesome/solid/triangle-exclamation + failure: fontawesome/solid/bomb + danger: fontawesome/solid/skull + bug: fontawesome/solid/robot + example: fontawesome/solid/flask + quote: fontawesome/solid/quote-left + +markdown_extensions: + - admonition + - pymdownx.betterem + - pymdownx.caret: {smart_insert: true, insert: true, superscript: true} + - pymdownx.mark + - pymdownx.tilde + - pymdownx.critic + - pymdownx.details + - pymdownx.highlight: {auto_title: true, anchor_linenums: true} + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.smartsymbols + - pymdownx.snippets + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + slugify: !!python/object/apply:pymdownx.slugs.slugify {kwds: {case: lower}} + - pymdownx.tasklist: {custom_checkbox: true} + - attr_list + - def_list + - footnotes + - md_in_html + - tables + - toc: + title: "On This Page:" + toc_depth: 4 + permalink: true + permalink_title: "Permanent Link " + slugify: !!python/object/apply:pymdownx.slugs.slugify {kwds: {case: lower}} + +extra_css: + - stylesheets/extra.css + +extra_javascript: + - javascripts/extra.js + - https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js + - javascripts/tablesort.js + +extra: + version: + provider: stable + consent: + title: Cookie Consent + description: >- + We use cookies to recognise your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users + find what they're searching for. With your consent, you're helping us to make our documentation better. + + social: + - icon: fontawesome/brands/github + link: https://github.com/geekau/MediaStack.Guide + name: "GitHub: MediaStack.Guide" + + - icon: fontawesome/brands/github + link: https://github.com/geekau/media-stack + name: "GitHub: media-stack" + + - icon: fontawesome/brands/twitter + link: https://twitter.com/squidfunk + name: "Twitter: squidfunk" + +copyright: > + Copyright © 2024 - MediaStack.Guide                                                   (  Update Change Cookie Settings  ) diff --git a/overrides/.icons/assets/header-logo.svg b/overrides/.icons/assets/header-logo.svg new file mode 100644 index 0000000..8359ad1 --- /dev/null +++ b/overrides/.icons/assets/header-logo.svg @@ -0,0 +1,832 @@ + + + + + + + + + + diff --git a/overrides/404.html b/overrides/404.html new file mode 100644 index 0000000..77d5765 --- /dev/null +++ b/overrides/404.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block content %} + + 404 - You made a boo boo...

+ + Go back to: MediaStack.Guide

+ +{% endblock %} diff --git a/overrides/main.html b/overrides/main.html new file mode 100644 index 0000000..03010c0 --- /dev/null +++ b/overrides/main.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block announce %} + Development Notice:             This site is still in heavy development.. +{% endblock %} + +{% block outdated %} + You're not viewing the latest version. + + Click here to go to latest. + +{% endblock %} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 88d6f11..df0064d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,11 @@ -mkdocs +mkdocs-awesome-pages-plugin==2.9.2 mkdocs-bootswatch +mkdocs-git-revision-date-localized-plugin +mkdocs-glightbox +mkdocs-include-markdown-plugin +mkdocs-macros-plugin +mkdocs-markdownextradata-plugin +mkdocs-material==9.2.7 mkdocs-minify-plugin -mkdocs-material -mkdocs-awesome-pages-plugin -mkdocs-git-revision-date-localized-plugin \ No newline at end of file +mkdocs-redirects +pymdown-extensions==10.2.1 \ No newline at end of file diff --git a/runtime.txt b/runtime.txt index e4fba21..548d713 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -3.12 +3.7 \ No newline at end of file