selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

imagor-studio logo

Self-host imagor-studio

v1.2.4

Image gallery with layered editing for self-hosting

ReleaseOpen CoreAGPL-3.0
Updated8 hours ago
LanguageTypescript
Setup difficultyModerate
MobileResponsive
Stars
231
Port
8000 (HTTP web server)
Requires
libvips / ImageMagick / FFmpeg (bundled in Docker image), SQLite (embedded, default)
Docker
shumc/imagor-studio
Install with Docker
Imagor Studio gallery interface with virtual scrolling and folder navigationImagor Studio multi-layer editor with preview and transformation controlsImagor Studio reusable templates panel showing saved JSON templates

What is imagor-studio?

Imagor Studio is an open-source image gallery and editing workspace you run on your own hardware. It lets you browse thousands of photos instantly using virtual scrolling, organize them with drag-and-drop folder management, and build layered edits with live preview. Every change happens through generated URLs — source files stay untouched while transformed versions are created on demand via the imagor processing engine. You can save layered edits as reusable JSON templates and apply them across your collection. The app works with local folders, Amazon S3, MinIO, Cloudflare R2, and similar S3-compatible services. It runs as a single Docker container (shumc/imagor-studio) with embedded SQLite by default, or PostgreSQL/MySQL for production clusters. Authentication uses JWT with optional guest read-only access. Licensed AGPL-3.0 with a paid Early Bird tier ($39) that unlocks branding options. No native mobile apps, but the web interface is responsive with touch support.

Should you self-host imagor-studio?

imagor-studio scores 47/100 on selfhost.directory (how scoring works) and ranks #13 of 19 in Photo Galleries. It has 231 GitHub stars.

It shipped 6 stable releases in the past year. The latest, v1.2.4, came out on 2 August 2026. New versions land roughly every 3 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Immich (93/100, 117 490 stars). It scores higher overall, so compare the two before you pick. See imagor-studio vs Immich side by side.

Features

  • Branding customizationRequires paid Early Bird license ($39) to activate
  • Drag-and-drop management
  • Edit history with undo/redo
  • Layered image editing
  • Multi-layer compositing
  • Non-destructive editing
  • REST API
  • Universal storage support
  • URL-based transformations
  • Virtual scrolling gallery

imagor-studio README

How to install imagor-studio

Install imagor-studio with Docker

Environment variables
DATABASE_URL, PORT, JWT_SECRET, JWT_EXPIRATION, STORAGE_TYPE, S3_BUCKET, S3_REGION, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, PUID, PGID, ALLOW_GUEST_MODE, LICENSE_KEY, APP_TITLE, APP_URL

docker run -p 8000:8000 --rm
-v $(pwd)/imagor-studio-data:/app/data
-v ~/Pictures:/app/gallery
-e DATABASE_URL="sqlite:///app/data/imagor-studio.db"
shumc/imagor-studio

Mounts your image directory as read-only, creates persistent SQLite storage, redirects to admin setup on first launch

How to configure imagor-studio

  • ALLOW_GUEST_MODEfalseAllow guest read-only access

    Allow guest read-only access

    values: true, false

  • APP_TITLEImagor StudioCustom application title (requires license)

    Custom application title (requires license)

  • APP_URLhttps://imagor.netCustom application URL (requires license)

    Custom application URL (requires license)

  • AWS_ACCESS_KEY_IDAWS access key ID

    AWS access key ID

  • AWS_REGIONAWS region

    AWS region

  • AWS_SECRET_ACCESS_KEYAWS secret access key

    AWS secret access key

  • DATABASE_URLsqlite:./imagor-studio.dbDatabase connection string

    Database connection string

    values: sqlite:./imagor-studio.db, sqlite::memory:, postgres://..., mysql://...

  • DB_CONN_MAX_IDLE_TIME5mMaximum PostgreSQL connection idle time

    Maximum PostgreSQL connection idle time

  • DB_CONN_MAX_LIFETIME30mMaximum PostgreSQL connection lifetime

    Maximum PostgreSQL connection lifetime

  • DB_MAX_IDLE_CONNS5Maximum PostgreSQL idle connections per app process

    Maximum PostgreSQL idle connections per app process

  • DB_MAX_OPEN_CONNS25Maximum PostgreSQL open connections per app process

    Maximum PostgreSQL open connections per app process

  • FILE_STORAGE_BASE_DIR/app/galleryBase directory for images (file storage)

    Base directory for images (file storage)

  • FILE_STORAGE_MKDIR_PERMISSIONS0755Directory creation permissions

    Directory creation permissions

  • FILE_STORAGE_WRITE_PERMISSIONS0644File write permissions

    File write permissions

  • JWT_EXPIRATION168h (7 days)Token expiration

    Token expiration

  • JWT_SECRETAuto-generatedSecret key for JWT signing (auto-generated if not provided)

    Secret key for JWT signing (auto-generated if not provided)

  • LICENSE_KEYLicense key for branding customization

    License key for branding customization

  • PGID65534Process Group ID for file ownership

    Process Group ID for file ownership

  • PORT8000Server port

    Server port

  • PUID65534Process User ID for file ownership

    Process User ID for file ownership

  • S3_STORAGE_BUCKETS3 bucket name

    S3 bucket name

  • STORAGE_TYPEfileStorage backend type

    Storage backend type

    values: file, s3

imagor-studio releases & version history

More in Photo Galleries

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…