---
title: "Deploy Deploy Cap for Customer Support Videos"
description: "Record screen videos for support replies on your own Cap"
category: "Other"
url: https://railway.com/deploy/deploy-cap-for-customer-support-videos
---

# Deploy Deploy Cap for Customer Support Videos

Record screen videos for support replies on your own Cap

**[Deploy Deploy Cap for Customer Support Videos on Railway](https://railway.com/template/deploy-cap-for-customer-support-videos)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/deploy-cap-for-customer-support-videos/manifest.json

- **Creator:** onepush
- **Category:** Other

## Template content

### cap-web

- **Image:** ghcr.io/capsoftware/cap-web@sha256:8ee4cbd3fd87f88f538831aed06c954c525db9c2426a62abeaf0ca307c5e1ce9
- **Start command:** `node -e 'const e=process.env,fs=require("fs"),d=e.WORKFLOW_LOCAL_DATA_DIR||"/app/apps/web/.workflow-data";if(process.getuid()===0){fs.mkdirSync(d,{recursive:true});fs.chownSync(d,1001,1001);process.setgroups([1001]);process.setgid(1001);process.setuid(1001);console.log("[railway] workflow data in "+d+", running as uid "+process.getuid())}try{const{S3Client:C,PutBucketCorsCommand:P}=require("/app/node_modules/.pnpm/node_modules/@aws-sdk/client-s3");new C({endpoint:e.S3_INTERNAL_ENDPOINT,region:e.CAP_AWS_REGION,forcePathStyle:e.S3_PATH_STYLE==="true",credentials:{accessKeyId:e.CAP_AWS_ACCESS_KEY||"",secretAccessKey:e.CAP_AWS_SECRET_KEY||""}}).send(new P({Bucket:e.CAP_AWS_BUCKET,CORSConfiguration:{CORSRules:[{AllowedOrigins:[e.WEB_URL],AllowedMethods:["GET","HEAD","PUT","POST"],AllowedHeaders:["*"],ExposeHeaders:["ETag"],MaxAgeSeconds:3600}]}})).then(()=>console.log("[railway] bucket CORS set for "+e.WEB_URL),x=>console.error("[railway] bucket CORS not set: "+x.name+" "+x.message))}catch(x){console.error("[railway] bucket CORS skipped: "+x.message)}e.HOSTNAME="::";require("/app/apps/web/server.js")'`
- **Health check:** /api/status
- **Public domain:** Yes

### media-server

- **Image:** ghcr.io/capsoftware/cap-media-server@sha256:d47944a3744f30e0e0a36b184e24ca99b2723618580ffe97853af2b6a08abde4
- **Health check:** /health

### MySQL

- **Image:** mysql:8.0.46@sha256:7dcddc01f13bab2f15cde676d44d01f61fc9f99fe7785e86196dfc07d358ae2b
- **Start command:** `docker-entrypoint.sh mysqld --max_connections=1000 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --performance-schema=OFF`

## Buckets

- **Bucket**

## Documentation

# Deploy and Host self hosted Cap Support Videos (Self-Hosted Screen Recording for Support) on Railway

Support teams can record quick screen walkthroughs and send share links from storage they control.

## About Hosting Cap Support Videos open-source software on Railway (self hosted self-hosted Cap screen recording for support replies template)

This template runs the official Cap stack on Railway: cap-web for the dashboard, share pages, and upload API, media-server on the private network, MySQL for accounts, and a private Railway Bucket for recordings.

Railway handles health checks, the bucket CORS rule, generated secrets, and private networking.

## Why Deploy Cap Support Videos, the Loom alternative on Railway (Railway Free Trial)

Loom's per-seat plans and free-tier recording limits add up as your support team grows.

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 Support Videos 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.

### Railway vs Other Hosting Providers and VPS for Cap Support Videos self hosting

Railway brings up all four Cap parts from one template, while a VPS means assembling them yourself.

| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | cap-web, media-server, MySQL and a private bucket deployed with secrets and CORS set | A droplet you configure: Docker, DNS, TLS and an S3-compatible store |
| AWS | A running stack with the bucket wired in and no IAM policy to write | Full control over VPC, EC2, S3 and RDS, with more setup to manage |
| Hetzner | Managed domain, health checks and redeploys without touching a server | Low-cost servers where you handle OS updates, firewalling and backups |

Pick a VPS if you want full control; pick Railway if you want Cap working for support replies today.

## Common Use Cases for hosted Cap Support Videos

- **Quick walkthrough replies:** When a customer asks how to do something, record a short screen walkthrough in Instant Mode, stop it, and paste the share link into your reply. Most tickets get answered faster with a 60-second clip than with three paragraphs of steps.
- **Help center tutorials:** For a how-to that will live on your help center for months, record in Studio Mode, trim the dead air, add zoom effects, and export a polished clip before you publish it.
- **Customer screen data on your own storage:** Recordings land in your Railway Bucket, which is private and only hands out short-lived presigned links, so customer screens never sit on a third-party host.
- **Support-only access:** Set CAP_ALLOWED_SIGNUP_DOMAINS on cap-web to your company domain so only support staff can create accounts and record.
- **Private by default:** Set CAP_VIDEOS_DEFAULT_PUBLIC=false so new recordings stay private, and only share a link externally once you have decided it should go out.

## Dependencies for Cap Support Videos Docker hosted on Railway

This template runs four pieces on one Railway project: cap-web (the public app Cap Desktop talks to), media-server (private FFmpeg processing), a private MySQL database, and a Railway Bucket for recordings.

### Deployment Dependencies for Managed Cap Support Videos Service (Screen Recording)

- **cap-web:** official ghcr.io/capsoftware/cap-web image pinned by digest, public port 3000, health check /api/status, volume at /app/apps/web/.workflow-data.
- **media-server:** official ghcr.io/capsoftware/cap-media-server image, private port 3456, health check /health.
- **MySQL:** MySQL 8.0.46 pinned by digest, private port 3306, volume at /var/lib/mysql.
- **Railway Bucket:** private S3-compatible storage for recordings.

### Implementation Details for Cap Support Videos (Using Cap official docker image)

On cap-web, set WEB_URL=https://${{RAILWAY_PUBLIC_DOMAIN}}, DATABASE_URL=${{MySQL.MYSQL_URL}}, and MEDIA_SERVER_URL=http://${{media-server.RAILWAY_PRIVATE_DOMAIN}}:3456.

## How does Cap Support Videos compare against other ways to record and share support replies without hosted video tools

### Cap Support Videos vs Loom (Loom Alternative)

- **Where Loom wins:** It is a polished hosted product with no server to run, so it's the faster choice if you never want to touch infrastructure.
- **Where Cap wins:** Recordings and share links live on your own Railway stack, and customer screen data stays on your own Railway Bucket instead of a third-party host.
- **Cost shape:** Loom sells per-seat plans with recording limits on its free tier. Self-hosted Cap has no per-user billing and no 5-minute limit, but you pay Railway for compute and storage.

### Cap Support Videos vs Vidyard (Vidyard Alternative)

- **Where Vidyard wins:** It is built around sales and marketing video hosting, with analytics aimed at tracking viewers across campaigns.
- **Where Cap wins:** It is a plain screen recorder for quick support replies, and you control the server URL the desktop app uploads to.
- **Trade-off:** You won't get Vidyard's viewer analytics out of the box, so support teams that need engagement tracking will miss it.

### Cap Support Videos vs Zight (Zight Alternative)

- **Where Zight wins:** It is fast for quick screenshots and short clips, with very little setup on a laptop.
- **Where Cap wins:** Recordings go to your own server with share links under your domain, so the library is yours to keep and back up.
- **Trade-off:** Cap needs a deployed stack and a sign-in step pointed at your server URL before the first recording, which is more work than Zight's install-and-go flow.

### Cap Support Videos vs Tella (Tella Alternative)

- **Where Tella wins:** It is strong for polished product and tutorial videos, with editing built into a hosted workflow.
- **Where Cap wins:** Studio Mode gives you editing and export on your own machine, and Instant Mode gives a share link as soon as you stop recording for quick ticket replies.
- **Trade-off:** Tella's editing is more refined for marketing-grade tutorials, so help-center work that needs heavy polish may still favor it.

## How to use Cap Support Videos (the OSS screen recorder)?

1) Wait for cap-web to go healthy, which takes about a minute while migrations run on first boot, then open your Railway domain. 2) Enter your email and click "Login with email". 3) Open cap-web Deployments, click View logs, and copy the 6-digit VERIFICATION CODE. It's valid for 10 minutes. 4) Set RESEND_API_KEY and RESEND_FROM_DOMAIN so codes are emailed instead of logged. Until then, you'll keep fishing codes out of the logs.

