fgallery example

Created by Steven Baltakatei Sandoval on 2023-07-07T01:40+00 under a CC BY-SA 4.0 (🅭🅯🄎4.0) license and last updated on 2023-07-07T03:41+00.

Example gallery.


I wanted to test out a static HTML+Javascript photo gallery package I found on Debian to answer a question on a Lemmy thread about self-hosted photo galleries. The end result was this example gallery.

Setup procedure

On a Debian 11 system, the following commands may be used to create an fgallery image gallery.

Install fgallery

$ sudo apt update;
$ sudo apt install fgallery;

Install optional tools

$ sudo apt install jpegoptim pngcrush 7zip;

Build a gallery from photos in photo-src/.

din=./photo-src ;
dout=./test4 ;
title="Tanabata at Portland Japanese Gardens, July 2022 - Steven Baltakatei Sandoval";
fgallery -c txt -s -j4 --index="https://reboil.com/mediawiki/2022-07-07" \
"$din" "$dout" \
"$title" && \
python3 -m http.server -d "$dout";

The input directory path is set in din, the output directory path is set in dout.

The title of the webUI page is set in title.

The -c txt option tells fgallery to look for captions for an image in a text file named exactly the same as the image file except that the final extension (e.g. .jpg of photo-src/foo.jpg) is replaced with .txt (e.g. photo-src/foo.txt).

The -s option prevents the original image files from being included as an archive in the output and disables downloading of such an archive.

The -j4 option specifies that up to 4 image processing jobs may be performed in parallel in order to speed up creation of the output directory contents if at least 4 CPUs are available.

The --index option specifies the URL for the "Back" button at the top left of the gallery webUI.

The && specifies the next command python3 should only run if the fgallery command does not fail.

The \ at the end of some lines tells bash to ignore the newline (so longer commands in the script are broken up to be more readable).

The python3 -m http.server -d "$dout" command creates a simple local HTTP server at the address http://localhost:8000 so a web browser can view the webUI without there being a need to upload anything to any remote server.