Get personalized movie and TV show recommendations based on your Jellyfin favorites!
For more details, check out this blog post: https://zzuo123.github.io/blog/jellyrec/
To checkout a hosted instance, visit https://jrh1823rhui34y8.gzuo.me/login and login with your jellyfin credentials (or use the jellyfin demo page & credential). Note that you'll need to have at least 1/ONE movie favorited to generate recommendations.
Have fun and enjoy!
If you are have setup JellyRec before December 7, 2025, please update to the latest version of JellyRec as soon as possible. There was a security vulnerability in Next.js (used by the jellyrec_web frontend) version 16.0.1 called CVE-2025-666478 that stems from CVE-2025-55182 in React.js that would give the attacker remote code execution capabilities. Therefore, PLEASE UPDATE JELLYREC IMMEDIATELY if you are running an older version.
# Go to your jellyrec folder
cd jellyrec
# Pull the latest code
git pull
# Rebuild and restart
docker compose up -d --build
# (optional) remove old images to free up space (enter y to confirm)
docker image pruneFollow these simple steps to get JellyRec running on your computer:
Docker is a tool that makes it easy to run applications. You only need to install it once.
-
Download Docker for your system:
- Windows/Mac: Download Docker Desktop
- Linux: Follow the official guide
-
Verify Docker is installed by opening a terminal/command prompt and typing:
docker --version
You should see something like
Docker version 24.0.0
Open a terminal/command prompt and run these commands:
# Download the code
git clone https://github.com/zzuo123/jellyrec.git
# Go into the folder
cd jellyrecCreate a file called .env in the jellyrec-web folder with these settings:
# Navigate to the web folder
cd jellyrec-web
# Create the .env file (use your favorite text editor)
# On Windows: notepad .env
# On Mac/Linux: nano .envAdd this content to the .env file:
# Session secret for authentication (use a random string)
SESSION_SECRET=your-super-secret-random-string-here
# Python API URL (keep this as-is for Docker)
REC_BACKEND_URL=http://python-api:8888
# OMDB API Key for movie posters and information
OMDB_API_KEY=your-omdb-api-key-here💡 How to get these values:
-
SESSION_SECRET: Generate a secure random string:
openssl rand -base64 32
-
REC_BACKEND_URL: Keep as
http://python-api:8888for Docker (already correct above) -
OMDB_API_KEY: Get a free API key:
- Go to http://www.omdbapi.com/apikey.aspx
- Enter your email and select "FREE" (1,000 daily requests)
- Check your email and click the activation link
- Copy the API key and paste it in your
.envfile
Then go back to the main folder:
cd ..From the jellyrec folder, run:
docker compose up -dThis will:
- ✅ Download everything needed
- ✅ Build the application
- ✅ Start the services in the background
⏱️ First time setup takes 2-3 minutes
- Open your web browser
- Go to: http://localhost:3000
- You'll see the login page!
On the login page, you'll need to enter:
-
Jellyfin Server URL: The web address of your Jellyfin server
- Local example:
http://localhost:8096 - Remote example:
http://192.168.1.100:8096 - With domain:
https://jellyfin.yourdomain.com
- Local example:
-
Username: Your Jellyfin username
-
Password: Your Jellyfin password
Click "Sign In" and you're ready to get recommendations! 🎉
docker compose ps# All services
docker compose logs -f
# Just the web app
docker compose logs -f web
# Just the recommendation engine
docker compose logs -f python-apidocker compose downdocker compose restart# Pull the latest code
git pull
# Rebuild and restart
docker compose up -d --build- Make sure Docker Desktop is running
- On Windows/Mac: Check the system tray for the Docker icon
- Another application is using port 3000
- Edit
docker-compose.ymland change"3000:3000"to"3001:3000"(or any other port) - Then access JellyRec at
http://localhost:3001
- Double-check your Jellyfin server URL
- Make sure your Jellyfin server is running
- Verify your username and password are correct
# Check the logs for errors
docker compose logs
# Try rebuilding from scratch
docker compose down
docker compose up -d --buildIf you want to run JellyRec without Docker (for development):
cd python
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
python server.pycd jellyrec-web
npm install
npm run devNote: For local development, change REC_BACKEND_URL in .env to http://localhost:8888
- You log in with your Jellyfin credentials
- JellyRec analyzes your favorited movies
- Machine learning finds similar movies to your favorites
- Get recommendations tailored to your taste!
Found a bug or want to add a feature? Contributions are welcome!
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open source. Check the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with ❤️ for the Jellyfin community