Categories
photography self-hosted

Best Self-Hosted Photo Gallery Apps to Display and Sell (2026)

I tested ten self-hosted photo gallery apps for selling licences, delivering client galleries and building a portfolio, and ranked them by job.

I have a collection of landscape photographs that I want to display, and on the off chance that someone wants to use one, I sell the high-resolution file and a licence.

I prefer self-hosting, so I tested the main open-source apps locally with Docker Compose to see what these tools have to offer.

TL;DR

There is no overall winner, but for each job there is a clear winner. The apps are built for different jobs, so I have grouped them by purpose and ordered them best to worst within each category.

Selling photos (shop-first)

  1. WordPress + Easy Digital Downloads – the only mature self-hosted option for selling digital files and licences properly. The gallery is whatever you build in the theme.
  2. PicPeak – the strongest client/event delivery platform, with optional priced galleries and card checkout through Snipcart. Excellent client workflow.

Public portfolio galleries (display-first)

  1. Lychee – clean, fast and light. Watermarking is a paid Supporter Edition feature. No commerce.
  2. Piwigo – mature and themeable, with built-in resizing and watermarking. The admin and themes feel dated, and checkout is a dated PayPal plugin.
  3. Zenphoto – a media CMS with solid built-in resizing and watermarking. Old-school admin, no HEIC out of the box, and no commerce.
  4. Chevereto – the ideal solution if you want a multi-tenant platform like Tumblr.

Personal and family photo libraries

  1. Immich – the best self-hosted Google Photos replacement: mobile backup, multi-user, faces, OCR and smart search. PostgreSQL only, and heavy.
  2. PhotoPrism – excellent AI labelling and search, but a library rather than a portfolio. PostgreSQL is experimental, preview builds only.

Folder-first archives and studio tools

  1. Photoview – a folder-based gallery with multiple users and share links. No public site, watermarking or commerce.
  2. Lumio – a filesystem-first catalogue with a genuinely good non-destructive editor and public share links. Single owner, experimental, and no licence file.

The web apps

All apps were tested in late July 2026 on a local laptop, each using its Docker Compose setup.

Some apps were skipped because they require payment (they may still be good and fit for purpose): Symbiostock, Sunshine Photo Cart, Backlight 6 and Photopress.

WordPress + Easy Digital Downloads

  • The most complete self-hosted route for selling digital files and licences.
  • Built with PHP; requires MySQL or MariaDB.
  • Single site, but multi-user accounts are possible.
  • Display is not included: you need a theme and gallery patterns. Requires customisation.
  • The Easy Digital Downloads plugin handles products, cart, checkout, licence acceptance and tokenised delivery. Manual bank transfer needs a small custom gateway.
  • Many plugins and integrations, which is both the strength and the maintenance cost.

Best for: selling high-resolution files and licences, especially with manual EFT.
Watch out: the gallery experience is only as good as the theme you build.

WordPress gallery
WordPress site

PicPeak

  • Self-hosted client and event gallery platform, with a public landing page and CMS pages.
  • Built with Node.js and Express; React and Tailwind on the front end.
  • SQLite in the all-in-one image, or PostgreSQL in the full stack.
  • Per-event galleries with expiry, passwords, downloads and guest uploads.
  • A priced gallery can use a tiled watermark and Snipcart checkout, then email the clean originals.
  • The public landing page and CMS pages are static content; you cannot embed a gallery grid inside them. It requires tedious work.
  • CRM and accounting (quotes, contracts, invoices, expenses) are beta and off by default.

Best for: client/event delivery, with card-based photo sales as an add-on.
Watch out: Snipcart is a third-party, card-only checkout. There is no manual EFT.

PicPeak event
PicPeak admin

Lychee

  • Photo-management tool that can act as a public gallery for a photographer.
  • Built with PHP and Laravel.
  • SQLite, PostgreSQL or MySQL.
  • Public albums, private albums and sharing controls.
  • Watermarking and secure image links require the paid Supporter Edition.
  • Single tenant.
  • No payment integration.
  • Supports HEIC and HTML5 video playback.

Best for: a single photographer who wants a clean, lightweight public gallery.
Watch out: the protection features are paid, and there is no checkout.

Lychee gallery
Lychee admin

Piwigo

  • A mature gallery CMS – “WordPress for photographers”.
  • Built with PHP; requires MySQL or MariaDB.
  • Built-in resizing and watermarking.
  • Many themes and plugins; some themes feel dated.
  • Checkout is a dated PayPal cart plugin, not a modern shop.
  • Metadata is not stripped by default.
  • HEIC is not reliably supported out of the box.

