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:
20
CloudronManifest.json
Normal file
20
CloudronManifest.json
Normal 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
78
Dockerfile
Normal 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" ]
|
||||||
|
|
||||||
2
LICENSE
2
LICENSE
@@ -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
106
README.md
@@ -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.
|
||||||
|
|||||||
20
start.sh
Executable file
20
start.sh
Executable 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
|
||||||
|
|
||||||
Reference in New Issue
Block a user