Awesome
About Pellicola
Pellicola is an easy-to-use PHP web app for instant photo publishing.
<img src="pellicola.jpg" alt="Pellicola">The Pellicola manual provides detailed information on installing and using Pellicola. Get your copy at Gumroad.
<img src="https://cameracode.coffee/uploads/pellicola-manual.png" title="Pellicola" width="300"/>Features
- Simplicity Pellicola requires no installation, and it can be deployed on any web server with PHP.
- Instant and easy photo publishing Upload photos, and Pellicola does the rest.
- Responsive design Pellicola works well on mobile devices.
- Pagination Pellicola automatically splits photo collection into pages. You can specify the desired number of photos per page.
- Search Basic search functionality makes it possible to find photos by their file names and descriptions.
- Basic EXIF data The app extracts and displays basic EXIF info for each photo, including aperture, focal length, shutter speed, and ISO.
- Show map If the
$show_map
option is enabled, Pellicola displays an embedded map marking the position of the currently viewed geotagged photo. This also enables a dedicated map that shows all photos in the current album. - OpenStreetMap links or Geo URIs For geotagged photos, Pellicola displays either OpenStreetMap links or geo URIs that show the exact locations where the photos were taken either in OpenStreetMap or in the default map application.
- Optional album description If a preamble.html file exists in the album's folder, Pellicola displays its contents as the album's description.
- Optional photo description You can add a description to each photo by creating an accompanying .txt file. The app can also read and display descriptions from the photo's UserComment EXIF field.
- Automatic language detection Pellicola automatically detects the browser language and picks the description text file with the appropriate language prefix.
- Downloads With the download option in the config.php file enabled, visitors can download photos. Downloads are password protected by default. Password protection can be disabled by leaving
$download_password
in the config.php file empty. - RAW downloads For each photo in the JPEG format, you can upload the accompanying RAW file, and Pellicola automatically adds a download link to it when the download option is enabled.
- Support for subfolders Photos inside the default photo directory can be organized into subfolders.
- Statistics View basic statistics: camera models, focal length stats, the total number of photos and RAW files, disk usage, and the total number of downloads.
- Access keys The application supports access keys for common actions.
- Internationalization support. Pellicola automatically detects and picks the right language. Localizing Pellicola is a matter of translating text strings in an appropriate .ini file.
- RSS feed The application automatically generates an RSS feed with newly added photos.
- Self-contained and GDPR-compliant Pellicola has no external dependencies, and it doesn't collect any user data.
Requirements
- A web server with PHP7 or higher (tested with Apache and lighttpd)
- PHP libraries: GD, EXIF
- Git (optional)
Installation and usage
- On Debian, Ubuntu, and Raspberry Pi, install Pellicola by running the following command as root:
curl -sSL https://raw.githubusercontent.com/dmpop/pellicola/main/install.sh | bash
. On other distributions, install the required packages and clone the project's Git repository using the commandgit clone https://github.com/dmpop/pellicola.git
as root. Alternatively, you can download the ZIP archive and extract it into the document root of the server. - Open the config.php file in a text editor and edit settings.
- Put photos into the photos directory (.jpg, .jpeg, .JPG, and .JPEG as well as RAW files).
- Make the pellicola directory writable by the server by running
chown www-data -R pellicola
as root. - Point the browser to http://127.0.0.1/pellicola/ (replace 127.0.0.1 with the actual IP address or domain name of your server).
You can add descriptions to photos by creating accompanying .txt files. For example, to add a description to the F994362-R1-14-15.jpg photo, create the F994362-R1-14-15.txt file containing a short text. You can use HTML markup for formatting the text. To add description files in other languages, use the appropriate language prefix as follows: de-F994362-R1-14-15.txt (for German), ja-F994362-R1-14-15.txt (for Japanese), etc.
Run Pellicola in a container
Perform the following steps on the machine you want to use as a Pellicola server.
- Install Docker.
- Run the
hostname -I
command and note the IP address of the machine. - Create a directory for storing photos.
- Clone the Pellicola Git repository using the
git clone https://github.com/dmpop/pellicola.git
command. - Switch to the resulting pellicola directory, open the config.php file for editing and replace the default value of the
base_url
to the IP address of the machine. - Become root using either
su
orsudo su
command. - Build an image using the
docker build -t pellicola .
command. - Run a container:
docker run -d --rm -p 80:8000 --name=pellicola -v /path/to/photos:/usr/src/pellicola/photos:rw pellicola
(replace /path/to/photos with the actual path to the created directory). - Point the browser to http://127.0.0.1 (replace 127.0.0.1 with the actual IP address or domain name of the machine running the container).
Deploy Pellicola with docker-compose.yml
Using the supplied docker-compose.yml file, you can deploy Pellicola on a machine with a domain name assigned to it. This approach automatically enables HTTPS.
- Open the Caddyfile for editing.
- Replace
<email address>
with the email address you want to use with the Let's Encrypt service. - Replace
<domain name>
with the domain name assigned to the server. - Save the changes.
- Run the
docker compose -d
command.
Author
Dmitri Popov (dmpop@cameracode.coffee)
Acknowledgments
License
Pellicola is released under the GNU General Public License version 3 license.