• Stars
    star
    196
  • Rank 197,799 (Top 4 %)
  • Language
    Shell
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A fully dockerized Media downloading solution utilising Google Drive as an unlimited disk backend

Marauder

This is designed to be a fully dockerized Media downloading + Watching solution utilising Google Drive as an unlimited disk backend.

Getting Started

Check out the "Getting Started" page here. This should be enough to get you going.

The documentation is still under construction and is subject to change! If you have any questions in the meantime, please open an issue.

Features

  • Very, very fast. I regularly download & watch 100+GB 4K movies from the Plex server with no issues.
  • Automatically gets around the 750GB/day upload limit, and 400,000 file limit in Google Drive by switching between service accounts and team drives.
  • All in one place. If you need to delete everything, or back everything up, you're just dealing with one folder.
  • Has all the random software and stuff you'll need (Well, I'm working on it).
  • Walks you through various optimisations to make your life easier.
  • Requires little to no maintenance once configured.
  • Doesn't destroy your disk IO by trying to move giant files between docker volumes.

Motivation

There are several other attempts at this, such as Cloudbox and PGBlitz, however I found these setups a little lacking in certain areas.

  • They require an entire VM or machine dedicated to it
  • They aren't fully dockerized, it mangles the host machine and places config/installation all over the place, making it difficult to back up or fully utilise machine resources
  • They regularly have rookie mistakes such as moving data between two Docker volumes, causing unneccessary high disk I/O
  • They make too many assumptions about your current setup, and make it difficult to change (Well, so does mine, but it's my setup so I'm allowed to be a hypocrite)

This setup has one gigantic shared folder named shared. It's set up with Rclone union mounts so that programs like Sonarr, Radarr, Medusa etc. all believe that the downloading and gdrive media directories are on the same filesystem (because they are!). This severely reduces I/O compared to moving things between volumes. There's then some clever volume mapping so all the programs have matched up directories even though they're technically pointed to different places.

FAQ

Q: How much RAM/CPU/Disk space do I need?

A: This is hard to say. I have 32gb on my VM, but I also have a much larger collection than most so Rclone uses a lot of RAM. Rclone has fairly high limits in its current setup so may run out of memory on machines with less than 16gb - I may include some options to reduce that if needed.

In terms of CPU, it depends on how much you're downloading and whether you're using usenet or torrenting. I wouldn't advise using a Pi 1 for it, but it might run okay on a Pi 4 if you're only downloading a couple films a day or something.

For disk space, you need space to store incomplete downloads and cache them before they're downloaded, so it depends on what you're downloading. I personally run the entire setup on two raid 0 SSDs for high disk speeds, since essentially they're just caches before uploading.

Q: Why are most of the containers on the host network?

A: You'd be surprised how much CPU a bandwith-heavy container can use using the Docker proxy (especially for something like Sabnzbd). It just makes sense to allow the heavy stuff to bridge straight to the host, which also comes with its own set of connectivity challenges. Also, each open port would be a proxy process, so having a large range for torrenting would suck.

Q: How do I disable some of the services I don't want/need?

