[{"data":1,"prerenderedAt":149},["ShallowReactive",2],{"seo-verification":3,"blog-migrate-saas-to-self-hosted-cap-loom-alternative-2026-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-migrate-saas-to-self-hosted-cap-loom-alternative-2026-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":91,"ctaBody":92,"ctaButton":93,"ctaUrl":94,"relatedPosts":95},414,"migrate-saas-to-self-hosted-cap-loom-alternative-2026",{"fr":12,"en":10,"ar":13,"es":14},"migrer-saas-self-hosted-cap-loom-alternative-2026","الانتقال-إلى-استضافة-cap-بديل-loom-على-vps-2026","migrar-saas-a-self-hosted-alternativa-cap-loom-2026","Cap, self-hosted Loom alternative: VPS deployment guide","Loom removed the Creator Lite role in February 2026. Cap (AGPL-3.0) installs on a VPS in 30 minutes with Docker Compose.",9,0,false,"2026-10-05T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},5,"Comparison","comparatif","bg-info\u002F10 text-info",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-saas-self-hosted-cap-loom-alternative-2026-poster.svg","In February 2026, Loom removed the Creator Lite role: teams of 2 to 5 people who recorded short async videos without paying full price now face plans at $18 per seat per month. Cap (CapSoftware\u002FCap, AGPL-3.0, over 23,000 GitHub stars) is an open-source alternative that self-hosts on a VPS with Docker Compose. This guide explains why this change forces agencies to act, how to evaluate Cap, and how to deploy it cleanly.",[34,38,50,53,78,82,85,88],{"type":35,"title":36,"body":37},"h2","Why Loom's pricing change forces agencies to act","The Creator Lite role allowed adding workspace members to Loom without billing them as full paid creators. A designer or project manager who records a short client demo once a week fit this role at no extra cost. Atlassian, which acquired Loom, removed this role for all accounts created after February 2026, and existing accounts are switching to Atlassian billing as they migrate.\n\nIn practice, for a small team with 10 paid creators and 20 Creator Lite users: the monthly bill goes from $180 to $540 the month of migration. Individual user reports describe invoices jumping from $18 to $220 per month overnight. The Business plan is billed at $18 per user per month, with no exceptions.\n\nFor an agency that bills clients on fixed-scope projects, this cost variability is unacceptable. Async screen capture is an internal and client communication tool — it needs a predictable cost, or it needs to be self-hosted.",{"type":39,"title":40,"items":41},"ul","Why Cap suits an agency",[42,43,44,45,46,47,48,49],"Fixed cost: you pay for the VPS, not a per-seat subscription that grows with every hire.","Data hosted on your infrastructure: mockup captures, demos and code never leave your server.","AGPL-3.0 license: the code is auditable, the roadmap is public and the project is active (over 23,000 GitHub stars as of October 5, 2026).","Link sharing: your clients receive a signed URL, just like with Loom, without creating an account.","Custom domain: you expose Cap under `cap.your-domain.com`, not a third-party domain.","Configurable storage: embedded MinIO to start, or an external S3\u002FCloudflare R2 bucket for production.","Clean interface, without an imposed paid AI overlay: the tool does what it promises, nothing more.","One-command deployment: `docker compose up -d` from the official repository.",{"type":35,"title":51,"body":52},"VPS prerequisites for deploying Cap","Cap consists of four Docker services: the web application (`cap-web`), a MySQL 8.0 database (`ps-mysql`), a media server for transcoding (`cap-media-server`) and MinIO for S3-compatible object storage. The stack consumes about 1 GB of RAM at idle; under production conditions with several simultaneous recordings, plan for **2 vCPU and 4 GB of RAM** as a baseline. Allow 20 GB of SSD\u002FNVMe disk for binaries and initial videos, then add or externalize storage according to volume.\n\nOther prerequisites:\n- Docker Engine 24+ and Docker Compose v2 installed on the VPS.\n- A dedicated subdomain (for example `cap.your-domain.com`) pointed at the VPS IP.\n- A reverse proxy handling HTTPS (Caddy or Nginx with Certbot).\n- Ports 3000 (app), 3456 (media server), 3902\u002F3903 (MinIO) accessible from the reverse proxy, but not directly exposed to the public.",{"type":54,"title":55,"steps":56},"steps","Deploying Cap on your VPS",[57,60,63,66,69,72,75],{"title":58,"body":59},"Clone the official repository","On your VPS, clone the CapSoftware repository and navigate to the root directory:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FCapSoftware\u002FCap.git\ncd Cap\n```\n\nThe repository includes a `docker-compose.template.yml` file. Copy it as `docker-compose.yml` to avoid overwriting your changes on a future `git pull`:\n\n```bash\ncp docker-compose.template.yml docker-compose.yml\n```",{"title":61,"body":62},"Configure environment variables","Create a `.env` file at the root from the provided template, then edit the critical values:\n\n```bash\ncp .env.example .env\n```\n\nVariables to set before any public exposure:\n\n```bash\n# Public application URL\nNEXTAUTH_URL=https:\u002F\u002Fcap.your-domain.com\nWEB_URL=https:\u002F\u002Fcap.your-domain.com\n\n# Secrets — regenerate these values, NEVER leave defaults\nNEXTAUTH_SECRET=\u003Crandom-32-char-string>\nDATABASE_ENCRYPTION_KEY=\u003Crandom-32-char-string>\n\n# MySQL database\nDATABASE_URL=mysql:\u002F\u002Froot:your-password@ps-mysql:3306\u002Fplanetscale\n\n# Embedded MinIO storage (replace with external S3 in production)\nCAP_AWS_ACCESS_KEY=minioadmin\nCAP_AWS_SECRET_KEY=minioadmin\nCAP_AWS_BUCKET=cap-media\nCAP_AWS_REGION=us-east-1\nS3_PUBLIC_ENDPOINT=https:\u002F\u002Fcap.your-domain.com\u002Fs3\nS3_INTERNAL_ENDPOINT=http:\u002F\u002Fminio:9000\n\n# Media server\nMEDIA_SERVER_URL=http:\u002F\u002Fcap-media-server:3456\nMEDIA_SERVER_WEBHOOK_SECRET=\u003Crandom-32-char-string>\n```\n\nIf you do not configure an SMTP server, login links appear in the `cap-web` container logs: `docker compose logs cap-web`. This is sufficient for initial testing.",{"title":64,"body":65},"Start the stack","Launch the four services in the background:\n\n```bash\ndocker compose up -d\n```\n\nVerify that all containers are in `running` state:\n\n```bash\ndocker compose ps\n```\n\nThe web application listens on port `3000`, the media server on `3456`, MinIO on `3902` (API) and `3903` (console). Check the logs if a service stays in `restarting`:\n\n```bash\ndocker compose logs cap-web --tail 50\n```",{"title":67,"body":68},"Configure the HTTPS reverse proxy with Caddy","Caddy is the most straightforward solution: it handles Let's Encrypt certificates automatically. Create a `\u002Fetc\u002Fcaddy\u002FCaddyfile` file or add a block to your existing configuration:\n\n```bash\ncap.your-domain.com {\n    reverse_proxy localhost:3000\n}\n```\n\nReload Caddy:\n\n```bash\nsystemctl reload caddy\n```\n\nIf you use Nginx, create a vhost with `proxy_pass http:\u002F\u002F127.0.0.1:3000;` and obtain a certificate via `certbot --nginx -d cap.your-domain.com`.",{"title":70,"body":71},"First login and admin account creation","Open `https:\u002F\u002Fcap.your-domain.com` in your browser. Cap prompts you to create an account by entering your email address. If you have not configured an SMTP server, retrieve the login link from the logs:\n\n```bash\ndocker compose logs cap-web 2>&1 | grep -i 'signin\\|magic\\|link'\n```\n\nCopy the displayed URL and paste it into your browser to log in. The first account created becomes the instance administrator.",{"title":73,"body":74},"Configure external S3 storage (recommended for production)","Embedded MinIO is suitable for testing, but for production prefer an external S3 bucket (AWS S3, Cloudflare R2 or Backblaze B2). In Cap instance settings (Storage section), fill in:\n\n- **Access Key** and **Secret Key** from your provider\n- **Bucket name** and **Region**\n- **Public URL** of the bucket (for sharing links)\n\nUpdate the `CAP_AWS_*` variables in your `.env`, then restart the service:\n\n```bash\ndocker compose up -d cap-web\n```",{"title":76,"body":77},"Invite the team and test a recording","From the Cap dashboard, invite your collaborators by email. Each member installs the Cap desktop application (macOS, Windows) or uses the browser extension, and points to your instance URL in settings (\"Custom server\" field). Make a test recording and verify that the video appears in the dashboard and that the sharing link is accessible from an external browser.",{"type":79,"title":80,"body":81},"tip","Post-deployment hardening","Before inviting clients to view videos, verify these four points:\n\n1. **Default secrets replaced** — `NEXTAUTH_SECRET`, `DATABASE_ENCRYPTION_KEY` and `MEDIA_SERVER_WEBHOOK_SECRET` must never be those from the repository. `openssl rand -hex 32` generates a solid value.\n2. **MinIO not publicly exposed** — ports 3902 and 3903 should only be accessible from the reverse proxy or via an internal Docker network. Add `127.0.0.1:3902:9000` in `docker-compose.yml` to bind the port to localhost only.\n3. **Automatic updates disabled by default** — Cap does not self-update. Schedule a monthly `docker compose pull && docker compose up -d`, preceded by a MySQL volume snapshot.\n4. **MySQL database backups** — a daily `mysqldump` is sufficient for metadata (the videos themselves are in MinIO or S3). Cron example: `0 2 * * * docker exec ps-mysql mysqldump -u root -pyour-pwd planetscale > \u002Fbackups\u002Fcap-$(date +%F).sql`.",{"type":35,"title":83,"body":84},"Post-deployment configuration: domain, storage and team","Once Cap is operational, three adjustments make the instance ready for agency use:\n\n**Custom domain**: if you used a temporary subdomain during deployment, update `NEXTAUTH_URL` and `WEB_URL` in `.env`, restart `cap-web` and update the DNS entry. Existing sharing links remain valid as long as you redirect the old subdomain.\n\n**Workspace**: Cap organizes recordings into Spaces. Create one space per client or project to keep videos separate. Guests can view without an account if the link is public.\n\n**Storage quota**: if you store videos on local MinIO, monitor VPS disk space with `df -h`. A Cap recording weighs between 10 and 50 MB depending on duration and resolution. Consider an additional volume or migration to external S3 once the volume exceeds a few dozen GB.",{"type":35,"title":86,"body":87},"Troubleshooting: common errors","**`Error: connect ECONNREFUSED 127.0.0.1:3306`** — the MySQL container is not yet started or its password in `DATABASE_URL` does not match the one defined in the `ps-mysql` service. Check with `docker compose logs ps-mysql` and ensure that the `MYSQL_ROOT_PASSWORD` variables in `docker-compose.yml` and `DATABASE_URL` in `.env` are consistent.\n\n**The login URL does not arrive by email** — without SMTP configured, the link appears only in `cap-web` container logs. Run `docker compose logs cap-web 2>&1 | grep http` to find it.\n\n**The video loads indefinitely after recording** — the media server (`cap-media-server`) is not reachable from `cap-web`. Check that `MEDIA_SERVER_URL=http:\u002F\u002Fcap-media-server:3456` is set and that both services are on the same Docker network (`docker compose ps` should show both as `running`).\n\n**The sharing link returns a 404 error** — `S3_PUBLIC_ENDPOINT` may point to an incorrect URL or MinIO is not externally accessible. If using local MinIO, expose it behind the reverse proxy under a dedicated path (e.g., `\u002Fs3\u002F`) or migrate to an external S3 bucket.\n\n**The client cannot point the desktop app to your instance** — check that the \"Custom server\" field in Cap Desktop preferences accepts exactly the public URL without a trailing slash: `https:\u002F\u002Fcap.your-domain.com`.",{"type":35,"title":89,"body":90},"Cap in your self-hosted agency stack","Cap integrates naturally into a stack where async capture replaces client review meetings. Paired with Penpot for collaborative design and Chatwoot for client support, it covers the three asynchronous communication channels of an agency without a variable SaaS subscription.\n\nIf your infrastructure already relies on Atlassian tools migrated to self-hosted alternatives — Jira replaced by Plane, Confluence by Outline — migrating from Loom to Cap follows the same logic: fixed cost, controlled data, updates at your own pace.\n\nCap remains a young project with a rapidly growing community. For production use today, the Docker Compose + MinIO or external S3 combination is stable. The macOS desktop application is the most polished; the Windows version is functional. The browser extension covers tab capture use cases without heavy installation.","Your team self-hosts its production tools","Cap deploys in minutes on a ServOrbit VPS. Root access, dedicated IPv4, preconfigured Docker and NVMe storage for your async videos.","Deploy your agency stack","\u002Fsolutions\u002Fagences",[96,118,134],{"id":97,"slug":98,"slugs":99,"title":103,"excerpt":104,"readTime":17,"views":18,"isPinned":19,"publishedAt":105,"updatedAt":21,"category":106,"categories":112,"featuredImage":29,"bgImage":30,"posterImage":114,"relatedSolution":115},411,"penpot-self-hosted-figma-alternative-web-agencies",{"fr":100,"en":98,"ar":101,"es":102},"penpot-alternative-figma-self-hosted-design-agence","penpot-بديل-figma-المستضاف-ذاتيا-للوكالات","penpot-alternativa-figma-autoalojada-agencias-web","Penpot: the self-hosted Figma alternative for web agencies","Figma raised its prices in 2025. Learn how Penpot v2 self-hosted on a VPS gives agencies a sovereign collaborative design space with no per-seat subscription.","2026-10-03T00:00:00+00:00",{"id":107,"name":108,"slug":109,"color":110,"icon":111},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[113],{"id":107,"name":108,"slug":109,"color":110,"icon":111},"\u002Fblog\u002Fcovers\u002Fpenpot-alternative-figma-self-hosted-design-agence-poster.svg",{"categorySlug":116,"appSlug":117},"collaboration-productivity","penpot",{"id":119,"slug":120,"slugs":121,"title":125,"excerpt":126,"readTime":17,"views":18,"isPinned":19,"publishedAt":127,"updatedAt":21,"category":128,"categories":129,"featuredImage":29,"bgImage":30,"posterImage":131,"relatedSolution":132},409,"chatwoot-cloud-api-paywall-migrate-self-hosted-2026",{"fr":122,"en":120,"ar":123,"es":124},"chatwoot-cloud-api-paywall-migrer-self-hosted-2026","chatwoot-cloud-api-انتقال-استضافة-ذاتية","chatwoot-cloud-api-paywall-migrar-self-hosted-2026","Chatwoot Cloud API Paywall: Migrate to Self-Hosted in 2026","Since July 2026, the Chatwoot Cloud API and webhooks are reserved for paid plans. Compare your options and migrate to a fully self-hosted instance.","2026-10-04T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[130],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fchatwoot-cloud-api-paywall-migrer-self-hosted-2026-poster.svg",{"categorySlug":116,"appSlug":133},"chatwoot",{"id":135,"slug":136,"slugs":137,"title":141,"excerpt":142,"readTime":17,"views":18,"isPinned":19,"publishedAt":143,"updatedAt":144,"category":145,"categories":146,"featuredImage":29,"bgImage":30,"posterImage":148,"relatedSolution":29},391,"self-hosted-jira-confluence-alternatives-vps",{"fr":138,"en":136,"ar":139,"es":140},"atlassian-alternatives-jira-confluence-self-hosted-vps","بدائل-jira-و-confluence-باستضافة-ذاتية-vps","alternativas-jira-confluence-self-hosted-vps","Self-Hosted Alternatives to Jira & Confluence in 2026","Atlassian activates 3 new usage meters in September 2026: Rovo AI, automation steps, Loom. Some teams face +150%. Plane, Gitea, Docmost on a VPS cost less.","2026-09-27T00:00:00+00:00","2026-09-29T14:40:42+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[147],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fatlassian-alternatives-jira-confluence-self-hosted-vps-poster.svg",1791249010954]