Skip to content

Instantly share code, notes, and snippets.

@metisro
Forked from sdshan8/jellyfin-termux.md
Created February 20, 2025 14:39
Show Gist options
  • Select an option

  • Save metisro/5bb6dcca46e986d34355a6cfbad39153 to your computer and use it in GitHub Desktop.

Select an option

Save metisro/5bb6dcca46e986d34355a6cfbad39153 to your computer and use it in GitHub Desktop.

Install Jellyfin on Termux [In Proot]

This guide shows two methods of installing Jellyfin on termux

Note: only tested on aarch64/arm64

These steps are same for both methods:

  1. Update the repo
pkg update
  1. Install proot-distro and ffmpeg (ffmpeg is only required in Method 2)
pkg install proot-distro ffmpeg -y
  1. Install ubuntu and Login to it
proot-distro install ubuntu
proot-distro login ubuntu
  1. Update and upgrade the packages in ubuntu
apt update && apt upgrade -y
  1. .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_GCHeapHardLimit to 1C0000000 (You might need to lower the value to get it to work):
export DOTNET_GCHeapHardLimit=1C0000000
  • Save and exit nano by pressing CTRL + x then y then enter
  • Make it executable
chmod +x /etc/profile.d/02-dotnet-fix.sh
  • Logout and log back into proot

Method 1:

  1. Install sudo curl and gnupg
apt install sudo curl gnupg -y
  1. Follow the step 2 to 6 in the official ubuntu installation guide for Jellyfin here

  2. 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
  1. Run Jellyfin
jellyfin
  • Note: if you get network related errors add --nonetchange parameter to jellyfin
  1. Give it a few minutes to finish startup then goto http://localhost:8096 to setup Jellyfin

Method 2:

  1. Install necessary packages (skip wget if you have it installed in termux, also replace 74 with the latest version of libicu)
apt install wget libicu74 libfontconfig1 ca-certificates -y
  1. Make a new folder in /opt by the name jellyfin and cd into it
mkdir /opt/jellyfin
cd /opt/jellyfin
  1. 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
  1. Extract it with tar
tar xvzf jellyfin_10.10.6-arm64.tar.gz
  1. Create four sub-directories for Jellyfin data
mkdir data cache config log
  1. 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 --nonetchange parameter to jellyfin in the jellyfin.sh
  • Save and exit nano by pressing CTRL + x then y then enter
  1. Make it executable
chmod +x jellyfin.sh
  1. Run it
/opt/jellyfin/jellyfin.sh
  1. 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

#!/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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment