An independent creator
One 4 vCPU box, a CDN in front of it, and a channel people can follow over ActivityPub from wherever they already read.
Embeds · the bespoke player · resumable uploads
AGPL v3
It installs on a server you administer, like WordPress. Viewers sign in with Bluesky.
curl -fsSL https://raw.githubusercontent.com/yegamble/vidra/main/install.sh | shWho it's for
One 4 vCPU box, a CDN in front of it, and a channel people can follow over ActivityPub from wherever they already read.
Embeds · the bespoke player · resumable uploads
A few dozen upload, a few hundred watch, and you answer for what appears. The moderation surface is in the box, not in a plugin.
Registration approval · reports · per-user quotas
Live coverage that becomes an archive the moment it ends, and embargoed material that never turns into a public URL by accident.
RTMP to VOD · scoped playback tokens · auto-sync
Four years of talks that have to stay findable, with an accessibility obligation you cannot hand-wave away.
Whisper captions · chapters · hybrid search
Sizing
Move the sliders and the box changes. The two profiles come from the deploy guide; everything between them is arithmetic you can check.
One job's ladder computes to a ~3.6 GB peak; budget ~8 GB of scratch per concurrent job, because the floor that admits work is deliberately generous.
The shipped 4-rung ladder computes to 17.4 GiB a source hour, from the bitrate table below. After the instance itself and this box's scratch, its 160 GiB carries about 6 hours before it starts buying block storage. Dropping the 1080p rung takes half the video bitrate with it.
Vidra keeps the file it ingested, and no setting deletes it. What yours weigh is your number, not ours, so it starts at zero. Set it to your own footage.
Your box
~$56 / month
About 6 hours of video, on the shipped ladder.
Small, private profile — a channel or two and a handful of viewers.
Premium AMD list price for the 4 vCPU / 8 GB plan. Its 160 GiB of disk is enough here.
Per source hour, retained
Bitrate times duration, off the 4-rung table in vidra-core's hls.go, on the shipped CMAF and H.264 defaults. Trick-play is encoded at CRF 28 with no rate target, so there is no bitrate to multiply: it is named rather than guessed at. Turning on VP9, HEVC or AV1 adds a whole second set of representations.
Transfer, on top
5,000 GiB a month comes with the plan — pooled across every droplet on the team and accruing per second over a 28-day month, so it is never a per-box allowance. Inbound costs nothing. Past the pool, outbound is $0.01 a GiB, which is the number a CDN in front of your HLS is spent against.
Droplet, volume and bandwidth prices are DigitalOcean list prices, checked 2026-08-30.
Two things that cost real money if you skip them: do not use a 2 GB droplet, and use Docker Compose 2.24 or newer. Older Compose silently publishes PostgreSQL and Redis on 0.0.0.0 — your database on the public internet, with no error to tell you.
Install
Two paths for a server, one for a laptop, and one for migrating off PeerTube.
For a fresh server you control. Run it as a user who can use sudo. Here is what it will and will not do, before you run it.
curl -fsSL https://raw.githubusercontent.com/yegamble/vidra/main/install.sh | shThe product
Vidra v0.5.0 on a local machine, playing a 47-second clip the instance itself ingested and transcoded to four renditions.

Federation
Three layers do three jobs. Step through them and watch what leaves your server.
Layer one of three
Your channels and videos are addressable from the rest of the fediverse. A follow from Mastodon or another PeerTube instance travels over the protocol, not over an integration someone bolted on afterwards.
Federating is not the same as being read. Reach depends on other instances choosing to accept you, and that choice is getting easier to make in bulk: PeerTube 8.3.0-rc.1, tagged 25 August 2026, added blocklists an admin can subscribe to.
Architecture
Eight of the containers a production install runs, each doing one job. The compose file carries more: the migration steps, RTMP for live, and the optional captions, scanning and tracing services.
Your server
API
The Go backend. 230 OpenAPI paths, durable queues, the transcode pipeline, federation and the admin console behind it.
Uploads stream straight to the storage backend — they never touch the server's disk — and when one box stops being enough, the same image splits into api and worker roles, soak-tested with a deliberate counterfactual. Put a CDN in front of the HLS and the bytes reach viewers from its edge, not your box; turn on the IPFS tier and any copy someone pins becomes another source that is not your server.
Compared
The terms, the moderation policy and the ranking are Google's to change, and the platform sells advertising against your audience. On your own instance there is no ad system and nobody between you and your viewers.
PeerTube is the established choice, with years of maturity and a plugin ecosystem Vidra does not have. Vidra is a clean-room alternative that trades that head start for operability — a one-command install, a doctor, scripted backup and rollback — viewers who can sign in with Bluesky, and direct messages, which PeerTube does not have. PeerTube also has in-player peer-to-peer; that one Vidra declined rather than missed, and the reasoning is published.
The project
Vidra is written and maintained by Yosef Gamble, in public, at github.com/yegamble — where the commits, the issues and the releases are.
Use it, study it, modify it, redistribute it. Run a modified version as a service and the network clause means your users get the source too.
No ad system and no monetisation layer, no hosted tier to be moved onto, and no pricing page that changes the day you depend on it. The only way to run Vidra is to run it.
Not a PeerTube fork and not PeerTube-API-compatible. Migrating an existing instance across is supported and documented.
vidra-core (Go 1.26, Echo, PostgreSQL 18, Redis 8), vidra-user (Next.js 16) and vidra-search (Go), each with its own CI. Images build only from tags.
Vidra is at v0.6.0, and the first commit in yegamble/vidra landed on 19 June 2026. The feature set is still growing, and three things it does not do are listed below. What is already fixed is the discipline it is built with: upgrading is reversible for one release, because vidra-core runs the previous release's own integration suite against every new schema before it merges.
DRM: None shipped: a test lane proves the seam, and production DRM sits behind an unbuilt roadmap item. If your distributor requires encrypted playback today, Vidra is the wrong tool.
curl -fsSL https://raw.githubusercontent.com/yegamble/vidra/main/install.sh | sh