I'm looking to set up a server of some kind that I can use to store more or less arbitrary files on demand.
While I have quite a bit of programming experience, I have little-to-no experience in the server-space, so I don't really know where I should be getting started/what kind of pitfalls I should be looking out for/what kind of design choices I should be making early on.
In short: I want some system that allows me to take more or less arbitrary files, send them from either my laptop or phone, and have them stored on a drive that I can have lying around somewhere hooked up to some setup. I don't need any automatic backing up, sending files manually is sufficient. The individual files I'll be sending probably won't be exceeding the MB range of sizes. Remotely downloading files from the storage is not an immediate requirement, if I need to retrieve them I can plug directly into the disk. What I want to protect myself against is the "freak accident" type of thing where all the devices I currently have copies of a file on are lost in a fire, while travelling, or something like that.
Does anyone here have any tips for where I should be looking to get started?
Sibling comments haven't addressed the bit about how you want to protect against fire. A NAS or Pi in your home won't protect against natural catastrophe. You need something remote.
A device that runs in someone else's home (like a family member) with a remote connection could work, but it's likely more hassle to setup than what you'd want. You'd have to punch through firewalls and such. Tailscale offers services that apparently make this easy, however. I haven't used them and couldn't say.
Since you seem to be working with small files, I think you should look into a Virtual Private Server (VPS). You can get an instance for $5-10 / month with someone like Digital Ocean or Linode or others. You would then need to enable FTP and get an FTP client. Depending on your preferred platform, this might be pretty easy or not so easy. On Mac, I'd recommend Transmit, by Panic Software. It's awesome. You can also transfer files via SSH and SCP if you're comfortable on the command line and not use an FTP client.
I actually have office locations in two different cities, and my home in a third, so my initial idea was to set up two drives (at one of the office locations and at home) because of course, a backup server in my home wouldn't protect against a house fire (admittedly, that's probably my most far-fetched concern).
My issue with a VPS is that I would very much prefer to have physical access the the drive myself, otherwise I would just pay for iCloud storage. A part of the point is that I want a system where I'm in control of as much as possible, so that I don't have to rely on some corporation playing ball to keep my stuff safe.
I'm perfectly comfortable working through a CLI, and my initial idea was actually to build a system for this myself, but it seems from the comments like there are some good alternatives out there that I may be able to use.
In that case, Tailscale and Syncthing. Again, I haven't used Tailscale (but I've heard positive comments from a tech podcast host who likes it). Syncthing is something I have used and it's awesome. Good luck!
No need for tailscale...