---
title: "Migrate from another Immich server"
description: "How to transfer photos, videos, and albums from a self-hosted Immich instance to PixelUnion using Immich Go"
url: "https://pixelunion.eu/help/migrating/migrate-immich/"
weight: 6
---


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](https://github.com/simulot/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](https://github.com/simulot/immich-go/releases/latest) 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](https://github.com/simulot/immich-go/releases/latest) 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](/support/).

