Migrate from another Immich server

How to transfer photos, videos, and albums from a self-hosted Immich instance to PixelUnion using Immich Go

If you are already running a self-hosted Immich server and want to move your library to PixelUnion, you can do so directly using Immich Go. The migration transfers your photos, videos, and album structure from one Immich instance to another, without going through your local computer.

What you will need

  • Access to your existing Immich server (it must be reachable over the network)
  • An API key from your existing Immich server
  • An API key from your PixelUnion account
  • Immich Go downloaded on your computer

Step 1: Create an API key on your source server

  1. Log in to your existing Immich server
  2. Click your profile icon (top right) and go to Account Settings
  3. Navigate to API Keys and click New API Key
  4. Give it a name (e.g. “Migration”) and make sure the asset.read and asset.copy permissions are enabled
  5. Copy the generated key and keep it somewhere safe

Step 2: Create an API key on PixelUnion

  1. Log in to your PixelUnion domain (e.g. https://yourname.pixelunion.eu)
  2. Click your profile icon (top right) and go to Account Settings
  3. Navigate to API Keys and click New API Key
  4. Give it a name (e.g. “Migration”) and copy the generated key

Step 3: Download Immich Go

Go to the Immich Go releases page and download the version for your operating system:

  • Windows: the .exe file
  • macOS: the file with darwin in the name
  • Linux: the file with linux in the name

Extract the archive and place the immich-go executable in a convenient folder.

Step 4: Run the migration

Open a terminal, navigate to the folder containing immich-go, and run:

macOS / Linux:

./immich-go upload from-immich \
  --from-server=https://your-old-server.com \
  --from-api-key=YOUR_SOURCE_API_KEY \
  --server=https://yourname.pixelunion.eu \
  --api-key=YOUR_PIXELUNION_API_KEY

Windows:

.\immich-go.exe upload from-immich --from-server=https://your-old-server.com --from-api-key=YOUR_SOURCE_API_KEY --server=https://yourname.pixelunion.eu --api-key=YOUR_PIXELUNION_API_KEY

Replace the placeholders with your actual server URLs and API keys.

Immich Go will connect to both servers, detect any files already present at the destination, and transfer everything else. Your album structure is preserved automatically.

Tips

Speed up the migration by running multiple parallel transfers:

./immich-go upload from-immich \
  --from-server=https://your-old-server.com \
  --from-api-key=YOUR_SOURCE_API_KEY \
  --server=https://yourname.pixelunion.eu \
  --api-key=YOUR_PIXELUNION_API_KEY \
  --concurrent-tasks=4

Migrate only specific albums:

./immich-go upload from-immich \
  --from-server=https://your-old-server.com \
  --from-api-key=YOUR_SOURCE_API_KEY \
  --server=https://yourname.pixelunion.eu \
  --api-key=YOUR_PIXELUNION_API_KEY \
  --from-album="Family" \
  --from-album="Holidays"

Resume an interrupted migration: If the process is interrupted, simply run the same command again. Immich Go tracks what has already been transferred and skips those files.

How long will it take?

Migration speed depends on the size of your library and your internet connection. As a rough guide:

  • 10 GB: roughly 30–60 minutes
  • 100 GB: several hours, best run overnight
  • 500 GB+: plan for a full day or more

Troubleshooting

Connection errors: Check that your source server URL is correct and reachable from your computer. Make sure the URL includes https:// or http://.

Permission errors: Verify that the API key for your source server has the asset.read and asset.copy permissions enabled.

Albums not appearing: Album creation happens during the transfer. If an album is missing after the migration completes, try running the command again — Immich Go will skip already-transferred files and retry any incomplete parts.

If you run into problems, contact our support team.

Was this article helpful? Let us know