So you’re using a server to get past the firewall? Or do you open the router port via uPnP and server is just for IP lookup?
I can understand why a brief outage, while to switch to backup server and upgrade the primary, then another brief outage while you switch back, but the only way you need to have a long outage is if you don’t have a backup server. High availability pair synchronous mirror , mirrors asynchronously to another backup HA pair, does cause a brief outage but not a long outage.
Therefore if you don’t have a backup server to switch to during upgrades, you must be vulnerable to server unplanned outages, a single point of failure (SPOF). If planned outages take a long time, then unplanned outages will take even longer. Ouch.
As to video storage, I don’t own any Eufy cameras but is there not an option for a customer to backup to cloud? They can add their AWS / Azure / GCP credentials and you can view videos from the cloud backup.
Suggestion:
- optional to copy to a cloud service, the code is real simple e.g.
aws s3 cp test.txt s3://mybucket/test2.txt --expires 2014-10-01T20:30:00Z
- sub-option is to copy everything or just key data
- sub-option to copy the original higher resolution or a down-selected version. That would add some compute load to the homebase to recode prior to copy to cloud, so you may need to consider a homebase 3 if its not got hardware codecs.
The reason is a bad person can walk up to the property and destroy the camera, because you need to reasonably close to get a good hit and you must be in line of sight and the camera has a wide viewing angle so hard for the bad person to not be seen. More so if owner has multiple cameras with no hidden areas. The bad person the breaks into the property and destroys the homebase. Then all evidence gone. But all but the most recent seconds/minutes can be present in the cloud so its not all gone.
Then when someone uses the Eufy app, it can route to the homebase as primary source, but if its offline (Internet down, destroyed, etc) it goes to the cloud copy.
You also should implement a cache of the IP to the app, so if your server is down it goes to the last known good IP. Assuming you have security implemented with a uPnP to allow outside-in rather than a port open to bypass NAT.
None of this is at all complex to implement. I could do it.