One-click installer for Cap.so - the open-source Loom alternative for beautiful screen recordings.
β If this helped you, please star the repo!
Full Install (with root):
curl -fsSL https://raw.githubusercontent.com/webvijayi/cap-install/main/cap-install.sh | sudo bashOr download and run:
wget https://raw.githubusercontent.com/webvijayi/cap-install/main/cap-install.sh
sudo bash cap-install.shIf you already have Docker and are in the docker group:
wget https://raw.githubusercontent.com/webvijayi/cap-install/main/cap-install.sh
bash cap-install.shThe script will automatically detect your permissions and offer appropriate installation modes.
IMPORTANT: This installer is designed to be safe and non-destructive on production servers running existing websites.
If the installer detects Apache, Nginx, or other services on ports 80/443, it will:
β NEVER automatically stop your web server β Offer safe alternatives:
- Run Cap on port 8080 (recommended - keeps your sites running)
- Provide reverse proxy config for integration
- Only stop services with explicit confirmation
The installer checks for conflicts on:
- Port 80/443: HTTP/HTTPS (web servers)
- Port 3306: MySQL (if system MySQL is running)
- Port 9000/9001: MinIO (object storage)
Server has: Apache on port 80 serving your websites
Cap installer detects: Apache conflict
Options offered:
1) Run Cap on port 8080 β SAFE - Your websites keep running
2) Integrate Cap with Apache (shows config example)
3) Stop Apache (requires typing "YES I UNDERSTAND")
Default recommendation: Always choose option 1 (alternative port) to keep your existing services running.
Best for: Production servers, VPS, dedicated servers, servers with existing websites
Features:
- β
System-wide installation at
/opt/cap - β Smart port handling (80/443, or 8080/8443 if conflicts detected)
- β Apache/Nginx integration (auto-configures reverse proxy)
- β Production-safe (never breaks existing websites)
- β Automatic package installation
- β Docker installation if needed
- β Firewall configuration
- β SSL/HTTPS with Let's Encrypt
- β System service management
- β WebSocket support included
- β MinIO S3 storage auto-configured
Requirements:
- Root access (sudo)
- Ubuntu 20.04+, Debian 10+, CentOS 8+, Rocky Linux 8+, or Fedora
- 2GB RAM minimum
- 20GB disk space
Run with:
sudo bash cap-install.shOne-liner install:
curl -fsSL https://raw.githubusercontent.com/webvijayi/cap-install/main/cap-install.sh | sudo bashBest for: Development, testing, shared hosting, multi-user servers
Features:
- β
User directory installation (
~/cap) - β Non-privileged ports (8080/8443)
- β No system modifications
- β SSL/HTTPS support
- β No package installation needed
Requirements:
- Docker already installed
- User in docker group:
sudo usermod -aG docker $USER(then logout/login)
Run with:
bash cap-install.shThe script will prompt you to choose User Mode automatically.
- Cap Web - Next.js web application (latest from GitHub)
- MySQL 9 - Database for user data and metadata
- MinIO - S3-compatible object storage for recordings
- Nginx - Reverse proxy with optional SSL/HTTPS
| Component | Requirement |
|---|---|
| RAM | 2 GB minimum, 4 GB recommended |
| Disk Space | 10 GB minimum, 50 GB+ recommended for recordings |
| CPU | 2 cores minimum |
| OS | Ubuntu 20.04+, Debian 10+, CentOS 8+, Rocky Linux 8+, Fedora |
Full Install Mode:
- Ports 80/443 (HTTP/HTTPS)
- Ports 9000-9001 (MinIO - internal only)
- Port 3306 (MySQL - internal only)
User Mode:
- Ports 8080/8443 (HTTP/HTTPS)
- Other ports same as full install
Cap uses 6-digit verification codes for authentication (no passwords required).
- Visit your Cap instance URL
- Click "Login with email" and enter your email address
- Get the 6-digit code from server logs:
# Full Install Mode: /opt/cap/cap-get-login.sh # User Mode: ~/cap/cap-get-login.sh
- Enter the code on the verification page
Example code output:
π VERIFICATION CODE (Development Mode)
π§ Email: your@email.com
π’ Code: 744381
β± Expires in: 10 minutes
- Visit your Cap instance URL
- Click "Login with email" and enter your email address
- Check your email for the 6-digit verification code
- Enter the code on the verification page
Full Install Mode:
Physical: /var/lib/docker/volumes/cap_cap-minio-data/_data
Access via: MinIO Console
User Mode:
Physical: /var/lib/docker/volumes/cap_cap-minio-data/_data
Access via: MinIO Console
Full Install:
- URL:
http://your-server.com/minio-console
User Mode:
- URL:
http://your-server.com:8080/minio-console
Credentials: Found in your credentials file
The installer creates helper scripts for easy management:
Full Install Mode:
/opt/cap/cap-start.sh # Start all services
/opt/cap/cap-stop.sh # Stop all services
/opt/cap/cap-restart.sh # Restart all services
/opt/cap/cap-logs.sh # View logs
/opt/cap/cap-get-login.sh # Get magic login linkUser Mode:
~/cap/cap-start.sh # Start all services
~/cap/cap-stop.sh # Stop all services
~/cap/cap-restart.sh # Restart all services
~/cap/cap-logs.sh # View logs
~/cap/cap-get-login.sh # Get magic login linkRe-run installer for management menu:
# Full mode:
sudo bash cap-install.sh
# User mode:
bash cap-install.sh-
Point your domain to server:
- Type:
A - Name:
@(or subdomain) - Value: Your server IP
- TTL:
300
- Type:
-
Enable SSL during installation:
Enable SSL? [y/N]: y Email for Let's Encrypt: your@email.com -
SSL certificate renews automatically via certbot
- No DNS setup needed
- SSL/HTTPS not available
- Access via:
http://your-ip - User mode adds port:
http://your-ip:8080
All credentials are saved securely:
Full Install: /opt/cap/credentials.txt
User Mode: ~/cap/credentials.txt
Security measures:
- β Permissions: 600 (owner read/write only)
- β Not web-accessible (outside web root)
- β Nginx has no file serving
- β Contains: Database, MinIO, and application secrets
View credentials:
# Full install:
sudo cat /opt/cap/credentials.txt
# User mode:
cat ~/cap/credentials.txtThe script automatically configures all required variables:
Database:
DATABASE_URL- MySQL connection string- Auto-generated secure passwords
Application:
WEB_URL- Your access URLNEXTAUTH_SECRET- Authentication secretNODE_ENV- Set to production
S3 Storage:
CAP_AWS_BUCKET- Storage bucket nameCAP_AWS_REGION- Region (works with MinIO)S3_ENDPOINT- MinIO endpoint- Auto-generated access keys
Configure during installation or add later:
- Create account at resend.com
- Get API key
- Set environment variables:
RESEND_API_KEY=your_api_key RESEND_FROM_DOMAIN=your-domain.com
Check service status:
# Full install:
cd /opt/cap && docker compose ps
# User mode:
cd ~/cap && docker compose psView logs:
# Full install:
/opt/cap/cap-logs.sh
# User mode:
~/cap/cap-logs.shClean restart:
# Full install:
cd /opt/cap
docker compose down -v
docker compose up -d
# User mode:
cd ~/cap
docker compose down -v
docker compose up -dFull Install (ports 80/443):
- Check for Apache/nginx:
sudo systemctl status apache2 nginx - Stop conflicting services:
sudo systemctl stop apache2
User Mode (ports 8080/8443):
- Check port usage:
ss -tulpn | grep 8080 - Change ports in
docker-compose.ymlif needed
Full Install:
- UFW:
sudo ufw status - Firewalld:
sudo firewall-cmd --list-all
User Mode:
- Manually allow ports:
sudo ufw allow 8080/tcp
New users? Check out the FAQ.md for answers to common questions:
- What do I need before running the script?
- Where are my recordings saved?
- How do I login to Cap.so?
- Do I need email configured?
- How do I backup my recordings?
- And many more!
- FAQ.md - Frequently Asked Questions
- QUICK_START.md - Quick Reference Guide
- Cap.so Official Documentation
- Cap.so GitHub Repository
- Self-Hosting Guide
- Docker Documentation
To update to the latest version:
# Full install:
cd /opt/cap
docker compose pull
docker compose up -d
# User mode:
cd ~/cap
docker compose pull
docker compose up -dFull Install:
cd /opt/cap
docker compose down -v
sudo rm -rf /opt/cap
# Remove firewall rules if neededUser Mode:
cd ~/cap
docker compose down -v
rm -rf ~/cap# Run installer
sudo bash cap-install.sh
# Press Enter to use detected IP
# Choose no for SSL (IP addresses don't support SSL)
# Choose no for email (view links in logs)
# Access at: http://YOUR_IP
# Login link: /opt/cap/cap-get-login.sh# First, point your domain to server IP
# Then run installer
sudo bash cap-install.sh
# Enter your domain: cap.example.com
# Enable SSL: y
# Email: admin@example.com
# Enable Resend: y (optional)
# Access at: https://cap.example.com# Ensure you're in docker group
sudo usermod -aG docker $USER
# Logout and login
# Run installer
bash cap-install.sh
# Choose mode: 1 (User Mode)
# Press Enter to use IP
# No SSL needed for development
# Access at: http://YOUR_IP:8080
# Login link: ~/cap/cap-get-login.shContributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
- Cap.so - CapSoftware
- Inspired by - WireGuard Installer
- Issues: GitHub Issues
- Cap.so Discord: Join Community
- Documentation: cap.so/docs
If this installer saved you time, please consider:
- β Star this repository to help others discover it
- π Report issues to help improve the installer
- π’ Share with others who might benefit
- π€ Contribute improvements via pull requests
Made with β€οΈ for the self-hosting community
π Repository: https://github.com/webvijayi/cap-install