├── .env.example ├── .gitignore ├── README.md ├── docker-compose.yml └── extra ├── diagram.png └── patchy.png /.env.example: -------------------------------------------------------------------------------- 1 | ## Volumes 2 | DOCKER_CONFIG_DIR= 3 | DOCKER_STORAGE_DIR= 4 | MOVIES_DIR= 5 | TV_DIR= 6 | MUSIC_DIR= 7 | BOOKS_DIR= 8 | 9 | ## Misc 10 | PUID= 11 | PGID= 12 | TZ= 13 | 14 | ## VPN 15 | VPN_USER= 16 | VPN_PASS= 17 | VPN_COUNTRY= 18 | VPN_TECHNOLOGY= 19 | VPN_NETWORK= 20 | 21 | ## Deemix 22 | DEEMIX_ARL= 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |

Pirate

3 |

Do what you want cause a pirate is free, you are a pirate!

4 | 5 | --- 6 | 7 | This is the Docker Compose file I use to setup my pirate system. I host it on a Synology NAS, but can be setup anywhere with a few modifications. 8 | 9 | ## What does it include? 10 | 11 | - [Sonarr][Sonarr]: To manage TV Shows. 12 | - [Radarr][Radarr]: To manage Movies. 13 | - [Lidarr][Lidarr]: To manage Music. 14 | - [Bazarr][Bazarr]: To manage Subtitles for TV Shows & Movies. 15 | - [Deluge][Deluge]: Client to download torrents. 16 | - [NZBGet][NZBGet]: Client to download from Usenets. 17 | - [Deemix][Deemix]: Client to download music from Deezer. 18 | - [Calibre][Calibre]: Server to manage E-Books. 19 | - [Jackett][Jackett]: Torrent searcher & Torznab provider. 20 | - [NZBHydra2][NZBHydra2]: Usenet & Torznabs searcher. 21 | - [Watchtower][Watchtower]: To keep all images up to date. 22 | 23 | ## How does it work? 24 | 25 | ![](extra/diagram.png) 26 | 27 | If you're not familiar with the _pirate way of life_, this could be confussing, but take the following example as a reference: 28 | 29 | 1. I want to see the Shrek movie - who doesn't anyway. 30 | 1. I go to **Sonarr** and add the movie. 31 | 1. **Sonarr** will request to **NZBHydra2** the Shrek movie. 32 | 1. **NZBHydra2** will search in existing Newsnab Indexers and Torznabs from **Jackett**. 33 | 1. **Jackett** will search for torrents and return results to **NZBHydra2**. 34 | 1. **NZBHydra2** will return all the results to **Sonarr**. 35 | 1. **Sonarr** will search in the result for the best match based on your preferences. 36 | 1. **Sonarr** will send the resource either to **NZBGet** if it's a usenet file, or **Deluge** if it's a torrent. 37 | 1. **NZBGet** or **Deluge** will finish the download, **Sonarr** is watching the status. 38 | 1. **Sonarr** will mark the download as complete, and let know **Bazarr**. 39 | 1. **Sonarr** will move the downloaded file to your prefered directory, for example `Movies`. 40 | 1. **Bazarr** will search for the best subtitles based on your preferences. 41 | 42 | After this you will end up with the Shrek movie with subtitles, you can consume it using **Plex**, but that's not included in this repository. 43 | 44 | Same can happen with TV Shows, Music, and Books. 45 | 46 | ## What else? 47 | 48 | Not much. This repository is not a tutorial or a guide, there's plenty of information out there. This is my personal setup, easy as cake and configurable. 49 | 50 | ## Where do you run it? 51 | 52 | In a Synology Diskstation DS218+, including Plex, and some other stuff. 53 | 54 | ## What's up with the watermark in the diagram? 55 | 56 | Believe it or not it took me like an hour to do it, just want to avoid being copied. 57 | 58 | If you want the image without the watermark, open an issue and I'll be happy to sell it to you. 59 | 60 | ## License 61 | 62 | What? 63 | 64 | [Sonarr]: https://sonarr.tv 65 | [Radarr]: https://radarr.video 66 | [Lidarr]: https://lidarr.audio 67 | [Bazarr]: https://www.bazarr.media 68 | [Jackett]: https://github.com/Jackett/Jackett 69 | [Deluge]: https://deluge-torrent.org 70 | [NZBGet]: https://nzbget.net 71 | [Deemix]: https://gitlab.com/users/RemixDev/projects 72 | [Calibre]: https://calibre-ebook.com 73 | [Watchtower]: https://containrrr.dev/watchtower 74 | [NZBHydra2]: https://github.com/theotherp/nzbhydra2 75 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.2" 2 | 3 | services: 4 | # Radarr - https://hotio.dev/containers/radarr 5 | # 6 | radarr: 7 | container_name: radarr 8 | image: ghcr.io/hotio/radarr:latest 9 | restart: unless-stopped 10 | logging: 11 | driver: json-file 12 | network_mode: bridge 13 | ports: 14 | - 7878:7878 15 | environment: 16 | - PUID=${PUID} 17 | - PGID=${PGID} 18 | - TZ=${TZ} 19 | volumes: 20 | - /etc/localtime:/etc/localtime:ro 21 | - ${DOCKER_CONFIG_DIR}/radarr:/config:rw 22 | - ${DOCKER_STORAGE_DIR}:/data:rw 23 | - ${MOVIES_DIR}:/data/media:rw 24 | 25 | # Sonarr - https://hotio.dev/containers/sonarr 26 | # 27 | sonarr: 28 | container_name: sonarr 29 | image: ghcr.io/hotio/sonarr:latest 30 | restart: unless-stopped 31 | logging: 32 | driver: json-file 33 | network_mode: bridge 34 | ports: 35 | - 8989:8989 36 | environment: 37 | - PUID=${PUID} 38 | - PGID=${PGID} 39 | - TZ=${TZ} 40 | volumes: 41 | - /etc/localtime:/etc/localtime:ro 42 | - ${DOCKER_CONFIG_DIR}/sonarr:/config:rw 43 | - ${DOCKER_STORAGE_DIR}:/data:rw 44 | - ${TV_DIR}:/data/media:rw 45 | 46 | # Lidarr - https://hotio.dev/containers/lidarr 47 | # 48 | lidarr: 49 | container_name: lidarr 50 | image: ghcr.io/hotio/lidarr:latest 51 | restart: unless-stopped 52 | logging: 53 | driver: json-file 54 | network_mode: bridge 55 | ports: 56 | - 8686:8686 57 | environment: 58 | - PUID=${PUID} 59 | - PGID=${PGID} 60 | - TZ=${TZ} 61 | volumes: 62 | - /etc/localtime:/etc/localtime:ro 63 | - ${DOCKER_CONFIG_DIR}/lidarr:/config:rw 64 | - ${DOCKER_STORAGE_DIR}:/data:rw 65 | - ${MUSIC_DIR}:/data/media:rw 66 | 67 | # Bazarr - https://hotio.dev/containers/bazarr 68 | # 69 | bazarr: 70 | container_name: bazarr 71 | image: ghcr.io/hotio/bazarr:latest 72 | restart: unless-stopped 73 | logging: 74 | driver: json-file 75 | network_mode: bridge 76 | ports: 77 | - 6767:6767 78 | environment: 79 | - PUID=${PUID} 80 | - PGID=${PGID} 81 | - TZ=${TZ} 82 | volumes: 83 | - /etc/localtime:/etc/localtime:ro 84 | - ${DOCKER_CONFIG_DIR}/bazarr:/config:rw 85 | - ${MOVIES_DIR}:/data/media/movies:rw 86 | - ${TV_DIR}:/data/media/tv:rw 87 | 88 | # Deluge - https://github.com/linuxserver/docker-deluge 89 | # 90 | deluge: 91 | container_name: deluge 92 | image: ghcr.io/linuxserver/deluge:latest 93 | restart: unless-stopped 94 | logging: 95 | driver: json-file 96 | network_mode: service:wireguard 97 | depends_on: 98 | - wireguard 99 | environment: 100 | - PUID=${PUID} 101 | - PGID=${PGID} 102 | - TZ=${TZ} 103 | - UMASK=022 104 | volumes: 105 | - /etc/localtime:/etc/localtime:ro 106 | - ${DOCKER_CONFIG_DIR}/deluge:/config:rw 107 | - ${DOCKER_STORAGE_DIR}/torrents:/data/torrents:rw 108 | 109 | # Jackett - https://github.com/linuxserver/docker-jackett 110 | # 111 | jackett: 112 | container_name: jackett 113 | image: ghcr.io/linuxserver/jackett:latest 114 | restart: unless-stopped 115 | logging: 116 | driver: json-file 117 | network_mode: service:wireguard 118 | depends_on: 119 | - wireguard 120 | environment: 121 | - PUID=${PUID} 122 | - PGID=${PGID} 123 | - TZ=${TZ} 124 | - UMASK=002 125 | - AUTO_UPDATE=false 126 | volumes: 127 | - /etc/localtime:/etc/localtime:ro 128 | - ${DOCKER_CONFIG_DIR}/jackett:/config:rw 129 | 130 | # Calibre - https://hub.docker.com/r/linuxserver/calibre 131 | # 132 | calibre: 133 | container_name: calibre 134 | image: ghcr.io/linuxserver/calibre 135 | restart: unless-stopped 136 | logging: 137 | driver: json-file 138 | network_mode: bridge 139 | ports: 140 | - 8500:8080 141 | - 8501:8081 142 | environment: 143 | - PUID=${PUID} 144 | - PGID=${PGID} 145 | - TZ=${TZ} 146 | volumes: 147 | - ${BOOKS_DIR}:/config 148 | 149 | # NZBHydra2 - https://hotio.dev/containers/nzbhydra2 150 | # 151 | nzbhydra2: 152 | container_name: nzbhydra2 153 | image: ghcr.io/linuxserver/nzbhydra2:latest 154 | restart: unless-stopped 155 | logging: 156 | driver: json-file 157 | network_mode: bridge 158 | ports: 159 | - 5076:5076 160 | environment: 161 | - PUID=${PUID} 162 | - PGID=${PGID} 163 | - TZ=${TZ} 164 | - UMASK=002 165 | volumes: 166 | - /etc/localtime:/etc/localtime:ro 167 | - ${DOCKER_CONFIG_DIR}/nzbhydra2:/config:rw 168 | - ${DOCKER_STORAGE_DIR}:/downloads:rw 169 | 170 | # Wireguard - https://hub.docker.com/r/linuxserver/wireguard 171 | # 172 | wireguard: 173 | container_name: wireguard 174 | image: jordanpotter/wireguard 175 | restart: unless-stopped 176 | cap_add: 177 | - NET_ADMIN 178 | - SYS_MODULE 179 | sysctls: 180 | net.ipv4.conf.all.src_valid_mark: 1 181 | net.ipv4.conf.all.rp_filter: 2 182 | devices: 183 | - /dev/net/tun 184 | ulimits: 185 | memlock: 186 | soft: -1 187 | hard: -1 188 | environment: 189 | - PUID=${PUID} 190 | - PGID=${PGID} 191 | - TZ=${TZ} 192 | - INTERNAL_SUBNET=192.168.1.0/24 193 | volumes: 194 | - ${DOCKER_CONFIG_DIR}/wireguard:/config 195 | ports: 196 | - 8112:8112 # deluge 197 | - 6881:6881 # deluge 198 | - 6881:6881/udp # deluge 199 | - 58846:58846 # deluge 200 | - 9117:9117 # jackett 201 | 202 | # Calibre Web - https://hub.docker.com/r/linuxserver/calibre-web 203 | # 204 | calibre_web: 205 | container_name: calibre_web 206 | image: ghcr.io/linuxserver/calibre-web 207 | restart: unless-stopped 208 | environment: 209 | - PUID=${PUID} 210 | - PGID=${PGID} 211 | - TZ=${TZ} 212 | - DOCKER_MODS=linuxserver/calibre-web:calibre 213 | ports: 214 | - 8083:8083 215 | volumes: 216 | - ${DOCKER_CONFIG_DIR}/calibre-web:/config:rw 217 | - "${BOOKS_DIR}/Calibre\ Library:/books:rw" 218 | 219 | # Homarr - https://github.com/ajnart/homarr 220 | # 221 | homarr: 222 | container_name: homarr 223 | image: ghcr.io/ajnart/homarr:latest 224 | restart: unless-stopped 225 | environment: 226 | - PUID=${PUID} 227 | - PGID=${PGID} 228 | - TZ=${TZ} 229 | volumes: 230 | - ${DOCKER_CONFIG_DIR}/homarr/configs:/app/data/configs 231 | - ${DOCKER_CONFIG_DIR}/homarr/icons:/app/public/icons 232 | - /var/run/docker.sock:/var/run/docker.sock 233 | ports: 234 | - 7575:7575 235 | 236 | # Readarr - https://hub.docker.com/r/linuxserver/readarr 237 | # 238 | readarr: 239 | container_name: readarr 240 | image: lscr.io/linuxserver/readarr:develop 241 | restart: unless-stopped 242 | environment: 243 | - PUID=${PUID} 244 | - PGID=${PGID} 245 | - TZ=${TZ} 246 | volumes: 247 | - ${DOCKER_CONFIG_DIR}/readarr:/config 248 | - "${BOOKS_DIR}/Calibre\ Library:/books:rw" 249 | - ${DOCKER_STORAGE_DIR}/torrents:/data/torrents:rw 250 | ports: 251 | - 8787:8787 252 | -------------------------------------------------------------------------------- /extra/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kinduff/pirate/80b876734089c715b398b1e35f6d8855e2c9afe6/extra/diagram.png -------------------------------------------------------------------------------- /extra/patchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kinduff/pirate/80b876734089c715b398b1e35f6d8855e2c9afe6/extra/patchy.png --------------------------------------------------------------------------------