Initial Cloudron package for Jellyseerr

- Add CloudronManifest.json with app configuration
- Add Dockerfile with Node.js 22 support and multi-stage build
- Add start.sh script for runtime initialization
- Add icon.png for the app
- Update README.md with installation and usage instructions
- Configure config directory symlink to /app/data for persistent storage
This commit is contained in:
2026-01-02 07:28:45 +00:00
parent caa705ff36
commit f839b12474
6 changed files with 224 additions and 2 deletions

20
CloudronManifest.json Normal file
View File

@@ -0,0 +1,20 @@
{
"id": "jellyseerr.com",
"title": "Jellyseerr",
"author": "Jellyseerr",
"description": "Jellyseerr is a free and open source software application for managing requests for your media library. It works with Jellyfin, Plex, and Emby.",
"tagline": "Request and discover media",
"version": "1.0.0",
"healthCheckPath": "/",
"httpPort": 5055,
"addons": {
"localstorage": {}
},
"manifestVersion": 2,
"website": "https://github.com/Fallenbagel/jellyseerr",
"contactEmail": "support@jellyseerr.com",
"icon": "file://icon.png",
"tags": [ "media", "jellyfin", "plex", "emby", "requests" ],
"mediaLinks": []
}

78
Dockerfile Normal file
View File

@@ -0,0 +1,78 @@
# build stage
FROM cloudron/base:5.0.0@sha256:6bec2b5246567ef8b5b13ca0af756e2e596941e440d76b46635211cd84383922 AS build_image
WORKDIR /app
# Install Node.js 22 (required by Jellyseerr)
# Remove old Node.js installation and install Node.js 22 binary directly
RUN apt-get update && \
apt-get install -y curl xz-utils && \
rm -rf /usr/local/node-* && \
NODE_VERSION="22.11.0" && \
ARCH="x64" && \
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" -o /tmp/node.tar.xz && \
tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 && \
rm /tmp/node.tar.xz && \
ln -sf /usr/local/bin/node /usr/bin/node && \
ln -sf /usr/local/bin/npm /usr/bin/npm && \
node --version && \
npm --version && \
which node
# Install pnpm
RUN npm install --global pnpm
RUN git clone https://github.com/Fallenbagel/jellyseerr.git && cd jellyseerr
WORKDIR /app/jellyseerr
# Verify Node.js version before installing
RUN node --version && \
which node && \
CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile
RUN pnpm build
# remove development dependencies
RUN pnpm prune --prod --ignore-scripts
RUN rm -rf src server .next/cache
# runtime stage
FROM cloudron/base:5.0.0@sha256:6bec2b5246567ef8b5b13ca0af756e2e596941e440d76b46635211cd84383922
WORKDIR /app/code/jellyseerr
# Install Node.js 22 for runtime as well
# Remove old Node.js installation and install Node.js 22 binary directly
RUN apt-get update && \
apt-get install -y curl xz-utils && \
rm -rf /usr/local/node-* && \
NODE_VERSION="22.11.0" && \
ARCH="x64" && \
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" -o /tmp/node.tar.xz && \
tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 && \
rm /tmp/node.tar.xz && \
ln -sf /usr/local/bin/node /usr/bin/node && \
ln -sf /usr/local/bin/npm /usr/bin/npm && \
node --version && \
npm --version && \
which node
# Install pnpm
RUN npm install -g pnpm
RUN mkdir -p /app/code/jellyseerr
COPY --from=build_image /app/jellyseerr /app/code/jellyseerr
# Remove the read-only config directory from source and create symlink to persistent storage
# The symlink points to /app/data/config which will be mounted by Cloudron at runtime
RUN rm -rf /app/code/jellyseerr/config && \
ln -s /app/data/config /app/code/jellyseerr/config
COPY start.sh /app/code/start.sh
RUN chmod +x /app/code/start.sh
CMD [ "/app/code/start.sh" ]

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2026 bradinfluence Copyright (c) 2026 BradInfluence
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including associated documentation files (the "Software"), to deal in the Software without restriction, including

