Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,578 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMGSHR

Build Status

Simple image gallery sharing application. Galleries are creatable by everyone and available with a token in the URL. Everyone with the correct URL can change the gallery name, upload images and set their title. On creation, a boss token is generated, which can be used to delete the whole gallery, single pictures or make the gallery read-only later on.

You can test this at https://imgshr.space!

Features

  • Galleries are shared via secret token in URL (e.g. https://imgshr.space/!Njg4NThi)
  • Galleries are editable by everyone or -- when they are configured to be read-only -- only with a boss token (URL)
  • Pictures can be shared with token URLs to prevent giving away a gallery's token
  • EXIF data is read and shown
  • Pictures can be rated
  • Infinite scrolling on gallery page
  • Lazy image loading
  • Responsive design
  • Tagging of images
  • Filter by tags, date, rating
  • Automatic labelling using self-hosted Convolutional Neural Network (Inception v3 model)
  • GitHub login for taking track of galleries and gallery administration
  • Device token authentication for galleries
  • Symmetric client-side encrypted galleries with sharable secret based on libsodium (XSalsa20 for encryption, Poly1305 for authentication)
  • "Responsive Images Service": Options like resize for inclusion in third-party sites
  • Transparent conversion of images (to avif or webp) if browser supports these formats
  • Milestones can be set by gallery and shown on images (e.g. for showing time since a certain event on photos)

Development

Volta is used to pin the Node.js version. Install it first:

curl https://get.volta.sh | bash

Then set up the project:

npm install
bundle install
foreman start

This starts the Rails web server, the esbuild JS watcher, and Sidekiq. The app is available at http://localhost:3000.

Deployment using docker

Initial setup

Clone the source code:

git clone https://github.com/nning/imgshr.git
cd imgshr

Change the MySQL root password and the admin login credentials in .env and config/settings.yml.

Then generate a Rails secret key and paste it into .env:

./deploy.sh run web rails secret

Now start up all services (in background):

./deploy.sh up -d

The docker volumes deploy_db, deploy_redis, and deploy_storage hold the production data; make sure, you do not lose them.

The log can be followed with:

./deploy.sh logs -f

Update the code

./deploy.sh down
git pull
./deploy.sh up --build

traefik example

See examples/traefik as a starting point for a deployment with traefik and Let's Encrypt.

License

Copyright © 2014-2026 henning mueller, released under the terms of GNU AGPL 3.0.

About

Simple image gallery sharing web application.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages