Skip to content

Repository files navigation

FFmpegLab Server

Supabase

FFmpegLab Server is the API backend for the FFmpegLab ecosystem. It handles render job management, project configuration, and media processing orchestration.


Quick Start

# Clone and configure
git clone https://github.com/ffmpeglab/server.git
cd server
cp .env.example .env

# Edit .env with your database credentials
nano .env

# Start all services
docker compose up -d

The server will be available at http://localhost:3000.


Services

Service Description Port
api Main API server 3000
render-runner Executes FFmpeg rendering jobs -
file-runner Handles file operations with S3 -
logs-runner Processes logs -

Powered by Supabase

FFmpegLab Server is built on Supabase — the open-source Firebase alternative — as a full-cycle provider for all backend services:

Service Provider Description
PostgreSQL Supabase Primary database with Row Level Security (RLS)
pgmq Supabase Job queue for asynchronous render processing
S3-compatible Storage Supabase File storage for media assets and rendered output
REST API Supabase Auto-generated REST API with JWT authentication
API Keys Supabase User-managed API keys with role-based access
Logs Supabase Centralized logging with retention policies

Database Schema & Models

The server uses TypeORM with models defined in src/models/:

Model Description
Render Render job tracking and status
ApiKey API key management with permissions
LogPiece System and user activity logs

Configuration

Minimal .env file

# Database
DB_HOST=postgres
DB_USER=postgres
DB_PORT=5432
DB_PASSWORD=your_password
DB_NAME=ffmpeglab

# Queue Database (can be the same as DB_HOST)
QUEUE_DB_HOST=postgres
QUEUE_DB_USER=postgres
QUEUE_DB_PORT=5432
QUEUE_DB_PASSWORD=your_password
QUEUE_DB_NAME=ffmpeglab_queue

# S3 Storage (required for file-runner)
S3_ACCESS_KEY=your_access_key
S3_SECRET_KEY=your_secret_key
S3_REGION=us-east-1
S3_ENDPOINT=https://s3.amazonaws.com

Environment Variables

Variable Description Required
DB_HOST PostgreSQL host Yes
DB_USER PostgreSQL user Yes
DB_PASSWORD PostgreSQL password Yes
DB_NAME PostgreSQL database name Yes
QUEUE_DB_HOST Queue PostgreSQL host Yes
QUEUE_DB_NAME Queue PostgreSQL database name Yes
S3_ACCESS_KEY S3 access key For file-runner
S3_SECRET_KEY S3 secret key For file-runner
DB_MIGRATION_ENABLED Auto-run migrations No (default: false)
IS_RENDER_RUNNER Enable render runner mode For render-runner
IS_FILE_RUNNER Enable file runner mode For file-runner
IS_LOGS_RUNNER Enable logs runner mode For logs-runner

API Reference

Full API documentation: api.ffmpeglab.com/api

Request/Response Objects

All schemas are defined in the OpenAPI specification. Key models from src/models/:

Schema Model Description Link
EditorProjectConfiguration Project Full editor project configuration View
EditorProject Project Project metadata View
RenderData Render Render job data View
RenderDto Render Render data transfer object View
RunDto Render Run execution request View
RenderResponse Render API response for render operations View
EditorLayer Project Individual editor layer View
EncoderProject Project Encoder project configuration View
Media Project Media file metadata View

Common Endpoints

Method Endpoint Description Model
GET / Health check -
GET /renders List all renders Render[]
POST /renders Create a render job Render
GET /renders/{id} Get render by ID Render
PUT /renders/run Trigger render execution RunDto

Build from Source

npm install
npm run build
npm start

License

MIT


Links


Open source and self‑hostable. Powered by Supabase.

About

the api and runner for ffmpeglab

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages