Cloud Storage Guide

Two cloud modes. One direct browser-to-S3 architecture.

webQsee's Cloud Gallery either runs on a bucket we manage for you in one of six AWS regions, or on a bucket you bring yourself (Amazon S3 or any S3-compatible storage like min.io). Either way, captures move directly from your browser to S3 and never pass through webQsee's backend. On a bucket we manage, the captures themselves are stored with us, their recorded data encrypted in your browser first; on your own bucket, webQsee's servers hold only the metadata and the wrapped item keys.

Bring your own bucket: the browser encrypts the recorded data and uploads captures straight to your S3 or min.io bucket, the webQsee backend in the EU holds only metadata and wrapped item keys, and it has no access to the bucket
Bring-your-own architecture
Pick a mode

webQsee-provided vs Bring-your-own, at a glance.

webQsee-providedBring your own (S3_KEY)
Who pays the bucket billwebQseeYou (your AWS / min.io)
Available on Free tier 7-day trial, 5 items– (paid only)
Item cap (Free / Pro / Studio)5 / 20 / 40– / no limit / no limit
Item lifetime (Free / Paid)7 days / 1 year (extendable)Unlimited (you control)
Geographic regionYou pick at provisioning (6 AWS regions)Wherever your bucket lives
Tenant isolationPath prefix in a shared bucketYour own bucket (full isolation)
Setup time~30 seconds, in-extension~15-25 min (one-off, see tutorials)
Audit logs of object accesswebQsee's S3 logs (not exposed)Your CloudTrail / min.io audit log
Encryption at restSSE-S3 by webQseeYou configure (SSE-S3, SSE-KMS, BYOK)
Recorded data encrypted in the browser before upload Always (since 9.3)A switch in the storage settings, on for storages created with webQsee 9.3 or later
Links that expire and can be withdrawnPrivate links only (outsiders cannot reach your bucket)
Custom retention / lifecyclePlan-driven (server-enforced)Your S3 lifecycle rules

One team, one storage. A team picks one of these modes at setup; you can't mix both for the same team. You can run multiple webQsee teams with different storage modes per team if you need.

Mode 1 · webQsee-provided

Cloud storage on Amazon S3, managed by us.

webQsee operates dedicated Amazon S3 buckets in six AWS regions. When you provision provided storage, the extension picks one of those regions; webQsee handles the bucket, IAM policies, encryption and lifecycle. You upload exactly as you would with your own bucket, the browser still talks directly to S3 over HTTPS, with short-lived presigned URLs minted by webQsee's backend.

webQsee-provided storage: the extension asks the backend for an upload URL, the backend checks the plan and returns a presigned URL, and the browser uploads the encrypted data straight to a webQsee-run S3 bucket in the region you picked, under your team's own path
webQsee-provided architecture

How it works (legend for the diagram above)

  1. The extension asks webQsee's backend for a presigned upload URL.
  2. The backend validates your plan, tenant path prefix, and item caps, then mints a short-lived presigned S3 URL.
  3. The extension PUTs the capture bytes directly to S3 using that presigned URL. The bytes never traverse webQsee's backend.
  4. Metadata (title, status, owner) is stored in webQsee's EU backend, exactly like with bring-your-own.

Available regions

Pick the region closest to your team. You can run multiple webQsee teams in different regions, but a single team's storage lives in one region only.

RegionAWS codeBest for
🇪🇺 Europe (Frankfurt)eu-central-1EU customers, GDPR-conscious teams
🇺🇸 USA (Ohio)us-east-2North-American teams
🇨🇦 Canada (Central)ca-central-1Canadian residency requirements
🇯🇵 Japan (Tokyo)ap-northeast-1APAC, low-latency to Japan
🇦🇺 Australia (Sydney)ap-southeast-2Australia / NZ teams
🇧🇷 South America (São Paulo)sa-east-1LATAM teams
Data residency note: Provided storage is not automatically EU-only. The region you pick is where your data lives. Teams that must guarantee EU residency should pick eu-central-1. Teams that need provider-level full isolation should choose Bring-your-own.

Plan limits for provided storage

PlanMax itemsItem lifetimeTemporary share link
No account––1 hour
Free Account5 (7-day trial)7 days, auto-deleted3 hours
Pro201 year, extendable24 hours
Studio / Enterprise40 / custom1 year, extendable24 hours

Item lifetimes are server-enforced. Free-account items are auto-deleted at the 7-day mark. Paid items can be extended past 1 year using a Longer Storage Booster. Item cap can be temporarily raised with a +5 cloud items booster.

What we can and can't see

Since webQsee 9.3, the recorded data of every item (events, requests and responses with their bodies, cookies, attached files such as HAR files, and saved AI analyses) is encrypted in your browser with AES-256 before it reaches the bucket, so a copy of the bucket alone holds nothing readable. Videos, screenshots and thumbnails are not encrypted, so that the browser can play and show them straight from storage. Items uploaded before 9.3 stay as they were stored.

The keys are kept by webQsee, encrypted with a key of our own, so that everyone who may open an item (your team, and whoever holds a link) can read it. That protects against a bucket that leaks, a presigned URL that ends up in a log or a storage credential that escapes. It does not protect against webQsee itself, and it is not end-to-end encryption. If your threat model needs that, use Bring-your-own, where webQsee has no access to your bucket at all.

Mode 2 · Bring-your-own

Cloud storage on your bucket, your AWS bill, your full control.

Bring-your-own (mode S3_KEY in the extension) is the strongest privacy setup: webQsee never gets credentials to your bucket. The extension uses your Access Key ID + Secret to PUT and GET objects directly. webQsee's backend stores metadata (item title, description, status, team membership) and, while encryption is switched on, each item's key wrapped with a key of our own; it physically can't access the payload because it holds no credentials for your bucket.

Bring your own bucket: the browser encrypts the recorded data and uploads captures straight to your S3 or min.io bucket, the webQsee backend in the EU holds only metadata and wrapped item keys, and it has no access to the bucket
Bring-your-own architecture

What it works with

  • Amazon S3, any AWS region you choose
  • Self-hosted min.io, served over HTTPS with a publicly-trusted certificate
  • Other S3-compatible storage that supports SigV4 + path-style addressing

Plan limits

Bring-your-own is exclusive to paying customers. There are no webQsee-imposed item caps and no webQsee-imposed lifetimes; the bucket is yours.

PlanBYO availableItem capItem lifetime
Free Account–––
ProNo webQsee limitYou control (S3 lifecycle)
Studio / EnterpriseNo webQsee limitYou control

Setup paths

Amazon S3, simplified

One shared IAM user for the whole team. Easiest path; ideal for solo developers and small trusted teams.

15-min tutorial

Amazon S3, multi-user / RBAC

One IAM user per team member, tag-based folder isolation, per-user audit trail.

25-min tutorial

Self-hosted min.io

The same S3 protocol on hardware you control. Same bucket policy, plus two min.io-specific connection-settings keys.

25-min tutorial

Migrate / multi-team topologies

Switch from simplified to multi-user, share one bucket across teams, or split into per-team buckets.

All S3 tutorials

Security model

In BYO mode, webQsee never holds your bucket credentials. Each team member's Access Key + Secret are stored locally in their browser, encrypted in extension storage. webQsee's backend can't read them; you re-enter them on every device.

  • In transit: TLS 1.2+ on every S3 call; HTTPS enforced for min.io.
  • Encrypted in the browser: with Encrypt recorded data on in the storage settings (the default for storages created since 9.3), the recorded data of new items is encrypted before it is uploaded. The keys are kept by webQsee, so a copy of your bucket alone cannot be read, and webQsee alone cannot read anything either, because it has no access to your bucket. Switching it off affects only items uploaded afterwards.
  • At rest: you pick SSE-S3, SSE-KMS or BYOK on the bucket.
  • Public access: tick "Block all public access" on the bucket; sharing uses presigned URLs created on demand by the extension.
  • IAM: use the published webqsee-bucket-rw policy template (scoped to one bucket, no s3:* on everything else).
Data flow

What ends up where, in both modes.

DataS3 bucketwebQsee backend (EU)Local IndexedDB
Behavior Report video (.webm)–cache until upload
Behavior Report network/console (.bar) encrypted in the browser (on your own bucket when switched on)–cache until upload
Event Snapshot (.esa) encrypted in the browser (on your own bucket when switched on)–cache until upload
Attached files (HAR, cookies, logs) and saved AI analyses encrypted in the browser (on your own bucket when switched on)–cache
Full-page screenshot (PNG)–cache until upload
Thumbnails–cache
Item title, description, notes, status and other metadata–cache
Team membership & ACLs–cache
Links (expiry, withdrawal, how often opened)––
Item encryption keys (stored encrypted)–in memory while an item is open
Records of your confirmations before data leaves the device––
Your AWS Secret (BYO only)––
webQsee's AWS Secret (provided only)– (server-only)–
No-install option

Recipients open shared captures at view.webqsee.com.

Both modes work transparently with the web client at view.webqsee.com. A team member signs in and opens items as in the extension. A link to an item in provided storage carries a token that expires and can be withdrawn; the recipient opens it without an account, the page fetches the metadata and the item's key from webQsee, pulls the capture bytes directly from S3 via a presigned URL and decrypts them in the browser. BYO items are opened with the team member's own credentials.

Recipients never install anything for view-only access. Editors still need the extension.

Troubleshooting cheat-sheet

When something doesn't connect.

Bring-your-own

  • CORS error on PUT. Re-check the CORS configuration on the bucket. Methods must include PUT POST GET DELETE HEAD, expose ETag, allow your extension origin.
  • 403 Forbidden on PUT. IAM policy ARN doesn't match the bucket name, or the principal tag webqsee-user-id isn't set on the IAM user.
  • SignatureDoesNotMatch. Region mismatch between team-wide settings JSON and the bucket's actual region; or v2 instead of v4 signing on min.io.
  • net::ERR_CERT_AUTHORITY_INVALID (min.io). The cert must be trusted by every team member's browser; self-signed won't work cross-origin.
  • "This bucket must be addressed using the specified endpoint" (min.io). s3ForcePathStyle: true is missing from the connection settings.

webQsee-provided

  • "Trial expired" on a free account. Items in provided storage older than 7 days are server-deleted automatically. Upgrade to Pro to keep them.
  • "Item cap reached". Free 5 / Pro 20 / Studio 40. Either delete some items, upgrade tier, or buy a +5 cloud items booster.
  • Long upload times. Pick a region closer to your team. Provisioning into the wrong region can only be fixed by switching the storage type (one team, one storage).
  • "Cannot create temporary storage". The self-hosted min.io provisioning tier was retired; create a new provided storage in a non-temporary region instead.

Stop guessing. Start webQseeing.

Add webQsee to Chrome or Edge in one click. Recording and replay are free, no signup needed. Upgrade when you need AI analyses, cloud sharing, S3 storage and Pro-grade tooling.

Works in Chrome 103+, Edge 103+ and most Chromium-based browsers. Install instructions.