picinch

Logo

PicInch Gallery provides a simple way for a group of members, such as a photography club, to display their photographs.

Home

Installation and Setup

Docker Repository

View the Project on GitHub inchworks/picinch

Step 1: docker-compose.yml

Copy this example, and save it in /srv/picinch on your server.

version: '3'

services:

  db:
    image: mariadb:10.4
    container_name: picinch_db
    expose:
      - 3306
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "<root-password>"
      MYSQL_DATABASE: picinch
      MYSQL_USER: server
      MYSQL_PASSWORD: "<server-password>"
    volumes:
      - mysql:/var/lib/mysql
    logging:
      driver: "json-file"
      options:
        max-size: "2m"
        max-file: "5"

  geoipupdate:
    container_name: geoipupdate
    image: maxmindinc/geoipupdate
    restart: unless-stopped
    environment:
      GEOIPUPDATE_ACCOUNT_ID: "<MaxMind-account>"
      GEOIPUPDATE_LICENSE_KEY: "<MaxMind-licence>"
      GEOIPUPDATE_EDITION_IDS: GeoLite2-Country
      GEOIPUPDATE_FREQUENCY: 72
    networks:
      - geoipupdate
    volumes:
      - geodb:/usr/share/GeoIP

  gallery:
    image: inchworks/picinch:1.0
    ports:
      - 443:4000:
      - 80:8000
    restart: always
    environment:
      db-password: "<server-password>"
      domains: "example.com, www.example.com"
      certificate-email: "you@example.com"
      session-secret: Hk4TEiDgq8JaCNR?WaPeWBf4QQYNUjMR
      admin-name: "admin@example.com"
      admin-password: "<your-password>"
      geo-block: "<blocked-countries>"
    volumes:
      - certs:/certs
      - geodb:/geodb:ro
      - ./photos:/photos
      - ./site:/site:ro
      - ./misc:/misc:ro
    logging:
      driver: "json-file"
      options:
        max-size: "5m"
        max-file: "5"
    depends_on:
      - db

networks:
  geoipupdate:

volumes:
  certs:
  geodb:
  mysql:

Edit the example to change the following items. (Take care to keep indentation unchanged when editing. Do not use tabs.)

If you intend to change other PicInch configuration settings, you may prefer to omit the environment settings here, and set them in a site/configuration.yml file instead.

Geo-blocking requires an account for free geo-location data from MaxMind. Change these items:

Run docker-compose up to fetch PicInch and MariaDB from Docker Hub and start them.