Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,54 @@ jobs:
- name: Build
run: pnpm build

unit-test:
name: Unit Tests
if: github.event_name == 'pull_request'
runs-on: ubuntu-24.04
container: node:22.22.0-alpine3.22@sha256:0c49915657c1c77c64c8af4d91d2f13fe96853bbd957993ed00dd592cbecc284
permissions:
checks: write
steps:
- name: Checkout
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
persist-credentials: false

- name: Pnpm Setup
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Get pnpm store directory
shell: sh
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
env:
CI: true
run: pnpm install

- name: Run tests
env:
CI: true
run: pnpm test

- name: Publish test report
uses: mikepenz/action-junit-report@74626db7353a25a20a72816467ebf035f674c5f8 # v6.2.0
if: success() || failure() # always run even if the previous step fails
with:
report_paths: 'report.xml'

build:
name: Build (per-arch, native runners)
if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, '[skip ci]')
if: github.ref == 'refs/heads/develop'
strategy:
matrix:
include:
Expand Down Expand Up @@ -237,7 +282,7 @@ jobs:
discord:
name: Send Discord Notification
needs: publish
if: always() && github.event_name != 'pull_request' && !contains(github.event.head_commit.message, '[skip ci]')
if: always() && github.event_name != 'pull_request'
runs-on: ubuntu-24.04
steps:
- name: Determine Workflow Status
Expand Down
87 changes: 87 additions & 0 deletions .github/workflows/create-tag.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Create tag

on:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
determine-tag-version:
name: Determine tag version
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-24.04
permissions:
contents: read
outputs:
tag_version: ${{ steps.git-cliff.outputs.tag_version }}
steps:
- name: Checkout
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
fetch-depth: 0
persist-credentials: false

- name: Install git-cliff
uses: taiki-e/install-action@cede0bb282aae847dfa8aacca3a41c86d973d4d7 # v2.68.1
with:
tool: git-cliff

- name: Get tag version
id: git-cliff
run: |
tag_version=$(git-cliff -c .github/cliff.toml --bumped-version --unreleased)
echo "Next tag version is ${tag_version}"
echo "tag_version=${tag_version}" >> "$GITHUB_OUTPUT"

create-tag:
name: Create tag
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-24.04
permissions:
contents: write
needs: determine-tag-version
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_VERSION: ${{ needs.determine-tag-version.outputs.tag_version }}
steps:
- name: Checkout
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
with:
ssh-key: '${{ secrets.COMMIT_KEY }}'

- name: Pnpm Setup
uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

- name: Set up Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version-file: 'package.json'
# For workflows with elevated privileges we recommend disabling automatic caching.
# https://github.com/actions/setup-node
package-manager-cache: false

- name: Configure git
run: |
git config --global user.name "${{ github.actor }}"
git config --global user.email "${{ github.actor }}@users.noreply.github.com"

- name: Bump package.json
run: npm version ${TAG_VERSION} --no-commit-hooks --no-git-tag-version

- name: Commit updated files
run: |
git add package.json
git commit -m 'chore(release): prepare ${TAG_VERSION}'
git push

- name: Create git tag
run: |
git tag ${TAG_VERSION}
git push origin ${TAG_VERSION}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

# testing
/coverage
lcov.info

# next.js
/.next/
Expand Down
3 changes: 2 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

"stylelint.vscode-stylelint",

"bradlc.vscode-tailwindcss"
"bradlc.vscode-tailwindcss",
"firsttris.vscode-jest-runner"
]
}
9 changes: 8 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,12 @@
"i18n-ally.localesPaths": [
"src/i18n/locale"
],
"yaml.format.singleQuote": true
"yaml.format.singleQuote": true,
"jestrunner.enableTestExplorer": true,
"jestrunner.defaultTestPatterns": [
"server/**/*.{test,spec}.?(c|m)[jt]s?(x)",
],
"jestrunner.nodeTestCommand": "pnpm test",
"jestrunner.changeDirectoryToWorkspaceRoot": true,
"jestrunner.projectPath": "."
}
111 changes: 111 additions & 0 deletions docs/getting-started/third-parties/synology.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
title: Synology (Advanced)
description: Install Seerr on Synology NAS using SynoCommunity
sidebar_position: 5
---

# Synology

:::warning
Third-party installation methods are maintained by the community. The Seerr team is not responsible for these packages.
:::

:::warning
This method is not recommended for most users. It is intended for advanced users who are using Synology NAS.
:::

## Prerequisites

