# OpenCut
OpenCut is an open-source video editing and audio processing platform.
Prerequisites
Before deploying OpenCut, you need to:
- Visit FreeSound.org and create an account
- Create an API application in your account settings to get your client ID and API key
- Build the OpenCut web image from source (see OpenCut GitHub)
Quick Start
-
Copy the example environment file:
cp .env.example .env -
Required Configuration - Edit
.envand set these mandatory variables:POSTGRES_PASSWORD: Database password (change from default!)SERVERLESS_REDIS_HTTP_TOKEN: Random token for Redis HTTP interfaceOPENCUT_BETTER_AUTH_SECRET: Random secret key for authenticationOPENCUT_FREESOUND_CLIENT_ID: Your FreeSound client IDOPENCUT_FREESOUND_API_KEY: Your FreeSound API key
-
Optional Configuration - For transcription features, set:
OPENCUT_CLOUDFLARE_ACCOUNT_IDOPENCUT_R2_ACCESS_KEY_IDOPENCUT_R2_SECRET_ACCESS_KEYOPENCUT_R2_BUCKET_NAMEOPENCUT_MODAL_TRANSCRIPTION_URL
-
Start the service:
docker compose up -d -
Access the web interface at http://localhost:3100
Services
web: The OpenCut web applicationdb: PostgreSQL databaseredis: Redis cacheserverless-redis-http: Redis HTTP interface for Upstash compatibility
Configuration
Version Configuration
POSTGRES_VERSION: PostgreSQL version, default is17REDIS_VERSION: Redis version, default is7-alpineSERVERLESS_REDIS_HTTP_VERSION: Serverless Redis HTTP version, default islatestOPENCUT_WEB_IMAGE: OpenCut web image name, default isopencut/web:latest
Port Configuration
POSTGRES_PORT_OVERRIDE: PostgreSQL host port, default is5432REDIS_PORT_OVERRIDE: Redis host port, default is6379SERVERLESS_REDIS_HTTP_PORT_OVERRIDE: Redis HTTP interface host port, default is8079OPENCUT_WEB_PORT_OVERRIDE: Web application host port, default is3100
Database Configuration
POSTGRES_USER: Database username, default isopencutPOSTGRES_PASSWORD: Database password, requiredPOSTGRES_DB: Database name, default isopencut
Redis Configuration
SERVERLESS_REDIS_HTTP_TOKEN: Token for Redis HTTP interface, required
Application Configuration
TZ: Timezone, default isUTCOPENCUT_BETTER_AUTH_URL: Auth service URL, default ishttp://localhost:3100OPENCUT_BETTER_AUTH_SECRET: Auth secret key, requiredOPENCUT_FREESOUND_CLIENT_ID: FreeSound client ID, requiredOPENCUT_FREESOUND_API_KEY: FreeSound API key, required
Optional Transcription Configuration
Leave these blank to disable auto-captioning:
OPENCUT_CLOUDFLARE_ACCOUNT_ID: Cloudflare account IDOPENCUT_R2_ACCESS_KEY_ID: R2 access key IDOPENCUT_R2_SECRET_ACCESS_KEY: R2 secret access keyOPENCUT_R2_BUCKET_NAME: R2 bucket nameOPENCUT_MODAL_TRANSCRIPTION_URL: Modal transcription service URL
Volumes
postgres_data: PostgreSQL data storage
Resource Limits
| Service | CPU Limit | Memory Limit | CPU Reserved | Memory Reserved |
|---|---|---|---|---|
| web | 2.00 | 2G | 0.50 | 512M |
| db | 2.00 | 1G | 0.50 | 256M |
| redis | 1.00 | 512M | 0.25 | 128M |
| serverless-redis-http | 1.00 | 256M | 0.25 | 64M |
Security Notes
⚠️ Important Security Recommendations:
- Change all default passwords and secrets before deploying to production
- Use strong, randomly generated values for:
POSTGRES_PASSWORDSERVERLESS_REDIS_HTTP_TOKENOPENCUT_BETTER_AUTH_SECRET
- Never commit
.envfile with real credentials to version control - Consider setting up a reverse proxy with HTTPS for external access
- Restrict database and Redis ports to internal network in production
- Keep the FreeSound API keys secure
Building from Source
Since OpenCut doesn't provide pre-built Docker images, you need to build it yourself:
# Clone the OpenCut repository
git clone https://github.com/OpenCut-app/OpenCut.git
cd OpenCut
# Build the web image
docker build -t opencut/web:latest -f apps/web/Dockerfile .
# Return to your compose directory and start services
cd /path/to/compose-anything/src/opencut
docker compose up -d
Reference
License
Please refer to the official OpenCut project for license information.