This guide shows two methods of installing Jellyfin on termux
Note: only tested on aarch64/arm64
These steps are same for both methods:
- Update the repo
pkg update
- Install proot-distro and ffmpeg (ffmpeg is only required in Method 2)
pkg install proot-distro ffmpeg -y
- Install ubuntu and Login to it
proot-distro install ubuntu
proot-distro login ubuntu
- Update and upgrade the packages in ubuntu
apt update && apt upgrade -y
- .NET 7.0 workaround:
- Use nano (or editor of your choice) to make a file in
/etc/profile.d
nano /etc/profile.d/02-dotnet-fix.sh
- Paste the following to set the value of
DOTNET_GCHeapHardLimitto1C0000000(You might need to lower the value to get it to work):
export DOTNET_GCHeapHardLimit=1C0000000
- Save and exit nano by pressing
CTRL + xthenythenenter - Make it executable
chmod +x /etc/profile.d/02-dotnet-fix.sh
- Logout and log back into proot
Method 1:
- Install sudo curl and gnupg
apt install sudo curl gnupg -y
-
Follow the step 2 to 6 in the official ubuntu installation guide for Jellyfin here
-
Create a symbolic link for Jellyfin web client (as it's in the wrong folder)
ln -s /usr/share/jellyfin/web /usr/lib/jellyfin/bin/jellyfin-web
- Run Jellyfin
jellyfin
- Note: if you get network related errors add
--nonetchangeparameter to jellyfin
- Give it a few minutes to finish startup then goto http://localhost:8096 to setup Jellyfin
Method 2:
- Install necessary packages (skip wget if you have it installed in termux, also replace
74with the latest version of libicu)
apt install wget libicu74 libfontconfig1 ca-certificates -y
- Make a new folder in /opt by the name jellyfin and cd into it
mkdir /opt/jellyfin
cd /opt/jellyfin
- Download the latest generic linux build for your architecture from here with
wget(make sure you download the correct architecture for you device)
wget https://repo.jellyfin.org/files/server/linux/latest-stable/arm64/jellyfin_10.10.6-arm64.tar.gz
- Extract it with tar
tar xvzf jellyfin_10.10.6-arm64.tar.gz
- Create four sub-directories for Jellyfin data
mkdir data cache config log
- Use nano to make a script to run Jellyfin
nano jellyfin.sh
- Paste the following:
#!/bin/bash
JELLYFINDIR="/opt/jellyfin"
$JELLYFINDIR/jellyfin/jellyfin \
-d $JELLYFINDIR/data \
-C $JELLYFINDIR/cache \
-c $JELLYFINDIR/config \
-l $JELLYFINDIR/log \
--ffmpeg /data/data/com.termux/files/usr/bin/ffmpeg
- Note: if you get network related errors add
--nonetchangeparameter to jellyfin in thejellyfin.sh - Save and exit nano by pressing
CTRL + xthenythenenter
- Make it executable
chmod +x jellyfin.sh
- Run it
/opt/jellyfin/jellyfin.sh
- Give it a few minutes to finish startup then goto http://localhost:8096 to setup Jellyfin
Thanks to @vikoadi and @t-e-s-tweb for DOTNET_GCHeapHardLimit=1C0000000 and --nonetchange fix
Now does anyone know how to add -hwaccel mediacodec option to jellyfin. This isnt using this flag in ffmpeg which is required for hardware decoding encoding. The server is transcoding using software encoder which is 2x to 3x but used too much battery.