Hey everyone. For a variety of reasons I’ve ended up with a paperless-ngx install that has not been upgraded for a while. It’s currently on 1.17.1, and I’ve been researching to figure out the best way to get back up to current. I’m worried about major changes that have happened over time and what the best way to go about this is, but I’ve not had good luck finding something that gives me the confidence to go about it. Hoping someone here has some guidance. Cheers!
I haven’t gone through your specific case, but generally what I do when doing a major update with potentially breaking changes:
- Read the upgrade guides, if they have them. Some devs will put them out if they know their users will encounter issues when upgrading. If they don’t have an upgrade guide, there might be some in the change logs. Going from 1.17.1 to (assuming) 2.x.y, check the change logs at 2.0.0.
- Backup everything. I’d recommend doing this on a regular basis anyway.
- (If you’re running it in a docker container) Setup a second instance, restore the backup, then run the upgrade. You’ll be able to check to see if it breaks at all. If it works, you can just destroy the old one and use the new one
- (if you’re not running it in a container) with the backup, try upgrading. If it breaks, you should be able to uninstall & reinstall the old version, then restore the backup
This is how I handle it for most software: Read (or at least skim) the changelogs for all minor and major versions between your current version and the latest version.
If you’re using Docker, diff your current docker-compose to the latest one for the project. See if any third-party dependencies (like PostgreSQL, Redis, etc) have breaking changes.
If there’s any versions with major breaking changes, upgrade to each one separately (eg. 1.0 to 2.0, then 2.0 to 3.0, etc) rather than jumping immediately to the latest one, as a lot of developers don’t sufficiently test upgrading across multiple versions.
Take a snapshot before each upgrade (or if your file system doesn’t support snapshots, manually take a backup before each upgrade).
…or just don’t read anything, YOLO it, and restore a snapshot if that fails. A lot of software is simple enough that all you need to do is change the version number in docker-compose (if you’re using Docker).
I’ve not had good luck finding something that gives me the confidence to go about it
Now’s a good time to make sure you have good backups.
Knowing you can fallback to your backups helps a lot with confidence.Having the ability to shut down the main instance of an app and run a secondary instance from backups without much hassle is the best feeling ever, I recently updated from Nextcloud v26 to v31, and having the ability to just go back to a working version if anything was wrong saved me from so much stress.
fallback
That’s the noun. For the verb, it’s “fall back”, with a space.