PrivoHub
ArticlesPricingAbout
Products
PrivoHub PhotosPrivoHub DrivePrivoHub VaultArticlesPricingAboutHelp Center
Help Center
Guide · PrivoHub Photos

Migrate from your own Immich server

PrivoHub Photos is Immich, hosted and looked after by us. So moving in from a server you already run is a straight copy: your originals, albums, dates, locations, favourites and tags come across, and nothing on your own server is changed.

Two ways to do this

Both use immich-go, the same free tool behind our Google Photos and iCloud imports. The only question is which machine runs it.

  • Let us run it from the importer in your Portal. You paste your server's address and two API keys, and the copy runs on our servers. This needs your Immich to be reachable from the internet over https.
  • Run it yourself with the immich-go command line, from any computer that can reach both servers. This is the way to go if your Immich only exists on your home network, if it has a self-signed certificate, or if you would simply rather not hand us a key to it.

Either way, the transfer moves every original at full quality. Set aside a few hours for a large library: the slow part is usually the upload speed of whatever network your Immich sits on.

What comes across, and what does not

Copied:

  • Every photo and video, the original file, untouched.
  • Capture dates, GPS locations and descriptions.
  • Albums, recreated by name, with the right photos in them.
  • Tags, favourites and star ratings.
  • Archived and hidden assets, which stay archived and hidden.

Not copied:

  • The trash. Anything you deleted stays deleted. If you want something back, restore it on your own server first, then import.
  • The locked folder. Move anything you want to keep out of it before importing.
  • People and face names. Faces are detected again on our side, so you name them once more. The photos themselves are all there.
  • Shared links, partner sharing and shared albums from other people. An API key belongs to one account, so only that account's own library is copied.
  • Your server's settings. Admin configuration, users, storage rules and external libraries do not travel.

Running it twice is safe. immich-go checks what is already in the destination and skips it, so an interrupted transfer is resumed by simply starting it again, and a later top-up import only brings the new photos.

Other people on your server

One API key copies one account's library. If your Immich has a family on it, invite them into your workspace first. Each of them then gets their own private library on your plan and runs their own import with their own key, exactly as described here. Nobody sees anybody else's photos unless they share them from inside the app.

Option A - Let us copy it for you

This needs your Immich to answer on a public https:// address. We refuse addresses that resolve to a private network, because from our servers those point at our own infrastructure rather than at your house.

  1. Create a key on your own Immich. Sign in there, click your avatar → Account Settings → API Keys → New API Key. The import only ever reads from your server, so read access is enough. If you would rather not think about scopes, Select all is fine and you can delete the key the moment the import finishes.
  2. Create a key on your PrivoHub Photos. Same steps, at https://photos-yourname.privohub.com. Note the photos- prefix: yourname.privohub.com is your workspace home page, not Photos itself, and it has no API keys.
  3. Open the importer and pick Your own Immich server.
  4. Paste your server address and its key, then click Check connection. We ask your server who the key belongs to and how big the library is, and show you what we found. Nothing has moved at this point.
  5. Paste your PrivoHub Photos key and click Start import. You can close the page. The copy runs on our servers and the page shows the result when you come back.

Neither key is stored. They live in the running job and are deleted the moment it ends, and you can revoke both from the two API Keys pages afterwards.

Option B - Run it yourself

Works for a server on your home network, behind a VPN, or with a certificate the public internet would not trust. Everything runs on your machine, and we never see either key.

  1. Install immich-go. It is a single binary, no NodeJS and no Docker. Download the build for your OS from the releases page and unpack it. On macOS and Linux, make it executable with chmod +x immich-go.
  2. Create an API key on each server, exactly as in Option A above.
  3. Run the copy, replacing both addresses and both keys with your own:
    immich-go upload from-immich --server=https://photos-yourname.privohub.com --api-key=PRIVOHUB_KEY --from-server=http://localhost:2283 --from-api-key=YOUR_SERVER_KEY --from-pause-immich-jobs=false

Two flags worth knowing:

  • --from-pause-immich-jobs=false leaves your own server alone. Without it immich-go tries to pause the background jobs on the source, which needs an admin key and is not something you want happening to a server your family is using.
  • --from-skip-verify-ssl is there for a self-signed certificate on your own server. Only ever use it for a source on your own network.

Add --dry-run to see what would be copied without touching anything. To bring across only part of the library, --from-albums, --from-date-range, --from-tags and --from-favorite all narrow the selection.

After the import

  • Give it time to settle. Thumbnails, search indexing and face recognition run after the copy, so a big library looks half-finished for a few hours. That is normal and needs nothing from you.
  • Spot-check. Open a few albums, check dates and map pins, and search for something.
  • Delete the two API keys you created.
  • Keep your old server until you are happy. Nothing on it was changed by the import, so it stays a complete backup for as long as you want one. Shut it down only once you have looked around properly.

Troubleshooting

  • "resolves to a private address". Your Immich is not reachable from the public internet, so we cannot copy from it. Use Option B, which runs on a machine that can see it.
  • "the address must start with https". We will not send your API key over a plain http connection. A server without a certificate is a server on your own network, so again, Option B.
  • "did not accept that API key". The key was mistyped, has been revoked, or belongs to a different server than the address you gave.
  • Not enough storage. The importer compares your library against what is left on your plan and stops you before anything moves. Check usage in your Portal and upgrade if you need to.
  • One import at a time. A workspace runs a single import at once, whoever started it, because the import pauses background processing while it runs.
  • It failed part way. Start it again. Everything that already made it across is skipped, so a retry only moves what is missing.

Coming from somewhere else?

We have guides for Google Photos and Apple iCloud Photos too.

Need a hand?

Email us at support@privohub.com and we'll help you get migrated.

PrivoHub

Privacy-first managed services,
hosted on EU soil.

EU-hosted Green energy GDPR
Products
PrivoHub PhotosPrivoHub DrivePrivoHub VaultManaged ImmichHosted Vaultwarden
Resources
ArticlesHelp CenterPricingSecurity & privacyPortalAbout usContact
Legal
Privacy PolicyCookies & AnalyticsTerms of ServiceImprintOpen Source Licenses
© 2026 PrivoHub. All rights reserved.PrivacyCookiesTermsImprint

Immich, OpenCloud, Vaultwarden and Bitwarden are trademarks of their respective owners. PrivoHub is an independent service, not affiliated with or endorsed by them.