Version 2.0.3

IPTCgallery 2

A web gallery from folders of captioned photos. Upload a folder of JPEGs by FTP and it's online, with the captions written into the photos (IPTC/XMP) shown next to them.

The gallery as running in a web browser.

No database, no login, no admin area, no code in the photo folders.

Download: the latest version (.zip, from eikonaut.com; every version under Releases).

Install

You need web space with PHP 8 (almost every web host has it) and an FTP app such as Cyberduck or FileZilla.

Keep PHP up to date. On 21 October 2026 PHP fixed two critical flaws (CVE-2026-109618 and CVE-2026-109619) that let anyone run their own code on a server with an older PHP; attacks have been reported (CERT-EU advisory). Use PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12 or newer: your web host's control panel shows the version and usually lets you change it. PHP itself fixed only 8.2 to 8.5; with 8.1 or older, ask your host or move to 8.4.

  1. Unzip the download. You get a folder IPTCGallery-….
  2. Open config.ini in a text editor (TextEdit, Notepad) and put in your name as title, and your email address as contact.
  3. Connect to your web space with the FTP app and upload everything inside the folder: drag the files and the galleries folder, not the folder itself, to where your website lives (often www, htdocs or public_html).
  4. Open your website's address in a browser. It says "No galleries yet": the gallery is installed.

The folder also holds a file named .htaccess that the Mac Finder and Windows Explorer don't show. FTP apps upload it with the rest; it gives your galleries clean addresses.

What's in the folder:

index.php      the whole gallery
.htaccess      clean addresses on Apache (optional)
config.ini     site title, contact, sort order (optional)
style.css      the look: colours, fonts, grid
style-*.css    other looks to choose in config.ini
galleries/     your photo folders go in here
scripts/       an upload script for Eikonaut (see below)

The gallery creates a cache/ folder for thumbnails and captions. You can delete it at any time; it's rebuilt automatically. If thumbnails don't appear, your web host doesn't let PHP write there: give the folder that holds index.php write permission in your FTP app (permissions 755).

Upload a folder of photos into galleries/:

galleries/
  el-hierro/            → example.com/el-hierro/
    001-frontera.jpg    → example.com/el-hierro/001-frontera
    002-restinga.jpg
    info.txt            (optional)
  _for-client/          → unlisted: not on the home page, reachable by its link

What's shown

Shown as Read from (first found)
Title XMP Headline, IIM Headline (2:105), XMP Title, IIM Object Name (2:05)
Caption XMP Description, IIM Caption (2:120)
Date XMP/IIM Date Created, EXIF DateTimeOriginal
Place Sublocation, City, Country
Credit Copyright notice, otherwise "© Creator"

XMP comes first because it's never cut short; IIM fields have length limits. Captions in old files that aren't UTF-8 are converted (see legacy_charset in config.ini).

JPEG, sRGB, about 2400 px on the long edge, quality 80–85. The photos are shown as uploaded; only the thumbnails (800 px, thumbnail_size in config.ini) are made on the server.

From Eikonaut

  1. Make an export preset: JPEG, sRGB, 2400 px, file names with a sequence number ({seq}).
  2. Under "Then run", choose Add Script… and pick scripts/eikonaut-upload-gallery.sh from the download. Then choose Edit Script and fill in your server at the top.
  3. Export into a folder named like the gallery (e.g. el-hierro). After the export the script uploads it to galleries/el-hierro/.

On the page

Without Apache

On nginx or any server without .htaccess, nothing needs configuring: addresses look like ?g=el-hierro&p=001-frontera instead. Don't let the server run scripts inside galleries/ and cache/; .htaccess does this on Apache.

Updating

Upload the new index.php and style*.css over the old ones. Keep your config.ini and the galleries folder.

History

Version 1 (2015–2018) needed a copy of a template folder with PHP files for every gallery and a hand-edited overview page. It's kept as release v1.0 for reference.

Try it locally

php -S localhost:8000 index.php

License

Copyright 2015–2026 Lukas Spieker. IPTCgallery is free software under the GNU Affero General Public License, version 3 or later: you may use, change and share it; if you share a changed version, or run one on a public server, you must offer its source under the same license.