Railway

Deploy Cap | (Just Updated) Loom Alternative Whose Storage Keys Are Yours

Screen recording whose S3 keys are per-deploy, not shared by everyone

Deploy Cap | (Just Updated) Loom Alternative Whose Storage Keys Are Yours

Just deployed

Just deployed

Just deployed

/data

mysql

mysql

Just deployed

/var/lib/mysql

Deploy and Host Cap on Railway

Cap is the open-source Loom alternative: record your screen (and camera and mic), get a shareable link in seconds, and keep every recording on infrastructure you own. This template runs the full Cap stack — web app, media server, MySQL, and S3-compatible object storage — on your own Railway project, with a fresh set of storage credentials generated for your deploy and nobody else's.

About Hosting Cap

The template deploys four services: cap-web (the Next.js app and API, the only public service), mediaserver (Cap's FFmpeg transcoding worker, private), mysql (application database, on a volume), and minio (S3-compatible storage for recordings, on a volume). Every image is pinned by digest, so a redeploy gives you the same build you verified rather than whatever latest moved to overnight. Database credentials, the NextAuth secret, the media-server webhook secret, the 32-byte database encryption key, and both MinIO root credentials are generated per deploy as Railway secrets — they are not baked into this template and no other deploy shares them. The web app talks to MySQL and MinIO over Railway's private network; browsers get presigned upload and playback URLs on MinIO's own public domain. On first boot the app runs its database migrations and creates its storage bucket itself, so there is nothing to provision by hand. Sign-in works out of the box without SMTP: request a login link and the six-digit code is printed to the cap-web deploy logs. Add SMTP variables later if you want real email delivery.

Why Deploy Cap on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Cap on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

  • Storage credentials that are yours — MinIO's root user and password are generated per deploy, so the bucket holding your recordings is not reachable with credentials published in a template.
  • Transcoding that actually runs — the media server is wired to the web app over the private network with a shared webhook secret, so trims, thumbnails, and MP4 conversion complete instead of failing silently.
  • Private database — MySQL stays on the private network; there is no public TCP proxy exposing the root account.
  • A working encryption key — Cap requires a 32-byte key for password-protected shares, API keys, and integrations; this template generates one of the correct length.
  • Pinned and health-checked — every image is pinned by digest and every service has a healthcheck, so a bad boot is a failed deploy rather than a green one.

Common Use Cases

  • Async standups and product demos — record once, share a link, skip the meeting.
  • Customer support and bug reports — capture the actual screen instead of describing it.
  • Internal documentation and onboarding — build a library of short walkthroughs that stays inside your own infrastructure.

Dependencies for Cap Hosting

  • MySQL 8 (included in this template) with a volume at /var/lib/mysql.
  • MinIO, S3-compatible object storage (included) with a volume at /data.
  • Cap's media server (included) for transcoding.

Deployment Dependencies

Implementation Details

Sign-in is passwordless. Request a link on the login page and read the six-digit code from the cap-web service logs (🔐 VERIFICATION CODE). To send real email instead, set SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, and SMTP_FROM on cap-web.

Recordings are stored in the cap bucket on the bundled MinIO service and served to browsers through presigned URLs on its public domain. To use an external S3 bucket instead, point CAP_AWS_ACCESS_KEY, CAP_AWS_SECRET_KEY, CAP_AWS_BUCKET, CAP_AWS_REGION, and S3_PUBLIC_ENDPOINT at it and remove the MinIO service.


Template Content

mysql

mysql

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
42
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
52