Aangezien ik meer en meer vragen krijg van mensen op het werk, of mensen die ik persoonlijk ken over mijn thuis-netwerk setup, heb ik besloten om ook een artikel te schrijven over mijn docker omgeving.
Docker is een tool die je toelaat om applicaties te draaien in containers. Een container bevat, naast een specifieke applicatie, alle onderdelen die nodig zijn om de applicatie te laten functioneren. Dus docker containers kunnen worden uitgewisseld met een gegarandeerde werkomgeving, ongeacht de configuratie en setup van de host machine.
Docker-containers verschillen van virtuele machines in die zin dat ze toegang hebben tot en gebruik kunnen maken van onderliggende functies van het host OS. Een virtuele machine, zoals de naam al aangeeft, heeft toegang tot de hardware van de host machine, maar bevat een complete gevirtualiseerde omgeving van bijvoorbeeld een specifiek OS. Maar voor het soort tools dat ik gebruik, is docker meer dan voldoende.
Stacks
Ik gebruik twee stacks die zijn geconfigureerd met docker-compose. Deze twee stacks zijn ontworpen rond een gemeenschappelijk thema tussen de containers. Dus ik heb een media stack en een tools stack.
Tools Docker stack
de tools stack bestaat uit de volgende toepassingen:
- Pi-hole: dit is een advertentieblokkeringsoplossing. Eenmaal actief, kunt u de DNS op uw apparaten configureren, of centraal via uw router, en het zal sinkhole advertenties, kwaadaardige websites, enz.
- Heimdall: Heimdall is een applicatie dashboard. Het laat u toe links te maken naar alle verschillende diensten die u binnen uw netwerk zou kunnen draaien, of zelfs links naar online platformen.
- Uptime Kuma: Een zelf gehoste monitoring tool voor uw netwerk apparatuur, diensten, etc.
- Syncthing: Dit is een bestandssynchronisatieprogramma, vergelijkbaar met Dropbox, Google Drive, enz. waarmee je mappen tussen apparaten kunt synchroniseren. Ik gebruik het om bepaalde gegevens van verschillende machines automatisch te synchroniseren/backuppen.
Hier is de broncode voor de docker-compose.yaml file.
version: "3"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "80:80/tcp"
environment:
TZ: ${TZ}
volumes:
- '/usr/local/share/pihole/etc-pihole/:/etc/pihole/'
- '/usr/local/share/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
cap_add:
- NET_ADMIN
restart: unless-stopped
heimdall:
container_name: heimdall
image: lscr.io/linuxserver/heimdall
ports:
- 8080:80
environment:
TZ: ${TZ}
volumes:
- '/home/pi/docker/heimdall:/config'
restart: unless-stopped
uptime-kuma:
container_name: uptime-kuma
image: louislam/uptime-kuma:1
ports:
- "3001:3001"
volumes:
- uptime-kuma:/app/data
restart: always
security_opt:
- no-new-privileges:true
syncthing:
container_name: syncthing
image: syncthing/syncthing
ports:
- 8384:8384
- 22000:22000/tcp
- 22000:22000/udp
environment:
- PUID=1000
- PGID=1000
volumes:
- syncthing:/var/syncthing
- /mnt/downloads:/backups
restart: unless-stopped
Er is één tool / toepassing die niet in de lijst staat of deel uitmaakt van dit docker-compose bestand en dat is Portainer. Het is een web GUI om je docker containers te beheren.
Media Docker stack
De media docker stack bestaat uit media-gerelateerde applicaties. De docker-compose.yaml is ook beschikbaar op Github. Merk op dat ik verwijs naar /mnt
mappen in de meeste van deze containers. Dit zijn gemounte NAS locaties waar ik mijn film en tv-series collectie opsla.
- Radarr: Dit programma is een collectiebeheerder voor Usenet/BitTorrent gebruikers. Het kan RSS feeds monitoren voor het ontdekken van nieuwe films en zal verbinding maken met clients en indexers om ze op te halen. Je kan ook de monitoring van bestaande films in je bibliotheek configureren en een bron van hogere kwaliteit ophalen indien beschikbaar op het netwerk.
- Sonarr: Sonarr is eigenlijk min of meer hetzelfde instrument als Radarr, alleen is het voor series in plaats van films.
- Overseerr: Overseerr is wat Radarr en Sonarr min of meer met elkaar verbindt. Het is een hulpmiddel om media te ontdekken en zal Radarr of Sonarr opdracht geven nieuwe films of series op te halen wanneer u die ontdekt.
- Transmission: Een bitTorrent client die van Radarr of Sonarr de opdracht krijgt een bepaalde film of serie te downloaden.
- Plex](https://www.plex.tv/): Behoeft geen introductie aangezien het een van de meest populaire media servers is die beschikbaar is
---
version: "3"
services:
radarr:
image: linuxserver/radarr
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Brussels
volumes:
- /mnt/movies:/movies
- /mnt/downloads:/downloads
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: linuxserver/sonarr
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Brussels
volumes:
- /mnt/tvshows:/tvshows
- /mnt/downloads:/downloads
ports:
- 8989:8989
restart: unless-stopped
overseerr:
image: sctx/overseerr:latest
container_name: overseerr
environment:
- TZ=Europe/Brussels
ports:
- 5055:5055
volumes:
- /home/pi/docker/overseerr:/app/config
restart: unless-stopped
transmission:
image: linuxserver/transmission
container_name: transmission
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Brussels
volumes:
- /mnt/downloads:/downloads
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
plex:
image: linuxserver/plex
container_name: plex
network_mode: host
environment:
- PUID=1000
- PGID=1001
- VERSION=docker
volumes:
- /mnt/tvshows:/tvshows
- /mnt/movies:/movies
- /mnt/music:/music
restart: unless-stopped
Hoe werkt het?
Het is eigenlijk heel eenvoudig als alles eenmaal is ingesteld. Je zoektocht begint in Overseerr. Zodra je de film of tv-show hebt gevonden waarin je geïnteresseerd bent, klik je op de aanvragen knop. Een dialoog zal je vragen naar de locatie en/of welk kwaliteitsprofiel. Ik heb een aangepast profiel (UHD/FHD) aangemaakt in zowel Radarr als Sonarr omdat ik alleen geïnteresseerd ben in 4K of 1080p inhoud.
Dat is het! Overseerr instrueert Radarr of Sonarr om de gegevens op te halen die nodig zijn om de gevraagde media te downloaden. Eenmaal gevonden in het toegewezen kwaliteitsprofiel, stuurt Radarr of Sonarr een verzoek naar Transmission om te downloaden en controleert, aangezien beide verbonden zijn, het proces. Zodra de media is gedownload, stuurt Sonarr of Radarr op zijn beurt een verzoek naar Plex om opnieuw te indexeren omdat er nieuwe media moeten worden toegevoegd.
Planning voor komende films / tv-shows
Deze setup zal niet alleen bestaande films tonen of monitoren, maar je kan ook aankomende films ontdekken op basis van hun IMDB code bijvoorbeeld. Dit laat je toe om films toe te voegen die nog niet beschikbaar zijn en het zal geconfigureerde bronnen in een wachtrij plaatsen en monitoren. Zodra ze beschikbaar zijn, opnieuw in het gevraagde kwaliteitsprofiel, worden ze automatisch gedownload, hernoemd, opgeslagen op mijn NAS en beschikbaar gemaakt via Plex.
Hardware
Je zou misschien verwachten dat je een beefy hardware oplossing nodig hebt voor al deze containers, maar in feite draai ik dit allemaal op een Raspberry Pi 3B+ zonder al te veel belasting op het systeem te genereren.
Dashboards
Hier zijn enkele screenshots van de Heimdall, Uptime Kuma, Portainer en Pi-hole dashboards.