Jellyseerr 源码构建实操:从编译到生产环境
2026/9/13 18:46:59 网站建设 项目流程

Jellyseerr 源码构建实操:从编译到生产环境

【免费下载链接】seerrOpen-source media request and discovery manager for Jellyfin, Plex, and Emby.项目地址: https://gitcode.com/GitHub_Trending/je/seerr

想在生产环境里自己掌控配置,或要跑还没进发行版的新特性?这篇直接讲 Jellyseerr 源码构建:拉代码、编译、起服务,外加三个平台各自容易卡住的点。

动手前先过一遍清单

先对一下号,别为不需要的事折腾:

  • 只是装起来给几个人用、Docker 镜像就能满足——直接跑镜像,源码构建用不上。
  • 要改代码、追未发布的特性,或者要 7×24 跑生产、日志和端口全自己定——这种才值得走源码。
  • 只是想把版本升一升?容器换个 tag 重启就行,源码路线是给"要攥在自己手里"的人准备的。

硬性依赖一张表说清:

依赖版本要求备注
Node.js22.x(推荐 LTS)主版本不对,编译直接挂
pnpm9.x仓库锁文件按 pnpm 生成,拿 npm/yarn 代装会对不上
Git任意新版只负责拉代码,没有其他要求

所有平台都一样的三步

三个平台共用的流程就下面三条,差异全部挪到下一节集中讲。

拉取代码并切到主分支:

git clone https://gitcode.com/GitHub_Trending/je/seerr jellyseerr cd jellyseerr git checkout main

安装依赖。CYPRESS_INSTALL_BINARY=0负责跳过 Cypress 的浏览器二进制下载,能省掉一大截时间(Windows 下这个变量怎么换写法,见下一节):

CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile

这一步是整个流程里最耗时的,中途断网也别慌,重跑同一条命令能接着装。

编译前端和服务端,产物最终落在dist/目录:

pnpm build

平台差异集中对照

Jellyseerr 环境变量写法差异

同一个变量,bash 和 PowerShell 的注入方式完全不同:

场景Linux / macOSWindows
装依赖时临时跳过 CypressCYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfileset CYPRESS_INSTALL_BINARY=0 && pnpm install --frozen-lockfile
常驻配置写入/etc/jellyseerr/jellyseerr.conf,服务文件里用EnvironmentFile指过去放部署目录的.env文件,或用nssm set Jellyseerr AppEnvironmentExtra注入

服务真正要用的变量就两个:PORT(默认 5055)和NODE_ENV=production。systemd 的 conf 里就是裸的KEY=VALUE两行,launchd 塞进 plist 的EnvironmentVariables字典,NSSM 走AppEnvironmentExtra

Jellyseerr 路径与权限差异

事项LinuxmacOSWindows
部署目录/opt/jellyseerrsudo mkdir创建)/opt/jellyseerrC:\jellyseerr(普通mkdir即可)
node 可执行文件/usr/bin/node(先which node确认)/usr/local/bin/nodeC:\Program Files\nodejs\node.exe
服务定义位置/etc/systemd/system/jellyseerr.service~/Library/LaunchAgents/com.jellyseerr.plist无文件,NSSM 写进注册表
权限要求systemctl操作要 sudolaunchctl操作要 sudonssm install要管理员终端

Jellyseerr 依赖安装的坑

  • ⚠️ 最容易卡住的一步:Windows 上先npm install -g win-node-env把 node-gyp 的编译工具链备齐,bcrypt、sqlite3 这类原生模块要本地编译,缺了它 install 必挂。
  • 两个平台装依赖前都要带上CYPRESS_INSTALL_BINARY=0,否则白下一个用不上的浏览器二进制。
  • 装完直接报编译错,九成是 Node 主版本不对:node -v确认 22.x,再pnpm -v确认 9.x。

编译完之后怎么跑

先在前台起一次,确认能正常响应再谈常驻:

pnpm start

另开一个终端打一下默认端口,能拿到 HTTP 响应头就算起来了:

curl -I http://localhost:5055

首次访问会走初始化流程,按提示设置登录方式和元数据源就行,端口默认监听 5055。确认一切正常后,按平台把 Jellyseerr 部署成常驻服务,核心配置要点只列关键行:

systemd(Linux)launchd(macOS)NSSM(Windows)
服务文件建在/etc/systemd/system/jellyseerr.serviceplist 放~/Library/LaunchAgents/com.jellyseerr.plist无配置文件,nssm install Jellyseerr直接注册
EnvironmentFile=/etc/jellyseerr/jellyseerr.conf(conf 里写PORT=5055EnvironmentVariables字典放NODE_ENV/PORTnssm set Jellyseerr AppEnvironmentExtra NODE_ENV=production
WorkingDirectory=/opt/jellyseerrExecStart=/usr/bin/node dist/index.jsWorkingDirectory指向/opt/jellyseerrProgramArguments填 node 加dist/index.jsnssm set Jellyseerr AppDirectory "C:\jellyseerr"
Restart=on-failure保证挂了自动拉起RunAtLoadKeepAlive都置 true注册完用nssm start Jellyseerr拉起
systemctl enable jellyseerr && systemctl start jellyseerrlaunchctl loadlaunchctl start com.jellyseerr同上,nssm start Jellyseerr

服务起不来时别猜,直接翻日志:systemd 用journalctl -u jellyseerr,NSSM 看安装时指定的日志文件,报错基本都会写明缺了哪个文件或变量。

日后维护速查

操作命令说明
更新 Jellyseerrgit pull && pnpm install --frozen-lockfile && pnpm build拉新码、重装依赖、重新编译,重启服务即完成 Jellyseerr 更新
回滚git checkout <old-tag>退回上一版本,再走一遍上面的更新流程
看日志journalctl -u jellyseerr -fsystemd 专用;macOS 查 launchd 日志,Windows 查 NSSM 的输出文件
改端口环境文件里把PORT改成<your-port>后重启端口冲突就靠它,改完必须重启才生效

重启命令按平台取:systemctl restart jellyseerrlaunchctl stop com.jellyseerr && launchctl start com.jellyseerrnssm restart Jellyseerr。实例多了或者想要进程级守护,可以顺手加一层 PM2 做管理。

Jellyseerr 生产环境配置还有两件值得接着做的事:给 5055 端口挂反向代理和 TLS(docs/extending-seerr/reverse-proxy.mdx 有现成方案),以及把数据库换成 Postgres(参考 docs/extending-seerr/database-config.mdx 与 compose.postgres.yaml)。

【免费下载链接】seerrOpen-source media request and discovery manager for Jellyfin, Plex, and Emby.项目地址: https://gitcode.com/GitHub_Trending/je/seerr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询