We use ZoneMinder, it allows for motion detection, with recording, works with a ton of cameras including a bunch that are IP. We have a single server that have 15 cameras attached to it and it works like a charm. All the cameras are PoE and then hung them around the building, some are at remote sites that connect back to the main network, and they work as well. We even have been testing some hi-def ones that work great. Some of the nicer IP enabled cameras will multi-cast as well so that Zone Minder can be watching one stream and then with a STB or VLC you can watch the native feeds.
As for the upload part you have a couple of options, you can have a simple script, or go all the way and have an NFS mount. You could even use ChironFS mount to have a local and remote copy so that it would be all transparent, and if the remote location then Zone Minder wouldn't care.