├── .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 | 
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
--------------------------------------------------------------------------------