Compare commits

...

4 Commits

Author SHA1 Message Date
Flaminel 6587014e8d fixed exiting after one torrent processed 2024-11-14 22:24:01 +02:00
Marius Nechifor 36a07b251a add test environment 2024-11-14 13:23:49 +02:00
Marius Nechifor c48eed7f77 create LICENSE 2024-11-14 10:41:12 +02:00
Flaminel 48f3c3b35b fixed readme 2024-11-14 09:14:19 +02:00
63 changed files with 474 additions and 3 deletions
+3
View File
@@ -165,3 +165,6 @@ src/.idea/
# Ignore Jetbrains IntelliJ Workspace Directories # Ignore Jetbrains IntelliJ Workspace Directories
.idea/ .idea/
**/logs/
**/MediaCover/
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Flaminel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+2 -2
View File
@@ -39,11 +39,11 @@ docker run -d \
| QBITTORRENT__URL | Yes | qBittorrent instance url | http://localhost:8080 | | QBITTORRENT__URL | Yes | qBittorrent instance url | http://localhost:8080 |
| QBITTORRENT__USERNAME | Yes | qBittorrent user | empty | | QBITTORRENT__USERNAME | Yes | qBittorrent user | empty |
| QBITTORRENT__PASSWORD | Yes | qBittorrent password | empty | | QBITTORRENT__PASSWORD | Yes | qBittorrent password | empty |
| |||||
| SONARR__ENABLED | No | Whether Sonarr cleanup is enabled or not | true | | SONARR__ENABLED | No | Whether Sonarr cleanup is enabled or not | true |
| SONARR__INSTANCES__0__URL | Yes | First Sonarr instance url | http://localhost:8989 | | SONARR__INSTANCES__0__URL | Yes | First Sonarr instance url | http://localhost:8989 |
| SONARR__INSTANCES__0__APIKEY | Yes | First Sonarr instance API key | empty | | SONARR__INSTANCES__0__APIKEY | Yes | First Sonarr instance API key | empty |
| |||||
| RADARR__ENABLED | No | Whether Radarr cleanup is enabled or not | false | | RADARR__ENABLED | No | Whether Radarr cleanup is enabled or not | false |
| RADARR__INSTANCES__0__URL | Yes | First Radarr instance url | http://localhost:8989 | | RADARR__INSTANCES__0__URL | Yes | First Radarr instance url | http://localhost:8989 |
| RADARR__INSTANCES__0__APIKEY | Yes | First Radarr instance API key | empty | | RADARR__INSTANCES__0__APIKEY | Yes | First Radarr instance API key | empty |
@@ -96,7 +96,7 @@ public sealed class QueueCleanerHandler
if (torrent is not { CompletionOn: not null, Downloaded: null or 0 }) if (torrent is not { CompletionOn: not null, Downloaded: null or 0 })
{ {
_logger.LogInformation("skip | {torrent}", record.Title); _logger.LogInformation("skip | {torrent}", record.Title);
return; continue;
} }
itemsToBeRefreshed.Add(GetRecordId(instanceType, record)); itemsToBeRefreshed.Add(GetRecordId(instanceType, record));
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="73140dfd-12c2-49d9-93d6-94dd1f0bc538" version="1">
<creationDate>2024-11-12T08:27:40.5991235Z</creationDate>
<activationDate>2024-11-12T08:27:40.5870855Z</activationDate>
<expirationDate>2025-02-10T08:27:40.5870855Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>FJN9+ak89dkr+ZPZD/LymeCCwH/UI3kNdaMqxSnY6G8bui1yNjGtLpQQOJJlTOAdAyZvHUyPUvv99F70uZF7qg==</value>
</masterKey>
</descriptor>
</descriptor>
</key>
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
146
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
d8:announce28:http://tracker:6969/announce10:created by26:Enhanced-CTorrent/dnh3.3.213:creation datei1731398141e4:infod6:lengthi4e4:name68:Speak.No.Evil.2024.2160p.MA.WEB-DL.DDP5.1.Atmos.H.265-HHWEB.mkv.zipx12:piece lengthi262144e6:pieces20:©Jå̱›¦Lsӑ釘/»Óee
+25
View File
@@ -0,0 +1,25 @@
<rss version="2.0">
<channel>
<title>Test feed</title>
<link>http://nginx/custom/radarr_bad.xml</link>
<description>
Test
</description>
<language>en-CA</language>
<copyright> Test </copyright>
<pubDate>Tue, 5 Nov 2024 22:02:13 -0400</pubDate>
<lastBuildDate>Tue, 5 Nov 2024 22:02:13 -0400</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<ttl>30</ttl>
<item>
<title>Speak.No.Evil.2024.2160p.MA.WEB-DL.DDP5.1.Atmos.H.265-HHWEB</title>
<description>Test</description>
<size>4138858110</size>
<link>http://nginx/custom/radarr_bad.torrent</link>
<guid isPermaLink="false">
174674a88c8947f6f9057ac3f81efde384ed216cade43564ec450f2cb4677554
</guid>
<pubDate>Sat, 24 Sep 2022 22:02:13 -0300</pubDate>
</item>
</channel>
</rss>
+1
View File
@@ -0,0 +1 @@
d8:announce28:http://tracker:6969/announce10:created by26:Enhanced-CTorrent/dnh3.3.213:creation datei1731357387e4:infod6:lengthi5e4:name93:Agatha.All.Along.S01E01.Seekest.Thou.the.Road.2160p.APPS.WEB-DL.DDP5.1.Atmos.H.265-VARYG.zipx12:piece lengthi262144e6:pieces20:NC½"ÆnvºžÝÁù”埃ee
+25
View File
@@ -0,0 +1,25 @@
<rss version="2.0">
<channel>
<title>Test feed</title>
<link>http://nginx/custom/sonarr_bad.xml</link>
<description>
Test
</description>
<language>en-CA</language>
<copyright> Test </copyright>
<pubDate>Tue, 5 Nov 2024 22:02:13 -0400</pubDate>
<lastBuildDate>Tue, 5 Nov 2024 22:02:13 -0400</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<ttl>30</ttl>
<item>
<title>Agatha.All.Along.S01E01.Seekest.Thou.the.Road.2160p.APPS.WEB-DL.DDP5.1.Atmos.H.265-VARYG</title>
<description>Test</description>
<size>4138858110</size>
<link>http://nginx/custom/sonarr_bad.torrent</link>
<guid isPermaLink="false">
174674a88c8947f6f9057ac3f81efde384ed216cade43564ec450f2cb4677554
</guid>
<pubDate>Sat, 24 Sep 2022 22:02:13 -0300</pubDate>
</item>
</channel>
</rss>
@@ -0,0 +1,28 @@
apt install ctorrent
apt-get
yum
apk
apk search ctorrent
apk add ctorrent
apk update
apk add ctorrent
exit
apt
apk
apk update
apk search ctorrent
apk add ctorrent
apk install apt
apk add ctorrent-dnh
apk search ctorrent
apk search torrent
apk search transmission
apk install transmission-cli
apk add transmission-cli
transmission-create -o bad.torrent -t http://tracker:6969/announce /downloads/Agatha.All.Along.S01E01.Seekest.Thou.the.Road.2160p.APPS.WEB-DL.DDP5.1.Atmos.H.265-VARYG.mkv.zipx
transmission-cli
apk add transmission-create
transmission-create
apk add transmission
transmission-create -o bad.torrent -t http://tracker:6969/announce /downloads/Agatha.All.Along.S01E01.Seekest.Thou.the.Road.2160p.APPS.WEB-DL.DDP5.1.Atmos.H.265-VARYG.mkv.zipx
exit
@@ -0,0 +1 @@
d10:created by26:Enhanced-CTorrent/dnh3.3.213:creation datei1731357387e4:infod6:lengthi5e4:name93:Agatha.All.Along.S01E01.Seekest.Thou.the.Road.2160p.APPS.WEB-DL.DDP5.1.Atmos.H.265-VARYG.zipx12:piece lengthi262144e6:pieces20:NC½"ÆnvºžÝÁù”埃ee
@@ -0,0 +1 @@
d10:created by26:Enhanced-CTorrent/dnh3.3.213:creation datei1731398141e4:infod6:lengthi4e4:name68:Speak.No.Evil.2024.2160p.MA.WEB-DL.DDP5.1.Atmos.H.265-HHWEB.mkv.zipx12:piece lengthi262144e6:pieces20:©Jå̱›¦Lsӑ釘/»Óee
@@ -0,0 +1 @@
c132c8bf59f25af11cf00c08ab61476fbc72b2c6
@@ -0,0 +1,2 @@
{
}
@@ -0,0 +1,2 @@
[Stats]
AllStats=@Variant(\0\0\0\x1c\0\0\0\x2\0\0\0\x12\0\x41\0l\0l\0t\0i\0m\0\x65\0\x44\0L\0\0\0\x4\0\0\0\0\0\x3\xae\x61\0\0\0\x12\0\x41\0l\0l\0t\0i\0m\0\x65\0U\0L\0\0\0\x4\0\0\0\0\0\x5?%)
@@ -0,0 +1,56 @@
[Application]
FileLogger\Age=1
FileLogger\AgeType=1
FileLogger\Backup=true
FileLogger\DeleteOld=true
FileLogger\Enabled=true
FileLogger\MaxSizeBytes=66560
FileLogger\Path=/config/qBittorrent/logs
[AutoRun]
enabled=false
program=
[BitTorrent]
Session\AddTorrentStopped=false
Session\DefaultSavePath=/downloads/
Session\ExcludedFileNames=
Session\Port=6881
Session\QueueingSystemEnabled=true
Session\SSL\Port=65325
Session\ShareLimitAction=Stop
Session\TempPath=/downloads/incomplete/
[Core]
AutoDeleteAddedTorrentFile=Never
[LegalNotice]
Accepted=true
[Meta]
MigrationVersion=6
[Network]
Cookies=@Invalid()
PortForwardingEnabled=false
Proxy\HostnameLookupEnabled=false
Proxy\Profiles\BitTorrent=true
Proxy\Profiles\Misc=true
Proxy\Profiles\RSS=true
[Preferences]
Connection\PortRangeMin=6881
Connection\UPnP=false
Downloads\SavePath=/downloads/
Downloads\TempPath=/downloads/incomplete/
General\Locale=en
MailNotification\req_auth=true
WebUI\Address=*
WebUI\Password_PBKDF2="@ByteArray(Y5qTn9Ckjd9EGunzNdr3fg==:i+l/UB3dqYrL5SbdbCjPcPUCehLb/w1nXr3oM7PgJI3d3KTISz0rWGS29mURaBC9kfuMrG3WEhR/kM2ykvcn3Q==)"
WebUI\Port=8081
WebUI\ServerDomains=*
WebUI\Username=test
[RSS]
AutoDownloader\DownloadRepacks=true
AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})"
@@ -0,0 +1,2 @@
{
}
@@ -0,0 +1,2 @@
{
}
@@ -0,0 +1 @@
d8:announce28:http://tracker:6969/announce10:created by26:Enhanced-CTorrent/dnh3.3.213:creation datei1731398141e4:infod6:lengthi4e4:name68:Speak.No.Evil.2024.2160p.MA.WEB-DL.DDP5.1.Atmos.H.265-HHWEB.mkv.zipx12:piece lengthi262144e6:pieces20:©Jå̱›¦Lsӑ釘/»Óee
@@ -0,0 +1 @@
d8:announce28:http://tracker:6969/announce10:created by26:Enhanced-CTorrent/dnh3.3.213:creation datei1731357387e4:infod6:lengthi5e4:name93:Agatha.All.Along.S01E01.Seekest.Thou.the.Road.2160p.APPS.WEB-DL.DDP5.1.Atmos.H.265-VARYG.zipx12:piece lengthi262144e6:pieces20:NC½"ÆnvºžÝÁù”埃ee
@@ -0,0 +1,7 @@
wget http://nginx:8082/bad.torrent
wget http://nginx:80
wget http://nginx:80/bad.torrent
wget http://nginx:80/bad.rss
wget http://nginx:80/custom/bad.rss
cat bad.rss
exit
@@ -0,0 +1,8 @@
{
"radarr": {
"save_path": ""
},
"tv-sonarr": {
"save_path": ""
}
}
@@ -0,0 +1,2 @@
[Stats]
AllStats=@Variant(\0\0\0\x1c\0\0\0\x2\0\0\0\x12\0\x41\0l\0l\0t\0i\0m\0\x65\0\x44\0L\0\0\0\x4\0\0\0\0\0\x6\xe4\xdd\0\0\0\x12\0\x41\0l\0l\0t\0i\0m\0\x65\0U\0L\0\0\0\x4\0\0\0\0\0\b\xc3\xde)
@@ -0,0 +1,56 @@
[Application]
FileLogger\Age=1
FileLogger\AgeType=1
FileLogger\Backup=true
FileLogger\DeleteOld=true
FileLogger\Enabled=true
FileLogger\MaxSizeBytes=66560
FileLogger\Path=/config/qBittorrent/logs
[AutoRun]
enabled=false
program=
[BitTorrent]
ExcludedFileNamesEnabled=true
Session\AddTorrentStopped=false
Session\DefaultSavePath=/downloads/
Session\ExcludedFileNames=*.apk, *.bat, *.bin, *.bmp, *.cmd, *.com, *.db, *.diz, *.dll, *.dmg, *.etc, *.exe, *.gif, *.htm, *.html, *.ico, *.ini, *.iso, *.jar, *.jpg, *.js, *.link, *.lnk, *.msi, *.nfo, *.perl, *.php, *.pl, *.png, *.ps1, *.psc1, *.psd1, *.psm1, *.py, *.pyd, *.rb, *.readme, *.reg, *.run, *.scr, *.sh, *.sql, *.text, *.thumb, *.torrent, *.txt, *.url, *.vbs, *.wsf, *.xml, *.zipx, *.7z, *.bdjo, *.bdmv, *.bin, *.bmp, *.cci, *.clpi, *.crt, *.dll, *.exe, *.html, *.idx, *.inf, *.jar, *.jpeg, *.jpg, *.lnk, *.m4a, *.mpls, *.msi, *.nfo, *.pdf, *.png, *.rar, *(sample).*, *sample.mkv, *sample.mp4, *.sfv, *.srt, *.sub, *.tbl, Trailer.*, *.txt, *.url, *.xig, *.xml, *.xrt, *.zip, *.zipx, *.Lnk
Session\Port=6881
Session\QueueingSystemEnabled=true
Session\SSL\Port=15561
Session\ShareLimitAction=Stop
Session\TempPath=/downloads/incomplete/
[Core]
AutoDeleteAddedTorrentFile=Never
[LegalNotice]
Accepted=true
[Meta]
MigrationVersion=6
[Network]
Cookies=@Invalid()
PortForwardingEnabled=false
Proxy\HostnameLookupEnabled=false
Proxy\Profiles\BitTorrent=true
Proxy\Profiles\Misc=true
Proxy\Profiles\RSS=true
[Preferences]
Connection\PortRangeMin=6881
Connection\UPnP=false
Downloads\SavePath=/downloads/
Downloads\TempPath=/downloads/incomplete/
General\Locale=en
MailNotification\req_auth=true
WebUI\Address=*
WebUI\Password_PBKDF2="@ByteArray(yhRK9ENcAXgJ5b0HJ1ASwg==:ucqSEDxil3NqJlug8G4PjBXAz37Azo42jx8Vh3RtNkCYEK4RgjRmMeiUaIN9k4Pqxi7D1aBBVFOQ9vQJZMfUIQ==)"
WebUI\ServerDomains=*
WebUI\Username=test
[RSS]
AutoDownloader\DownloadRepacks=true
AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})"
@@ -0,0 +1,2 @@
{
}
@@ -0,0 +1,2 @@
{
}
@@ -0,0 +1 @@
92eba3c5-a8d0-44d5-836d-25bc4aa81a85
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="729140b3-0296-4e14-8afa-60275fd797ca" version="1">
<creationDate>2024-11-12T08:27:39.8894479Z</creationDate>
<activationDate>2024-11-12T08:27:39.879535Z</activationDate>
<expirationDate>2025-02-10T08:27:39.879535Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>aq0fbIABPzsLl4bnZllVq2NhmsOrjc5zPeiGbBSTc5DMPm8n5C86DzCTPX0HJtZFUgaVoc+3qjFQJ4UB0J31rA==</value>
</masterKey>
</descriptor>
</descriptor>
</key>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
145
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="7e009a79-6fb8-4487-a701-c71768df1f34" version="1">
<creationDate>2024-11-12T08:29:09.621896Z</creationDate>
<activationDate>2024-11-12T08:29:09.6125365Z</activationDate>
<expirationDate>2025-02-10T08:29:09.6125365Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>4XVtakA4x+z0lkubqw0sO0dANs6WlDqehgdJUaaf0W9u/lIIq404B1HhVEs+fOpiBuyJDBpjbauLC9KlAfj8NA==</value>
</masterKey>
</descriptor>
</descriptor>
</key>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
145
@@ -0,0 +1 @@
1df9f2cc-17dc-4130-9753-9b694f82f1b5
@@ -0,0 +1 @@
{"update":{"sid":"e87df0117b134d64b99f5b878e652b49","did":"1df9f2cc-17dc-4130-9753-9b694f82f1b5","init":true,"started":"2024-11-12T08:27:39.2729256+00:00","timestamp":"2024-11-12T08:27:39.2735692+00:00","seq":0,"duration":0,"errors":0,"attrs":{"release":"4.0.10.2544-main","environment":"main"}}}
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="460837be-4d61-409f-95f8-b78f2a65ed81" version="1">
<creationDate>2024-11-10T19:27:03.0013963Z</creationDate>
<activationDate>2024-11-10T19:27:02.9916656Z</activationDate>
<expirationDate>2025-02-08T19:27:02.9916656Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>N6KEU+20is+M3ZH+mi+TYVIjTes0zQ8MJHE7npaP3B8FM8jN+5tMp3SKnu6II2jdWybEvBjAvoycoaRDRsDnZQ==</value>
</masterKey>
</descriptor>
</descriptor>
</key>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
145
+148
View File
@@ -0,0 +1,148 @@
# user: test
# pass: testing
# use this to create torrent files
# docker run --rm -it -v $(pwd)/data/qbittorrent-bad/downloads:/downloads --name debian debian:bookworm-slim
# apt update && apt install ctorrent
# ctorrent -t -u "http://tracker:6969/announce" -s example.torrent file_name
# api keys
# sonarr: 96736c3eb3144936b8f1d62d27be8cee
# radarr: 705b553732ab4167ab23909305d60600
# lidarr: 4bd467b8702a4ecf94f737922dac6481
# readarr: 51c053efbea34bad90120d5c2237aa85
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:4.6.7-libtorrentv1
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- WEBUI_PORT=8080
volumes:
- ./data/qbittorrent/config:/config
- ./data/qbittorrent/downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
qbittorrent-bad:
image: lscr.io/linuxserver/qbittorrent:4.6.7-libtorrentv1
container_name: qbittorrent-bad
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
- WEBUI_PORT=8081
volumes:
- ./data/qbittorrent-bad/config:/config
- ./data/qbittorrent-bad/downloads:/downloads
ports:
- 8081:8081
- 6882:6881
- 6882:6881/udp
restart: unless-stopped
tracker:
image: wiltonsr/opentracker:open
container_name: opentracker
ports:
- 6969:6969/tcp
- 6969:6969/udp
restart: unless-stopped
nginx:
image: nginx:latest
container_name: nginx
volumes:
- ./data/nginx:/usr/share/nginx/html/custom
ports:
- 8082:80
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- ./data/sonarr/config:/config
- ./data/sonarr/tv:/tv
- ./data/qbittorrent/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- ./data/radarr/config:/config
- ./data/radarr/movies:/movies
- ./data/qbittorrent/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- ./data/lidarr/config:/config
- ./data/lidarr/music:/music
- ./data/qbittorrent/downloads:/downloads
ports:
- 8686:8686
restart: unless-stopped
readarr:
image: lscr.io/linuxserver/readarr:develop
container_name: readarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- ./data/readarr/config:/config
- ./data/readarr/books:/books
- ./data/qbittorrent/downloads:/downloads
ports:
- 8787:8787
restart: unless-stopped
cleanuperr:
image: flaminel/cleanuperr:1.1.0
container_name: cleanuperr
environment:
- TRIGGERS__QUEUECLEANER=0/30 * * * * ?
- QBITTORRENT__URL=http://qbittorrent:8080
- QBITTORRENT__USERNAME=test
- QBITTORRENT__PASSWORD=testing
- SONARR__ENABLED=true
- SONARR__INSTANCES__0__URL=http://sonarr:8989
- SONARR__INSTANCES__0__APIKEY=96736c3eb3144936b8f1d62d27be8cee
- RADARR__ENABLED=true
- RADARR__INSTANCES__0__URL=http://radarr:7878
- RADARR__INSTANCES__0__APIKEY=705b553732ab4167ab23909305d60600
restart: unless-stopped
depends_on:
- qbittorrent
- sonarr
- radarr
- lidarr
- readarr