Skip to content

Latest commit

 

History

History
195 lines (131 loc) · 8.73 KB

photoprism.md

File metadata and controls

195 lines (131 loc) · 8.73 KB

Install and Setup instructions for PhotoPrism

Introduction

PhotoPrism is an AI-powered app for browsing, organizing & sharing your photo collection. It makes use of the latest technologies to tag and find pictures automatically without getting in your way 1.

App Image

Pre-Install script

In order to install PhotoPrism, a pre-install script is required to set all required folders and settings. If not installed, the docker will not start correctly.

Install this script with:

wget -qO- https://git.io/JM5Tr | bash

This script will create the following directories and set it to be owned by user ID 1000 (usually this is the pi user).

  • /portainer/Files/AppData/Config/PhotoPrism/storage
  • /portainer/Files/AppData/Config/PhotoPrism/database
  • /portainer/PhotoPrism

Installation (Basic)

The basic installation will use all defaults from the app. It will store all uploaded images to /portainer/PhotoPrism folder. If you want to add images from your computer, it needs to be copied to this folder (check Standard Installation to see how to setup a different folder instead).

Open Templates within Portainer and search for PhotoPrism.

PhotoPrism Template

Once selected you will be asked to set a few variables. In this step 3 passwords will be required.

PhotoPrism Variables

For the Basic installation, the only action needed is to create and insert 3 passwords:

  • PHOTOPRISM_ADMIN_PASSWORD: Password to log into the interface
  • MYSQL_PASSSWORD: Password for MySQL Database (can be anything strong and is only needed for management)
  • MYSQL_ROOT_PASSWORD: Password for MySQL Root User (can be anything strong and is only needed for management)

A good way to generate passwords for MYSQL is by running the following command:

openssl rand -base64 33

After adding all required passwords, click in Deploy the stack. This action can take a while for the raspberry to download and install, so just give it a few minutes.

Installation (Standard)

This installation method allow us to modify the folder in which all pictures are placed.

If you want to select a different folder (other than /portainer/PhotoPrism) to place your images, first make sure that this folder is accessible by user ID 1000 by running:

sudo chown -R 1000.1000 /path/to/folder

Where /path/to/folder is the path to your photo folder.

Once that is done, open Portainer and search for PhotoPrism within Templates. This time, we are going to check all variables to configure it the way we want. As mentioned on Basic installation, we need 3 passwords. The ones for MYSQL can be generated by running (this way of generating password is just a suggestion, any strong password will work):

openssl rand -base64 33

PhotoPrism Template

  • Name: Stack Name. No need to change
  • PHOTOPRISM_ADMIN_PASSWORD: Password to log into the interface
  • PHOTOPRISM_SITE_URL: URL to access the app. No need to change
  • PHOTOPRISM_PUBLIC: Select if a password is required to access the app. No need to change
  • PHOTOPRISM_READONLY: Define if PhotoPrism can write to Photo folder. No need to change
  • PHOTOPRISM_DISABLE_FACES: Enable or disable Facial Recognition. No need to change
  • MYSQL_PASSWORD: Password for MYSQL database. Suggestion to use one provided by the code above
  • MYSQL_ROOT_PASSWORD: Password for MYSQL root user. Suggestion to use one provided by the code above
  • HOST_MEDIA_PATH: Set here the path to your Photo folder (the same you defined above to be accessible by user 1000).

Once all variables are set, you can click in Deploy the stack. This action can take a while for the raspberry to download and install, so just give it a few minutes.

Installation (Advanced)

If you want to load more than one folder to PhotoPrism, you need to modify the template stack for it. This is why this is an Advanced method.

Open template and click in Copy as Custom. If this works, jump to Customizing Stack section. If you get an error, follow Creating a Custom Stack Manually first.

Creating a Custom Stack Manually

Custom Templates

Click in App Templates, Custom Templates just underneath it, then click in Add Custom Template on top of the page.

On Build method select Web editor (should be already selected) and paste the content of the following file:

https://raw.githubusercontent.com/novaspirit/pi-hosted/master/stack/photoprism.yml

Customizing Stack

When creating a new template, a few parameters needs to be set:

Customizing Stack

Fill in as follow:

Once that is done, a few changes needs to be made to the Compose code.

First, look for the following lines. You will replace everything that has ${...} by it actual value.

services:
  photoprism:
    . . .
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "${PHOTOPRISM_ADMIN_PASSWORD}"
      PHOTOPRISM_SITE_URL: "${PHOTOPRISM_SITE_URL}"
      . . .
      PHOTOPRISM_PUBLIC: "${PHOTOPRISM_PUBLIC:-false}"
      PHOTOPRISM_READONLY: "${PHOTOPRISM_READONLY:-false}"
      . . .
      PHOTOPRISM_DISABLE_FACES: "${PHOTOPRISM_DISABLE_FACES:-false}"
      . . .
      PHOTOPRISM_DATABASE_PASSWORD: "${MYSQL_PASSWORD}"
    . . .
  mariadb:
    . . .
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      . . .
      MYSQL_PASSWORD: "${MYSQL_PASSWORD}"

Replace as follow:

  • ${PHOTOPRISM_ADMIN_PASSWORD}: Any strong password for admin login
  • ${PHOTOPRISM_SITE_URL}: http://<Raspberry Pi IP>:2342/
  • ${PHOTOPRISM_PUBLIC:-false}: true for public instance (no password), false otherwise (default false)
  • ${PHOTOPRISM_READONLY:-false}: true for Read Only Photo folder (no editing), false otherwise (default false)
  • ${PHOTOPRISM_DISABLE_FACES:-false}: true for Disable Facial Recognition, false otherwise (default false)
  • ${MYSQL_PASSWORD}: Strong Password for MYSQL database (used in 2 places)
  • ${MYSQL_ROOT_PASSWORD}: Strong Password for MYSQL root access

Again, suggestion to use the following command line to generate strong password:

openssl rand -base64 33

The next change is to define which Photo Folders you want to have access within PhotoPrism. So you need to edit the following section:

photoprism:
  . . .
    volumes:
      ## The *originals* folder contains your original photo and video files (- "[host folder]:/photoprism/originals"):
      - "${HOST_MEDIA_PATH}:/photoprism/originals"
      ## Multiple folders can be made accessible by mounting them as subfolders of /photoprism/originals:
      # - "/mnt/Family:/photoprism/originals/Family"    # [folder 1]:/photoprism/originals/[folder 1]
      # - "/mnt/Friends:/photoprism/originals/Friends"  # [folder 2]:/photoprism/originals/[folder 2]
      ## You may mount an *import* folder from which files can be transferred to *originals* (optional):
      # - "~/Import:/photoprism/import"

Comment out (using a # in front) the standard volume:

      - "${HOST_MEDIA_PATH}:/photoprism/originals"

Then just after ## Multiple folder can ... you can uncomment the lines and modify as you need.

Add one line for each folder you want to mount using /path/to/folder:/photoprism/originals/ANY_NAME (as demonstrated on the example). You can add as many entries as you want.

Additionally, if you want to setup an Import folder, you can do so by uncommenting the last line (and setting a custom folder on your host machine - before the :).

Now that it's all set. Click in Create custom template.

Once you've created a new Template, you can find it within Custom Templates list. Click on it and click Deploy the stack.

After Installation

Just head to http://<RASPBERRY_IP>:2342 and enjoy your new app.

Library

If you followed Standard or Advanced installation methods and have already photos in your folder, navigate to Library on the left menu and click in START button to initiate indexing process.