A: You can edit the .env file (after you've made a copy of .env.template) and disable any service by changing it from a 1 to a 0. eg to disable LazyLibrarian, you could add lazylibrarian_enabled=0.

Q: There are some extra settings in the service interface that you don't mention! What do I do?!

A: That's intentional. The defaults for whatever I don't mention are usually fine. If I included all of the config options, it would take too long to configure.

Q: Why is there a custom container for most services?

A:

  • Traktarr/Bazarr times out listing movies/TV after 30/60 seconds. I edit it so it times out after 5 minutes instead, as sometimes Sonarr/Radarr's APIs can lag.
  • I symlink Sonarr/Radarr's logs to stdout, to make it easier to view their logs
  • The rest of the services contain healthcheck scripts that check that the mount is active, and the web UI is up.

You can see the containers in Makeshift/Marauder-Containers.

Q: Why Plex as opposed to Emby/Jellyfin/Serviio/Whatever?

A: Jellyfin's Chromecast support is iffy at best, especially with subtitles (I watch anime on my Chromecast, deal with it). Emby has similar issues with casting and subtitles but is probably otherwise the least-worst offering. Serviio is a little feature bare. Plex, as much hacking as it requires to get to work, and as absolutely freaking terrible as its new interface is, does work once it's set up properly, and handles the abuse I throw at it fairly well.

Q: Wait, you automatically switch team drives? Won't that cause duplicates?

A: Nope, I fixed that in #4.

Wiki

Pretty much all documentation has been moved to the wiki.

Todo

Major

  • Usenet support
  • Torrent support (60%)

Services:

  • Rclone
  • NZBHydra2
  • Radarr
  • Sonarr
  • Sabnzbd
  • Traktarr
  • Medusa
  • Headphones
  • LazyLibrarian
  • Mylar
  • Bazarr
  • Transmission
  • Jackett
  • Plex
  • Tautulli
  • Ombi

Remote-Control:

  • Radarr Telegram Bot
  • Sonarr Telegram Bot
  • Ombi

Documentation:

  • Readme
  • Env Setup
  • rclone
  • NZBHydra2
  • Radarr
  • Sonarr
  • Sabnzbd
  • Traktarr
  • Medusa
  • Headphones
  • LazyLibrarian
  • Mylar
  • Bazarr
  • Radarr Telegram Bot
  • Sonarr Telegram Bot
  • Backing Up
  • Transmission
  • Jackett
  • Plex (Needs recommended settings for transcoding etc)
  • Advanced Plex
  • Tautulli
  • Ombi

Extras:

  • Intelligently handle torrents and clean up stuff that isn't downloading properly

More Repositories

1

OneLineHelloWorld

A completely serious Javascript library for outputting "Hello, World!" in one line, demonstrating how non-verbose Javascript can really be.
11
star
2

telegram-sonarr-radarr-bot

A combined Sonarr and Radarr Telegram bot
JavaScript
9
star
3

generate-dependabot-glob-action

Generates a `dependabot.yml` and PRs it against your repo if it needs updating to include a new directory or package-ecosystem, with globs/wildcards
JavaScript
9
star
4

Marauder-Containers

The containers used in Makeshift/Marauder
Shell
7
star
5

docker-nginx-alpine-amplify

Nginx on Alpine with Amplify included, because Nginx itself doesn't offer that
Dockerfile
6
star
6

eve-goons-waitlist

The ESI-enabled ajax-based waitlist used by the Incursions squad in Goonfleet of Eve Online.
JavaScript
6
star
7

gdrive-rclone-crypt-video-streaming

Stream your Rclone-encrypted files from Google Drive to the browser
JavaScript
4
star
8

nginx-retry-proxy

A customisable backup proxy server that helps Nginx retry connections to upstreams.
JavaScript
3
star
9

cloudplexscripts

2
star
10

transmission-queue-order-by-seeds

Automatically orders torrents by number of seeds in Transmission, so more popular torrents get downloaded first.
JavaScript
2
star
11

SyrniaBotcheckBot

A human-powered bot for the game Syrnia, utilising the 2captcha service
JavaScript
1
star
12

Desktop-Background-Image-Deleter

These scripts are designed to allow the user to delete their current desktop background, and can then manually cycle to the next one. Good for those with lots of unsorted backgrounds.
Visual Basic
1
star
13

docker-generate-nginx-conf

Dynamically generate nginx reverse proxy config when containers go up and down
JavaScript
1
star
14

rclone-gdrive-multiplexed-mount

Multiplexes Google Team Drives with Rclone to create unlimited size R/W mountable cloud filesystems
1
star
15

freelancer_binis

All data bini's from the game Freelancer converted to human-readable ini
JavaScript
1
star
16

sonarr-batch-import

Mass import TV series into Sonarr
JavaScript
1
star
17

TheOracle

A bot for the "spamsle" slack group, which has several different features.
JavaScript
1
star
18

shop_titans_dashboards

JavaScript
1
star
19

Freelancer-Autosplitters

LiveSplit autosplitters for the game Freelancer
LSL
1
star
20

CV

My CV
TeX
1
star
21

terragrunt-status

Describes the deployment status of multiple Terragrunt-managed Terraform stacks
JavaScript
1
star
22

Hide-Collection-Only-eBay

A Chrome plugin to add a "hide collection-only" button to eBay
Shell
1
star
23

NLP-IM-RAT

An Investigation into Network Monitoring with Natural Language Processing
JavaScript
1
star
24

shop-titans-market-api

A crappy market API that interacts with my database full of sneakily extracted market data
JavaScript
1
star
25

ChatWars---Scrape-All-Items-From-Wiki

Scrapes all the items from the Chat Wars wiki API and drops them into a Mongo DB.
JavaScript
1
star