## How to self host Cap Support Videos on other VPS Services (Cap self hosting guide)

Cap runs as four parts: cap-web, media-server, MySQL and an S3-compatible bucket.

### Clone the Repository

Grab the upstream source so you can use its compose file as a starting point.

```bash
git clone https://github.com/CapSoftware/Cap.git
cd Cap
```

### Install Dependencies

Install Docker and Docker Compose on the VPS, then confirm they run.

```bash
docker --version
docker compose version
```

### Configure Environment Variables

Set the variables cap-web needs, and replace the default secrets that ship in the upstream compose file.

```bash
WEB_URL=https://your-domain
NEXTAUTH_URL=https://your-domain
NEXTAUTH_SECRET=replace-with-64-hex-chars
DATABASE_ENCRYPTION_KEY=replace-with-64-hex-chars
CAP_ALLOWED_SIGNUP_DOMAINS=your-company.com
```

Point the S3 settings at your bucket, and never change DATABASE_ENCRYPTION_KEY after first deploy.

### Start the Cap Support Videos Application

Bring the stack up, then check the health endpoint before sharing the link.

```bash
docker compose up -d
curl -I https://your-domain/api/status
```

Railway handles the public domain, TLS, private networking and redeploys for you, which is the part you would otherwise build by hand on a VPS.