Best for: a large, well-organised public archive.
Watch out: the shop is an afterthought.

Piwigo gallery
Piwigo admin

Zenphoto

  • A standalone media CMS for photographers and artists, with albums, video/audio and the Zenpage plugin for pages and a blog.
  • Built with PHP; supports MySQL and MariaDB only.
  • Built-in resizing and watermarking.
  • Ships without an uploader enabled; you must enable one under Plugins.
  • The site starts in maintenance mode after setup; open it under Overview → Maintenance mode.
  • Old-school admin and a lot of options.
  • No HEIC out of the box.
  • No ecommerce: no cart, checkout or payment gateway.

Best for: a self-contained media site with watermarking built in.
Watch out: the admin is dated and the feature set is broad but idiosyncratic.

Zenphoto gallery
Zenphoto admin

Chevereto

  • Build your own Flickr/Imgur-style media-sharing platform.
  • Built with PHP and Laravel.
  • Requires MySQL or MariaDB.
  • Multi-user by default; true multi-tenancy is optional.
  • No HEIC support.
  • Can strip EXIF metadata on upload.
  • Supports video.
  • No cart. “Stores” are album-level links to an external payment page.

Best for: the best-looking public gallery and community-style sharing.
Watch out: it is a media host, not a shop.

Chevereto gallery
Chevereto admin

Immich

  • A high-performance, self-hosted photo and video backup server – a self-hosted Google Photos.
  • Built with Node.js and NestJS; Svelte web front end; Flutter mobile apps.
  • PostgreSQL only, with Valkey/Redis and a separate machine-learning container.
  • Supports HEIC and video.
  • Mobile background backup, multi-user accounts, albums, partner sharing and album share links.
  • AI: facial recognition, OCR, object/scene matching and smart search.
  • No public portfolio site, watermarking or ecommerce.
  • The most polished UI of the group, and the heaviest stack.

Best for: private original archive and mobile backup.
Watch out: it is not a portfolio, a client gallery or a shop.

Immich timeline

PhotoPrism

  • A self-hosted personal/family photo library with strong AI tools.
  • Built with Go; Vue front end.
  • SQLite and MariaDB/MySQL are supported; PostgreSQL is experimental and only in preview builds.
  • Supports HEIC and video.
  • Automatic labels, faces, places, OCR and smart search.
  • No ecommerce and no watermarking.
  • A library, not a portfolio.

Best for: searching and organising a personal collection.
Watch out: do not choose it as a public portfolio or a shop.

PhotoPrism library
PhotoPrism search

Photoview

  • A folder-based gallery built for photographers with large libraries.
  • Built with Go.
  • MariaDB, PostgreSQL or SQLite.
  • Supports HEIC.
  • Thumbnails are generated for fast browsing; the full-screen view loads the high-resolution original.
  • No watermarking and no low-resolution preview mode.
  • No public gallery site; albums and individual photos can be shared with public links.
  • No ecommerce.

Best for: browsing an existing folder structure and sharing selected albums.
Watch out: it is a viewer, not a storefront and not a protective preview layer.

Photoview album
Photoview photo

Lumio

  • A filesystem-first photo catalogue with a non-destructive editor.
  • Built with Node.js, Next.js and React; Prisma with PostgreSQL only.
  • Supports HEIC (and JXL) through external decoders.
  • Originals stay where they are; Lumio indexes them and generates renditions.
  • Content-hash de-duplication and a genuinely good GPU-accelerated editor.
  • Single owner, no video, no watermarking, no ecommerce.
  • Public share links for selected photos, with optional password and expiry.
  • No licence file upstream; experimental and not safe to ship.

Best for: editing and cataloguing files in place.
Watch out: no licence, no shop, and no live album sharing.

Lumio editor
Lumio gallery

Conclusion

It depends. If you know what you want, there is a clear winner.

  • To sell licences and files with manual EFT: WordPress + Easy Digital Downloads is the only complete option. Budget time for the theme.
  • To deliver client/event galleries and optionally sell by card: PicPeak is the strongest all-in-one.
  • To run a public portfolio without a shop: Lychee for ease and looks, Piwigo or Zenphoto for built-in watermarking and resizing.
  • To run a photo platform for a large user base – Chevereto.
  • To keep a private, searchable archive: Immich.
  • To browse existing folders: Photoview.
  • To edit in place: Lumio, but not in production – there is no licence.

Decide what you need first, then pick the winner for that job.