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.

GitHub
spis logo

Self-host spis

v0.15.2

Lightweight private image gallery server

BetaOpen SourceGPL-3.0
Updated11 hours ago
LanguageRust
Setup difficultyModerate
MobilePWA
Stars
211
Port
8080 (HTTP server)
Requires
Nginx
Docker
ghcr.io/gbbirkisson/spis
Install with Docker

What is spis?

spis (Simple Private Image Server) is a lightweight, fast media gallery server for self-hosting photos and videos. It serves media through a web UI with endless scrolling, favorites, slideshows, and filtering by year, month, or subdirectory. The server requires no database — it scans a media directory and stores thumbnails and metadata in a local data directory. A separate web server (like nginx) handles media streaming and caching, while spis provides the API and UI. It runs as a Docker container or a standalone binary with systemd, and works well on low-power devices like a Raspberry Pi CM4 hosting 40,000 images. The UI is a progressive web app installable on mobile and desktop. Custom commands let users run scripts on selected files from the interface. Configuration uses TOML, CLI flags, or environment variables. Video support requires ffmpeg/ffprobe. The project is licensed under GPL-3.0.

Should you self-host spis?

spis scores 44/100 on selfhost.directory (how scoring works) and ranks #34 of 41 in Photo Management. It has 211 GitHub stars.

It shipped 13 stable releases in the past year. The latest, v0.15.2, came out on 16 October 2026. New versions land roughly every 1 days.

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

Its closest alternative on selfhost.directory is Ente (81/100, 29 693 stars). It scores higher overall, so compare the two before you pick. See spis vs Ente side by side.

Features

  • Custom Commands
  • Endless scrolling
  • Favorites
  • Filtering
  • Instant loading
  • Multi-select
  • No Database Required
  • Progressive Web App
  • Slideshows
  • Video supportRequires ffmpeg and ffprobe in PATH

spis README

How to install spis

Install spis with Docker

Docker
Environment variables
SPIS_PROCESSING_SCHEDULE, SPIS_PROCESSING_RUN_ON_START, SPIS_FEATURE_FAVORITE, SPIS_FEATURE_ARCHIVE, SPIS_FEATURE_FOLLOW_SYMLINKS, RUST_LOG

docker run -it
-p 8080:8080
-v /path/to/your/media:/var/lib/spis/media
-v /path/to/save/data:/var/lib/spis/data
ghcr.io/gbbirkisson/spis

Easiest way to run spis

How to configure spis

  • SPIS_API_MEDIA_PATH/assets/mediaPath webserver will serve media on

    Path webserver will serve media on

  • SPIS_API_THUMBNAIL_PATH/assets/thumbnailsPath webserver will serve thumbnails on

    Path webserver will serve thumbnails on

  • SPIS_DATA_DIRPath to store data (database, thumbnails)

    Path to store data (database, thumbnails)

  • SPIS_FEATURE_ARCHIVEtrueEnable archive feature

    Enable archive feature

  • SPIS_FEATURE_DELETE_ON_ARCHIVEfalseDelete file when archived

    Delete file when archived

  • SPIS_FEATURE_FAVORITEtrueEnable favorite feature

    Enable favorite feature

  • SPIS_FEATURE_FOLLOW_SYMLINKStrueFollow symbolic links when scanning

    Follow symbolic links when scanning

  • SPIS_FEATURE_NO_EXIFtrueAllow processing files without EXIF data

    Allow processing files without EXIF data

  • SPIS_MEDIA_DIRPath to search for media files

    Path to search for media files

  • SPIS_PROCESSING_RUN_ON_STARTfalseRun processing on startup

    Run processing on startup

  • SPIS_PROCESSING_SCHEDULE0 0 2 * * *Cron schedule to run processing on

    Cron schedule to run processing on

  • SPIS_SERVER_ADDRESSListen to address (e.g., '0.0.0.0:8080')

    Listen to address (e.g., '0.0.0.0:8080')

  • SPIS_SERVER_SOCKETListen to UNIX socket path

    Listen to UNIX socket path

  • SPIS_SLIDESHOW_DURATION_SECONDS5Slideshow duration in seconds

    Slideshow duration in seconds

spis releases & version history

More in Photo Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…