mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-24 02:39:18 -05:00
244 lines
7.6 KiB
Plaintext
244 lines
7.6 KiB
Plaintext
---
|
|
title: Docker (Recommended)
|
|
description: Install Seerr 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-seerr/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 Seerr 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 seerr \
|
|
--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/seerr-team/seerr
|
|
```
|
|
|
|
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 seerr && docker rm seerr
|
|
```
|
|
Pull the latest image:
|
|
```bash
|
|
docker pull ghcr.io/seerr-team/seerr
|
|
```
|
|
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 Seerr 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 `seerr` service in your `compose.yaml` as follows:
|
|
```yaml
|
|
---
|
|
services:
|
|
seerr:
|
|
image: ghcr.io/seerr-team/seerr:latest
|
|
init: true
|
|
container_name: seerr
|
|
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 seerr
|
|
```
|
|
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 **Seerr**.
|
|
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 "Seerr" 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 Seerr using using either the Docker CLI:
|
|
```bash
|
|
docker volume create seerr-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: `seerr-data`) and hit "Create"
|
|
|
|
Then, create and start the Seerr container:
|
|
<Tabs groupId="docker-methods" queryString>
|
|
<TabItem value="docker-cli" label="Docker CLI">
|
|
```bash
|
|
docker run -d \
|
|
--name seerr \
|
|
--init \
|
|
-e LOG_LEVEL=debug \
|
|
-e TZ=Asia/Tashkent \
|
|
-e PORT=5055 \
|
|
-p 5055:5055 \
|
|
-v seerr-data:/app/config \
|
|
--restart unless-stopped \
|
|
ghcr.io/seerr-team/seerr
|
|
```
|
|
|
|
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 seerr
|
|
```
|
|
Then, restart all services defined in the Compose file:
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
</TabItem>
|
|
|
|
<TabItem value="docker-compose" label="Docker Compose">
|
|
```yaml
|
|
---
|
|
services:
|
|
seerr:
|
|
image: ghcr.io/seerr-team/seerr:latest
|
|
init: true
|
|
container_name: seerr
|
|
environment:
|
|
- LOG_LEVEL=debug
|
|
- TZ=Asia/Tashkent
|
|
ports:
|
|
- 5055:5055
|
|
volumes:
|
|
- seerr-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:
|
|
seerr-data:
|
|
external: true
|
|
```
|
|
|
|
#### Updating:
|
|
Pull the latest image:
|
|
```bash
|
|
docker compose pull seerr
|
|
```
|
|
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\seerr-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.
|
|
:::
|
|
|
|
|