feat: Overseerr to Jellyseerr migration (#2019)

* feat: add Overseerr migration

* refactor: rename to Seerr

* refactor: more rename to Seerr

* feat: update the value of the MediaStatus.DELETED enum

* fix: add more details in migration logs

* fix: replace .update by .save for TypeORM hooks

* fix: add fake migration to skip the duplicated UpdateWebPush migration

* fix: rewrite the AddUserAvatarCacheFields migration for Overseerr merge

* fix: replace jellyseerr migrations with a dedicated one for overseerr

* fix: update overseerr migration

* fix: update overseerr migration

* fix: remove irrelevant changes

* fix: typos

* docs: update jsdoc comment

* docs: update seerr description

* docs: fix the contributing.md link

* fix: remove unwanterd change on postgres dev datasource

* docs: add latest tag to docker image

* fix: migrate old deleted status for 4k media

* fix: update Seerr version check
This commit is contained in:
Gauthier
2025-10-30 19:57:50 +01:00
committed by GitHub
parent 2e6e9ad657
commit 4e9c94c80f
60 changed files with 942 additions and 395 deletions

View File

@@ -1,13 +1,13 @@
---
title: Build From Source (Advanced)
description: Install Jellyseerr by building from source
description: Install Seerr by building from source
sidebar_position: 2
---
# Build from Source (Advanced)
:::warning
This method is not recommended for most users. It is intended for advanced users who are familiar with managing their own server infrastructure.
Refer to [Configuring Databases](/extending-jellyseerr/database-config#postgresql-options) for details on how to configure your database.
Refer to [Configuring Databases](/extending-seerr/database-config#postgresql-options) for details on how to configure your database.
:::
import Tabs from '@theme/Tabs';
@@ -20,11 +20,11 @@ import TabItem from '@theme/TabItem';
## Unix (Linux, macOS)
### Installation
1. Assuming you want the working directory to be `/opt/jellyseerr`, create the directory and navigate to it:
1. Assuming you want the working directory to be `/opt/seerr`, create the directory and navigate to it:
```bash
sudo mkdir -p /opt/jellyseerr && cd /opt/jellyseerr
sudo mkdir -p /opt/seerr && cd /opt/seerr
```
2. Clone the Jellyseerr repository and checkout the develop branch:
2. Clone the Seerr repository and checkout the develop branch:
```bash
git clone https://github.com/fallenbagel/jellyseerr.git
cd jellyseerr
@@ -38,26 +38,26 @@ CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile
```bash
pnpm build
```
5. Start Jellyseerr:
5. Start Seerr:
```bash
pnpm start
```
:::info
You can now access Jellyseerr by visiting `http://localhost:5055` in your web browser.
You can now access Seerr by visiting `http://localhost:5055` in your web browser.
:::
#### Extending the installation
<Tabs groupId="unix-extensions" queryString>
<TabItem value="linux" label="Linux">
To run jellyseerr as a systemd service:
1. create the environment file at `/etc/jellyseerr/jellyseerr.conf`:
To run seerr as a systemd service:
1. create the environment file at `/etc/seerr/seerr.conf`:
```bash
## Jellyseerr's default port is 5055, if you want to use both, change this.
## Seerr's default port is 5055, if you want to use both, change this.
## specify on which port to listen
PORT=5055
## specify on which interface to listen, by default jellyseerr listens on all interfaces
## specify on which interface to listen, by default seerr listens on all interfaces
#HOST=127.0.0.1
## Uncomment if you want to force Node.js to resolve IPv4 before IPv6 (advanced users only)
@@ -69,19 +69,19 @@ which node
```
Copy the path to node, it should be something like `/usr/bin/node`.
3. Create the systemd service file at `/etc/systemd/system/jellyseerr.service`, using either `sudo systemctl edit jellyseerr` or `sudo nano /etc/systemd/system/jellyseerr.service`:
3. Create the systemd service file at `/etc/systemd/system/seerr.service`, using either `sudo systemctl edit seerr` or `sudo nano /etc/systemd/system/seerr.service`:
```bash
[Unit]
Description=Jellyseerr Service
Description=Seerr Service
Wants=network-online.target
After=network-online.target
[Service]
EnvironmentFile=/etc/jellyseerr/jellyseerr.conf
EnvironmentFile=/etc/seerr/seerr.conf
Environment=NODE_ENV=production
Type=exec
Restart=on-failure
WorkingDirectory=/opt/jellyseerr
WorkingDirectory=/opt/seerr
ExecStart=/usr/bin/node dist/index.js
[Install]
@@ -93,33 +93,33 @@ If you are using a different path to node, replace `/usr/bin/node` with the path
4. Enable and start the service:
```bash
sudo systemctl enable jellyseerr
sudo systemctl start jellyseerr
sudo systemctl enable seerr
sudo systemctl start seerr
```
</TabItem>
<TabItem value="macos" label="macOS">
To run jellyseerr as a launchd service:
To run seerr as a launchd service:
1. Find the path to node:
```bash
which node
```
Copy the path to node, it should be something like `/usr/local/bin/node`.
2. Create a launchd plist file at `~/Library/LaunchAgents/com.jellyseerr.plist`:
2. Create a launchd plist file at `~/Library/LaunchAgents/com.seerr.plist`:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jellyseerr</string>
<string>com.seerr</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/node</string>
<string>/opt/jellyseerr/dist/index.js</string>
<string>/opt/seerr/dist/index.js</string>
</array>
<key>WorkingDirectory</key>
<string>/opt/jellyseerr</string>
<string>/opt/seerr</string>
<key>EnvironmentVariables</key>
<dict>
<key>NODE_ENV</key>
@@ -139,11 +139,11 @@ If you are using a different path to node, replace `/usr/local/bin/node` with th
:::
3. Load the service:
```bash
sudo launchctl load ~/Library/LaunchAgents/com.jellyseerr.plist
sudo launchctl load ~/Library/LaunchAgents/com.seerr.plist
```
3. Start the service:
```bash
sudo launchctl start com.jellyseerr
sudo launchctl start com.seerr
```
4. To ensure the service starts on boot, run the following command:
```bash
@@ -151,14 +151,14 @@ sudo lauchctl load
```
</TabItem>
<TabItem value="pm2" label="PM2">
To run jellyseerr as a PM2 service:
To run seerr as a PM2 service:
1. Install PM2:
```bash
npm install -g pm2
```
2. Start jellyseerr with PM2:
2. Start seerr with PM2:
```bash
pm2 start dist/index.js --name jellyseerr --node-args="--NODE_ENV=production"
pm2 start dist/index.js --name seerr --node-args="--NODE_ENV=production"
```
3. Save the process list:
```bash
@@ -171,35 +171,35 @@ pm2 startup
**Managing the service**
- To start the service:
```powershell
pm2 start jellyseerr
pm2 start seerr
```
- To stop the service:
```powershell
pm2 stop jellyseerr
pm2 stop seerr
```
- To restart the service:
```powershell
pm2 restart jellyseerr
pm2 restart seerr
```
- To view the logs:
```powershell
pm2 logs jellyseerr
pm2 logs seerr
```
- To view the status:
```powershell
pm2 status jellyseerr
pm2 status seerr
```
</TabItem>
</Tabs>
## Windows
### Installation
1. Assuming you want the working directory to be `C:\jellyseerr`, create the directory and navigate to it:
1. Assuming you want the working directory to be `C:\seerr`, create the directory and navigate to it:
```powershell
mkdir C:\jellyseerr
cd C:\jellyseerr
mkdir C:\seerr
cd C:\seerr
```
2. Clone the Jellyseerr repository and checkout the develop branch:
2. Clone the Seerr repository and checkout the develop branch:
```powershell
git clone https://github.com/fallenbagel/jellyseerr.git .
git checkout main
@@ -213,24 +213,24 @@ set CYPRESS_INSTALL_BINARY=0 && pnpm install --frozen-lockfile
```powershell
pnpm build
```
5. Start Jellyseerr:
5. Start Seerr:
```powershell
pnpm start
```
:::tip
You can add the environment variables to a `.env` file in the Jellyseerr directory.
You can add the environment variables to a `.env` file in the Seerr directory.
:::
:::info
You can now access Jellyseerr by visiting `http://localhost:5055` in your web browser.
You can now access Seerr by visiting `http://localhost:5055` in your web browser.
:::
#### Extending the installation
<Tabs groupId="windows-extensions" queryString>
<TabItem value="task-scheduler" label="Task Scheduler">
To run jellyseerr as a bat script:
1. Create a file named `start-jellyseerr.bat` in the jellyseerr directory:
To run seerr as a bat script:
1. Create a file named `start-seerr.bat` in the seerr directory:
```bat
@echo off
set PORT=5055
@@ -240,43 +240,43 @@ node dist/index.js
2. Create a task in Task Scheduler:
- Open Task Scheduler
- Click on "Create Basic Task"
- Name the task "Jellyseerr"
- Name the task "Seerr"
- Set the trigger to "When the computer starts"
- Set the action to "Start a program"
- Set the program/script to the path of the `start-jellyseerr.bat` file
- Set the "Start in" to the jellyseerr directory.
- Set the program/script to the path of the `start-seerr.bat` file
- Set the "Start in" to the seerr directory.
- Click "Finish"
Now, Jellyseerr will start when the computer boots up in the background.
Now, Seerr will start when the computer boots up in the background.
</TabItem>
<TabItem value="nssm" label="NSSM">
To run jellyseerr as a service:
To run seerr as a service:
1. Download the [Non-Sucking Service Manager](https://nssm.cc/download)
2. Install NSSM:
```powershell
nssm install Jellyseerr "C:\Program Files\nodejs\node.exe" "C:\jellyseerr\dist\index.js"
nssm set Jellyseerr AppDirectory "C:\jellyseerr"
nssm set Jellyseerr AppEnvironmentExtra NODE_ENV=production
nssm install Seerr "C:\Program Files\nodejs\node.exe" "C:\seerr\dist\index.js"
nssm set Seerr AppDirectory "C:\seerr"
nssm set Seerr AppEnvironmentExtra NODE_ENV=production
```
3. Start the service:
```powershell
nssm start Jellyseerr
nssm start Seerr
```
4. To ensure the service starts on boot, run the following command:
```powershell
nssm set Jellyseerr Start SERVICE_AUTO_START
nssm set Seerr Start SERVICE_AUTO_START
```
</TabItem>
<TabItem value="pm2" label="PM2">
To run jellyseerr as a PM2 service:
To run seerr as a PM2 service:
1. Install PM2:
```powershell
npm install -g pm2
```
2. Start jellyseerr with PM2:
2. Start seerr with PM2:
```powershell
pm2 start dist/index.js --name jellyseerr --node-args="--NODE_ENV=production"
pm2 start dist/index.js --name seerr --node-args="--NODE_ENV=production"
```
3. Save the process list:
```powershell
@@ -289,31 +289,31 @@ pm2 startup
##### Managing the service
- To start the service:
```powershell
pm2 start jellyseerr
pm2 start seerr
```
- To stop the service:
```powershell
pm2 stop jellyseerr
pm2 stop seerr
```
- To restart the service:
```powershell
pm2 restart jellyseerr
pm2 restart seerr
```
- To view the logs:
```powershell
pm2 logs jellyseerr
pm2 logs seerr
```
- To view the status:
```powershell
pm2 status jellyseerr
pm2 status seerr
```
</TabItem>
</Tabs>
### Updating
To update Jellyseerr, navigate to the Jellyseerr directory and run the following commands:
To update Seerr, navigate to the Seerr directory and run the following commands:
```bash
git pull
```
Then, follow the steps in the installation section to rebuild and restart Jellyseerr.
Then, follow the steps in the installation section to rebuild and restart Seerr.