Skip to content

Commit f4af6ed

Browse files
authored
docs: add migration guide (#2069)
1 parent 267450a commit f4af6ed

File tree

5 files changed

+199
-14
lines changed

5 files changed

+199
-14
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,6 @@ tsconfig.tsbuildinfo
7171

7272
# Config Cache Directory
7373
config/cache
74+
75+
# Docker compose
76+
compose.override.yaml

charts/seerr-chart/README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Refer to [https://docs.seerr.dev/getting-started/kubernetes](Seerr kubernetes do
2828

2929
### Updating to 3.0.0
3030

31-
Nothing has changed; we just rebranded the `jellyseerr` Helm chart to `seerr` 🥳.
31+
Nothing has changed; we just rebranded the `jellyseerr` Helm chart to `seerr` 🥳 refer to our [Migration guide](https://docs.seerr.dev/migration-guide).
3232

3333
### Updating to 2.7.0
3434

@@ -70,12 +70,20 @@ If `replicaCount` value was used - remove it. Helm update should work fine after
7070
| nodeSelector | object | `{}` | |
7171
| podAnnotations | object | `{}` | |
7272
| podLabels | object | `{}` | |
73-
| podSecurityContext | object | `{}` | |
73+
| podSecurityContext.fsGroup | int | `1000` | |
74+
| podSecurityContext.fsGroupChangePolicy | string | `"OnRootMismatch"` | |
7475
| probes.livenessProbe | object | `{}` | Configure liveness probe |
7576
| probes.readinessProbe | object | `{}` | Configure readiness probe |
7677
| probes.startupProbe | string | `nil` | Configure startup probe |
7778
| resources | object | `{}` | |
78-
| securityContext | object | `{}` | |
79+
| securityContext.allowPrivilegeEscalation | bool | `false` | |
80+
| securityContext.capabilities.drop[0] | string | `"ALL"` | |
81+
| securityContext.privileged | bool | `false` | |
82+
| securityContext.readOnlyRootFilesystem | bool | `false` | |
83+
| securityContext.runAsGroup | int | `1000` | |
84+
| securityContext.runAsNonRoot | bool | `true` | |
85+
| securityContext.runAsUser | int | `1000` | |
86+
| securityContext.seccompProfile.type | string | `"RuntimeDefault"` | |
7987
| service.port | int | `80` | |
8088
| service.type | string | `"ClusterIP"` | |
8189
| serviceAccount.annotations | object | `{}` | Annotations to add to the service account |

charts/seerr-chart/README.md.gotmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Refer to [https://docs.seerr.dev/getting-started/kubernetes](Seerr kubernetes do
2222

2323
### Updating to 3.0.0
2424

25-
Nothing has changed; we just rebranded the `jellyseerr` Helm chart to `seerr` 🥳.
25+
Nothing has changed; we just rebranded the `jellyseerr` Helm chart to `seerr` 🥳 refer to our [Migration guide](https://docs.seerr.dev/migration-guide).
2626

2727
### Updating to 2.7.0
2828

charts/seerr-chart/values.yaml

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,22 @@ serviceAccount:
5050
podAnnotations: {}
5151
podLabels: {}
5252

53-
podSecurityContext: {}
54-
# fsGroup: 2000
55-
56-
securityContext: {}
57-
# capabilities:
58-
# drop:
59-
# - ALL
60-
# readOnlyRootFilesystem: true
61-
# runAsNonRoot: true
62-
# runAsUser: 1000
53+
podSecurityContext:
54+
fsGroup: 1000
55+
fsGroupChangePolicy: OnRootMismatch
56+
57+
securityContext:
58+
allowPrivilegeEscalation: false
59+
capabilities:
60+
drop:
61+
- ALL
62+
readOnlyRootFilesystem: false
63+
runAsNonRoot: true
64+
privileged: false
65+
runAsUser: 1000
66+
runAsGroup: 1000
67+
seccompProfile:
68+
type: RuntimeDefault
6369

6470
service:
6571
type: ClusterIP

docs/migration-guide.mdx

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
---
2+
title: Migration guide
3+
---
4+
5+
import Tabs from '@theme/Tabs';
6+
import TabItem from '@theme/TabItem';
7+
8+
Whether you come from Overseerr or Jellyseerr, you don't need to perform any manual migration steps, your instance will automatically be migrated to Seerr.
9+
This migration will run automatically the first time you start your instance using the Seerr codebase (Docker image or source build or Kubernetes, etc.).
10+
An additional migration will happen for Overseerr users, to migrate their configuration to the new codebase.
11+
12+
:::warning
13+
Before doing anything you should backup your existing instance so that you can rollback in case something goes wrong.
14+
See [Backups](/using-seerr/backups) for details on how to properly backup your instance.
15+
:::
16+
17+
## Docker
18+
Refer to [Seerr Docker Documentation](/getting-started/docker), all of our examples have been updated to reflect the below change.
19+
20+
Changes :
21+
- Renamed all references from `overseerr` or `jellyseerr` to `seerr`.
22+
- The container image reference has been updated.
23+
- The container can now be run as a non-root user (`node` user); remove the `user` directive if you have configured it.
24+
- The container no longer provides an init process, so you must configure it by adding `init: true` for Docker Compose or `--init` for the Docker CLI.
25+
26+
:::info
27+
**Config folder permissions**: Since the container now runs as the `node` user (UID 1000), you must ensure your config folder has the correct permissions. The `node` user must have read and write access to the `/app/config` directory.
28+
29+
If you're migrating from a previous installation, you may need to update the ownership of your config folder:
30+
```bash
31+
sudo chown -R 1000:1000 /path/to/appdata/config
32+
```
33+
34+
This ensures the `node` user (UID 1000) owns the config directory and can read and write to it.
35+
:::
36+
37+
### Unix
38+
39+
Summary of changes :
40+
<Tabs groupId="docker-methods" queryString>
41+
<TabItem value="docker-compose" label="Docker compose">
42+
```yaml {3-6}
43+
---
44+
services:
45+
seerr:
46+
image: ghcr.io/seerr-team/seerr:latest
47+
init: true
48+
container_name: seerr
49+
environment:
50+
- LOG_LEVEL=debug
51+
- TZ=Asia/Tashkent
52+
- PORT=5055 #optional
53+
ports:
54+
- 5055:5055
55+
volumes:
56+
- /path/to/appdata/config:/app/config
57+
healthcheck:
58+
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
59+
start_period: 20s
60+
timeout: 3s
61+
interval: 15s
62+
retries: 3
63+
restart: unless-stopped
64+
```
65+
</TabItem>
66+
<TabItem value="docker-cli" label="Docker CLI">
67+
```bash {2-3,10}
68+
docker run -d \
69+
--name seerr \
70+
--init \
71+
-e LOG_LEVEL=debug \
72+
-e TZ=Asia/Tashkent \
73+
-e PORT=5055 \
74+
-p 5055:5055 \
75+
-v /path/to/appdata/config:/app/config \
76+
--restart unless-stopped \
77+
ghcr.io/seerr-team/seerr:latest
78+
```
79+
</TabItem>
80+
</Tabs>
81+
82+
### Windows
83+
Summary of changes :
84+
<Tabs groupId="docker-methods" queryString>
85+
<TabItem value="docker-compose" label="Docker compose">
86+
```yaml {3-6,13,23}
87+
---
88+
services:
89+
seerr:
90+
image: ghcr.io/seerr-team/seerr:latest
91+
init: true
92+
container_name: seerr
93+
environment:
94+
- LOG_LEVEL=debug
95+
- TZ=Asia/Tashkent
96+
ports:
97+
- 5055:5055
98+
volumes:
99+
- seerr-data:/app/config
100+
healthcheck:
101+
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
102+
start_period: 20s
103+
timeout: 3s
104+
interval: 15s
105+
retries: 3
106+
restart: unless-stopped
107+
108+
volumes:
109+
seerr-data:
110+
external: true
111+
```
112+
</TabItem>
113+
<TabItem value="docker-cli" label="Docker CLI">
114+
```bash {2-3,8,10}
115+
docker run -d \
116+
--name seerr \
117+
--init \
118+
-e LOG_LEVEL=debug \
119+
-e TZ=Asia/Tashkent \
120+
-e PORT=5055 \
121+
-p 5055:5055 \
122+
-v seerr-data:/app/config \
123+
--restart unless-stopped \
124+
ghcr.io/seerr-team/seerr:latest
125+
```
126+
</TabItem>
127+
</Tabs>
128+
129+
## Kubernetes
130+
Refer to [Seerr Kubernetes Documentation](/getting-started/kubernetes), all of our examples have been updated to reflect the below change.
131+
132+
Changes :
133+
- All references to `jellyseerr` have been renamed to `seerr` in the manifests.
134+
- The container image reference has been updated.
135+
- The default `securityContext` and `podSecurityContext` have been updated to support running the container without root permissions.
136+
137+
Summary of changes :
138+
<Tabs groupId="kubernetes-values" queryString>
139+
<TabItem value="old" label="Old values">
140+
```yaml
141+
image:
142+
repository: fallenbagel/jellyseerr
143+
podSecurityContext: {}
144+
securityContext: {}
145+
```
146+
</TabItem>
147+
<TabItem value="new" label="New values">
148+
```yaml
149+
image:
150+
repository: seerr-team/seerr
151+
podSecurityContext:
152+
fsGroup: 1000
153+
fsGroupChangePolicy: OnRootMismatch
154+
securityContext:
155+
allowPrivilegeEscalation: false
156+
capabilities:
157+
drop:
158+
- ALL
159+
readOnlyRootFilesystem: false
160+
runAsNonRoot: true
161+
privileged: false
162+
runAsUser: 1000
163+
runAsGroup: 1000
164+
seccompProfile:
165+
type: RuntimeDefault
166+
```
167+
</TabItem>
168+
</Tabs>

0 commit comments

Comments
 (0)