DocumentationSelf Hosting

Self-Hosting

oJo provides an open-source, self-hosted version that gives you complete control over your HTML-to-image generation infrastructure. Perfect for developers, agencies, and organizations who need dynamic image generation with full data sovereignty for personal and internal business use.

Overview

The self-hosted version provides the same powerful HTML-to-image conversion capabilities as the hosted oJo service, but runs entirely on your own infrastructure. You get:

  • 🎨 Complete HTML/CSS/JS support with custom fonts and libraries
  • 📱 Template system with dynamic variables
  • 🐳 Docker-ready deployment with compose files
  • 💾 S3-compatible storage integration
  • 🔒 Full data control and privacy
  • 🚀 REST API compatible with hosted oJo

Prerequisites

Before installing oJo Self-Host, ensure you have:

  • Docker and Docker Compose installed
  • S3-compatible storage (AWS S3, Cloudflare R2, MinIO, etc.)
  • PostgreSQL database (included in Docker setup)

For development:

  • Node.js 18+ and pnpm package manager

Quick Start

1. Clone Repository

git clone https://github.com/ojodotso/self-host.git
cd self-host

2. Configure Environment

Copy the Docker Compose file:

cp docker-compose.yml docker-compose.local.yml

Edit docker-compose.local.yml with your configuration:

environment:
  # API Authentication
  ADMIN_TOKEN: your-secret-admin-token
 
  # S3 Storage Configuration
  BLOB_STORAGE_CLIENT_ENDPOINT: https://your-s3-endpoint.com
  BLOB_STORAGE_ACCESS_KEY: your-access-key
  BLOB_STORAGE_SECRET_KEY: your-secret-key
  BLOB_STORAGE_BUCKET_NAME: your-bucket-name

3. Start Services

docker-compose -f docker-compose.local.yml up -d

4. Verify Installation

curl http://localhost:3011/health

Your oJo instance will be available at http://localhost:3011 🎉

For further configuration, refer to the self-host documentation.

License

oJo Self-Host is licensed under the Sustainable Use License:

  • Free for personal use
  • Free for internal business use
  • Free non-commercial distribution
  • No commercial redistribution or SaaS offerings

For commercial use cases, consider ojo.so.