Media Server ============ Disk ---- - /srv/media: xfs, 4 TB - /srv/media/cache, xfs, 1 TB - /srv/media/config, ext4, 10 GB - /var/lib/docker, xfs, 10G Notes ----- - First startup of each app requires initial configuration. - Read linuxserver documentation for configuration instructions. Docker Stuff ------------ I hate docker, but half of these applications are a horrific mess and docker is a great way to stuff it all away and not think about it. It also makes updates much more reliable (for the same reason). /srv/media/update:: #!/bin/sh docker-compose pull docker-compose up --force-recreate --build -d docker image prune -f /srv/media/docker-compose.yml:: version: '2.1' services: qbittorrent: image: ghcr.io/linuxserver/qbittorrent container_name: qbittorrent hostname: qbittorrent network_mode: media_network ports: - '8080:8080' - '6881:6881' - '6881:6881/udp' environment: - PUID=2001 - PGID=2001 - VERSION=docker - TZ=America/Central volumes: - /srv/media/config/qbittorrent:/config - /srv/media/cache/qbittorrent:/downloads - /srv/media/cache/sonarr:/downloads/sonarr - /srv/media/cache/radarr:/downloads/radarr restart: unless-stopped sabnzbd: image: ghcr.io/linuxserver/sabnzbd container_name: sabnzbd hostname: sabnzbd network_mode: media_network ports: - '8088:8080' environment: - PUID=2001 - PGID=2001 - VERSION=docker - TZ=America/Central volumes: - /srv/media/config/sabnzbd:/config - /srv/media/cache/sabnzbd:/downloads - /srv/media/cache/sonarr:/downloads/sonarr - /srv/media/cache/radarr:/downloads/radarr jackett: image: ghcr.io/linuxserver/jackett container_name: jackett hostname: jackett network_mode: media_network ports: - '9117:9117' environment: - PUID=2001 - PGID=2001 - VERSION=docker - TZ=America/Central volumes: - /srv/media/config/jackett:/config - /srv/media/cache/jackett:/downloads radarr: image: ghcr.io/linuxserver/radarr container_name: radarr hostname: radarr network_mode: media_network ports: - '7878:7878' environment: - PUID=2001 - PGID=2001 - VERSION=docker - TZ=America/Central volumes: - /srv/media/config/radarr:/config - /srv/media/cache/radarr:/downloads/radarr - /srv/media/data/movies:/movies sonarr: image: ghcr.io/linuxserver/sonarr container_name: sonarr hostname: sonarr network_mode: media_network ports: - '8989:8989' environment: - PUID=2001 - PGID=2001 - VERSION=docker - TZ=America/Central volumes: - /srv/media/config/sonarr:/config - /srv/media/cache/sonarr:/downloads/sonarr - /srv/media/data/shows:/tv plex: image: ghcr.io/linuxserver/plex container_name: plex hostname: plex network_mode: media_network ports: - '32400:32400' - '32400:32400/udp' - '32469:32469' - '32469:32469/udp' - '5353:5353/udp' - '1900:1900/udp' environment: - PUID=2001 - PGID=2001 - VERSION=docker - TZ=America/Central volumes: - /srv/media/config/plex:/config - /srv/media/data/movies:/movies - /srv/media/data/shows:/tv - /srv/media/data/music:/music devices: - '/dev/dri:/dev/dri' restart: unless-stopped Backup Stuff ------------ /srv/media/.restic_backup:: #!/bin/bash export B2_ACCOUNT_ID='foo' export B2_ACCOUNT_KEY='bar' restic -r b2:mteck-media backup \ --limit-upload 5120 \ --password-file /root/.restic_pw \ --files-from /srv/media/.restic_include \ --exclude-file /srv/media/.restic_exclude \ --cleanup-cache \ --quiet /srv/media/.restic_include:: /srv/media/.restic* /srv/media/docker-compose.yml /srv/media/update /srv/media/config/** /srv/media/data/** /srv/media/.restic_exclude:: .cache/** logs/** logs* updater.tx* log.tx* MediaCover/** *.db *.pid rss/** GeoDB/** Library/* Log* Logs/** lost+found/** Metadata/** Cache/** Crash Reports/** Diagnostics/** Media/**