- Synology NAS running **DSM 7.2** or later
- 64-bit architecture (x86_64 or ARMv8)
- [SynoCommunity package source](https://synocommunity.com/) added to Package Center

## Adding the SynoCommunity Package Source

If you haven't already added SynoCommunity to your Package Center:

1. Open **Package Center** in DSM
2. Click **Settings** in the top-right corner
3. Go to the **Package Sources** tab
4. Click **Add**
5. Enter the following:
- **Name**: `SynoCommunity`
- **Location**: `https://packages.synocommunity.com`
6. Click **OK**

## Installation

1. In **Package Center**, search for **Seerr**
2. Click **Install**
3. Follow the installation wizard prompts
4. Package Center will automatically install any required dependencies (Node.js v22)

### Access Seerr

Once installed, access Seerr at:

```
http://<your-synology-ip>:5055
```

You can also click the **Open** button in Package Center or find Seerr in the DSM main menu.

## Configuration

Seerr's configuration files are stored at:

```
/var/packages/seerr/var/config
```

:::info
The Seerr package runs as a dedicated service user managed by DSM. No manual permission configuration is required.
:::

## Managing the Service

You can start, stop, and restart Seerr from **Package Center** → Find Seerr → Use the action buttons.

## Updating

When a new version is available:

1. Open **Package Center**
2. Go to **Installed** packages
3. Find **Seerr** and click **Update** if available

:::tip
Enable automatic updates in Package Center settings to keep Seerr up to date.
:::

## Troubleshooting

### Viewing Logs

Seerr logs are located at `/var/packages/seerr/var/config/logs` and can be accessed using:

- **File Browser** package (recommended for most users)
- SSH (advanced users)

### Port Conflicts

Seerr uses port 5055. If this port is already in use:

- **Docker containers**: Remap the conflicting container to a different port
- **Other packages**: The conflicting package will need to be uninstalled as Seerr's port cannot be changed

SynoCommunity ensures there are no port conflicts with other SynoCommunity packages or official Synology packages.

### Package Won't Start

Ensure Node.js v22 is installed and running by checking its status in **Package Center**.

## Uninstallation

1. Open **Package Center**
2. Find **Seerr** in your installed packages
3. Click **Uninstall**

:::caution
Uninstalling will remove the application but preserve your configuration data by default. Select "Remove data" during uninstallation if you want a complete removal.
:::
11 changes: 4 additions & 7 deletions docs/getting-started/third-parties/truenas.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,14 @@ description: Install Seerr using TrueNAS
sidebar_position: 4
---
# TrueNAS
:::danger
This method has not yet been updated for Seerr and is currently a work in progress.
You can follow the ongoing work on this issue https://github.com/truenas/apps/issues/3374.
:::

<!--
:::warning
Third-party installation methods are maintained by the community. The Seerr team is not responsible for these packages.
:::

:::warning
This method is not recommended for most users. It is intended for advanced users who are using TrueNAS distribution.
:::
-->

## Installation

Go to the 'Apps' menu, click the 'Discover Apps' button in the top right, search for 'Seerr' in the search bar, and install the app.
39 changes: 37 additions & 2 deletions docs/migration-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,42 @@ See https://aur.archlinux.org/packages/seerr

### TrueNAS

Waiting for https://github.com/truenas/apps/issues/3374
Refer to [Seerr TrueNAS Documentation](/getting-started/third-parties/truenas), all of our examples have been updated to reflect the below change.

<Tabs groupId="truenas-migration" queryString>
<TabItem value="hostpath" label="Host Path">
**This guide describes how to migrate from Host Path storage (not ixVolume).**
1. Stop Jellyseerr/Overseerr
2. Install Seerr and use the same Host Path storage that was used by Jellyseerr/Overseerr
3. Start Seerr app
4. Delete Jellyseerr/Overseerr app
</TabItem>
<TabItem value="ixvolume" label="ixVolume">
**This guide describes how to migrate from ixVolume storage (not Host Path).**
1. Stop Jellyseerr/Overseerr
2. Create a dataset for Seerr
If your apps normally store data under something like:
```
/mnt/storage/<app-name>
```
then create a dataset named:
```
storage/seerr
```
resulting in:
```
/mnt/storage/seerr
```
3. Copy ixVolume Data
Open System Settings → Shell, or SSH into your TrueNAS server as root and run :
```bash
rsync -av /mnt/.ix-apps/app_mounts/jellyseerr/ /mnt/storage/seerr/
```
4. Install Seerr and use the same Host Path storage that was created before (`/mnt/storage/seerr/config` in our example)
5. Start Seerr app
6. Delete Jellyseerr/Overseerr app
</TabItem>
</Tabs>

### Unraid

Expand Down Expand Up @@ -277,4 +312,4 @@ For Jellyseerr users, use `/mnt/user/appdata/jellyseerr`.

:::tip
If you are using a reverse proxy (such as SWAG or Nginx Proxy Manager), update your proxy configuration to point to the new container name `seerr`. The default port remains `5055`.
:::
:::
2 changes: 1 addition & 1 deletion gen-docs/blog/2026-02-10/seerr-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Please check how to migrate to Seerr in our [migration guide](https://docs.seerr

Seerr brings several features that were previously available in Jellyseerr but missing from Overseerr. These additions improve flexibility, performance, and overall control for admins and power users:

* **Alternative media solution:** Added support for Jellyfin and Emby in addition to the existing Plex integration.
* **Alternative media solution:** Added support for Jellyfin and Emby as alternatives to Plex. Only one integration can be used at a time.
* **PostgreSQL support**: In addition to SQLite, you can now opt in to using a PostgreSQL database.
* **Blocklist for movies, series, and tags**: Allows permitted users to hide movies, series, or tags from regular users.
* **Override rules**: Adjust default request settings based on conditions such as user, tag, or other criteria.
Expand Down
7 changes: 6 additions & 1 deletion gen-docs/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@ const config: Config = {
deploymentBranch: 'gh-pages',

onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',

markdown: {
hooks: {
onBrokenMarkdownLinks: 'warn',
},
},

i18n: {
defaultLocale: 'en',
Expand Down
Loading
Loading