Run Tapry on your own server

One Linux machine, Docker and four DNS names. Caddy handles HTTPS, SeaweedFS holds the files, and a worker makes them. Free, with no limits on recordings or hours.

Machine2 vCPU · 4 GB RAMMore cores process recordings faster
OSLinux with Docker Engine + Compose v2macOS works for trying it out
NetworkFour DNS names pointing at itTCP 80, 443, 7881 · UDP 3478, 7882
Storage50 GB+ of disk, or an S3 bucketAbout 3–4 GB uploaded per person-hour at 1080p

Four steps

Setup1.0
01

Clone the repository

Everything lives in one repo: the web app, the worker, and the Compose bundle under deploy/compose.

git clone https://github.com/tapry/tapry
cd tapry/deploy/compose
02

Run setup

Pass your domain and an email for Let’s Encrypt certificates. Setup writes a .env with random secrets and prints the setup code for the first account.

./setup.sh studio.example.com you@example.com
03

Start the stack

Caddy, the web app, the worker, Postgres, SeaweedFS and LiveKit come up together. The first run builds the image, which takes a few minutes; the release images skip that.

docker compose up -d
docker compose logs -f web worker
04

Create the first account

Open your domain and sign up with the setup code. The first account becomes the admin, and sign-up closes after it (ALLOW_SIGNUP=true reopens it). Create a studio and send its guest link to anyone.

# in your browser: https://studio.example.com
# setup code: SETUP_TOKEN in deploy/compose/.env

What’s in the box

Architecture2.0
Web

Next.js app

Studio, green room, dashboard and API. Each browser records with MediaRecorder in four-second pieces.

Calls

LiveKit

WebRTC for the live call, with a built-in TURN relay on port 443. Only 360p copies go through it; recordings never do.

Storage

SeaweedFS or S3

Pieces upload straight to storage through signed URLs. A browser deletes its copy only once the server confirms it.

Worker

Processing

Aligns every track to the moment Record was pressed, levels toward −16 LUFS, and makes WAV, MP4 and the combined video.

Transcripts

whisper.cpp

Runs on your server, one transcript per person, merged with speaker names. Nothing is sent anywhere.

Use your own bucket

Skip SeaweedFS and point Tapry at S3-compatible storage such as AWS S3, Cloudflare R2 or Backblaze B2. It must accept signed uploads. Set the endpoint, bucket, region and keys in docker-compose.yml, and restart.

Storage docs

Rather not run a server?

Tapry Cloud is the same software, hosted for you. It starts free, with paid plans for more recording hours.

See pricing