Reolink & AWS Backup

👉 Check out the technical documentation and scripts here:

github.com/seppowalther/swlt.camerabackup

🎯 Why This Setup?

If you’re using regular off-the-shelf CCTV cameras to monitor your property, a common concern is where the footage is being stored. Ideally, you want a storage solution that is reliable, scalable, resilient, and cost-effective.

Most CCTV cameras come with a built-in microSD card slot, allowing you to insert a microSD card and record footage locally. The camera then streams and stores the recordings directly to the card, automatically overwriting the oldest files once the card is full. Using larger cards (128GB or more) typically allows for several weeks of video retention.

However, there’s a major drawback. If someone breaks into your property and steals or damages the camera, they could also destroy or remove the SD card—leaving you with no evidence. In such cases, your CCTV system becomes essentially useless.

To mitigate this risk, many camera vendors offer cloud storage solutions. This is a step in the right direction, but such services are often expensive and may store your data in undisclosed locations (often in China), where you have little to no control or transparency over data protection policies.

Fortunately, Reolink cameras support native FTP upload. While this feature is typically used to send footage to a local NAS system (which still runs the risk of being stolen), it also supports uploading directly to FTP servers over the internet.

Given that camera footage can be fairly large, but is unlikely to be accessed regularly, a good fit for storage is a service like Archive Storage. These are designed for infrequent access and are extremely cheap to use. For example, AWS Glacier Deep Archive costs less than $2 per terabyte per month—perfect for long-term storage of surveillance footage that you hopefully never need to retrieve.

While AWS offers an FTP endpoint via the AWS Transfer Family, it’s relatively expensive. Instead, I opted for a more cost-efficient solution using a Hetzner Cloud VPS. The VPS receives the footage via FTP from the cameras and periodically transfers it to Glacier Deep Archive. This setup retains the flexibility of FTP uploads without the ongoing costs of AWS’s managed FTP service.

My Backup Solution Summary:

  1. CCTV cameras upload footage via FTP to a Hetzner VPS.

  2. The VPS stores the footage temporarily and uploads it to AWS Glacier Deep Archive.

  3. This ensures footage is offsite, secure, and cheap to store long-term, while avoiding the high costs of AWS’s FTP service.

Here's what the architecture looks like:

camera diagram