# 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" ]