This page will guide you through the setup of a media center on an ODROID-HC4. The end goal is to have a platform where you can watch, download, and store content in a user friendly manner.
Main features:
DietPi is a minimal version of Debian, designed to use less CPU power and have a lower RAM usage.
The HC4 uses PetitBoot as a bootloader, which is currently not compatible with DietPi. It mean that on startup, PetitBoot won’t boot on the OS automatically. This can be bypassed by pressing the boot switch under the case while booting.
In order to automatically boot on the DietPi, you must bypass Petitboot.
flash_eraseall /dev/mtd0
flash_eraseall /dev/mtd1
flash_eraseall /dev/mtd2
flash_eraseall /dev/mtd3
ssh root@<HC4-IP>
, with "dietpi" for the password.Note: Refer to PetitBoot Recovery in order to restore it if needed.
The fan won't work out of the box, the following setup needs to be done.
sudo apt install fancontrol
.INTERVAL=10
DEVPATH=hwmon0=devices/virtual/thermal/thermal_zone0 hwmon2=devices/platform/pwm-fan
DEVNAME=hwmon0=cpu_thermal hwmon2=pwmfan
FCTEMPS= hwmon2/pwm1=hwmon0/temp1_input
FCFANS= hwmon2/pwm1=hwmon2/fan1_input
MINTEMP= hwmon2/pwm1=35
MAXTEMP= hwmon2/pwm1=70
MINSTART= hwmon2/pwm1=10
MINSTOP= hwmon2/pwm1=10
MINPWM= hwmon2/pwm1=10
sudo systemctl enable fancontrol
.
NordVPN will be your VPN used in order to download safely.
sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
nordvpn login --token <token>
ip -o -f inet addr show
. Example: if you get 192.168.0.84/24
then your subnet is 192.168.0.0/24
.nordvpn whitelist add subnet <subbnet>
, the subnet used here is an example.nordvpn connect P2P
. If the SSH sesion was not ended, the configuration was done properly, move to the next step. Else, restart the HC4.nordvpn status
. It should look like this: "ca1628".nordvpn set autoconnect on <server. id>
.
OpenMediaVault will allow you to setup your data storage and install Docker and Portainer.
Install OpenMediaVault by executing:
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash
The command above should have also installed omv-extra which will allow to install Portainer and Docker.
http://<HC4-IP>
.ln -s /your-drive-location /data
.
Portainer is a Docker container manager that comes with a convenient UI.
Via omv-extras in OMV:
apt install apparmor apparmor-utils auditd
http://<HC4-IP>:9000
.
Transmission is the BitTorrent client that will be used by Sonarr and Radarr.
Create the following directories:
Deploy Transmission by executing:
# Use your own time zone for TZ https://w.wiki/4Jx
docker run --detach \
--name Transmission \
--env PUID=1000 \
--env PGID=1000 \
--env TZ=Canada/Eastern \
--publish 9091:9091 \
--publish 51413:51413 \
--publish 51413:51413/udp \
--volume /home/dietpi/Docker/Transmission:/config \
--volume /home/dietpi/Docker/Transmission/watch:/watch \
--volume /data/torrents:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/transmission:latest
Go to: http://<HC4-IP>:9091
.
Prowlarr is an torrent indexer manager/proxy. Those indexers will be used by Sonarr and Radarr to download content.
Create the following directory: /home/dietpi/Docker/Prowlarr.
Deploy Prowlarr by executing:
# Use your own time zone for TZ https://w.wiki/4Jx
docker run --detach \
--name=Prowlarr \
--env PUID=1000 \
--env PGID=1000 \
--env TZ=Canada/Eastern \
--publish 9696:9696 \
--volume /home/dietpi/Docker/Prowlarr:/config \
--restart unless-stopped \
lscr.io/linuxserver/prowlarr:latest
Go to: http://<HC4-IP>:9696
.
Sonarr is a tv show collection manager. It will allow you to download tv shows via BitTorrent using torrent files from indexers provided by Prowlarr.
# Use your own time zone for TZ https://w.wiki/4Jx
docker run --detach \
--name=Sonarr \
--env PUID=1000 \
--env PGID=1000 \
--env TZ=Canada/Eastern \
--publish 8989:8989 \
--volume /home/dietpi/Docker/Sonarr:/config \
--volume /data/media/tv:/tv `#optional` \
--volume /data/torrents:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/sonarr:latest
http://<HC4-IP>:8989
.Instead of duplicating a file when adding it to the tv show directory, hardline can be used to avoid this data duplication.
You can apply quality or language profiles to your TV Show in order for Sonarr to select a torrent file fit for your needs.
Radarr is a movie collection manager. It will allow you to download movies via BitTorrent using torrent files from indexers provided by Prowlarr.
Create the following directories:
Deploy Sonarr by executing:
# Use your own time zone for TZ https://w.wiki/4Jx
docker run --detach \
--name=Radarr \
--env PUID=1000 \
--env PGID=1000 \
--env TZ=Canada/Eastern \
--publish 7878:7878 \
--volume /home/dietpi/Docker/Radarr:/config \
--volume /data/media/movies:/movies \
--volume /data/torrents:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/radarr:latest
Go to: http://<HC4-IP>:7878
.
Instead of duplicating a file when adding it to the tv show directory, hardline can be used to avoid this data duplication.
Contratily to Sonarr, Radarr has only one type of profile which contains both the quality and the language. You may want to edit each profile's language to set it to "Original", if so, do the following.
Jellyfin is the media server that you will use to access your movies and tv shows.
Create the following directory: /home/dietpi/Docker/Jellyfin
Deploy Jellyfin by executing:
# Use your own time zone for TZ https://w.wiki/4Jx
docker run --detach \
--name=Jellyfin \
--env PUID=1000 \
--env PGID=1000 \
--env TZ=Canada/Eastern \
--publish 8096:8096 \
--publish 7359:7359/udp `#optional` \
--publish 1900:1900/udp `#optional` \
--volume /home/dietpi/Docker/Jellyfin:/config \
--volume /data/media/tv:/data/TVShows \
--volume /data/media/movies:/data/Movies \
--restart unless-stopped \
lscr.io/linuxserver/jellyfin:latest
Go to: http://<HC4-IP>:8096
and setup your account.
Watchtower will keep your docker container updated.
Create and run a Watchtower container that will schedule updates at 4am everyday, and delete old images after updating. Do so by executing:
# Use your own time zone for TZ https://w.wiki/4Jx
docker run --detach \
--name Watchtower \
--env WATCHTOWER_SCHEDULE="* * 4 * * *" \
--env TZ=Canada/Eastern \
--env WATCHTOWER_CLEANUP="true" \
--volume /var/run/docker.sock:/var/run/docker.sock \
--restart unless-stopped \
containrrr/watchtower
In order to enable push notification on your devices when a movie or TV show is downloaded (and more), use either LunaSea or Pushover (not free):
To access your HC4, you can use NordVPN Meshnet which is a feature that allows to access a remote device from outside of your local network.
nordvpn set meshnet on
.nordvpn meshnet peer list
, you should see the client device and the HC4 with its hostname.hc4-hostname.nord:8096
for Jellyfin.Jellyseerr allows to manage requests to Sonarr and Radarr as well as suggesting new movies and TV shows based on your Jellyfin libreary.
Create and run Jellyseerr container by executing:
docker run -d \
--name Jellyseerr \
--env TZ=Canada/Eastern \
--publish 5055:5055 \
--volume /home/dietpi/Docker/Jellyseerr:/app/config \
--restart unless-stopped \
fallenbagel/jellyseerr:latest
If you need to re-enable PetitBoot after doing the process to bypass it, do: