How it works
The camera can't upload by itself, so a small always-on program does it from outside. The camera is never modified.
Camera
Streams over RTSP and announces motion through ONVIF events.
Motion
Keeps a short ring buffer: 30 s before the trigger, 5 min after.
Store
Once a day, the clips become one video in the storage you chose.
Playlist
One playlist or folder per day, event times as chapters. Files are deleted.
Everything you need, nothing you don't
Motion-triggered
Pre-roll and post-roll are configurable. Late motion extends the window. Person detection counts too.
Private by default
Videos stay in storage you own: private on YouTube, in your OneDrive or Nextcloud, or on your own disk. Nothing is public.
No re-encoding
ffmpeg -c copy keeps the CPU near zero, so a Raspberry Pi is plenty.
Frees the disk
Each file is deleted right after a successful upload. A few GB of space are enough.
Resilient
Restarts ffmpeg when the stream drops, retries uploads, respects storage limits such as the YouTube quota, and never logs your camera password.
Two modes
Motion mode uploads one video a day. Continuous mode records 6-hour segments.
Watch before it is uploaded
Clips still waiting for the daily upload show on your page, marked Not uploaded yet, and play right there.
Change storage, lose nothing
Switch from YouTube to OneDrive and the old videos stay on your page. Every video is marked with where it lives.
Ready-made image
A Docker image is published for you on every release (amd64 and arm64): pull it, no build on your server.
New · optional
One server, a few friends
Turn on multi-account mode and several trusted people share the same server. Everyone links their own camera, chooses their own storage, and sees only their own videos. Leave it off and nothing changes.
Everyone gets a page
Camera status, last motion, last upload and and their videos from every storage they use, each marked with where it lives, in one place.
Their own storage
Each person picks their own YouTube channel (private videos), their own OneDrive or their own WebDAV, unless you choose a storage you run for everyone.
Sign in your way
Local accounts, or Nextcloud: its groups become roles, so administrators and users come from the groups you already have.
A guide for the router
Each friend gets step-by-step instructions, or a ready-made prompt for an AI assistant. Ports are opened only for the server's IP.
An admin page
Users, camera status and the day's YouTube quota at a glance. Deactivate someone and their recorder stops at once.
Encrypted and isolated
Passwords and tokens are stored encrypted. Camera addresses are checked so nobody can use the server to reach its own network.
If you use YouTube, one Google project's YouTube quota serves about 5 or 6 people at one upload a day; the guide explains how to go beyond that. Read the multi-account guide.
Your choice
Choose where the recordings go
Pick where the recordings live: YouTube, your own OneDrive, Nextcloud, any cloud or the disk. Use one, or change your mind whenever you like. Step-by-step guide to set each one up.
YouTube
Private videos on your own channel, one playlist per day.
OneDrive
Each person connects their own with their own free Microsoft app. It only sees its own folder, never the rest of your files.
WebDAV
Nextcloud, ownCloud, Synology and anything else that speaks WebDAV.
rclone
Mega, S3-compatible storage, Dropbox, Google Drive and dozens more, set by the server administrator (Mega not tested by the author).
The server's disk
Keep the videos on the machine that runs it, no cloud needed, with optional rotation: delete after N days, a space limit per person and a warning when the disk runs low. Clouds are never touched.
Switch any time
Earlier destinations stay in your list and their videos stay on your page, each marked with where it is. Removing one from the list deletes nothing.
With several accounts the server picks the default and each person may use their own YouTube, OneDrive or WebDAV where you allow it. Every video has two buttons: Watch here plays it on the page (not for private YouTube videos, which YouTube refuses to embed), Open the video goes to where it lives. How to set up each storage · Read how it works.
Run it where you like
The program must stay on 24/7 and reach the camera. The README compares the options honestly, including what was and wasn't tested.
Your own PC
Windows, macOS or Linux, if it stays on. Same network as the camera, nothing exposed. Install guide.
Raspberry Pi / mini PC
At home, on the LAN. Nothing exposed. Recommended.
A VPS
A few dollars a month. The setup used and tested by the author.
Docker
A ready-made image on GitHub Container Registry (amd64 and arm64), or build the included Dockerfile.
Render free tier
Possible, with limits (ephemeral disk, shared IPs). Tested up to startup only.
Quick start
You need Python 3.10+, ffmpeg, the camera account from the Tapo app and a place for the videos: a YouTube channel (it needs a free Google Cloud project), a OneDrive, a Nextcloud, or just your disk. The full guide covers every step, including the router.
$ git clone https://github.com/LuigiElleBalotta/tapo-uploader.git
$ cd tapo-uploader && python -m venv .venv && . .venv/bin/activate
$ pip install -r requirements.txt
$ cp .env.example .env # camera user, password, address
$ python tapo_uploader.py check # does the camera answer?
$ python tapo_uploader.py auth # Google login, once
$ python tapo_motion.py run # record on motion, upload once a day
Questions
Can a Tapo C200 send its videos to my own storage?
Not by itself. This project adds it from outside: it reads the camera's RTSP stream, records around motion and saves the result where you choose (YouTube through its official API, OneDrive, Nextcloud, any rclone cloud or a disk).
Do I need to root or flash the camera?
No. The stock firmware already offers RTSP and ONVIF once you create the Camera Account in the Tapo app.
Will the videos be public?
No. On YouTube they are uploaded as private and only your Google account can see them; on WebDAV, rclone or a folder they sit where only you (and the server's administrator) can read them.
Where can the videos go?
Yes (setup guide): your own OneDrive, WebDAV (Nextcloud and similar), a local folder, or anything rclone supports, such as Mega or S3 storage.
If I change where videos go, do I lose the old ones?
No. The earlier destination stays in your list and its videos stay on your page, each marked with its source. They are never moved or deleted.
Can several people share one server?
Yes, with the optional multi-account mode: each person links their own camera, chooses their own storage and sees only their own videos.
Can I use my own computer?
Yes, as long as it stays on, awake and on the same network as the camera. Windows, macOS and Linux all work. Step-by-step install guide.
Is it a replacement for a cloud plan?
It replaces the storage part with storage you own. It does not replace the Tapo app's cloud timeline.
Videos go only where the person who signs in chose: their own YouTube channel by default, or their own OneDrive or cloud. The software is self-hosted and sends nothing to the author. Read the privacy policy.