106
README.md
View File

@@ -1,3 +1,107 @@
# cloudron-jellyseer # cloudron-jellyseer
Open-source media request and discovery manager for Jellyfin, Plex, and Emby. Packaged for Cloudron. Jellyseerr packaged for Cloudron. Jellyseerr is a free and open source software application for managing requests for your media library. It works with Jellyfin, Plex, and Emby.
## Introduction
This repository provides a Cloudron package for [Jellyseerr](https://github.com/Fallenbagel/jellyseerr), allowing you to easily deploy and manage Jellyseerr on your Cloudron instance.
## Prerequisites
You need to install Cloudron CLI: [here](https://docs.cloudron.io/packaging/cli/).
After installation, connect the CLI to your Cloudron instance.
## Installation
### Build the App
To build the Docker image for Jellyseerr:
```bash
cloudron build
```
This will create a Docker image for Jellyseerr tailored for Cloudron.
### Install the App
To install Jellyseerr on your Cloudron instance:
```bash
cloudron install --image <your-docker-registry>/cloudron-jellyseerr:<version>
```
Replace `<your-docker-registry>` with your Docker registry (e.g., `yourusername` for Docker Hub) and `<version>` with the version tag (e.g., `1.0.0`).
**Note**: Always install the application with a specific version tag (not `latest`). Cloudron's internal registry needs a tagged image version to be able to update when new images are available.
### Using Pre-built Images
If you're using pre-built images from a registry:
```bash
cloudron install --image yourregistry/cloudron-jellyseerr:1.0.0
```
## Configuration
Jellyseerr will store its configuration in `/app/data/config` which is automatically persisted by Cloudron's localstorage addon.
### First Run
1. After installation, access Jellyseerr through your Cloudron dashboard
2. Complete the initial setup wizard
3. Connect Jellyseerr to your Jellyfin, Plex, or Emby server
4. Configure your media request settings
## Features
- **Media Request Management**: Users can request movies and TV shows
- **Multi-Server Support**: Works with Jellyfin, Plex, and Emby
- **User Management**: Built-in user authentication and permissions
- **Automated Workflows**: Integrates with automation tools like Radarr and Sonarr
- **Beautiful UI**: Modern, responsive interface
## Updating
To update Jellyseerr:
1. Build a new version:
```bash
cloudron build
```
2. Push the new image to your registry:
```bash
docker push yourregistry/cloudron-jellyseerr:<new-version>
```
3. Update the app on Cloudron:
```bash
cloudron update --image yourregistry/cloudron-jellyseerr:<new-version>
```
## Troubleshooting
### App Won't Start
- Check the app logs in Cloudron dashboard
- Ensure the config directory has proper permissions
- Verify that port 5055 is available
### Configuration Issues
- Configuration is stored in `/app/data/config`
- You can access the file manager through Cloudron's app settings
- Ensure Jellyseerr has write permissions to the config directory
## Resources
- [Jellyseerr GitHub](https://github.com/Fallenbagel/jellyseerr)
- [Jellyseerr Documentation](https://docs.jellyseerr.dev/)
- [Cloudron Documentation](https://docs.cloudron.io/)
- [Cloudron Packaging Guide](https://docs.cloudron.io/packaging/)
## License
MIT License - See [LICENSE](LICENSE) file for details.

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

20
start.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/sh
set -eu
echo "Starting Jellyseerr..."
# Set environment variables for Cloudron
# Cloudron provides PORT, but Jellyseerr may use PORT_NUMBER
export PORT=${PORT:-5055}
export PORT_NUMBER=${PORT:-5055}
export NODE_ENV=production
# Ensure config directory and required subdirectories exist
mkdir -p /app/data/config/logs
mkdir -p /app/data/config/db
# Start Jellyseerr
cd /app/code/jellyseerr
exec pnpm start