I record my screen a lot — demos, bug reports, async updates. Loom is fine for this, but I got tired of paying for it. Recording my own screen and sharing a link shouldn't be a monthly fee.
So I self-hosted Cap on my home computer. It runs at cap.ibtisam.dev. My hardware, my videos, no subscription.
Why not just use Loom
Loom charges $12.50/month per user to record your screen and give you a shareable link. Your computer already has the hardware. Your browser already plays video. You're just paying for their server.
I keep seeing this pattern — take something basic, host it for people, charge monthly. Screen recording, notes, file storage, to-do lists. Things that work fine on your own machine but somehow became subscriptions.
Not everything needs to be self-hosted. But screen recording? That felt like an easy one to take back.
Cap
Cap is open-source Loom. Desktop app records, server hosts and shares. You can run the server yourself with Docker.
How it's wired up
Cap Desktop App → cap.ibtisam.dev → Cloudflare Tunnel → Home Computer (Coolify/Docker)
↓
Cloudflare R2
(video storage)
No static IP. No port forwarding. No nginx. Cloudflare Tunnel handles routing, R2 handles storage.
Coolify made deployment easy
I already run Coolify on my home server. Adding Cap was just pointing Coolify at the Docker image and setting env vars. Running in minutes.
If you self-host anything with Docker, Coolify is worth it. Turns container deployment into a few clicks.
Cloudflare Tunnels
Normally, serving something from home means port forwarding, static IPs, reverse proxies. Tunnels skip all of that. You run cloudflared on your machine, it connects outbound to Cloudflare, and traffic flows back through. No ports exposed.
One thing that tripped me up: set the tunnel origin to HTTP, not HTTPS. Cloudflare handles SSL at the edge. If you point the tunnel at https://localhost, it tries to verify a local certificate and fails.
http://localhost:3000 ✓
https://localhost:3000 ✗
R2 for video storage
Videos are big. R2 is S3-compatible with zero egress fees — nobody pays when someone watches a recording. Storage is $0.015/GB/month. Cap has built-in S3 support, so you just plug in the R2 credentials and recordings upload automatically.
For personal use, the cost rounds to zero.
End result
Hit record in the Cap app, stop, get a link at cap.ibtisam.dev. Same workflow as Loom. Runs on my own machine. No subscription.
Self-hosting used to mean a weekend of fighting config files. Between Coolify and Cloudflare Tunnels, it's gotten a lot easier than that.