docs: update Unraid install and migration guides with dual permission methods#2532
Conversation
… methods Add "Seerr Default" (UID 1000) and "Unraid Default" (UID 99:100) tabbed installation methods to the Unraid guide, with disclaimers for each approach. Restructure the migration guide's Unraid section to remove duplicated Docker setup tables and link to the installation guide instead. Add Template installation section, extra parameters guidance, and restart policy. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughRestructures Unraid install and migration docs into a tabbed Seerr Default vs Unraid Default flow, adds a Template installation section, converts linear steps into tabbed steps, and adds explicit mkdir/chown, UID/GID/rootless guidance and required Docker extra-parameter notes. Changes
Sequence Diagram(s)(omitted — changes are documentation restructure without new multi-component control flow) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
Pull request overview
This PR updates the Unraid installation and migration documentation to present two supported permissions approaches (Seerr default UID/GID 1000:1000 vs Unraid default 99:100), including trade-off disclaimers and streamlined migration instructions.
Changes:
- Restructures the Unraid install guide into tabbed instructions for “Seerr Default” vs “Unraid Default”, including extra parameters guidance.
- Simplifies the Unraid migration section by linking to the install guide and adding a permissions decision step with tabs.
- Removes/avoids duplicated Docker setup tables in the migration guide in favor of the install guide link.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| docs/migration-guide.mdx | Reworks Unraid migration steps and adds tabbed permission/ownership options. |
| docs/getting-started/third-parties/unraid.mdx | Adds tabbed manual install paths for the two permission models plus disclaimers and extra-params guidance. |
Comments suppressed due to low confidence (1)
docs/getting-started/third-parties/unraid.mdx:23
- “Several templates from Unraid Community are available right now” reads as an incomplete sentence. Consider adding an article and punctuation (e.g., “Several templates from the Unraid community are available:” ) so the following list reads correctly.
Several templates from Unraid Community are available right now
- [Unraid Community Apps](https://unraid.net/community/apps#community-apps-iframe)
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
fallenbagel
left a comment
There was a problem hiding this comment.
Just two small changes and this should be good to merge
The cp command copies data to the new Seerr appdata directory, not a backup. Update heading and description to reflect this.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/migration-guide.mdx`:
- Around line 263-267: The current cp command copies the overseerr directory
into seerr and will create a nested /mnt/user/appdata/seerr/overseerr if the
destination exists; update the command that currently uses "cp -a
/mnt/user/appdata/overseerr /mnt/user/appdata/seerr" to copy the contents of the
overseerr folder into the existing seerr folder (e.g., use a trailing slash on
the source or otherwise copy the directory contents) so the files land directly
under /mnt/user/appdata/seerr and preserve the intended /app/config mapping.
M0NsTeRRR
left a comment
There was a problem hiding this comment.
I’ve posted some comments let me know what you think. When I add a command for one install method, it often applies to the other installation methods as well, so be sure to update both.
I’ll try running the documentation later to check how it looks! :)
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
docs/getting-started/third-parties/unraid.mdx (1)
22-23: Minor grammar refinement."are available right now" reads casually; consider tightening for technical documentation.
✏️ Suggested rewording
-Several templates from Unraid Community are available right now +Several templates are available from Unraid Community Apps: - [Unraid Community Apps](https://unraid.net/community/apps#community-apps-iframe)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/getting-started/third-parties/unraid.mdx` around lines 22 - 23, The sentence "Several templates from Unraid Community are available right now" is too casual; replace it with a tighter, more technical phrasing such as "Several templates from the Unraid Community are available" or "Several Unraid Community templates are available" in the docs/getting-started/third-parties/unraid.mdx content (look for the exact sentence and the Unraid Community Apps link) so the wording is concise and formal.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/getting-started/third-parties/unraid.mdx`:
- Around line 122-136: The note text contradicts the following instructions: the
note says "Keep current host ownership" and "avoids changing host permissions"
while the command `chown -R 99:100 /mnt/user/appdata/seerr` immediately changes
ownership; update the documentation to be consistent by either (A) rewording the
note to state that we recommend setting the config folder to Unraid's standard
nobody:users (UID 99, GID 100) so the subsequent `chown -R 99:100
/mnt/user/appdata/seerr` makes the ownership explicit, or (B) remove/replace the
`chown` command if the intent is truly to preserve existing ownership; ensure
the note/reference to Unraid UID/GID and the `mkdir`/`chown` instructions (the
`chown -R 99:100 ...` line) clearly reflect the chosen approach.
---
Nitpick comments:
In `@docs/getting-started/third-parties/unraid.mdx`:
- Around line 22-23: The sentence "Several templates from Unraid Community are
available right now" is too casual; replace it with a tighter, more technical
phrasing such as "Several templates from the Unraid Community are available" or
"Several Unraid Community templates are available" in the
docs/getting-started/third-parties/unraid.mdx content (look for the exact
sentence and the Unraid Community Apps link) so the wording is concise and
formal.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
docs/getting-started/third-parties/unraid.mdx (1)
124-128: Consider clarifying "without changing host folder ownership" phrasing.Line 125 states
--user 99:100"avoids permission errors accessing your shares without changing host folder ownership," but step 2 explicitly changes ownership of the config directory viachown -R 99:100. The intent appears to be that users don't need to change ownership of other shares (media libraries, etc.), but the current phrasing could confuse readers.Suggested clarification
- The `--user 99:100` parameter runs the container process with Unraid's default UID/GID and avoids permission errors accessing your shares without changing host folder ownership. + The `--user 99:100` parameter runs the container process with Unraid's default UID/GID, allowing access to your existing shares without needing to change their ownership.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/getting-started/third-parties/unraid.mdx` around lines 124 - 128, Clarify the sentence about `--user 99:100` to remove ambiguity: update the phrasing around `--user 99:100` so it explicitly notes that the guide does instruct changing ownership of the container's config directory via `chown -R 99:100` earlier, but `--user 99:100` prevents needing to change ownership on other host shares (e.g., media libraries); mention both the earlier `chown -R 99:100` action and that `--user 99:100` is intended to avoid altering ownership of other host folders to prevent reader confusion.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/migration-guide.mdx`:
- Around line 273-274: Update the "**3. Set permissions and install Seerr**"
paragraph to explicitly tell migration users which permission tab to use in the
referenced Unraid Installation Guide: recommend following the "Unraid Default"
tab (UID 99:100) rather than "Seerr Default" (UID 1000) because existing
Overseerr/Jellyseerr appdata on Unraid is typically owned by 99:100; keep the
instruction to "start from step 2" and briefly note the UID guidance so readers
know which tab to pick when following the linked guide.
---
Duplicate comments:
In `@docs/migration-guide.mdx`:
- Around line 265-269: The cp example under the "**2. Copy existing data to
Seerr appdata**" step will create a nested overseerr/ folder when the
destination exists; update the command shown (`cp -a /mnt/user/appdata/overseerr
/mnt/user/appdata/seerr`) to use the trailing-dot form so it copies the contents
into the target directory (i.e., replace the shown command with the equivalent
that uses the source directory's trailing dot to avoid creating an extra
overseerr subdirectory).
---
Nitpick comments:
In `@docs/getting-started/third-parties/unraid.mdx`:
- Around line 124-128: Clarify the sentence about `--user 99:100` to remove
ambiguity: update the phrasing around `--user 99:100` so it explicitly notes
that the guide does instruct changing ownership of the container's config
directory via `chown -R 99:100` earlier, but `--user 99:100` prevents needing to
change ownership on other host shares (e.g., media libraries); mention both the
earlier `chown -R 99:100` action and that `--user 99:100` is intended to avoid
altering ownership of other host folders to prevent reader confusion.
…ethods and trade-off descriptions
There was a problem hiding this comment.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@docs/migration-guide.mdx`:
- Around line 265-269: Replace the existing example copy command that copies the
entire overseerr directory into seerr (the line containing "cp -a
/mnt/user/appdata/overseerr /mnt/user/appdata/seerr") with a content-copy
variant so files land directly in /mnt/user/appdata/seerr instead of creating a
nested /mnt/user/appdata/seerr/overseerr; update the docs to recommend using a
content-copy form (or rsync equivalent) that targets the contents of
/mnt/user/appdata/overseerr into /mnt/user/appdata/seerr and mention why (to
avoid nesting when the destination already exists).
Co-authored-by: Ludovic Ortega <github@mail.adminafk.fr>
M0NsTeRRR
left a comment
There was a problem hiding this comment.
Thanks for your contribution !
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/seerr-team/seerr](https://github.com/seerr-team/seerr) | minor | `v3.0.1` → `v3.1.0` | | [seerr-team/seerr](https://github.com/seerr-team/seerr) | minor | `v3.0.1` → `v3.1.0` | --- ### Release Notes <details> <summary>seerr-team/seerr (ghcr.io/seerr-team/seerr)</summary> ### [`v3.1.0`](https://github.com/seerr-team/seerr/releases/tag/v3.1.0) [Compare Source](seerr-team/seerr@v3.0.1...v3.1.0) ##### 🛡️ Security - Patch [CVE-2026-27707](GHSA-rc4w-7m3r-c2f7) - Unauthenticated account registration on Plex-configured Seerr instances via Jellyfin authentication endpoint - ([4ae2068](seerr-team/seerr@4ae2068)) - Patch [CVE-2026-27793](GHSA-f7xw-jcqr-57hp) - Broken Object-Level Authorization in User Profile Endpoint Exposes Third-Party Notification Credentials - ([4f089b2](seerr-team/seerr@4f089b2)) - Patch [CVE-2026-27792](GHSA-gx3h-3jg5-q65f) - Missing authentication on pushSubscription endpoints - ([946bdecec](seerr-team/seerr@946bdec)) ##### 🚀 Features - *(helm)* Use an existing PVC as config volume ([#​2447](seerr-team/seerr#2447)) - ([8f0c904](seerr-team/seerr@8f0c904)) - *(servarr-api)* Make Servarr API request timeout configurable ([#​2556](seerr-team/seerr#2556)) - ([3bcb4da](seerr-team/seerr@3bcb4da)) - Self-host font for better privacy ([#​2540](seerr-team/seerr#2540)) - ([10ea21b](seerr-team/seerr@10ea21b)) ##### 🐛 Bug Fixes - *(helm)* Add "v" as prefix for appVersion tag ([#​2445](seerr-team/seerr#2445)) - ([04b9d87](seerr-team/seerr@04b9d87)) - *(jellyfin-scanner)* Include unmatched seasons in processable seasons ([#​2538](seerr-team/seerr#2538)) - ([68f56d2](seerr-team/seerr@68f56d2)) - *(link-account)* Fix error-message override ([#​2547](seerr-team/seerr#2547)) - ([b843be0](seerr-team/seerr@b843be0)) - *(plex-scanner)* Add TVDb to TMDB fallback in plex scanner ([#​2537](seerr-team/seerr#2537)) - ([7c60a5c](seerr-team/seerr@7c60a5c)) - *(radarr)* Trigger search for existing monitored movies without files ([#​2391](seerr-team/seerr#2391)) - ([55776ea](seerr-team/seerr@55776ea)) - *(servarr)* Increase default API timeout from 5000ms to 10000ms ([#​2442](seerr-team/seerr#2442)) - ([b499976](seerr-team/seerr@b499976)) - *(sonarr)* Use configured metadata provider for season filtering ([#​2516](seerr-team/seerr#2516)) - ([5013d1d](seerr-team/seerr@5013d1d)) - *(watch-data)* Use sentinel values to avoid invalid SQL syntax ([#​2552](seerr-team/seerr#2552)) - ([947f70c](seerr-team/seerr@947f70c)) - *(watchlist-sync)* Correct permission typo for TV auto requests ([#​2488](seerr-team/seerr#2488)) - ([e0e4b6f](seerr-team/seerr@e0e4b6f)) - Preserve blocklist on media deletion & optimise watchlist-sync ([#​2478](seerr-team/seerr#2478)) - ([9da8bb6](seerr-team/seerr@9da8bb6)) ##### 🚜 Refactor - *(tailwind)* Replace deprecated tailwind utilities ([#​2542](seerr-team/seerr#2542)) - ([f42a4ec](seerr-team/seerr@f42a4ec)) ##### 📖 Documentation - *(synology)* Add installation guide via SynoCommunity ([#​2503](seerr-team/seerr#2503)) - ([0e636a3](seerr-team/seerr@0e636a3)) - *(truenas)* Update install/migration guide ([#​2491](seerr-team/seerr#2491)) - ([dc1734d](seerr-team/seerr@dc1734d)) - *(unraid)* Improve unraid migration guide ([#​2470](seerr-team/seerr#2470)) - ([5e64d49](seerr-team/seerr@5e64d49)) - Update Unraid install and migration guides with dual permission methods ([#​2532](seerr-team/seerr#2532)) - ([a0d0eb1](seerr-team/seerr@a0d0eb1)) - Add a warning in migration-guide for third party installation ([#​2527](seerr-team/seerr#2527)) - ([7e9dff3](seerr-team/seerr@7e9dff3)) - Remove double quotes (") from DB\_HOST environment variable ([#​2514](seerr-team/seerr#2514)) - ([fa905be](seerr-team/seerr@fa905be)) - Add Unraid installation and migration guide ([#​2440](seerr-team/seerr#2440)) - ([b6a9132](seerr-team/seerr@b6a9132)) - Fix migration guide title ([#​2425](seerr-team/seerr#2425)) - ([39ae32f](seerr-team/seerr@39ae32f)) ##### ⚡ Performance - Add missing indexes on all foreign key columns ([#​2461](seerr-team/seerr#2461)) - ([c6bcfe0](seerr-team/seerr@c6bcfe0)) ##### ⚙️ Miscellaneous Tasks - *(changelog)* Fix changelog template ([#​2431](seerr-team/seerr#2431)) - ([c2977f6](seerr-team/seerr@c2977f6)) - *(eslint)* Add react/self-closing-comp ([#​2563](seerr-team/seerr#2563)) - ([cd8b386](seerr-team/seerr@cd8b386)) - *(github)* Add docs and maintenance issue templates ([#​2467](seerr-team/seerr#2467)) - ([cf4883a](seerr-team/seerr@cf4883a)) - *(helm)* Add GatewayAPI route support to helm chart ([#​2544](seerr-team/seerr#2544)) - ([3a42f59](seerr-team/seerr@3a42f59)) - *(helm)* Update ghcr.io/seerr-team/seerr ( 3.0.0 → 3.0.1 ) \[skip-ci] ([#​2441](seerr-team/seerr#2441)) - ([87fb0df](seerr-team/seerr@87fb0df)) - *(husky)* Fixed husky commit message from bash/zsh syntax to sh syntax ([#​2572](seerr-team/seerr#2572)) - ([a00c9e5](seerr-team/seerr@a00c9e5)) - *(release)* Prepare ${TAG\_VERSION} - ([94a70bb](seerr-team/seerr@94a70bb)) - Updated the Contributing and Security guides to reflect our current practices ([#​2579](seerr-team/seerr#2579)) - ([0d40a42](seerr-team/seerr@0d40a42)) - Disable nextjs telemetry ([#​2517](seerr-team/seerr#2517)) - ([cecdd63](seerr-team/seerr@cecdd63)) - Update contributing guide regarding Automated AI Agent ([#​2518](seerr-team/seerr#2518)) - ([880fbc9](seerr-team/seerr@880fbc9)) - Remove discord notification from release ([#​2501](seerr-team/seerr#2501)) - ([fba20c1](seerr-team/seerr@fba20c1)) - Add create-tag workflow to streamline release process ([#​2493](seerr-team/seerr#2493)) - ([06e5eb0](seerr-team/seerr@06e5eb0)) - Update concurrency logic ([#​2481](seerr-team/seerr#2481)) - ([4939f13](seerr-team/seerr@4939f13)) - Add semantic-pr workflow to enforce conventional commits ([#​2472](seerr-team/seerr#2472)) - ([5e57fdc](seerr-team/seerr@5e57fdc)) ##### New Contributors ❤️ - [@​caillou](https://github.com/caillou) made their first contribution - [@​Kenshin9977](https://github.com/Kenshin9977) made their first contribution - [@​MagicLegend](https://github.com/MagicLegend) made their first contribution - [@​wiiaam](https://github.com/wiiaam) made their first contribution - [@​mjonkus](https://github.com/mjonkus) made their first contribution - [@​nova-api](https://github.com/nova-api) made their first contribution - [@​mreid-tt](https://github.com/mreid-tt) made their first contribution - [@​DataBitz](https://github.com/DataBitz) made their first contribution - [@​Hyperion2220](https://github.com/Hyperion2220) made their first contribution - [@​blassley](https://github.com/blassley) made their first contribution - [@​JanKleine](https://github.com/JanKleine) made their first contribution - [@​koiralasandesh](https://github.com/koiralasandesh) made their first contribution<!-- generated by git-cliff --> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNS43IiwidXBkYXRlZEluVmVyIjoiNDMuMjUuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW1hZ2UiXX0=--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4284 Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net> Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
… methods (seerr-team#2532) Co-authored-by: Mindaugas Jonkus <mjonkusgmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Ludovic Ortega <github@mail.adminafk.fr>
… methods (seerr-team#2532) Co-authored-by: Mindaugas Jonkus <mjonkusgmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Ludovic Ortega <github@mail.adminafk.fr>
Description
Update the Unraid installation and migration guides to offer two permission methods: Seerr Default (UID 1000) and Unraid Default (UID 99:100), with trade-off disclaimers for each.
unraid.mdxwith tabbed install instructions and a Template Installation sectionmigration-guide.mdxwith a link to the install guide--init,--restart=unless-stopped)How Has This Been Tested?
Documentation-only changes — verified MDX syntax and structure manually.
Checklist:
All new and existing tests passed(docs only)Successful build(docs only)Translation keys(docs only)Database migration(not required)Summary by CodeRabbit