Migrate nexus installation OSS to another server with nexus CE

Hello!

We’re planning to migrate Nexus 3.68 OSS installation to another machine running Ubuntu 24. We want to migrate to the latest version of Nexus, which is 3.85, at the same time, but i see that there is significant differences between these two Nexus versions, e.g. database backend, which makes it more difficult than I expected.

Is there any possible way to do this without in-place upgrade first? Couldn’t find proper manual to do this.

More to that, current installation have docker and npm repositories placed in the same blob store, and I want to separate them while migrating to different blob stores.
Is it possible to achieve that? Thank you

Hi, Evgenii

Unfortunately, upgrading directly from 3.68 to 3.85 isn’t possible. If you’re looking for instructions, start with this page in our documentation.

https://help.sonatype.com/en/upgrading-to-nexus-repository-3-71-0-and-beyond.html

It’s definitely possible to keep components in different formats in different blob stores. I wouldn’t recommend trying to achieve that while you upgrade Nexus Repository versions.

You’ll need to use the Change Repository Blob Store task. Note that this task is only available in Nexus Repository Pro.

Also be aware, that if you have any custom plugins they will not work. Sonatype broke this functionality half year ago and since then they only do promises to fix it.

Thanks. So I guess there’s no easy way out.
You mean I should first migrate my Nexus installation as it is to new server, then upgrade it in-place?

I thought about pre-create repos inside new Nexus instance and just transfer repositories content to it. Is this possible to save timestamps during this procedure?

Hi, Evgenii,

It would be better to upgrade first and then migrate to a new server. The path should be:

  1. Make a proper backup
  2. Upgrade to 3.70.x
  3. Migrate from OrientDB to Postgres
  4. Upgrade to Java 17
  5. Upgrade to the latest version of Nexus Repository
  6. Migrate to your new server

Pre-creating repos inside a new Nexus Repository instance and transferring the contents over will not save timestamps or other metadata. That information is saved in your database, so if you want to preserve that metadata, you need to perform a full migration.

1 Like

Actually i thought that i would be better migrate first and upgrade then, to reduce downtime for users.

Why Postgres? Can i use H2 database? My installation is not so big

I use docker installation, can I skip this part?

As long as the original server is not running simultaneously that should not be an issue. Generally it would make sense to only switch servers, or upgrade, not both at the same time to make it simpler to identify any issues you encounter.

1 Like

Well, i did the migration and update like this

  1. Move work directory, which mount at sonatype-work, to new server
  2. Start the same version of nexus to verify it works
  3. Then update to 3.70.4 (i use docker compose so i just changed image version in compose definition)
  4. Upgrade Orient DB to H2
  5. Start 3.70.4, wait for the automated tasks to complete
  6. Update to the latest image and bob’s your uncle
    It all took about an hour and a half for an 500GB installation
    Thanks for your help