|
| 1 | +--- |
| 2 | +title: "Cap" |
| 3 | +description: "Here you can find the documentation for hosting Cap with Coolify." |
| 4 | +--- |
| 5 | + |
| 6 | +<ZoomableImage src="/docs/images/services/cap.svg" /> |
| 7 | + |
| 8 | +## What is Cap? |
| 9 | + |
| 10 | +Cap is the open source alternative to Loom. Lightweight, powerful, and cross-platform. Record and share in seconds. |
| 11 | + |
| 12 | +## How to self-host |
| 13 | + |
| 14 | +There are two storage options: you can store the video data on a remote storage service like S3 or R2, or you can choose the less recommended option of storing it directly on the local VPS (or another VPS) via a MinIO service. |
| 15 | + |
| 16 | +### Option 1: Remote S3-compatible storage (AWS S3, Cloudflare R2, etc.) |
| 17 | + |
| 18 | +Set these environment variables: |
| 19 | + |
| 20 | +- `CAP_AWS_ACCESS_KEY`: Your S3/R2 access key |
| 21 | +- `CAP_AWS_SECRET_KEY`: Your S3/R2 secret key |
| 22 | +- `CAP_AWS_BUCKET`: Your S3/R2 bucket name |
| 23 | +- `CAP_AWS_REGION`: Your S3/R2 region (e.g., us-east-1, auto for R2) |
| 24 | +- `CAP_AWS_ENDPOINT`: Your S3/R2 endpoint URL |
| 25 | +- `S3_PUBLIC_ENDPOINT`: Public endpoint for your bucket (same as CAP_AWS_ENDPOINT for most cases) |
| 26 | +- `S3_INTERNAL_ENDPOINT`: Internal endpoint (same as CAP_AWS_ENDPOINT for most cases) |
| 27 | +- `S3_PATH_STYLE`: true for R2/most S3-compatible, false for AWS S3 virtual-hosted style |
| 28 | + |
| 29 | +### Option 2: Local MinIO storage |
| 30 | + |
| 31 | +Deploy MinIO as a separate service in the same network and set: |
| 32 | + |
| 33 | +- `CAP_AWS_ACCESS_KEY`: MinIO root user |
| 34 | +- `CAP_AWS_SECRET_KEY`: MinIO root password |
| 35 | +- `CAP_AWS_BUCKET`: Your bucket name (e.g., capso) |
| 36 | +- `CAP_AWS_REGION`: us-east-1 (or any region) |
| 37 | +- `CAP_AWS_ENDPOINT`: http://minio:9000 (internal MinIO endpoint) |
| 38 | +- `S3_PUBLIC_ENDPOINT`: http://your-minio-domain:9000 (public MinIO endpoint) |
| 39 | +- `S3_INTERNAL_ENDPOINT`: http://minio:9000 (internal MinIO endpoint) |
| 40 | +- `S3_PATH_STYLE`: true |
| 41 | + |
| 42 | +## Email Login Links |
| 43 | + |
| 44 | +If the `RESEND_API_KEY` and `RESEND_FROM_DOMAIN` environment variables are not set, login links will be written to the server logs. To send login links via email, you'll need to configure [Resend](https://resend.com): |
| 45 | + |
| 46 | +1. Create an account at [Resend](https://resend.com) |
| 47 | +2. Connect a domain and set it as `RESEND_FROM_DOMAIN` |
| 48 | +3. Generate an API key and set it as `RESEND_API_KEY` |
| 49 | + |
| 50 | +## How to unlock limits (organization seats and recordings) |
| 51 | + |
| 52 | +<!--Method recommended from https://github.com/coollabsio/coolify/pull/6011#pullrequestreview-3337020957--> |
| 53 | +1. Open the terminal of the MySQL service |
| 54 | +2. Connect to the database: `mysql -u root -p planetscale` and use the `MYSQL_ROOT_PASSWORD` when prompted |
| 55 | +3. Run the SQL command below, replacing `your-user-id` with your actual user ID |
| 56 | + ```sql |
| 57 | + UPDATE users SET inviteQuota = 100, stripeSubscriptionId = '12345', subscriptionStatus = 'active' WHERE id = 'your-user-id'; |
| 58 | + ``` |
| 59 | +4. You can verify the changes by running the following command: |
| 60 | + ```sql |
| 61 | + SELECT * FROM users WHERE id = 'your-user-id'; |
| 62 | + ``` |
| 63 | + |
| 64 | +## Screenshots |
| 65 | + |
| 66 | +<ZoomableImage src="/docs/images/services/cap-app.webp" /> |
| 67 | + |
| 68 | +## Links |
| 69 | + |
| 70 | +- [The official website ›](https://cap.so/) |
| 71 | +- [GitHub ›](https://github.com/CapSoftware/Cap) |
0 commit comments