mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-24 02:39:18 -05:00
One of the previous prs changed it to ghcr.io. While we do support it, that's our secondary and dockerhub has always been our primary.
198 lines
6.6 KiB
Plaintext
198 lines
6.6 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.
|
|
:::
|
|
|
|
## 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 \
|
|
-e LOG_LEVEL=debug \
|
|
-e TZ=Asia/Tashkent \
|
|
-e PORT=5055 `#optional` \
|
|
-p 5055:5055 \
|
|
-v /path/to/appdata/config:/app/config \
|
|
--restart unless-stopped \
|
|
fallenbagel/jellyseerr
|
|
```
|
|
|
|
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 fallenbagel/jellyseerr
|
|
```
|
|
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: fallenbagel/jellyseerr:latest
|
|
container_name: jellyseerr
|
|
environment:
|
|
- LOG_LEVEL=debug
|
|
- TZ=Asia/Tashkent
|
|
- PORT=5055 #optional
|
|
ports:
|
|
- 5055:5055
|
|
volumes:
|
|
- /path/to/appdata/config:/app/config
|
|
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 -e LOG_LEVEL=debug -e TZ=Asia/Tashkent -p 5055:5055 -v "jellyseerr-data:/app/config" --restart unless-stopped fallenbagel/jellyseerr:latest
|
|
```
|
|
|
|
#### 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: fallenbagel/jellyseerr:latest
|
|
container_name: jellyseerr
|
|
environment:
|
|
- LOG_LEVEL=debug
|
|
- TZ=Asia/Tashkent
|
|
ports:
|
|
- 5055:5055
|
|
volumes:
|
|
- jellyseerr-data:/app/config
|
|
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.
|
|
:::
|
|
|
|
|