Jelloid - Jellyfin Server on Android

by portalman1994 in Circuits > Reuse

599 Views, 3 Favorites, 0 Comments

Jelloid - Jellyfin Server on Android

jelloid-cover.png

An old Android smartphone has surprisingly capable hardware. Instead of letting that obsolete device sit in a drawer or end up in a landfill, you can transform it into a dedicated, silent portable media server using Termux and an interactive script that I made and have tested successfully on a Google Pixel, Motorola devices and an Amazon Fire Tablet.


This project gives functional hardware a second life by bringing your media collection to life. By the end of this guide, you will have a self-hosted Jellyfin media server with public domain media running locally on your Android device.


Resources:

Source Code Jellyfin Documentation

Supplies

PXL_20260911_214306311.MP.jpg
  1. Android Device (A usable device, i.e.: powers up, functional touch screen - a cracked screen is fine)
  2. Micro SD Card (Optional- If your media collection is larger than your device's storage) - Tip: Compare price-per-gigabyte options from retailers on buyperunit.com
  3. Internet Access (Wi-Fi) - For installing Termux, downloading the script and downloading the public domain media from the Internet Archive.
  4. Media Collection* (Home Movies, Photos, DVR recordings, etc.) - Tip: Check out archive.org for public domain media.


*NOTE: I've included public domain media from the Internet Archive that can be downloaded via the script.

Install Termux

Step 01 - Install Termux

As seen in the video, open the Google Play Store on your Android device and install Termux. Open the Termux app in order to initialize Termux.

Download and Run the Script

Step 02 - Download and Run Script

Download the script with curl on your android device within the Termux app:

curl -O https://raw.githubusercontent.com/portalman1994/setup-jellyfin-wizard/refs/heads/main/setup_jellyfin_wizard


Run the script (you can use tab for auto-completion):

bash setup_jellyfin_wizard


Enter y to agree to install the script dependencies via pkg. Once installed, the whiptail script will open within Termux.

Troubleshooting

cat_log_file.png
log_file.png

I've built-in a log file into the script in the event the script runs into an error. If the script quits unexpectedly, you can view the reason with the cat command within Termux on your Android device:


cat $PREFIX/var/lib/setup_jellyfin_wizard/media_server_setup.log


The last lines of the log file will be the most recent. I've also included where each session begins and ends along with timestamps within the log file.


Comment the error line on your redacted log file (remove IP addresses) if you have trouble with the script. I've tested the script on 3 different Motorola devices, a Google Pixel phone, and an Amazon Fire Tablet. I don't have access to Samsung Android devices, so your experience with the script may vary on a Samsung device.

Create Media Folders

Step 04 - Create Media Folders

As shown in the video, select Create Media Folders option using the arrow keys on your device's keyboard followed by the enter key. After you agree to the prompt to allow Termux to access your files, select Create All Media Folders using the arrow keys followed by the enter key. This option will create the folders for the media libraries (Movies and Shows) on your micro-SD card (if inserted and formatted) or your device's internal storage.

Install Jellyfin

05 - Install Jellyfin

As shown in the video, select Install Jellyfin option on the main menu using the arrow keys on your device's keyboard followed by the enter key. Select Install Jellyfin Media Server using the arrow keys followed by the enter key. This option will update/upgrade Termux, configure/install Jellyfin so that Jellyfin will work within Termux.

Complete Jellyfin Wizard

Step 06 - Complete Jellyfin Wizard

As shown in the video, open a new Termux session so that Jellyfin will start. Agree to the prompt to allow Termux to run in the background, so that Jellyfin will run in the background. Open your preferred web browser on your device and go to:

http://127.0.0.1:8096


That is your device's loopback address followed by Jellyfin's port number (8096). It may take a minute or two for Jellyfin to start and the Setup Wizard to be available.


Follow the prompts to name your server, create a user and password, and disable remote access. Then login to Jellyfin with your user credentials.

Create Media Libraries

Step 07 - Create Media Libraries

As shown in the video, reenter the script with the following command:

bash setup_jellyfin_wizard


Enter your username and password for Jellyfin, so the script can communicate with Jellyfin by generating a temporary token.


Select the option Create Media Libraries. Select the submenu option Create All Jellyfin Libraries. This will create the Movies and Shows Jellyfin Libraries. It will also create a symlink in the home directory (~/media) to your media folders (Movies and Shows).

Configure Jellyfin Settings

Step 08 - Configure Jellyfin Settings

As shown in the video, go back to the main menu and select the Configure Jellyfin Settings option. Then select the Apply All Jellyfin Configurations. This will configure the Scheduled Tasks Settings, Transcoder Policies and install the Jellyfin DLNA Plugin, so your Jellyfin installation will be lightweight and will not be resource intensive.

Download Public Domain Media

Step 09 - Download Public Domain Media

As shown in the video, navigate back to the main menu and select the Public Domain Media option. Then select the Download All Media option. It will download three public domain cartoons (Jerky Turkey (1945), Superman (1941), and Steamboat Willie (1928)) to the Movies and Shows folders. You may now exit the wizard. You will see your device's IP address. Make a note of the IP address for Step 11.

Scan Libraries

Step 10 - Scan Media Libraries
settings.png

As shown in the video, Go back to your Android device's web browser and go to:

http://127.0.0.1:8096


Once authenticated, select the hamburger menu (the three horizontal lines) and select Settings. Then select Dashboard. Select the blue Scan All Libraries button. Once the tasks has completed, select the red Restart button and confirm again on the prompt. Wait around a minute for Jellyfin to start up and then refresh the page.


Once the page is refreshed, select the Jellyfin Logo on the left side panel to go the home section. You may have to refresh the page again to see the updated libraries. Now, you can watch your media on your phone.

Jellyfin Client Apps

jellyfin_android_app.png

You can install Jellyfin client apps on several major platforms (TV, Mobile, Desktop) which will allow you to view the content of your Android device's Jellyfin Server from other devices. The viewing device (TV, Mobile, Desktop) has to be on the same Wi-Fi network as your Android device. Enter your Android device's IP address and port 8096 within the client app when prompted so the app can find the server:

# X.X.X.X is your Android device's IPv4 address.
http://X.X.X.X:8096

Don't know your IP address? Then run and exit the script within Termux in order to view your Android device's IP address:

bash setup_jellyfin_wizard


Make sure to have the Termux app running in the background on your Android device, so that the Jellyfin server will continue to run.


You can also use VLC to view your content via the installed Jellyfin DLNA Plugin.

Transfer Your Media

passwd.png

On your Android, create a password within Termux using the passwd command and enter what you want your password to be when prompted:

passwd


On your computer (MacOS, Windows, Linux) go to the parent folder of the Shows and Movies folders on your computer. Use scp on your computer to transfer the media to your android device (run and close script within to retrieve IP address).


Copy local Shows contents into remote Shows folder

# replace X.X.X.X with your Android device's IPv4 address.
scp -P 8022 -r Shows/* root@X.X.X.X:~/media/Shows/


Copy local Movies contents into remote Movies folder

# replace X.X.X.X with your Android device's IPv4 address.
scp -P 8022 -r Movies/* root@X.X.X.X:~/media/Movies/

After you have successfully copied all the files, make sure to scan the media libraries within Jellyfin.


If you run into trouble with transferring media, ask for help by editing the included ai_prompt.txt with your favorite text editor. Upload the edited ai_prompt.txt file to Gemini or Claude. If you're still stuck after an hour or two, then comment with context on what you need help with.

Downloads

Next Steps

vlc.png
users.png
transcoding.png

You now have a functional Jellyfin media server on your Android device! You can travel with the android device. You can even use a mobile hotspot in order to allow others to connect locally in order to view the content on the Android device! Either through a Jellyfin client app (TV, Mobile, Desktop) or through a VLC app (TV, Mobile, Desktop).


You can even create additional Users for Jellyfin. Have fun with it! Make sure to disable transcoding settings for users!


You can use a reverse proxy for HTTPS (Caddy, Duck DNS Domain). I don't recommend remote access though for the uninitiated.


I hope you enjoyed the guide! I may make another guide for Plex on Android if enough people favorite the guide.