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
Use cloud storage instead of local file storage:docker run -d -p 3000:3000 \
-v openinary-db:/app/data \
-e STORAGE_REGION=us-east-1 \
-e STORAGE_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX \
-e STORAGE_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
-e STORAGE_BUCKET_NAME=openinary-filebase \
-e STORAGE_ENDPOINT=https://s3.filebase.com/ \
openinary/openinary:latest
Standalone API mode (auto-generates API key):docker pull openinary/openinary-api:latest
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 \
-e MODE=api \
openinary/openinary-api:latest
Important: The generated API key will appear in the Docker container logs. Check the logs with docker logs <container-id> and copy and save this key! It will not be displayed again.
Initial Setup
Normal mode (Dashboard + API):
- Open http://localhost:3000
- Visit
/setup to create admin account
- 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.