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.

iipsrv logo

Self-host iipsrv

iipsrv-1.3

High-performance image server for streaming gigapixel images

ReleaseOpen SourceGPL-3.0
Updated6 days ago
LanguageC++
Setup difficultyAdvanced
Stars
326
Port
9000 (FastCGI listener)
Docker
iipsrv/iipsrv
Install with Docker

What is iipsrv?

iipsrv (IIPImage Server) is a high-performance image server built for streaming and zooming ultra high-resolution images up to terabyte scale. It uses tile-based streaming to enable real-time navigation of gigapixel images with minimal hardware requirements. The server handles TIFF, JPEG2000, and JPEG input with 1-32 bits per channel, CIELAB colorimetric data, multispectral imaging, and image stacks. It implements IIIF Image API, IIP, Zoomify, and DeepZoom protocols for compatibility with viewers like OpenSeaDragon, Mirador, and UniversalViewer. Deployment options include Docker, system packages (apt, apk, yum), binary downloads for Windows, macOS, and Solaris, or compilation from source. The server runs as a FastCGI process behind Apache, Nginx, Lighttpd, or IIS. Features include dynamic watermarking, Memcached caching, secure derivative-only delivery, and output in several raster formats. Licensed under GPL-3.0 with version 1.3 released in May 2025.

Should you self-host iipsrv?

iipsrv scores 52/100 on selfhost.directory (how scoring works) and ranks #9 of 13 in Image Processing. It has 326 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is GPL-3.0-licensed and written mostly in C++.

Its closest alternative on selfhost.directory is Rembg (78/100, 25 214 stars). It scores higher overall, so compare the two before you pick. See iipsrv vs Rembg side by side.

Features

  • CIELAB color space
  • DeepZoom protocol support
  • Dynamic watermarking
  • FastCGI deployment
  • High bit-depth support
  • ICC profile support
  • IIIF Image API support
  • IIP (Internet Imaging Protocol) support
  • Image stacks
  • Multiple Output Formats
  • Multispectral imaging
  • Panoramic 3D object sequences
  • Secure image distribution
  • Zoomify protocol support

iipsrv README

How to install iipsrv

Install iipsrv with Docker

Environment variables
Configuration via environment variables (LOGFILE, VERBOSITY, JPEG_QUALITY, etc.)

docker pull iipsrv/iipsrv docker run -it -p 9000:9000 -p 8080:80 -v /home/images/:/images --rm iipsrv/iipsrv

Official Docker image from Docker Hub

How to configure iipsrv

  • ALLOW_UPSCALING1Allow rendering images larger than source (0=prevent, 1=allow).

    Allow rendering images larger than source (0=prevent, 1=allow).

    values: 0 or 1

  • BASE_URLPublic base URL for metadata responses (e.g., IIIF).

    Public base URL for metadata responses (e.g., IIIF).

    values: URL

  • CACHE_CONTROLmax-age=86400HTTP Cache-Control header value.

    HTTP Cache-Control header value.

    values: cache directives

  • CODEC_PASSTHROUGH1Enable pre-encoded tile pass-through (1=on, 0=off).

    Enable pre-encoded tile pass-through (1=on, 0=off).

    values: 0 or 1

  • COPYRIGHTGlobal copyright/rights statement.

    Global copyright/rights statement.

    values: string

  • CORSCross Origin Resource Sharing setting for AJAX requests.

    Cross Origin Resource Sharing setting for AJAX requests.

    values: "*" or domain

  • DECODER_MODULESComma-separated list of external decoder modules.

    Comma-separated list of external decoder modules.

    values: module names

  • EMBED_ICC1Embed ICC profile in output (0=strip, 1=embed).

    Embed ICC profile in output (0=strip, 1=embed).

    values: 0 or 1

  • FILENAME_PATTERN_pyr_Pattern for multispectral or 3D panoramic image sequences.

    Pattern for multispectral or 3D panoramic image sequences.

    values: pattern string

  • FILESYSTEM_PREFIXPrefix added to file system paths for security.

    Prefix added to file system paths for security.

    values: path

  • FILESYSTEM_SUFFIXSuffix added to file system paths.

    Suffix added to file system paths.

    values: suffix

  • IIIF_DELIMITERDelimiter for page/slice selection in IIIF requests.

    Delimiter for page/slice selection in IIIF requests.

    values: character or string

  • IIIF_EXTRA_INFOExtra JSON field for IIIF info.json responses.

    Extra JSON field for IIIF info.json responses.

    values: JSON key:value

  • IIIF_VERSION3Major IIIF Image API version (2 or 3).

    Major IIIF Image API version (2 or 3).

    values: 2 or 3

  • INTERPOLATION1Interpolation method for rescaling (0=nearest neighbor, 1=bilinear).

    Interpolation method for rescaling (0=nearest neighbor, 1=bilinear).

    values: 0 or 1

  • JPEG_QUALITY75Default JPEG quality factor for compression (1-100).

    Default JPEG quality factor for compression (1-100).

    values: 1-100

  • KAKADU_READMODE0Kakadu JPEG2000 read mode (0=fast, 1=fussy, 2=resilient).

    Kakadu JPEG2000 read mode (0=fast, 1=fussy, 2=resilient).

    values: 0, 1, or 2

  • LOGFILEThe log file the module will write to. Use "syslog" for syslog logging.

    The log file the module will write to. Use "syslog" for syslog logging.

    values: file path or "syslog"

  • MAX_CVT5000Maximum image dimensions in pixels for dynamic export.

    Maximum image dimensions in pixels for dynamic export.

    values: pixels

  • MAX_IMAGE_CACHE_SIZE10Max image cache size in MB for compressed JPEG tiles.

    Max image cache size in MB for compressed JPEG tiles.

    values: MB

  • MAX_LAYERShalf of available layersMaximum quality layers to decode for JPEG2000.

    Maximum quality layers to decode for JPEG2000.

    values: integer or -1 for all

  • MEMCACHED_SERVERSComma-delimited list of memcached servers with optional ports.

    Comma-delimited list of memcached servers with optional ports.

    values: host:port list

  • MEMCACHED_TIMEOUT86400Cache freshness time in seconds.

    Cache freshness time in seconds.

    values: seconds

  • OMP_NUM_THREADSall availableNumber of OpenMP threads for image processing.

    Number of OpenMP threads for image processing.

    values: integer

  • PNG_QUALITY1Default PNG quality factor for compression (1-9).

    Default PNG quality factor for compression (1-9).

    values: 1-9

  • URI_MAPMap URL prefix to protocol (e.g., "iiif=>IIIF").

    Map URL prefix to protocol (e.g., "iiif=>IIIF").

    values: prefix=>protocol

  • VERBOSITY0The level of logging (0=none, 1=minimal, 2=debug, 3=more debug, 6=very verbose).

    The level of logging (0=none, 1=minimal, 2=debug, 3=more debug, 6=very verbose).

    values: 0-6

  • WATERMARKTIFF image to use as watermark file.

    TIFF image to use as watermark file.

    values: file path

  • WATERMARK_OPACITYOpacity of watermark (0-1).

    Opacity of watermark (0-1).

    values: 0-1

  • WATERMARK_PROBABILITYProbability that a tile will have a watermark (0=never, 1=always).

    Probability that a tile will have a watermark (0=never, 1=always).

    values: 0-1

  • WEBP_QUALITY50Default WebP quality factor for compression (0-100).

    Default WebP quality factor for compression (0-100).

    values: 0-100

iipsrv releases & version history

More in Image Processing

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…