Skip to main content

Prerequisites

  • Docker (version 20.x or higher)

Quick Start

Installation

docker pull openinary/openinary:latest
Full mode with dashboard and API:
docker run -d -p 3000:3000 \
  -v openinary-cache:/app/apps/api/cache \
  -v openinary-public:/app/apps/api/public \
  -v openinary-db:/app/data \
  openinary/openinary:latest

Initial Setup

Normal mode (Dashboard + API):
  1. Open http://localhost:3000
  2. Visit /setup to create admin account
  3. Go to /api-keys to generate an API key
Your Openinary instance is operational.

Test with Sample Files

Sample files are available in the container at /app/apps/api/public/ for testing:
  • example-loan.jpg - Test image transformations
  • example-rahime-gul.mp4 - Test video transformations

Connecting External S3-Compatible Storage

By default, Openinary uses local file storage. For production or to use cloud storage, you can configure environment variables to connect to any S3-compatible storage provider (AWS S3, Cloudflare R2, DigitalOcean Spaces, Minio, and more). See the Storage configuration page for detailed setup instructions.

Development Mode (Alternative)

If you prefer to run in development mode without Docker:
# Clone the repo
git clone https://github.com/openinary/openinary.git && cd openinary

# Install dependencies
pnpm install

# Start development servers
pnpm dev
Development URLs will be the same (API: http://localhost:3000, Frontend: http://localhost:3001)
Volume Persistence: When deploying to production, ensure all three Docker volumes are properly persisted across deployments:
  • openinary-db - Contains database file (admin account, API keys)
  • openinary-public - Contains uploaded files and media
  • openinary-cache - Contains cached transformations
If any of these volumes are removed or recreated during deployment, the corresponding data will be lost. For production environments, consider using cloud storage (S3 or R2) for better reliability and scalability.