If you have your own server somewhere, Nextcloud is a very nice free self-hostable Dropbox replacement.
To your third point, I scratched my head and looked suspiciously at Docker from a distance for years, but since I've started playing with it, I absolutely love it and would not go back. Every dependency that you need is wrapped up in a single image, so installing the application is as simple as pulling the image and booting up a container from it; no worries about conflicts with other services, broken or conflicting dependencies, or breaking something later on when you make other changes. Don't like the exact installation and want to make your own? Make or modify a dockerfile, and build a new image. Want to upgrade? Just destroy the container and create a new one with the updated version - all your data, config files, etc. are (or should be!) in separate volumes from the container itself so you lose nothing, and in fact you can easily experiment with different releases, or rollback if something goes wrong. For myself, I treat all my containers as ephemeral and always recreate them whenever I restart them - it costs nothing and I know that the system is easily reproducible. Speaking of volumes, backups are a breeze - all my Docker volumes are just subdirectories of /docker/volumes so all I have to do is back that up every night and I've got a complete copy that I can instantly restore (or clone!). It really is incredibly convenient.
While containers solve a lot of problems, they do create a bunch of new problems. For example that 'every dependency' is a double-edged sword. Now instead of just one version of OpenSSL on my host I have a bunch. Half them are vulnerable, and none of them share the same memory.
Personally I'm looking forward to when this is included in Nix so I get a ephemeral/reproducible install that doesn't add a second copy of both postgres and ngingx.
To your third point, I scratched my head and looked suspiciously at Docker from a distance for years, but since I've started playing with it, I absolutely love it and would not go back. Every dependency that you need is wrapped up in a single image, so installing the application is as simple as pulling the image and booting up a container from it; no worries about conflicts with other services, broken or conflicting dependencies, or breaking something later on when you make other changes. Don't like the exact installation and want to make your own? Make or modify a dockerfile, and build a new image. Want to upgrade? Just destroy the container and create a new one with the updated version - all your data, config files, etc. are (or should be!) in separate volumes from the container itself so you lose nothing, and in fact you can easily experiment with different releases, or rollback if something goes wrong. For myself, I treat all my containers as ephemeral and always recreate them whenever I restart them - it costs nothing and I know that the system is easily reproducible. Speaking of volumes, backups are a breeze - all my Docker volumes are just subdirectories of /docker/volumes so all I have to do is back that up every night and I've got a complete copy that I can instantly restore (or clone!). It really is incredibly convenient.