2018-12-03 23:38:25 +02:00
# PiGallery2
2020-01-02 23:28:18 +02:00
![GitHub package.json version ](https://img.shields.io/github/package-json/v/bpatrik/pigallery2 )
2020-01-02 23:11:59 +02:00
[![Language grade: JavaScript ](https://img.shields.io/lgtm/grade/javascript/g/bpatrik/pigallery2.svg?logo=lgtm&logoWidth=18 )](https://lgtm.com/projects/g/bpatrik/pigallery2/context:javascript)
2017-07-03 19:17:49 +02:00
[![Build Status ](https://travis-ci.org/bpatrik/pigallery2.svg?branch=master )](https://travis-ci.org/bpatrik/pigallery2)
2020-01-02 23:28:18 +02:00
[![Coverage Status ](https://coveralls.io/repos/github/bpatrik/pigallery2/badge.svg?branch=master )](https://coveralls.io/github/bpatrik/pigallery2?branch=master)
2019-12-24 00:17:05 +02:00
[![Docker build ](https://github.com/bpatrik/pigallery2/workflows/docker-buildx/badge.svg )](https://github.com/bpatrik/pigallery2/actions)
2018-11-30 16:36:42 +02:00
[![dependencies Status ](https://david-dm.org/bpatrik/pigallery2/status.svg )](https://david-dm.org/bpatrik/pigallery2)
2020-01-02 23:28:18 +02:00
2018-12-06 14:50:55 +02:00
2018-12-03 23:38:25 +02:00
Homepage: http://bpatrik.github.io/pigallery2/
2021-05-24 11:17:27 +02:00
This is a **fast** (like faster than your PC fast) **directory-first photo gallery website** , optimised for running on low resource servers (especially on raspberry pi).
2022-12-11 17:10:23 +02:00
✔️ Strengths:
2022-12-11 17:11:21 +02:00
* ⚡ Fast, like for real.
* ✔️ Simple. Point to your photos folder and to a temp folder and you are good to go.
2021-05-24 11:17:27 +02:00
⛔ Weakness:
* 😥 Its simple. Shows what you have that's it. No gallery changes (photo delete, rotate, enhance, tag, organize, etc), your gallery folder is read-only.
2022-12-11 17:11:21 +02:00
* 📁 Optimized for galleries with < 100K photos with < 5k photos / folder .
* It will work on bigger galleries, but it will start to slow down.
2022-12-11 17:10:23 +02:00
[You wrote about pigallery2 ](docs/references/README.md ).
2016-03-14 14:30:15 +02:00
2017-06-04 15:25:22 +02:00
## Live Demo
2022-12-09 11:10:59 +02:00
Live Demo @ render: https://pigallery2.onrender.com/
2018-12-02 23:30:49 +02:00
- the demo page **first load** might take up **30s** : the time while the free webservice boots up
2017-03-22 20:38:39 +02:00
2019-12-12 18:22:41 +02:00
![PiGallery2 - Animated gif demo ](docs/demo.gif )
2018-05-16 02:01:11 +02:00
## Table of contents
2020-01-01 23:25:45 +02:00
1. [Getting started ](#1-getting-started-also-works-on-raspberry-pi )
2018-12-22 01:29:05 +02:00
2. [Translate the page to your own language ](#2-translate-the-page-to-your-own-language )
3. [Feature list ](#3-feature-list )
2019-02-25 12:50:27 +02:00
4. [Suggest/endorse new features ](#4-suggestendorse-new-features )
2019-02-25 12:41:56 +02:00
5. [Known errors ](#5-known-errors )
6. [Credits ](#6-credits )
2016-03-14 14:30:15 +02:00
2017-03-22 20:38:39 +02:00
2018-05-16 02:01:11 +02:00
2019-12-23 22:07:34 +02:00
## 1. Getting started (also works on Raspberry Pi)
2020-09-13 14:51:48 +02:00
### 1.1 [Install and Run with Docker (recommended)](docker/README.md)
2020-01-01 23:25:45 +02:00
2020-09-10 23:49:52 +02:00
[Docker ](https://www.docker.com/ ) with [docker-compose ](https://docs.docker.com/compose/ ) is the official and recommend way of installing and running *Pigallery2* .
2020-01-01 23:25:45 +02:00
It contains all necessary dependencies, auto restarts on reboot, supports https, easy to upgrade to newer versions.
2022-12-11 17:10:23 +02:00
For configuration and docker-compose files read more [here ](docker/README.md ) or check all builds [here ](https://hub.docker.com/r/bpatrik/pigallery2/tags/ ).
2019-12-23 22:07:34 +02:00
2020-09-10 23:49:52 +02:00
### 1.2 Direct Install (if you are familiar with Node.js and building npm packages from source)
2022-08-26 11:34:10 +02:00
As an alternative, you can also directly [install Node.js ](https://www.scaler.com/topics/javascript/install-node-js/ ) and the app and run it natively.
2020-09-10 23:49:52 +02:00
### 1.2.0 [Install Node.js](https://nodejs.org/en/download/)
2017-06-04 15:25:22 +02:00
Download and extract
```bash
2019-12-23 22:07:34 +02:00
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
2018-12-02 23:15:39 +02:00
sudo apt-get install -y nodejs
2017-06-04 15:25:22 +02:00
```
2018-12-02 23:15:39 +02:00
2018-12-06 10:52:04 +02:00
Full node install on raspberry pi description: https://www.w3schools.com/nodejs/nodejs_raspberrypi.asp
2017-06-04 15:25:22 +02:00
2019-12-23 22:07:34 +02:00
### 1.2.1 Install PiGallery2
#### 1.2.1-a Install from release
2017-07-12 18:35:23 +02:00
2017-06-04 15:25:22 +02:00
```bash
cd ~
2021-09-03 12:49:39 +02:00
wget https://github.com/bpatrik/pigallery2/releases/download/1.9.0/pigallery2-release.zip
2021-09-06 13:07:38 +02:00
unzip pigallery2-release.zip -d pigallery2
2018-05-16 02:01:11 +02:00
cd pigallery2
2017-07-12 18:35:23 +02:00
npm install
```
2019-12-23 22:07:34 +02:00
#### 1.2.1-b Install from source
2020-01-01 22:18:35 +02:00
**Note:** A build requires a machine with around 2GB or memory.
2020-01-01 23:25:45 +02:00
2017-07-12 18:35:23 +02:00
```bash
cd ~
wget https://github.com/bpatrik/pigallery2/archive/master.zip
unzip master.zip
2018-05-16 02:01:11 +02:00
cd pigallery2-master # enter the unzipped directory
2017-06-04 15:25:22 +02:00
npm install
2020-01-01 19:29:44 +02:00
npm run build
2017-06-04 15:25:22 +02:00
```
2020-01-01 23:25:45 +02:00
2020-09-10 23:49:52 +02:00
**Note**: It is recommended to create a release version with `npm run create-release` on a more powerful machine and deploy that to you server.
2020-01-01 23:25:45 +02:00
2020-09-10 23:49:52 +02:00
**Note**: you can use `npm run create-release -- --languages=fr,ro` to restrict building to the listed languages (English is added by default)
2017-07-12 18:35:23 +02:00
2019-12-23 22:07:34 +02:00
#### 1.2.2 Run PiGallery2
2017-06-04 15:25:22 +02:00
```bash
npm start
```
2018-12-05 22:55:11 +02:00
To configure it, run `PiGallery2` first to create `config.json` file, then edit it and restart.
The app has a nice UI for settings, you may use that too.
2021-03-15 22:52:50 +02:00
2022-11-29 21:58:23 +02:00
Default user: `admin` pass: `admin` . (It is not possible to change the admin password, you need to create another user and delete the default `admin` user, see [#220 ](https://github.com/bpatrik/pigallery2/issues/220 ))
2017-06-04 15:25:22 +02:00
2019-12-29 13:09:08 +02:00
**Note**: First run, you might have file access issues and port 80 issue, see [#115 ](https://github.com/bpatrik/pigallery2/issues/115 ).
2019-12-29 11:45:01 +02:00
Running `npm start -- --Server-port=8080` will start the app on port 8080 that does not require `root`
Adding read/write permissions to all files can solve the file access issue `chmod -R o-w .` , see [#98 ](https://github.com/bpatrik/pigallery2/issues/98 ).
2018-12-06 14:50:55 +02:00
2020-09-13 14:51:48 +02:00
##### 1.2.2.1 Run on startup
You can run the app up as a service to run it on startup. Read more at [#42 ](https://github.com/bpatrik/pigallery2/issues/42#issuecomment-458340945 )
2018-12-06 14:50:55 +02:00
### 1.3 Advanced configuration
2022-12-11 17:10:23 +02:00
You can set up the app any of the following ways:
1. Using the UI (recommended)
2. Manually editing the `config.json`
3. Through switches
* Like: `node start -- --Server-port=3000 --Client-authenticationRequired=false`
* You can check the generated `config.json` for the config hierarchy
4. Through environmental variable
* like set env. variable `Server-port` to `3000`
2018-12-06 14:50:55 +02:00
2020-09-10 23:49:52 +02:00
Full list of configuration options are available at the [MANPAGE.md ](MANPAGE.md ).
2020-02-07 14:59:36 +02:00
2018-12-06 14:50:55 +02:00
### 1.4 Useful links/tips:
2018-05-16 02:01:11 +02:00
#### using nginx
2018-12-06 14:50:55 +02:00
It is recommended to use a reverse proxy like nginx before node
2017-07-29 23:39:06 +02:00
https://stackoverflow.com/questions/5009324/node-js-nginx-what-now
2017-10-19 18:08:07 +02:00
2018-05-16 02:01:11 +02:00
#### making https
2018-12-06 14:50:55 +02:00
With cerbot & nginx it is simple to set up secure connection. You have no excuse not doing so.
2017-07-29 23:39:06 +02:00
https://certbot.eff.org/
2018-05-16 02:01:11 +02:00
#### node install error:
2017-10-19 18:08:07 +02:00
If you get error during module installation, make sure you have everything to build node modules from source
```bash
apt-get install build-essential libkrb5-dev gcc g++
```
2018-12-06 10:52:04 +02:00
## 2. Translate the page to your own language
2020-09-06 10:11:30 +02:00
1. [Install Pigallery2 ](#121-b-install-from-source ) from source (with the release it won't work)
2018-05-16 02:01:11 +02:00
2. add your language e.g: fr
2021-04-17 18:32:32 +02:00
* copy `src/frontend/translate/messages.en.xls` to `src/frontend/translate/messages.fr.xls`
* add the new translation to the `angular.json` `projects->pigallery2->i18n->locales` section
3. translate the file by updating the `<target>` tags
2018-05-16 02:01:11 +02:00
4. test if it works:
build and start the app
```bash
npm install
2020-01-01 23:28:09 +02:00
npm run build
2018-05-16 02:01:11 +02:00
npm start
```
2018-12-22 01:20:03 +02:00
5. (optional) create a pull request at github to add your translation to the project.
2020-01-01 23:28:09 +02:00
**Note**: you can also build your own release with as described in [1.1.1-b Install from source ](#121-b-install-from-source );
2018-05-16 02:01:11 +02:00
2018-12-06 10:52:04 +02:00
## 3. Feature list
2017-06-04 15:25:22 +02:00
2020-01-01 23:25:45 +02:00
* supported formats [full list here ](https://github.com/bpatrik/pigallery2/blob/master/src/common/SupportedFormats.ts ):
2019-01-12 19:08:34 +02:00
* images: **jpg, jpeg, jpe, webp, png, gif, svg**
* videos: **mp4, ogg, ogv, webm**
2020-01-01 23:25:45 +02:00
* with (built-in) transcoding: avi, mkv, mov, wmv, flv, mts, m2ts, mpg, 3gp, m4v, mpeg, vob, divx, xvid, ts
2017-03-22 20:38:39 +02:00
* **Rendering directories as it is**
* Listing subdirectories recursively
* Listing photos in a nice grid layout
* showing **tag/keywords, locations, GPS coordinates** for photos
* rendering photos on demand (on scroll)
2017-03-22 20:41:32 +02:00
* **On the fly thumbnail generation** in several sizes
2017-03-22 20:38:39 +02:00
* prioritizes thumbnail generation (generating thumbnail first for the visible photos)
* saving generated thumbnails to TEMP folder for reuse
2018-12-05 22:55:11 +02:00
* supporting multi-core CPUs
2020-01-01 23:28:09 +02:00
* supporting hardware acceleration ([sharp](https://github.com/lovell/sharp))
2018-12-12 22:03:06 +02:00
* Custom lightbox for full screen photo and video viewing
2017-07-09 12:03:17 +02:00
* keyboard support for navigation
2017-03-22 20:38:39 +02:00
* showing low-res thumbnail while full image loads
2022-12-11 17:10:23 +02:00
* Information panel for showing **Exif and IPTC info**
2017-07-11 22:23:07 +02:00
* Automatic playing
2017-07-17 18:30:16 +02:00
* gesture support (swipe left, right, up)
2018-12-12 22:03:06 +02:00
* shortcut support
2020-01-01 23:25:45 +02:00
* On the fly photo downscaling for faster load [#50 ](https://github.com/bpatrik/pigallery2/issues/50 )
* on zoom, the original photo loads
2017-03-22 20:41:32 +02:00
* Client side caching (directories and search results)
2018-12-12 22:03:06 +02:00
* Rendering **photos** with GPS coordinates **on open street maps**
* .gpx file support: rendering paths to map
* supports [OSM ](https://www.openstreetmap.org ) and [Mapbox ](https://www.mapbox.com ) by default, but you can add any provider that has a tile url
2017-03-22 20:41:32 +02:00
* **Two modes: SQL database and no-database mode**
2022-12-11 17:10:23 +02:00
* both modes support
2017-03-22 20:41:32 +02:00
* user management
* password protection can be disabled/enabled
2017-03-22 20:38:39 +02:00
* database mode supports:
* faster directory listing
* searching
* instant search, auto complete
2017-07-09 12:03:17 +02:00
* sharing
2017-03-22 20:38:39 +02:00
* setting link expiration time
2019-07-21 17:00:07 +02:00
* Faces (persons) support
* reads Adobe's XMP Face region metadata. (It is defined by the Metadata Working Group (MWG).)
* shows face bounding box over images
2018-03-30 02:30:23 +02:00
* internalization / translation support
2022-12-11 17:10:23 +02:00
* currently supported languages: eng, hun, ro, ru, fr, many other
2017-07-29 23:39:06 +02:00
* Nice design
2017-03-22 20:38:39 +02:00
* responsive design (phone, tablet desktop support)
2017-07-29 23:39:06 +02:00
* Setup page
2018-11-02 11:51:36 +02:00
* Random photo url
* You can generate an url that returns a random photo from your gallery. You can use this feature to develop 3rd party applications, like: changing desktop background
2020-01-01 23:25:45 +02:00
* duplicate photo detection
2018-11-22 20:12:10 +02:00
* video support
2020-01-01 23:25:45 +02:00
* fully supports `*.mp4` files and partially (might have errors with safari and IE) supports `*.ogg` , `*.ogv` , `*.webm` files
2018-11-25 16:22:07 +02:00
* uses ffmpeg and ffprobe to generate video thumbnails
2020-01-01 23:25:45 +02:00
* can transcode videos to mp4 for better support
2020-09-10 23:49:52 +02:00
* job scheduling support, with the following supported task: [#92 ](https://github.com/bpatrik/pigallery2/issues/92 )
2020-01-01 23:25:45 +02:00
* converting/transcoding videos [#66 ](https://github.com/bpatrik/pigallery2/issues/66 ) [#71 ](https://github.com/bpatrik/pigallery2/issues/71 )
* generating thumbnails
* generating converted photos
* cleaning up temp folder
* indexing db
* folder ignoring [#87 ](https://github.com/bpatrik/pigallery2/issues/87 )
2020-09-06 17:07:40 +02:00
* `.pg2conf` UI modifying files. [#177 ](https://github.com/bpatrik/pigallery2/issues/177 ).
* List of these files are passed down to the UI modify its behaviour.
* Currently, supported custom, per folder sorting.
2018-12-06 10:52:04 +02:00
* Dockerized
2022-01-14 00:25:36 +02:00
* **Markdown based blogging support**
* you can write some note in the *.md files for every directory
2017-03-22 20:38:39 +02:00
* bug free :) - `In progress`
2019-02-25 12:41:56 +02:00
2019-02-25 12:49:37 +02:00
## 4. Suggest/endorse new features
2022-12-11 17:10:23 +02:00
Unfortunately, lately I only have a limited time for this hobby project of mine.
So, I mostly focus on those features that are align with my needs. Sorry :(.
Although, I try to fix bugs ASAP (that can still take from a few days to months).
I also try to implement some feature requests that have a lots of 'likes' (i.e.: `+1` -s or thumbs ups) on it.
2021-04-25 09:58:18 +02:00
If you have a feature that you really would like to happen, I welcome contributions to the app. See [CONTRIBUTING.md ](https://github.com/bpatrik/pigallery2/blob/master/CONTRIBUTING.md ) for more details.
2018-03-30 02:30:23 +02:00
2019-02-25 12:41:56 +02:00
## 5. Known errors
2021-04-04 09:46:23 +02:00
* IOS map issue
* Map on IOS prevents using the buttons in the image preview navigation, see #155
2018-12-02 21:57:16 +02:00
* Video support on weak servers (like raspberry pi) with low upload rate
2022-12-11 17:10:23 +02:00
* video playback may use up too much resources and the server might not respond for a while. Enable video transcoding in the app, to transcode the videos to lover bitrate.
2023-06-06 19:50:41 +02:00
* When using an Apache proxy, sub folders are not accessible
* add `AllowEncodedSlashes On` in the configuration of the proxy
2022-12-11 17:10:23 +02:00
## 6. Supporting the project
I'm making this app for my own entertainment,
but I like to share it with others as the contributions and bug reports make the app better
and it also does not cost anything to me :)
There is [no way to donate ](https://github.com/bpatrik/pigallery2/discussions/328#discussioncomment-894546 ) to this project at the moment. And I'm also not planning on monetizing it.
But it warms my hearth [seeing that it is useful for some people ](docs/references/README.md ).
2019-02-25 12:41:56 +02:00
## 6. Credits
2018-05-16 02:01:11 +02:00
Crossbrowser testing sponsored by [Browser Stack ](https://www.browserstack.com )
[<img src="https://camo.githubusercontent.com/a7b268f2785656ab3ca7b1cbb1633ee5affceb8f/68747470733a2f2f64677a6f7139623561736a67312e636c6f756466726f6e742e6e65742f70726f64756374696f6e2f696d616765732f6c61796f75742f6c6f676f2d6865616465722e706e67" alt="Browser Stack" height="31px" style="background: cornflowerblue;"> ](https://www.browserstack.com )