Compare commits
9
Commits
fa800942d2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e726709f61 | ||
|
|
fbb2527b52 | ||
|
|
c0e6aa94b5 | ||
|
|
f5c4625e9b | ||
|
|
2b84aa90e1 | ||
|
|
97ec948b3c | ||
|
|
9fcdce389d | ||
|
|
548baedfaf | ||
|
|
b2ab702f00 |
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "Gluetun + qBittorrent (ProtonVPN)",
|
||||
"id": "gluetun-qbittorrent",
|
||||
"available": true,
|
||||
"short_desc": "ProtonVPN'e WireGuard ile baglanan Gluetun VPN gecidi + arkasinda calisan qBittorrent. Kill-switch + otomatik NAT-PMP port forwarding dahil.",
|
||||
"author": "y1lm0z",
|
||||
"port": 61235,
|
||||
"categories": ["network", "utilities"],
|
||||
"description": "Tek dosyada iki container: Gluetun, ProtonVPN'e WireGuard ile baglanip kill-switch (VPN kopunca internet de kesilir) sagliyor. qBittorrent ise kendi agini kullanmiyor, Gluetun'un ag namespace'ini 'network_mode: service:gluetun' ile paylasiyor - tum torrent trafigi zorunlu olarak VPN tunelinden geciyor. ProtonVPN'in NAT-PMP port forwarding'i sayesinde Gluetun periyodik olarak port ister ve degistiginde qBittorrent'in dinleme portunu otomatik gunceller (VPN_PORT_FORWARDING_UP_COMMAND) - elle hicbir sey yapman gerekmez, seed performansi icin kritik olan bu ozellik Mullvad'da yoktu. qBittorrent, Gluetun VPN'e baglanip saglikli olana kadar baslamiyor. WebUI'ye Gluetun'un actigi 61235 portundan erisiliyor.",
|
||||
"tipi_version": 1,
|
||||
"version": "1.0.2",
|
||||
"source": "https://github.com/qdm12/gluetun",
|
||||
"website": "https://github.com/qdm12/gluetun-wiki",
|
||||
"exposable": true,
|
||||
"force_expose": false,
|
||||
"https": false,
|
||||
"no_gui": false,
|
||||
"supported_architectures": ["arm64", "amd64"],
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "password",
|
||||
"label": "WireGuard Private Key",
|
||||
"hint": "ProtonVPN hesabi -> Downloads -> WireGuard configuration. P2P destekli (cift ok ikonlu) bir sunucu sec ve config olustururken 'NAT-PMP (Port Forwarding)' secenegini MUTLAKA ac, yoksa port forwarding calismaz. Indirdigin .conf dosyasindaki PrivateKey degeri.",
|
||||
"required": true,
|
||||
"env_variable": "WIREGUARD_PRIVATE_KEY"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "WireGuard Addresses",
|
||||
"hint": "Ayni .conf dosyasindaki Address alani, IPv4 kismi (orn. 10.2.0.2/32)",
|
||||
"placeholder": "10.2.0.2/32",
|
||||
"required": true,
|
||||
"env_variable": "WIREGUARD_ADDRESSES"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Sunucu Ulkeleri",
|
||||
"hint": "ONEMLI: bos birakma - bos birakirsan Gluetun P2P desteklemeyen bir sunucuya baglanabilir ve port forwarding hic calismaz. Virgulle ayrilmis ulke adlari, orn: Netherlands,Switzerland",
|
||||
"default": "Netherlands",
|
||||
"required": false,
|
||||
"env_variable": "SERVER_COUNTRIES"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Firewall Outbound Subnets",
|
||||
"hint": "Docker ve LAN aginin WebUI'ye erisebilmesi icin izinli subnetler.",
|
||||
"default": "172.16.0.0/12,192.168.0.0/16",
|
||||
"required": false,
|
||||
"env_variable": "FIREWALL_OUTBOUND_SUBNETS"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
services:
|
||||
gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
sysctls:
|
||||
# Debian 13 + yeni kernel'de gorulen "default route not found"
|
||||
# crash-loop hatasi icin: IPv6'yi bu container icin kapatiyoruz.
|
||||
- net.ipv6.conf.all.disable_ipv6=1
|
||||
environment:
|
||||
- VPN_SERVICE_PROVIDER=protonvpn
|
||||
- VPN_TYPE=wireguard
|
||||
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
|
||||
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
|
||||
- SERVER_COUNTRIES=${SERVER_COUNTRIES:-Netherlands}
|
||||
# Sadece P2P/port-forwarding destekleyen sunuculari sec - bu
|
||||
# olmadan Gluetun rastgele (P2P desteklemeyen) bir sunucuya
|
||||
# baglanip port forwarding'i sonsuza kadar "starting" durumunda
|
||||
# birakabiliyor.
|
||||
- PORT_FORWARD_ONLY=on
|
||||
- FIREWALL_OUTBOUND_SUBNETS=${FIREWALL_OUTBOUND_SUBNETS:-172.16.0.0/12,192.168.0.0/16}
|
||||
- TZ=${TZ}
|
||||
# ProtonVPN'in NAT-PMP port forwarding'i: Gluetun otomatik port
|
||||
# ister, degistiginde asagidaki komutla qBittorrent'in dinleme
|
||||
# portunu ANINDA gunceller - elle hicbir sey yapman gerekmiyor.
|
||||
- VPN_PORT_FORWARDING=on
|
||||
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
|
||||
- VPN_PORT_FORWARDING_UP_COMMAND=/bin/sh -c 'wget -O- -nv --retry-connrefused --post-data "json={\"listen_port\":{{PORTS}}}" http://127.0.0.1:61235/api/v2/app/setPreferences'
|
||||
ports:
|
||||
# Sadece WebUI'yi host'a aciyoruz. Torrent peer portu artik ProtonVPN'in
|
||||
# NAT-PMP ile atadigi DINAMIK port - bu, VPN tunelinin (tun0) uzerinden
|
||||
# geliyor, Docker'in host network'unden degil, o yuzden burada ayrica
|
||||
# bir port yayinlamaya gerek yok (Gluetun kendi firewall'unda otomatik
|
||||
# izin veriyor).
|
||||
- 61235:61235
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/gluetun:/gluetun
|
||||
restart: unless-stopped
|
||||
x-runtipi:
|
||||
is_main: true
|
||||
internal_port: 61235
|
||||
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
# Kendi agi yok, gluetun'un ag namespace'ini paylasiyor - tum
|
||||
# trafik VPN tunelinden geciyor (kill switch qbittorrent'i de kapsar).
|
||||
network_mode: "service:gluetun"
|
||||
depends_on:
|
||||
gluetun:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- WEBUI_PORT=61235
|
||||
# Baslangic degeri - Gluetun VPN_PORT_FORWARDING_UP_COMMAND ile
|
||||
# baglanir baglanmaz gercek atanan portla otomatik degistiriyor.
|
||||
- TORRENTING_PORT=61234
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
x-runtipi:
|
||||
schema_version: 2
|
||||
@@ -0,0 +1,41 @@
|
||||
# Gluetun + qBittorrent (ProtonVPN)
|
||||
|
||||
Tek uygulama, iki container: **Gluetun** (VPN geçidi) ve **qBittorrent** (torrent istemcisi). qBittorrent kendi ağını kullanmıyor, `network_mode: service:gluetun` ile Gluetun'un ağ namespace'ini paylaşıyor — bu yüzden tüm torrent trafiği zorunlu olarak ProtonVPN tüneli üzerinden geçiyor. VPN koparsa qBittorrent'in de interneti anında kesilir (kill switch).
|
||||
|
||||
**Fark yaratan özellik:** ProtonVPN, NAT-PMP ile gerçek port forwarding destekliyor (Mullvad 2023'te bunu kaldırmıştı). Gluetun bu portu otomatik ister ve her değiştiğinde qBittorrent'in dinleme portunu **kendisi günceller** — seed performansı için kritik olan bu adım tamamen otomatik.
|
||||
|
||||
## Kurulum
|
||||
|
||||
1. ProtonVPN hesabı → **Downloads → WireGuard configuration** sayfasına git.
|
||||
2. **P2P destekli bir sunucu seç** (çift ok ikonlu olanlar).
|
||||
3. Config oluştururken **"NAT-PMP (Port Forwarding)"** seçeneğini mutlaka aç — bunu atlarsan port forwarding hiç çalışmaz.
|
||||
4. İndirilen `.conf` dosyasından `PrivateKey` → **WireGuard Private Key**, `Address`'in IPv4 kısmı → **WireGuard Addresses** alanına.
|
||||
5. İstersen **Sunucu Ülkeleri** alanına bir ülke yaz (örn. `Netherlands`), boş bırakırsan rastgele P2P sunucu seçilir.
|
||||
6. Kur, başlat.
|
||||
|
||||
## Kurulumdan SONRA yapman gereken tek manuel adım
|
||||
|
||||
qBittorrent WebUI → **Options → Web UI → Authentication** → **"Bypass authentication for clients on localhost"** kutusunu işaretle, kaydet.
|
||||
|
||||
Bu şart, çünkü Gluetun port değiştiğinde qBittorrent'in API'sine `127.0.0.1` üzerinden (aynı ağ namespace'i içinden) istek atıyor — bu kutu işaretli değilse Gluetun'un isteği kimlik doğrulamada takılır, port senkronu sessizce başarısız olur.
|
||||
|
||||
## Erişim
|
||||
|
||||
```
|
||||
http://sunucu-ip:61235
|
||||
```
|
||||
|
||||
İlk girişte qBittorrent geçici bir şifre üretir, container loglarından (`docker logs qbittorrent`) görebilirsin.
|
||||
|
||||
## Portlar
|
||||
|
||||
- **61235** → WebUI (host ve container tarafında aynı numara, tek yayınlanan port)
|
||||
- Torrent peer portu artık **sabit değil** — ProtonVPN'in NAT-PMP ile dinamik atadığı port, VPN tüneli üzerinden geliyor (host'ta ayrıca port yayınlamaya gerek yok). Gluetun loglarında (`docker logs gluetun | grep -i port`) hangi portun atandığını görebilirsin.
|
||||
|
||||
## Sonarr / Radarr entegrasyonu
|
||||
|
||||
İndirme istemcisi olarak eklerken host adresi bu sunucu, port **61235**. `/downloads` klasörünü Sonarr/Radarr ile aynı host yoluyla paylaşırsan hardlink taşıma sorunsuz çalışır.
|
||||
|
||||
## İleride başka bir şeyi VPN'lemek istersen
|
||||
|
||||
Aynı `docker-compose.yml` dosyasına üçüncü bir servis ekleyip ona da `network_mode: "service:gluetun"` yazman yeterli — aynı dosyada oldukları için ekstra container ismi/proje eşleştirmesi gerekmiyor. O servisin ihtiyaç duyduğu portu **gluetun** servisinin `ports:` listesine eklemeyi unutma (ağı gerçekten sahiplenen o olduğu için port yayınlamayı da o yapmak zorunda).
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
@@ -1,51 +0,0 @@
|
||||
{
|
||||
"name": "Gluetun VPN (Mullvad)",
|
||||
"id": "gluetun",
|
||||
"available": true,
|
||||
"short_desc": "Mullvad'a WireGuard ile baglanan, kill-switch'li tek merkezi VPN gecidi. Baska container'lar bunun agini paylasarak VPN'den gecebilir.",
|
||||
"author": "y1lm0z",
|
||||
"port": 8080,
|
||||
"categories": ["network", "utilities"],
|
||||
"description": "Gluetun, Mullvad VPN sunucularina WireGuard ile baglanan ve kill-switch (VPN kopunca internet de kesilir) saglayan tek, merkezi bir ag gecididir. Bu uygulama tek basina bir torrent istemcisi degildir; baska container'larin (orn. qBittorrent) 'network_mode: container:gluetun' ile bu container'in ag namespace'ini paylasip trafiklerini VPN uzerinden gecirmesi icin dusunulmustur. WebUI portu (8080) ve BitTorrent peer portu (6881 tcp/udp) burada host'a aciliyor, cunku ag namespace'ini gercekte sahiplenen container bu. Ileride baska bir seyi ayni VPN'e baglamak istersen, o servisin ihtiyac duydugu portu bu docker-compose.yml'e ekleyip diger projede 'network_mode: container:gluetun' kullanman yeterli - detaylar asagida.",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"source": "https://github.com/qdm12/gluetun",
|
||||
"website": "https://github.com/qdm12/gluetun-wiki",
|
||||
"exposable": true,
|
||||
"force_expose": false,
|
||||
"https": false,
|
||||
"no_gui": false,
|
||||
"supported_architectures": ["arm64", "amd64"],
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "password",
|
||||
"label": "WireGuard Private Key",
|
||||
"hint": "Mullvad hesabinda 'WireGuard configuration' sayfasindan indirdigin .conf dosyasindaki PrivateKey degeri",
|
||||
"required": true,
|
||||
"env_variable": "WIREGUARD_PRIVATE_KEY"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "WireGuard Addresses",
|
||||
"hint": "Ayni .conf dosyasindaki Address alani, IPv4 kismi (orn. 10.64.222.10/32)",
|
||||
"placeholder": "10.64.222.10/32",
|
||||
"required": true,
|
||||
"env_variable": "WIREGUARD_ADDRESSES"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Sunucu Sehirleri (opsiyonel)",
|
||||
"hint": "Virgulle ayrilmis Mullvad sehir adlari, orn: Amsterdam,Stockholm. Bos birakirsan rastgele sunucu secilir.",
|
||||
"required": false,
|
||||
"env_variable": "SERVER_CITIES"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Firewall Outbound Subnets",
|
||||
"hint": "Docker ve LAN aginin WebUI'ye erisebilmesi icin izinli subnetler. Guvenlik icin daha dar bir araligi (orn. sadece kendi LAN'in) girebilirsin.",
|
||||
"default": "172.16.0.0/12,192.168.0.0/16,10.0.0.0/8",
|
||||
"required": false,
|
||||
"env_variable": "FIREWALL_OUTBOUND_SUBNETS"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
services:
|
||||
gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=1
|
||||
environment:
|
||||
- VPN_SERVICE_PROVIDER=mullvad
|
||||
- VPN_TYPE=wireguard
|
||||
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
|
||||
- WIREGUARD_ADDRESSES=${WIREGUARD_ADDRESSES}
|
||||
- SERVER_CITIES=${SERVER_CITIES}
|
||||
- FIREWALL_OUTBOUND_SUBNETS=${FIREWALL_OUTBOUND_SUBNETS:-172.16.0.0/12,192.168.0.0/16,10.0.0.0/8}
|
||||
- TZ=${TZ}
|
||||
ports:
|
||||
# qBittorrent WebUI (qbittorrent-vpn uygulamasi bu netns'i paylasiyor)
|
||||
- 8080:8080
|
||||
# qBittorrent BitTorrent peer portu (TCP + UDP ayni numara olmali)
|
||||
- 6881:6881
|
||||
- 6881:6881/udp
|
||||
# --- ileride baska bir seyi buraya VPN'lemek istersen ---
|
||||
# o servisin host:container portunu buraya ekle, orn:
|
||||
# - 9117:9117 # ornek: baska bir uygulamanin WebUI'si
|
||||
# detaylar için metadata/description.md
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/gluetun:/gluetun
|
||||
restart: unless-stopped
|
||||
x-runtipi:
|
||||
is_main: true
|
||||
internal_port: 8080
|
||||
|
||||
x-runtipi:
|
||||
schema_version: 2
|
||||
@@ -1,56 +0,0 @@
|
||||
# Gluetun VPN (Mullvad)
|
||||
|
||||
Bu uygulama tek başına bir "istemci" değil, merkezi bir **VPN geçidi**. [Gluetun](https://github.com/qdm12/gluetun), Mullvad'a WireGuard ile bağlanır ve kill-switch sağlar: VPN bağlantısı koparsa, bu container'ın ağını paylaşan hiçbir şey internete çıkamaz.
|
||||
|
||||
## Neden ayrı bir uygulama?
|
||||
|
||||
Eskiden VPN + torrent istemcisi tek `docker-compose.yml` içinde birlikteydi. Bunu ayırdık, çünkü:
|
||||
|
||||
- **Yeniden kullanılabilir**: qBittorrent'i silip başka bir istemciyle değiştirebilirsin, VPN'e dokunmana gerek kalmaz.
|
||||
- **Genişletilebilir**: İleride başka bir container'ı (başka bir uygulama, bir tarayıcı, başka bir indirme aracı vs.) da aynı VPN tünelinden geçirmek istersen, o container'ı buraya "bağlarsın" — Gluetun'u yeniden kurmana gerek yok.
|
||||
|
||||
## Kurulum
|
||||
|
||||
1. Mullvad hesabı sayfasından **WireGuard configuration** oluştur, indirilen `.conf` dosyasını aç.
|
||||
2. `PrivateKey` değerini **WireGuard Private Key** alanına, `Address` değerinin IPv4 kısmını (örn. `10.64.222.10/32`) **WireGuard Addresses** alanına yapıştır.
|
||||
3. İstersen **Sunucu Şehirleri** alanına bir veya birkaç şehir yaz (örn. `Amsterdam,Stockholm`); boş bırakırsan Gluetun rastgele bir Mullvad sunucusu seçer.
|
||||
4. Kur ve başlat, ardından Runtipi'den bu uygulamanın loglarına bakıp `Initialization Sequence Completed` benzeri bir satır görene kadar bekle — VPN tüneli kurulduğu anlamına gelir.
|
||||
|
||||
qBittorrent'in kendisi **ayrı bir uygulama**: "qBittorrent (Gluetun VPN)". Bu uygulamayı kurmadan önce Gluetun'un ayakta ve VPN'e bağlı olması gerekiyor.
|
||||
|
||||
## İleride başka bir şeyi bu VPN'e bağlamak istersen
|
||||
|
||||
Herhangi bir container'ı (Runtipi'de ayrı bir uygulama olarak ya da tamamen başka bir `docker-compose.yml` projesinde) bu Gluetun tünelinden geçirmek için 2 adım yeterli:
|
||||
|
||||
**1. O servisin ihtiyaç duyduğu portu bu uygulamanın `docker-compose.yml` dosyasına ekle** (Runtipi'de "Customize compose" ile, ya da bu store repo'sundaki dosyayı elden düzenleyip güncelleyerek):
|
||||
|
||||
```yaml
|
||||
ports:
|
||||
- 8080:8080
|
||||
- 6881:6881
|
||||
- 6881:6881/udp
|
||||
- 9117:9117 # <- örnek: yeni eklediğin servisin portu
|
||||
```
|
||||
|
||||
Bunun sebebi basit: ağ namespace'ini gerçekten sahiplenen container Gluetun olduğu için, Docker'da port yayınlamak (`ports:`) sadece o container üzerinden yapılabiliyor — namespace'i paylaşan diğer container'lar kendi başlarına port yayınlayamıyor.
|
||||
|
||||
**2. Diğer projedeki servise, kendi ağı/portları yerine şunu yaz:**
|
||||
|
||||
```yaml
|
||||
services:
|
||||
yeni-servis:
|
||||
image: ...
|
||||
network_mode: "container:gluetun"
|
||||
# DİKKAT: bu servise "networks:" veya "ports:" EKLEME,
|
||||
# network_mode ile aynı anda kullanılamıyorlar.
|
||||
```
|
||||
|
||||
`network_mode: "container:gluetun"` Docker'ın yerleşik bir özelliği; aynı Docker host'unda çalışan **herhangi bir** `docker-compose.yml` projesinden, container adını (`gluetun`) referans göstererek bağlanabilirsin — Runtipi uygulaması olması bile şart değil.
|
||||
|
||||
**Önemli**: Gluetun container'ı yeniden başladığında (güncelleme, restart vs.), ona bağlı servislerin de yeniden başlatılması gerekebilir; bağımlı servis Gluetun'dan önce ayağa kalkarsa hata verir. Bu yüzden her zaman önce Gluetun'u başlat, sonra ona bağlı servisleri.
|
||||
|
||||
## Notlar
|
||||
|
||||
- Mullvad artık sadece WireGuard destekliyor (OpenVPN 2026'da tamamen kaldırıldı), bu yüzden bu uygulama doğrudan WireGuard için yapılandırıldı.
|
||||
- Mullvad port yönlendirme (port forwarding) özelliğini 2023'te kaldırdı; yani gelen (inbound) torrent bağlantıları için ekstra bir port-senkron aracına gerek yok, çıkış hızın yine de VPN sunucusunun kapasitesine bağlı olacak.
|
||||
- Sağlayıcıya özgü ek ayar gerekiyorsa [Gluetun Wiki](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/mullvad.md) sayfasına bakabilirsin.
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "Lidarr YouTube Downloader",
|
||||
"id": "lidarr-youtube-downloader",
|
||||
"available": true,
|
||||
"short_desc": "Fills in missing Lidarr albums by downloading them from YouTube",
|
||||
"author": "Angrido",
|
||||
"port": 5000,
|
||||
"categories": ["media"],
|
||||
"description": "Lidarr YouTube Downloader is a free, self-hosted bridge between Lidarr and YouTube. It searches YouTube for albums that Lidarr is missing, scores the best audio match, downloads it at up to 320 kbps using yt-dlp, tags it with full ID3 metadata (MusicBrainz IDs, cover art, track numbers) and imports it back into your Lidarr library. It can also run as a native Lidarr download client (emulating a Newznab indexer + SABnzbd) so Lidarr handles search, grab and import automatically. Includes a scheduler, AcoustID fingerprint verification, and Telegram/Discord notifications.",
|
||||
"tipi_version": 1,
|
||||
"version": "1.8.6",
|
||||
"source": "https://github.com/Angrido/Lidarr-YouTube-Downloader",
|
||||
"website": "https://github.com/Angrido/Lidarr-YouTube-Downloader",
|
||||
"exposable": true,
|
||||
"force_expose": false,
|
||||
"no_gui": false,
|
||||
"supported_architectures": ["arm64", "amd64"],
|
||||
"form_fields": [
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Lidarr URL",
|
||||
"hint": "Full URL to your Lidarr instance, including port",
|
||||
"placeholder": "http://192.168.1.10:8686",
|
||||
"required": true,
|
||||
"env_variable": "LIDARR_URL"
|
||||
},
|
||||
{
|
||||
"type": "password",
|
||||
"label": "Lidarr API Key",
|
||||
"hint": "Found in Lidarr under Settings -> General -> Security",
|
||||
"required": true,
|
||||
"env_variable": "LIDARR_API_KEY"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Download folder (host path)",
|
||||
"hint": "Host path where new tracks are temporarily saved before import, e.g. /mnt/data/Downloads",
|
||||
"placeholder": "/mnt/data/Downloads",
|
||||
"required": true,
|
||||
"env_variable": "DOWNLOAD_HOST_PATH"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Music library folder (host path)",
|
||||
"hint": "Host path of your Lidarr music library, must match the path Lidarr itself uses",
|
||||
"placeholder": "/mnt/data/Media/Music",
|
||||
"required": true,
|
||||
"env_variable": "MUSIC_HOST_PATH"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"label": "Umask",
|
||||
"default": "002",
|
||||
"required": false,
|
||||
"env_variable": "APP_UMASK"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
services:
|
||||
lidarr-youtube-downloader:
|
||||
image: angrido/lidarr-downloader:latest
|
||||
environment:
|
||||
- LIDARR_URL=${LIDARR_URL}
|
||||
- LIDARR_API_KEY=${LIDARR_API_KEY}
|
||||
- DOWNLOAD_PATH=/DATA/Downloads
|
||||
- LIDARR_PATH=/music
|
||||
- YT_COOKIES_FILE=/cookies/cookies.txt
|
||||
- PUID=${UID}
|
||||
- PGID=${GID}
|
||||
- UMASK=${APP_UMASK}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/config:/config
|
||||
- ${APP_DATA_DIR}/cookies:/cookies
|
||||
- ${DOWNLOAD_HOST_PATH}:/DATA/Downloads
|
||||
- ${MUSIC_HOST_PATH}:/music
|
||||
x-runtipi:
|
||||
is_main: true
|
||||
internal_port: 5000
|
||||
|
||||
x-runtipi:
|
||||
schema_version: 2
|
||||
@@ -0,0 +1,21 @@
|
||||
# Lidarr YouTube Downloader
|
||||
|
||||
A free, open-source bridge between [Lidarr](https://lidarr.audio/) and YouTube that fills the gaps in your self-hosted music library. Powered by yt-dlp, MusicBrainz, iTunes and AcoustID, it searches YouTube for your missing albums, scores the best audio match, downloads it at up to 320 kbps, writes complete ID3 metadata with embedded artwork, and triggers a Lidarr import.
|
||||
|
||||
## Features
|
||||
- Smart YouTube matching (title similarity, duration, official-channel boost, forbidden-word filtering)
|
||||
- Optional AcoustID/chromaprint fingerprint verification before import
|
||||
- Full ID3 / MP4 tagging with MusicBrainz IDs and iTunes cover art
|
||||
- Can register inside Lidarr as a native download client (Newznab indexer + SABnzbd emulation) so Lidarr drives search/grab/import itself
|
||||
- Built-in scheduler for auto-discovery of new missing albums
|
||||
- Telegram & Discord notifications
|
||||
- Manual YouTube URL / playlist import with audio preview
|
||||
|
||||
## Setup notes
|
||||
1. After install, open the app and go to **Settings** to fine-tune audio format, concurrency, match threshold, scheduler and notifications.
|
||||
2. **Lidarr URL** and **Lidarr API key** are required (find the API key in Lidarr → Settings → General → Security).
|
||||
3. **Download folder** and **Music library folder** must be host paths reachable by both this app and your Lidarr container — ideally the exact same path Lidarr itself uses for its library, to avoid import path mismatches.
|
||||
4. If YouTube returns "Sign in to confirm you're not a bot", export a `cookies.txt` (Netscape format, throwaway Google account) and drop it into this app's data folder under `cookies/cookies.txt` — it's already mounted and referenced automatically.
|
||||
5. To use this app as a native Lidarr download client instead of just pushing files in, follow the "Use as a Lidarr download client" section in the [project README](https://github.com/Angrido/Lidarr-YouTube-Downloader#-use-as-a-lidarr-download-client).
|
||||
|
||||
**Disclaimer:** provided for personal, educational use to manage your own music library. You are responsible for complying with copyright law and YouTube's Terms of Service.
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"name": "qBittorrent (Gluetun VPN)",
|
||||
"id": "qbittorrent-vpn",
|
||||
"available": true,
|
||||
"short_desc": "qBittorrent torrent istemcisi. Ayri 'Gluetun' uygulamasinin ag namespace'ini paylasir, tum trafigi VPN'den geser.",
|
||||
"author": "y1lm0z",
|
||||
"port": 8080,
|
||||
"categories": ["network", "utilities"],
|
||||
"description": "qBittorrent'in kendi agi yoktur; 'network_mode: container:gluetun' ile Gluetun uygulamasinin ag namespace'ini dogrudan paylasir. Bu sayede kurulum, VPN'den bagimsiz kalir: qBittorrent'i silip baska bir istemciyle (orn. Transmission) degistirebilir, ya da baska container'lari da ayni Gluetun'a baglayabilirsin. WebUI'ye Gluetun uygulamasinin adresi/portu (8080) uzerinden erisilir, bu uygulamanin kendi ayri bir web arayuzu yoktur. ONEMLI: Bu uygulamayi kurmadan/baslatmadan once 'Gluetun VPN (Mullvad)' uygulamasinin calisir durumda olmasi gerekir, aksi halde qBittorrent baslamaz.",
|
||||
"tipi_version": 1,
|
||||
"version": "latest",
|
||||
"source": "https://github.com/qbittorrent/qBittorrent",
|
||||
"website": "https://github.com/linuxserver/docker-qbittorrent",
|
||||
"exposable": false,
|
||||
"force_expose": false,
|
||||
"https": false,
|
||||
"no_gui": true,
|
||||
"supported_architectures": ["arm64", "amd64"],
|
||||
"form_fields": []
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
services:
|
||||
qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: qbittorrent
|
||||
# Kendi agi yok: "gluetun" uygulamasinin container'iyla ayni ag
|
||||
# namespace'ini paylasiyor. Bu yuzden burada "networks:" veya
|
||||
# "ports:" OLMAMALI - tum portlar gluetun'un docker-compose.yml'inde
|
||||
# tanimli. Gluetun VPN baglantisini kaybederse qBittorrent'in de
|
||||
# interneti aninda kesilir (kill switch).
|
||||
network_mode: "container:gluetun"
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=${TZ}
|
||||
- WEBUI_PORT=8080
|
||||
- TORRENTING_PORT=6881
|
||||
volumes:
|
||||
- ${APP_DATA_DIR}/data/config:/config
|
||||
- ${APP_DATA_DIR}/data/downloads:/downloads
|
||||
restart: unless-stopped
|
||||
|
||||
x-runtipi:
|
||||
schema_version: 2
|
||||
@@ -1,29 +0,0 @@
|
||||
# qBittorrent (Gluetun VPN)
|
||||
|
||||
[qBittorrent](https://www.qbittorrent.org/), "Gluetun VPN (Mullvad)" uygulamasının ağ namespace'ini `network_mode: container:gluetun` ile paylaşarak çalışır. Kendi ayrı bir ağı yoktur; tüm trafiği zorunlu olarak Gluetun'un VPN tüneli üzerinden geçer.
|
||||
|
||||
## Kurulum sırası
|
||||
|
||||
1. Önce **Gluetun VPN (Mullvad)** uygulamasını kur, başlat ve loglarından VPN'e bağlandığını doğrula.
|
||||
2. Ardından bu uygulamayı (qBittorrent) kur ve başlat.
|
||||
|
||||
Gluetun ayakta değilken bu uygulamayı başlatmaya çalışırsan hata alırsın — çünkü bağlanacağı ağ namespace'i mevcut değildir.
|
||||
|
||||
## Erişim
|
||||
|
||||
Bu uygulamanın kendi web arayüzü / Runtipi domain'i yok (`no_gui`). qBittorrent WebUI'sine **Gluetun uygulamasının** adresi ve 8080 portu üzerinden erişiyorsun:
|
||||
|
||||
```
|
||||
http://sunucu-ip:8080
|
||||
```
|
||||
|
||||
İlk girişte qBittorrent, container loglarında geçici bir şifre üretir (`docker logs qbittorrent` ile görebilirsin), ilk girişten sonra WebUI üzerinden değiştir.
|
||||
|
||||
## Sonarr / Radarr entegrasyonu
|
||||
|
||||
Sonarr/Radarr'a bu qBittorrent'i indirme istemcisi olarak eklerken host adresine Gluetun'un çalıştığı adresi (aynı Docker host'u), portu **8080** olarak gir. Kategori bazlı klasörleri (`tv-sonarr`, `movies-radarr`) qBittorrent WebUI → Ayarlar üzerinden değil, Sonarr/Radarr'ın "İndirme İstemcisi" ayarlarından otomatik oluşturmasına izin verebilirsin.
|
||||
|
||||
## Notlar
|
||||
|
||||
- `/downloads` klasörü indirilen dosyaların düştüğü yer; Sonarr/Radarr ile paylaşman gerekiyorsa aynı klasör yolunu (host tarafında) onların container'larına da mount etmelisin ki "hardlink" ile taşıma çalışsın.
|
||||
- BitTorrent peer portu (6881) Gluetun'un `docker-compose.yml` dosyasında tanımlı; burada değiştirmek istersen hem oradaki `ports:` girdisini hem buradaki `TORRENTING_PORT` değerini birlikte güncellemen gerekir.
|
||||
Reference in New Issue
Block a user