Recommended method to upgrade SS from 3.19 to 4 on shared host

We are running an old version of SS (3.19) with an old version of PHP. I’m thinking of upgrading both my version of Silverstripe and my version of PHP, trying to minimise impacts on the live site on shared hosting. It’d be nice if we could keep our content.

Content: images, pdfs, text but also a small module that does important stuff for us (we made it ourselves). It does content negotiation, amongst other things. We added a UI part to the module that takes data in from the CMS.

What’s the smartest way forwards? Setting up a new site and manually copying stuff across (wow that sounds exhausting and boring)? Setting up a new host, copying the old stuff across and trying to update that?

And yes, I’ve had a couple of times away on parental leave so in some ways I have been living under a rock.

If it is a simple site, without a lot of add-ons / customisation, then I’d take a complete copy and try upgrading with the upgrader tool. That will mean you don’t need to manually copy all the content over.
Your own module can be upgraded to the latest standards manually.

If it’s a complex site with a lot of extras, then you might find it less frustrating / quicker (albeit more tedious) to just install a new site, add any customisations and copy the content over. I’ve done plenty like this, and in my experience you end up with a cleaner end result on a complex site, that’s more manageable in the future…