Dhole / gallerina

Simple self-hosted photo gallery focused on performance.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gallerina is a simple self-hosted photo gallery with a focus on performance.

Features

  • Supports multiple image formats: JPEG, PNG, GIF.
  • Support video file formats: MP4.
  • Parsing of EXIF metadata to index photos by taken date.
  • Sorting by: name, file modification date, taken date (EXIF) and random.
  • Parallel directory scanning and thumbnail creation.
  • Differential update when re-scanning the image directory.
  • Recursive mode to view all images in sub-folders.
  • Pagination support.

Frontend

  • Lazy loading of thumbnails in folder view
  • No infinite scroll (Pagination with manual page switching)
  • Mouse or keyboard media view navigation
  • Full screen support.
    • In media view, click image for fullscreen; then click left area or right area to navigate, or use the left and arrow keys.
  • Background preloading of N next images and M previous images in media view
    • Cancellation of image downloads outside the N+M window
  • Support for big and small screens (requires refresh when window width changes)
  • Navigation history with position support when going back
  • Slideshow

How to use

The easiest way to use gallerina is via the docker image with docker-compose. Make sure you have docker and docker-compose installed in your system. Then create a file called docker-compose.yml with the following contents:

version: "3"

services:
  gallerina:
    image: dhole1/gallerina:latest
    restart: always
    init: true
    ports:
      # Choose the port where the http server will be exposed.
      - 8888:8080
    environment:
      # Choose a different value to limit the number of threads for thumbnail
      # creation.  0 will default to the number of CPU cores detected.
      - GALLERINA_THREADS=6
      - GALLERINA_LOG=debug
      - GALLERINA_PAGE_SIZE=1024
    volumes:
      # Choose a folder where the database will be stored.
      - /path/to/database:/app/db:delegated
      # Set the folder where your media is.
      - /path/to/media:/app/media:ro

Edit the file with your chosen parameters, and start the server with:

docker-compose up -d

Now browse http://localhost:8888 (or with a different port if you changed it), and you should see root folder view. To scan and index images go to the Control tab and press Start Scan. In the future, if you update the media directory, you can re-scan and index the new media pressing again the Start Scan button in the Control tab.

Roadmap

  • Add support for video media
  • Add fallback thumbnail creation tool
  • Add support for symbolic links (for folders and media files)
  • Add search support

Features that will not be added

  • User / login / password system
  • TLS support
  • Other SQL database backends

Technical details

Backend

The backend has been developed in Rust, with SQLite and lmdb as databases. The http API has been developed with the tide web application framework. The library used to interface with sqlite is sqlx, and the one for lmdb is heed

Frontend

The frontend has been developed using Svelte. The UI uses the chota CSS framework.

License

AGPLv3 (See LICENSE)

About

Simple self-hosted photo gallery focused on performance.

License:GNU Affero General Public License v3.0


Languages

Language:CSS 43.9%Language:Rust 34.1%Language:Svelte 13.8%Language:C 5.0%Language:Dockerfile 1.1%Language:TypeScript 1.0%Language:JavaScript 1.0%Language:HTML 0.2%