I agree with @[email protected] - since you "don't know where to start“ - just start simple. Maybe lemmy will be fine for now.
Otherwise, to at least pitch some alternative: you can Google for a vbulletin host. A lot of hosting providers offer a "managed vbulletin" solution. Meaning you don't have to get a bare metal machine and don't have to be bothered with installing all the software yourself.
I don't know if there are free solutions, but with a quick Google, it doesn't seem like it's more than a couple $ a month for a small server
Well you need to try and catch when getting the file anyways, it's probably very rare but imagine a scenario of:
Or the file could exist, but you don't have permissions to actually open it.
So a bunch of languages / already have their own "try open file"