Skip to content

Kevegl/proxmox-overseerr-to-seerr-migration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

🚀 Overseerr to Seerr Migration Guide (Proxmox LXC)

Last validated: February 28, 2026 | Node.js v22 | Seerr v3.1.0

This guide provides a proven, step-by-step walkthrough to migrate from the deprecated Overseerr to its active fork Seerr within a Proxmox LXC environment.


📖 Table of Contents


⚠️ Prerequisites & Troubleshooting

The build process for Seerr is resource-heavy. Before starting, ensure your LXC meets these requirements:

  • Disk Space: Minimum 20GB free space is highly recommended. (Build fails with ERR_PNPM_ENOSPC if space is insufficient).
  • RAM (Build Phase): Temporarily increase to 8GB (8192 MiB) if your host system allows it. Minimum 4GB + Swap is required to avoid "Out of Memory" errors.
  • Node.js: Version 22.x is required.

🔍 Step 0: Check for Automated Update

Before performing a manual migration, check if your LXC helper script can handle the transition automatically.

  1. Open your LXC console.
  2. Run the following command:
update
  1. If the update completes and your Overseerr has successfully changed to Seerr: Congratulations! You are done and do not need the rest of this guide.
  2. If the update fails, stays on the old Overseerr version, or the command is not found: Please proceed with Step 1 to perform the manual migration.

🛠 Step 1: Prepare the LXC

  1. Shutdown Old LXC: Power off your original Overseerr LXC (e.g., ID 106) to prevent IP and Tailscale conflicts.
  2. Clone or Backup: Create a clone of the offline LXC to a new ID (e.g., 115).
  3. Handle Bind Mounts: If cloning fails due to mp0 (mount points), you must edit the container's configuration file on the Proxmox Host (Node).
    • Path: /etc/pve/lxc/106.conf
    • Action: Comment out the line starting with mp0: (add a # at the beginning).
  4. Adjust Resources: In Proxmox, increase Root Disk (min. 20GB), Memory (e.g., 8192 MiB), and Swap (e.g., 2048 MiB) based on your host's capacity.
  5. Start New LXC: Power on the new LXC (115).

⚙️ Step 2: System Setup

# Install Node.js 22 and Build Essentials
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs build-essential git

# Install Pnpm globally
npm install -g pnpm

📦 Step 3: Migration & Data Transfer

cd /opt
mv overseerr overseerr_old

# Clone the repository and switch to stable main branch
git clone https://github.com/seerr-team/seerr.git overseerr
cd /opt/overseerr
git checkout main

# Copy your existing database and settings
cp -rp /opt/overseerr_old/config /opt/overseerr/

🏗️ Step 4: Build from Source

cd /opt/overseerr
CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile

# Adjust the max-old-space-size according to your assigned RAM (e.g., 4096 for 8GB RAM)
export NODE_OPTIONS="--max-old-space-size=4096"

# Run the build process
pnpm build

⚖️ Step 5: Finalize Permissions

# Set ownership (assuming root)
chown -R root:root /opt/overseerr

# Ensure config directory is writable
chmod -R 755 /opt/overseerr/config

🚀 Step 6: Service Configuration

  1. Edit the service file: nano /etc/systemd/system/overseerr.service
  2. Update the content:
[Unit]
Description=Seerr Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/overseerr
ExecStart=/usr/bin/node dist/index.js
Restart=always
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
  1. Reload and start the service:
systemctl daemon-reload
systemctl enable overseerr
systemctl restart overseerr

🏁 Step 7: Post-Migration Steps

  1. Verify: Open http://[LXC-IP]:5055 in your browser.
  2. Scale Down: Reduce LXC RAM back to its normal operating size (e.g., 2048 MiB).
  3. Prevent Auto-Start: Set old LXC (106) -> Options -> Start at boot to No.
  4. IP Reassignment: Assign the old static IP to the new LXC if desired.
  5. Restore Bind Mounts (mp0): To restore your media mount from the old container to the new one, run this command on the Proxmox Host shell:
    # Copy the mount point line from ID 106 to ID 115
    grep "mp0" /etc/pve/lxc/106.conf >> /etc/pve/lxc/115.conf
  6. Tailscale: Connection will resume. Keep the old LXC off.
  7. Cleanup: Once stable, you can remove old data: rm -rf /opt/overseerr_old.

🔄 Maintenance & Updates

To update Seerr in the future, use this automation script. Note: Increase LXC RAM to 8GB before running!

  1. Create the script: nano /opt/overseerr/update.sh
  2. Paste the following content:
#!/bin/bash
# Path to your installation
APP_DIR="/opt/overseerr"
echo "--- Starting Seerr Update ---"
cd $APP_DIR || exit

# 1. Fetch latest stable code
echo "1/4: Pulling latest code from GitHub (Main Branch)..."
git fetch --all
git checkout main
git pull origin main

# 2. Install dependencies
echo "2/4: Installing dependencies..."
CYPRESS_INSTALL_BINARY=0 pnpm install --frozen-lockfile

# 3. Build the application
echo "3/4: Starting build process (High RAM required)..."
export NODE_OPTIONS="--max-old-space-size=4096"
pnpm build

# 4. Restart service
echo "4/4: Restarting service..."
systemctl restart overseerr

echo "--- Update to $(git describe --tags) successful! ---"
  1. Make it executable and run it:
# Make the script executable
chmod +x /opt/overseerr/update.sh

# Run the update (Remember to increase RAM first!)
/opt/overseerr/update.sh

About

A comprehensive step-by-step guide to migrating from Overseerr to Seerr in a Proxmox LXC environment. Solves common build issues like Node.js memory limits and disk space errors.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors