Singularity is what I named my homelab/media server. When I built it, I wanted to most cost effective solution. I was a student and didn't have a lot of money to spend on this. The main thing I wanted was automatic downloading of my media, and play it on the tv. I have used Kodi in the past on a Raspberry Pi 2b+, so I picked up a Raspberry Pi 4. For the OS I choose LibreELEC and I had an old 2 TB hard drive I could use for storage. The 2B+ ended up as a pi-hole.
I installed the Docker addon from the LibreELEC addon repository. I wanted to use docker-compose to do the orchestration of the containers, but installing that was a major pain. LibreELEC is such a stripped down OS that it doesn't have all the requirements. In the end running docker-compose in a container did the trick. I used the containers made by the people over at linuxserver.io. I had to run the containers with
GUID=0 because LibreELEC runs everything as root.
version: '2' services: radarr: image: linuxserver/radarr:latest container_name: radarr environment: - PUID=0 - PGID=0 volumes: - /storage/docker-config/radarr:/config - /media/movies/movies:/movies - /media/series/downloads:/downloads restart: unless-stopped sonarr: image: linuxserver/sonarr:latest container_name: sonarr environment: - PGID=0 - PUID=0 volumes: - /storage/docker-config/sonarr:/config - /media/series/series:/tv - /media/series/downloads:/downloads restart: unless-stopped jellyfin: image: linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=0 - PGID=0 volumes: - /storage/docker-config/jellyfin:/config - /media/series/series:/data/tvshows - /media/movies/movies:/data/movies ports: - "8096:8096" restart: unless-stopped jackett: image: linuxserver/jackett:latest container_name: jackett volumes: - /storage/docker-config/jackett:/config ports: - "9117:9117" restart: unless-stopped heimdall: image: linuxserver/heimdall:latest container_name: heimdall volumes: - /storage/docker-config/heimdall:/config ports: - "8181:80" restart: unless-stopped qbittorrent: image: linuxserver/qbittorrent:latest container_name: qbittorrent environment: - PGID=0 - PUID=0 - WEBUI_PORT=8282 volumes: - /storage/docker-config/qbittorrent:/config - /media/series/downloads:/downloads ports: - "8282:8282" - "6881:6881" - "6881:6881/udp" restart: unless-stopped