mirror of
https://github.com/seerr-team/seerr.git
synced 2025-12-23 23:58:07 -05:00
* ci: added helm cosign verification and renovate app workflow to bump chart versions * docs: add helm artifacts verification Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * fix: update app id Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> * docs: add documentation link in helm chart and seerr docs Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> --------- Signed-off-by: Ludovic Ortega <ludovic.ortega@adminafk.fr> Co-authored-by: Ludovic Ortega <ludovic.ortega@adminafk.fr>
254 lines
8.3 KiB
Plaintext
254 lines
8.3 KiB
Plaintext
---
|
|
title: Docker (Recommended)
|
|
description: Install Jellyseerr using Docker
|
|
sidebar_position: 1
|
|
---
|
|
# Docker
|
|
:::info
|
|
This is the recommended method for most users.
|
|
Details on how to install Docker can be found on the [official Docker website](https://docs.docker.com/get-docker/).
|
|
|
|
Refer to [Configuring Databases](/extending-jellyseerr/database-config#postgresql-options) for details on how to configure your database.
|
|
:::
|
|
|
|
:::info
|
|
An alternative Docker image is available on Docker Hub for this project. You can find it at [Docker Hub Repository Link](https://hub.docker.com/r/seerr/seerr)
|
|
:::
|
|
|
|
:::info
|
|
All official Seerr images are cryptographically signed and include a verified [Software Bill of Materials (SBOM)](https://cyclonedx.org/).
|
|
|
|
To confirm that the container image you are using is authentic and unmodified, please refer to the [Verifying Signed Artifacts](/using-jellyseerr/advanced/verifying-signed-artifacts#verifying-signed-images) guide.
|
|
:::
|
|
|
|
## Unix (Linux, macOS)
|
|
:::warning
|
|
Be sure to replace `/path/to/appdata/config` in the below examples with a valid host directory path. If this volume mount is not configured correctly, your Jellyseerr settings/data will not be persisted when the container is recreated (e.g., when updating the image or rebooting your machine).
|
|
|
|
The `TZ` environment variable value should also be set to the [TZ database name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) of your time zone!
|
|
|
|
:::
|
|
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
|
|
<Tabs groupId="docker-methods" queryString>
|
|
<TabItem value="docker-cli" label="Docker CLI">
|
|
For details on the Docker CLI, please [review the official `docker run` documentation](https://docs.docker.com/engine/reference/run/).
|
|
|
|
#### Installation:
|
|
|
|
```bash
|
|
docker run -d \
|
|
--name jellyseerr \
|
|
--init \
|
|
-e LOG_LEVEL=debug \
|
|
-e TZ=Asia/Tashkent \
|
|
-e PORT=5055 \
|
|
-p 5055:5055 \
|
|
-v /path/to/appdata/config:/app/config \
|
|
--restart unless-stopped \
|
|
ghcr.io/fallenbagel/jellyseerr:latest
|
|
```
|
|
|
|
The argument `-e PORT=5055` is optional.
|
|
|
|
If you want to add a healthcheck to the above command, you can add the following flags :
|
|
```
|
|
--health-cmd "wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1" \
|
|
--health-start-period 20s \
|
|
--health-timeout 3s \
|
|
--health-interval 15s \
|
|
--health-retries 3 \
|
|
```
|
|
|
|
To run the container as a specific user/group, you may optionally add `--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]` to the above command.
|
|
|
|
#### Updating:
|
|
|
|
Stop and remove the existing container:
|
|
```bash
|
|
docker stop jellyseerr && docker rm jellyseerr
|
|
```
|
|
Pull the latest image:
|
|
```bash
|
|
docker pull ghcr.io/fallenbagel/jellyseerr:latest
|
|
```
|
|
Finally, run the container with the same parameters originally used to create the container:
|
|
```bash
|
|
docker run -d ...
|
|
```
|
|
|
|
:::tip
|
|
You may alternatively use a third-party updating mechanism, such as [Watchtower](https://github.com/containrrr/watchtower) or [Ouroboros](https://github.com/pyouroboros/ouroboros), to keep Jellyseerr up-to-date automatically.
|
|
|
|
You could also use [diun](https://github.com/crazy-max/diun) to receive notifications when a new image is available.
|
|
:::
|
|
</TabItem>
|
|
|
|
<TabItem value="docker-compose" label="Docker Compose">
|
|
For details on how to use Docker Compose, please [review the official Compose documentation](https://docs.docker.com/compose/reference/).
|
|
|
|
#### Installation:
|
|
Define the `jellyseerr` service in your `compose.yaml` as follows:
|
|
```yaml
|
|
---
|
|
services:
|
|
jellyseerr:
|
|
image: ghcr.io/fallenbagel/jellyseerr:latest
|
|
init: true
|
|
container_name: jellyseerr
|
|
environment:
|
|
- LOG_LEVEL=debug
|
|
- TZ=Asia/Tashkent
|
|
- PORT=5055 #optional
|
|
ports:
|
|
- 5055:5055
|
|
volumes:
|
|
- /path/to/appdata/config:/app/config
|
|
healthcheck:
|
|
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
|
|
start_period: 20s
|
|
timeout: 3s
|
|
interval: 15s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
```
|
|
|
|
Then, start all services defined in the Compose file:
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
#### Updating:
|
|
Pull the latest image:
|
|
```bash
|
|
docker compose pull jellyseerr
|
|
```
|
|
Then, restart all services defined in the Compose file:
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
:::tip
|
|
You may alternatively use a third-party mechanism like [dockge](https://github.com/louislam/dockge) to manage your docker compose files.
|
|
:::
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
|
|
## Unraid
|
|
|
|
1. Ensure you have the **Community Applications** plugin installed.
|
|
2. Inside the **Community Applications** app store, search for **Jellyseerr**.
|
|
3. Click the **Install Button**.
|
|
4. On the following **Add Container** screen, make changes to the **Host Port** and **Host Path 1** \(Appdata\) as needed.
|
|
5. Click apply and access "Jellyseerr" at your `<ServerIP:HostPort>` in a web browser.
|
|
|
|
## Windows
|
|
|
|
Please refer to the [Docker Desktop for Windows user manual](https://docs.docker.com/docker-for-windows/) for details on how to install Docker on Windows. There is no need to install a Linux distro if using named volumes like in the example below.
|
|
:::warning
|
|
**WSL2 will need to be installed to prevent DB corruption!** Please see the [Docker Desktop WSL 2 backend documentation](https://docs.docker.com/docker-for-windows/wsl/) for instructions on how to enable WSL2. The commands below will only work with WSL2 installed!
|
|
:::
|
|
|
|
First, create a volume to store the configuration data for Jellyseerr using using either the Docker CLI:
|
|
```bash
|
|
docker volume create jellyseerr-data
|
|
```
|
|
|
|
or the Docker Desktop app:
|
|
1. Open the Docker Desktop app
|
|
2. Head to the Volumes tab
|
|
3. Click on the "New Volume" button near the top right
|
|
4. Enter a name for the volume (example: `jellyseerr-data`) and hit "Create"
|
|
|
|
Then, create and start the Jellyseerr container:
|
|
<Tabs groupId="docker-methods" queryString>
|
|
<TabItem value="docker-cli" label="Docker CLI">
|
|
```bash
|
|
docker run -d \
|
|
--name jellyseerr \
|
|
--init \
|
|
-e LOG_LEVEL=debug \
|
|
-e TZ=Asia/Tashkent \
|
|
-e PORT=5055 \
|
|
-p 5055:5055 \
|
|
-v jellyseerr-data:/app/config \
|
|
--restart unless-stopped \
|
|
ghcr.io/fallenbagel/jellyseerr:latest
|
|
```
|
|
|
|
The argument `-e PORT=5055` is optional.
|
|
|
|
If you want to add a healthcheck to the above command, you can add the following flags :
|
|
```
|
|
--health-cmd "wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1" \
|
|
--health-start-period 20s \
|
|
--health-timeout 3s \
|
|
--health-interval 15s \
|
|
--health-retries 3 \
|
|
```
|
|
|
|
#### Updating:
|
|
Pull the latest image:
|
|
```bash
|
|
docker compose pull jellyseerr
|
|
```
|
|
Then, restart all services defined in the Compose file:
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
</TabItem>
|
|
|
|
<TabItem value="docker-compose" label="Docker Compose">
|
|
```yaml
|
|
---
|
|
services:
|
|
jellyseerr:
|
|
image: ghcr.io/fallenbagel/jellyseerr:latest
|
|
init: true
|
|
container_name: jellyseerr
|
|
environment:
|
|
- LOG_LEVEL=debug
|
|
- TZ=Asia/Tashkent
|
|
ports:
|
|
- 5055:5055
|
|
volumes:
|
|
- jellyseerr-data:/app/config
|
|
healthcheck:
|
|
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
|
|
start_period: 20s
|
|
timeout: 3s
|
|
interval: 15s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
jellyseerr-data:
|
|
external: true
|
|
```
|
|
|
|
#### Updating:
|
|
Pull the latest image:
|
|
```bash
|
|
docker compose pull jellyseerr
|
|
```
|
|
Then, restart all services defined in the Compose file:
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
To access the files inside the volume created above, navigate to `\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\jellyseerr-data\_data` using File Explorer.
|
|
|
|
:::info
|
|
Docker on Windows works differently than it does on Linux; it runs Docker inside of a stripped-down Linux VM. Volume mounts are exposed to Docker inside this VM via SMB mounts. While this is fine for media, it is unacceptable for the `/app/config` directory because SMB does not support file locking. This will eventually corrupt your database, which can lead to slow behavior and crashes.
|
|
|
|
**If you must run Docker on Windows, you should put the `/app/config` directory mount inside the VM and not on the Windows host.** (This also applies to other containers with SQLite databases.)
|
|
|
|
Named volumes, like in the example commands above, are automatically mounted inside the VM. Therefore the warning on the setup about the `/app/config` folder being incorrectly mounted page should be ignored.
|
|
:::
|
|
|
|
|