mirror of
https://github.com/xuthus83/pigallery2.git
synced 2024-11-03 21:04:03 +08:00
A fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers (especially on raspberry pi)
backend | ||
common | ||
demo/images | ||
frontend | ||
test | ||
.editorconfig | ||
.gitignore | ||
.npmignore | ||
.travis.yml | ||
angular.json | ||
COMPARE.md | ||
gulpfile.js | ||
karma.conf.js | ||
LICENSE | ||
package.json | ||
Procfile | ||
protractor.conf.js | ||
README.md | ||
tsconfig.json | ||
tslint.json | ||
USERRIGHTS.md |
PiGallery2
This is a directory-first photo gallery website, optimised for running on low resource servers (especially on raspberry pi)
Live Demo
Live Demo @ heroku: https://pigallery2.herokuapp.com/
Table of contents
Getting started (on Raspberry Pi 1)
Install NodeJs
Download and extract
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Full node install on rapberry pi description: https://www.w3schools.com/nodejs/nodejs_raspberrypi.asp
Install PiGallery2
Install from release
cd ~
wget https://github.com/bpatrik/pigallery2/releases/download/1.5.0/pigallery2.zip
unzip pigallery2.zip
cd pigallery2
npm install
Install from source
cd ~
wget https://github.com/bpatrik/pigallery2/archive/master.zip
unzip master.zip
cd pigallery2-master # enter the unzipped directory
npm install
Run PiGallery2
npm start
To configure it. Run PiGallery2
first to create config.json
file, then edit it and restart.
Default user: admin
pass: admin
Useful links/tips:
using nginx
https://stackoverflow.com/questions/5009324/node-js-nginx-what-now
making https
node install error:
If you get error during module installation, make sure you have everything to build node modules from source
apt-get install build-essential libkrb5-dev gcc g++
Translate the page to your own language
- download / clone the repo (the source not the packed release!)
- add your language e.g: fr
it creates a newnpm run add-translation -- --fr
messages.fr.xls
file atfrontend/translate
folder, it will already contain dummy translation with google translate. - 'fix' the dummy translation
- test if it works:
build and start the app
npm install npm start
- create a pull request at github to add your translation to the project.
Feature list
- Rendering directories as it is
- Listing subdirectories recursively
- Listing photos in a nice grid layout
- supporting most common image formats
- showing tag/keywords, locations, GPS coordinates for photos
- rendering photos on demand (on scroll)
- On the fly thumbnail generation in several sizes
- Custom lightbox for full screen photo viewing
- keyboard support for navigation
- showing low-res thumbnail while full image loads
- Information panel for showing Exif info
- Automatic playing
- gesture support (swipe left, right, up)
- Client side caching (directories and search results)
- Rendering photos with GPS coordinates on google map
- .gpx file support
- Two modes: SQL database and no-database mode
- both modes supports
- user management
- password protection can be disabled/enabled
- database mode supports:
- faster directory listing
- searching
- instant search, auto complete
- sharing
- setting link expiration time
- both modes supports
- internalization / translation support
- Nice design
- responsive design (phone, tablet desktop support)
- Setup page
- 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
- video support
- fully supports *.mp4 files and partially (might have errors with safari and IE) supports *.ogg, *.ogv, *.webm files
- uses ffmpeg and ffprobe to generate video thumbnails
- Markdown based blogging support -
future plan
- you can write some note in the blog.md for every directory
- bug free :) -
In progress
Known errors
- EXIF orientation tag:
- There is no nice way to handle EXIF orientation tag properly. The page handles these photos, but might cause same error in the user experience (e.g.: the pages loads those photos slower. See issue #11)
- Video support on weak servers (like raspberry pi) with low upload rate
- video playback may use up too much resources and the server might not response for a while. A solution might be to down scale / convert the video files to lower bitrate.
Credits
Crossbrowser testing sponsored by Browser Stack