Mijn docker installatie en configuratie

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.

Raspberry Pi 3B+ load

Dashboards

Hier zijn enkele screenshots van de Heimdall, Uptime Kuma, Portainer en Pi-hole dashboards.

Heimdall dashboard Uptime Kuma dashboard Portainer dashboard Pi-hole dashboard