How to Backup Any IP Camera or NVR to Cloud Storage
FTP bridge configuration for any CCTV camera, DVR, or NVR supporting FTP/FTPS uploads. Eliminate expensive NVR hardware and proprietary cloud subscription fees, and stream surveillance clips directly into Cloudflare R2, Backblaze B2, or AWS S3.
Looking for a Specific Camera Brand Instead?
Have a branded camera? Jump directly to verified firmware guides and field mappings
Your cameras stream clips offsite immediately upon motion detection. Intruders cannot steal or destroy critical surveillance evidence by seizing on-prem recorder hardware.
Store surveillance recordings on your own terms. Apply automated cloud bucket lifecycle rules to rollover, expire, or archive footage after 30, 90, or 365 days.
Rilavek ingests native FTP and FTPS streams from your camera firmware and writes directly into multipart S3 PUTs with TLS encryption and zero disk writes.
Works with Any Camera, NVR or DVR Supporting FTP / FTPS / SFTP
Any camera or recorder with FTP, FTPS, or SFTP capability works out of the box. Whether you run Uniview, Hanwha Vision, Ubiquiti UniFi, Axis, Bosch, Vivotek, TP-Link Tapo/Vigi, Sunba, Escam, or any custom ONVIF camera, if your firmware has an FTP or SFTP settings page, you can stream directly to your private cloud storage without an NVR or subscription.
Step-by-Step Setup Guide for CCTV Cameras, DVRs & NVRs
Follow these 8 steps to select your cloud provider, provision your object storage, configure Rilavek’s Data Store, Sender, and Ingestion Pipe, enter your camera firmware settings, verify ingestion, and establish automated S3 retention rules.
Select Your Cloud Storage Provider
Choose where you want to store your Other surveillance footage. Selecting a provider customizes the bucket setup steps, endpoint URLs, and API key instructions in Step 2.
Set Up Your
Cloudflare R2 Bucket & Generate API Keys
Configure your target bucket and API credentials inside Cloudflare R2 so Rilavek can stream motion clips and continuous video directly into your storage.
Cloudflare R2 provides an included monthly free tier of 10 GB storage, 1,000,000 Class A operations (uploads), 10,000,000 Class B operations (reads), and $0 egress bandwidth fees. Ensure you have completed the initial R2 subscription setup in your Cloudflare dashboard under Storage & databases > R2 before generating tokens.
Open R2 and Create Your Surveillance Bucket
In the Cloudflare Dashboard , navigate to Storage & databases > R2 > Overview. Click the blue Create bucket button and specify a name, such as cctv-generic-recordings.
Leave location set to Automatic for the lowest-latency edge ingestion worldwide. If your organization requires strict data residency, select a specific Jurisdiction (European Union eu, United States us, or FedRAMP fedramp). Note that jurisdictional buckets require jurisdiction-specific S3 endpoints.
Copy Your 32-Character Cloudflare Account ID
On the right sidebar of the R2 Overview page under the Account Details section, locate and copy your 32-character hexadecimal Account ID. This is required to assemble your unique S3 API endpoint.
Create an Account API Token with Scoped Permissions
Under Account Details on the R2 overview page, select Manage next to API Tokens, then click Create API Token:
- Token Type: Choose Create Account API token (recommended for bridge infrastructure so credentials remain valid independently of individual user accounts; requires Super Administrator role).
- Permissions: Select Object Read & Write. This grants S3 API upload, download, and listing capabilities without exposing administrative privileges (like deleting buckets or altering account configs).
- Bucket Scoping: Select Apply to specific buckets only and pick your created bucket (
cctv-generic-recordings). - TTL / Expiration: Leave blank for permanent 24/7 camera recording, or specify an expiration according to your organization's security rotation schedule.
Click Create Account API token to generate your credentials.
Copy Your Access Key ID and Secret Access Key
Record your Access Key ID (token ID) and Secret Access Key securely for Step 3.
Add Your Data Store in Rilavek
In your Rilavek dashboard, navigate to Data Stores > New Data Store, select your provider, and enter your S3 credentials. Rilavek verifies the connection with an automated write-probe before saving.
Add New Data Store
Create a Camera Sender in Rilavek
Go to Senders in the Rilavek sidebar and click New Sender. A Sender represents the hardware identity of your CCTV Cameras, DVRs & NVRs and generates a dedicated device-level password.
Create New Sender
Must be at least 6 characters, lowercase, start with a letter/underscore, and contain only letters, numbers, hyphens, or underscores.
Secure credentials will be automatically generated for this sender.
Sender Credentials
Create & Configure Your Ingestion Pipe in Rilavek
Go to Pipes in the sidebar and click Create Pipe. Configure the 4 core sections of your pipeline: General (Pipe ID), Inputs (FTP), Access Control (Sender permission), and Destinations (Data Store).
1General Settings (Pipe ID)
Every pipeline in Rilavek is assigned an immutable, globally unique Pipe ID (e.g. p_cctv9x). This ID acts as an isolated ingestion channel that segregates audit logs, real-time transfer metrics, and storage routing. It also forms the second half of your scoped camera FTP login username (username@p_cctv9x).
Pipe ID
Use this ID to identify this pipe in logs. Combine it with the sender username for complete authentication details.
2Inputs (FTP / FTPS Ingress)
The Inputs configuration defines how camera files enter Rilavek. Enabling the FTP Ingress input provides a persistent, high-availability ingestion server (ftp.rilavek.com) compatible with active and passive FTP modes, explicit TLS negotiation, and standard CCTV firmware video push routines.
Inputs
Enable inputs to receive data.
FTP Ingress
Endpoint enabled. Connect using your Sender credentials.
Example: cam_cctvcamerasdvrsnvrs@p_cctv9x
Use the password configured for the specific Sender.
3Access Control (Sender Authorization)
Access Control prevents unauthorized uploads by enforcing a zero-trust boundary on the ingestion pipe. Only explicitly authorized Senders (such as CCTV Cameras, DVRs & NVRs) can authenticate and stream video into this pipe. Any requests with unassigned credentials are rejected at the network edge.
Access Control
Restricts who can upload to this pipe.
Individual Senders
Grant or revoke pipe access for specific individual senders.
4Destinations (Target Cloud Storage Routing)
The Destinations section routes video clips to your target cloud storage provider. Linking your configured Data Store routes all received footage directly to your Cloudflare R2 bucket (cctv-generic-recordings). Video files are committed on-the-fly via parallel multipart S3 PUTs without intermediate disk caching.
Destinations
This is where we send your files to.
Configure FTP, Motion Detection & Linkage in Generic Camera Firmware
Open your camera's web configuration portal in your browser at its local LAN IP address and configure the universal FTP and event settings below:
Step 6AConfigure FTP Streaming Credentials
Click Network > FTP Settings (or Network > Advanced > FTP).
Turn on 'Enable FTP Upload', then enter your Rilavek Regional Gateway server (ftp.rilavek.com), port 21, scoped username (username@pipeId), and device password as indicated by callouts (1) and (2). Ensure Passive Mode (PASV) is checked (3) for seamless firewall traversal, then click 'Test FTP Connection' (4) to verify.
Note on Camera Firmware UIs: Specific camera models (such as Uniview, Hanwha Vision, Ubiquiti UniFi, Bosch, Vivotek, TP-Link, Sunba, Escam, etc.) feature varying menu layouts, but all share the same universal configuration concepts shown below: enter your FTP server credentials with Passive Mode (PASV), define a motion trigger zone, and enable “Upload to FTP” as the action.
FTP, FTPS & SFTP Upload Settings
Configure cloud storage streaming credentials to upload motion video clips and snapshots directly to your S3 bucket.
cam_generic@p_cctv9xftp.rilavek.com:21. Ingestion pipe and destination S3 bucket are active and accepting streams.Step 6BConfigure Motion Detection Zone & Sensitivity
Click Event > Motion Detection (or Video Analytics).
Turn on 'Enable Motion Detection' and adjust the detection grid over your active surveillance field (1). Set sensitivity to approximately 75% (2) and enable smart Human/Vehicle AI filtering if supported by your camera hardware to minimize false alarms.
Note on Camera Firmware UIs: Specific camera models (such as Uniview, Hanwha Vision, Ubiquiti UniFi, Bosch, Vivotek, TP-Link, Sunba, Escam, etc.) feature varying menu layouts, but all share the same universal configuration concepts shown below: enter your FTP server credentials with Passive Mode (PASV), define a motion trigger zone, and enable “Upload to FTP” as the action.
Motion Detection & Event Zone Setup
Define the motion detection area and AI sensitivity filters so the camera uploads video only when genuine activity occurs.
Step 6CConfigure Linkage Action (Upload Video Clip to FTP)
Click Action > Upload Linkage (or Event > Linkage Action).
Select 'Upload Video Recording to FTP / Cloud' (1) as the primary trigger action. Set a 5-second pre-recording buffer (2) and 30-second post-recording buffer so complete event clips are transmitted to your S3 bucket upon motion detection.
Note on Camera Firmware UIs: Specific camera models (such as Uniview, Hanwha Vision, Ubiquiti UniFi, Bosch, Vivotek, TP-Link, Sunba, Escam, etc.) feature varying menu layouts, but all share the same universal configuration concepts shown below: enter your FTP server credentials with Passive Mode (PASV), define a motion trigger zone, and enable “Upload to FTP” as the action.
Event Linkage & Upload Actions
Instruct the camera firmware what action to take upon motion trigger. Enabling “Upload to FTP” routes video clips directly to Rilavek.
Other Firmware Notes & Best Practices
Model-specific nuances, recommended settings, and verified workarounds for the CCTV Cameras, DVRs & NVRs
Most consumer and enterprise cameras require Passive FTP mode to traverse NAT firewalls.
Verify Ingestion
Click Test in your camera's FTP settings or trigger a test recording transfer. In your Rilavek dashboard, navigate to Pipes > your pipeline > Transfers tab to inspect incoming files as video clips stream into Cloudflare R2.
| FILE | SENDER | SIZE | DATE | STATE |
|---|---|---|---|---|
generic/other/2026-09-10/ch01_143000.mp4 | cam_cctvcamerasdvrsnvrs | 18.4 MB | Sep 10, 14:30 | Success |
generic/other/2026-09-10/ch01_142500.mp4 | cam_cctvcamerasdvrsnvrs | 21.2 MB | Sep 10, 14:25 | Success |
generic/other/2026-09-10/ch01_142000.mp4 | cam_cctvcamerasdvrsnvrs | 19.7 MB | Sep 10, 14:20 | Success |
Configure Cloudflare R2 Bucket Lifecycle & Retention Rules (Optional)
Optional: Prevent runaway storage costs by configuring automated bucket expiration rules. Select your retention window below and apply the generated JSON lifecycle policy or CLI command to your Cloudflare R2 bucket. If you prefer to keep footage indefinitely or purge clips manually, feel free to skip this step.
Cloudflare R2 Retention Window
Select timeline to generate policyApplying lifecycle expiration is optional. If you want automated retention, apply this configuration to your Cloudflare R2 bucket to automatically purge or transition clips older than 30 days, preventing runaway storage bills.
{
"Rules": [
{
"ID": "generic-other-cctv-retention-policy",
"Status": "Enabled",
"Filter": {
"Prefix": "cctv/camera-1/"
},
"Expiration": {
"Days": 30
}
}
]
}aws s3api put-bucket-lifecycle-configuration \ --bucket my-cctv-surveillance-bucket \ --lifecycle-configuration file://cctv-lifecycle.json
Storage & Bandwidth Calculator
Simulate storage sizing and cloud provider costs for your specific camera fleet, resolutions, and retention windows:
Generic Cloud Storage Calculator
Estimate storage consumption, monthly bandwidth, required internet uplink, and cloud bucket costs for your Generic camera fleet.
Fleet Configuration Parameters
Adjust resolution, camera count, activity level, and retention window
Standard 1920×1080 HD stream (~1.2 Mbps)
High definition 2560×1440 or 5MP (~2.5 Mbps)
Flagship 3840×2160 8MP stream (~5.5 Mbps)
Panoramic / multi-sensor high resolution (~8.0 Mbps)
Warehouses, storage rooms, rarely used areas
Offices, shops, entrances
Car parks, streets, busy retail
4× 1080p Full HD (2MP)
Frequently Asked Questions about IP Camera Cloud Storage
Can I connect any third-party or white-label IP camera or NVR?
Yes. Any IP camera, DVR, or NVR that features an FTP, FTPS, or SFTP client in its firmware can connect directly to Rilavek. This includes Axis, Hanwha Vision, Uniview, Ubiquiti UniFi Protect, Bosch, Vivotek, TP-Link Tapo/Vigi, Sunba, Escam, SV3C, and thousands of generic ONVIF-compliant devices.
Do I need an on-site NVR, server, or bridge hardware?
No. The camera firmware connects directly to Rilavek's endpoint over standard FTP, FTPS, or SFTP. Rilavek ingests the stream into memory and issues multipart PUTs straight into your S3-compatible cloud bucket. You do not need an on-prem NVR, recording PC, or bridge device like Videoloft.
Which FTP mode should I select in my camera settings?
Passive Mode (PASV) is strongly recommended for FTP and FTPS connections. Most home and enterprise networks sit behind NAT routers and stateful firewalls. Passive mode allows the camera to initiate outbound data connections to Rilavek without requiring inbound firewall port forwarding.
Does Rilavek support encrypted FTPS and SFTP uploads?
Yes. Rilavek supports RFC 4217 FTPS (FTP over Explicit TLS on port 21), implicit FTPS (port 990), and SFTP (SSH File Transfer Protocol on port 2222) for enterprise cameras like Axis and Hanwha. Footage is encrypted in transit using industry-standard TLS or SSH encryption before arriving in your S3 storage.
Which cloud storage providers are supported?
Rilavek supports any provider offering an S3-compatible API. This includes Cloudflare R2 (zero egress fees), Backblaze B2, AWS S3, Wasabi, Google Cloud Storage, IDrive e2, and self-hosted MinIO or RustFS instances.
How does video retention work?
Because footage is written directly into your private object storage bucket, retention is completely under your control. You can configure native bucket lifecycle rules (e.g., automatically expire or delete objects after 30, 60, or 90 days, or transition to Glacier/Coldline) with zero subscription markups.
Stream Any IP Camera or NVR to Cloud Storage
Create your free Rilavek ingestion pipe in seconds. No NVR hardware, no proprietary camera cloud subscriptions, and 100% data ownership in your private storage bucket.
Free plan includes 10GB of transfer. No credit card required.