## Official Pricing of Cap Support Videos (Cap pricing)

Cap is open source and free to self host, so there is no license fee to pay for the software itself.

## Cap Support Videos cloud vs self hosted comparison (Pricing, features, costs, and more)

Running Cap yourself means your support recordings and share links live on your own server and storage instead of a third-party host.

### Monthly cost of self hosting Cap Support Videos on Railway

Railway estimates about $10-20 per month for a small team at idle, which covers the four parts of the stack.

### System Requirements for Hosting Cap Support Videos on a VPS

Idle RAM on this template is about 850 MB in total, roughly 490 MB for cap-web, 220 MB for MySQL and 130 MB for media-server.

## Frequently Asked Questions (FAQs)

### Do I need Resend to log in, or can I use the logged verification code?

No, you can use the code from the logs.

### Which recording mode should support use for quick replies versus help-center tutorials?

Use Instant Mode for quick ticket replies, since you get a share link when you stop.

### How do I stop strangers from requesting a login code?

Set CAP_ALLOWED_SIGNUP_DOMAINS on cap-web to your company domain before you share the link.

### Where are the recordings and customer screen data actually stored?

Recordings go from Cap Desktop straight to your Railway Bucket through short-lived presigned URLs, so the bucket never has to be public.

### Does self-hosting remove the 5-minute recording limit?

Yes, self-hosted Cap treats every user as Pro, so there is no 5-minute limit and no billing.

### What should I back up, and how do I keep recordings through redeploys?

Back up MySQL for accounts and metadata, and back up the bucket for media, since Railway Buckets have no automatic backups yet.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/deploy-cap-for-customer-support-videos
