Getting Updates¶
Docker Compose¶
Open a terminal and change to the folder where your compose.yaml
file is located.1
Now run the following commands to download the newest image from Docker Hub and restart your instance in the background:
docker compose pull
docker compose stop
docker compose up -d
Note that our examples use the new docker compose
command by default. If your server does not yet support it, you can still use docker-compose
or alternatively podman-compose
on Red Hat-compatible distributions.
Pulling a new version can take several minutes, depending on your internet connection speed.
Advanced users can add this to a Makefile
so that they only have to type a single command like make update
. See Command-Line Interface to learn more about terminal commands.
Even when you use an image with the :latest
tag, Docker does not automatically download new images for you. You can either manually upgrade as shown above, or set up a service like Watchtower to get automatic updates.
Config Examples¶
We recommend that you compare your own compose.yaml
with our latest examples from time to time, as they may include new config options or other enhancements relevant to you.
Development Preview¶
You can test upcoming features and enhancements by changing the photoprism/photoprism
image tag from :latest
to :preview
and then running the following commands to download the newest image from Docker Hub and restart your instance in the background:
docker compose pull
docker compose stop
docker compose up -d
Note that our examples use the new docker compose
command by default. If your server does not yet support it, you can still use docker-compose
or alternatively podman-compose
on Red Hat-compatible distributions.
Watchtower¶
Adding Watchtower as a service to your compose.yaml
or docker-compose.yml
will automatically keep images up-to-date:
services:
watchtower:
image: containrrr/watchtower
restart: unless-stopped
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
Users of our DigitalOcean 1-Click App have Watchtower pre-installed.
Danger
Keep in mind that automatic updates can interrupt indexing and import operations, and enable Watchtower only if this is acceptable to you.
Portainer¶
You can change or update the image you are using by navigating to "Stacks", selecting your existing PhotoPrism stack, and clicking "Editor":
When you have changed the configuration to your needs or just want to get the latest image from Docker Hub, scroll down, click on "Update the stack", enable the "re-pull and redeploy" option, and then click on "Update":
Pure Docker¶
Open a terminal and run the following to download the newest image from Docker Hub:
docker pull photoprism/photoprism:latest
Then stop and recreate the photoprism
service based on the new image, for example:
docker stop photoprism
docker rm photoprism
docker run -d \
--name photoprism \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-p 2342:2342 \
-e PHOTOPRISM_UPLOAD_NSFW="true" \
-e PHOTOPRISM_ADMIN_PASSWORD="insecure" \
-v /photoprism/storage \
-v ~/Pictures:/photoprism/originals \
photoprism/photoprism:latest
In order to simplify configuration and updates, we recommend using Docker Compose instead of Docker.
OpenMediaVault¶
To upgrade your instance, first connect to the server running OpenMediaVault via SSH or open a terminal from the web interface, then download the newest image from Docker Hub and restart the service:
sudo podman pull docker.io/photoprism/photoprism:latest
sudo systemctl restart pod-photoprism.service
Complete Rescan¶
We recommend performing a complete rescan after major updates to take advantage of new search filters and sorting options. Be sure to read the notes for each release to see what changes have been made and if they might affect your library, for example, because of the file types you have or because new search features have been added. If you encounter problems that you cannot solve otherwise (i.e. before reporting a bug), please also try a rescan and see if it solves the problem.
You can start a rescan from the user interface by navigating to Library > Index, selecting "Complete Rescan", and then clicking "Start". Manually entered information such as labels, people, titles or descriptions will not be modified when indexing, even if you perform a "complete rescan".
Be careful not to start multiple indexing processes at the same time, as this will lead to a high server load.
Face Recognition¶
Existing users may index faces without performing a complete rescan:
docker compose exec photoprism photoprism faces index
Remove existing people and faces for a clean start e.g. after upgrading from our development preview:
docker compose exec photoprism photoprism faces reset -f
MariaDB Server¶
Our configuration examples are generally based on the current stable version to take advantage of performance improvements. This does not mean that older versions are no longer supported and you must upgrade immediately. We recommend not using the :latest
tag for the MariaDB Docker image and to upgrade manually by changing the tag once we had a chance to test a new major version, e.g.:
services:
mariadb:
image: mariadb:11
...
If MariaDB fails to start after upgrading from an earlier version (or migrating from MySQL), the internal management schema may be outdated. See Troubleshooting MariaDB Problems for instructions on how to fix this.
Raspberry Pi¶
Our stable releases and preview builds are available as multi-arch Docker images for 64-bit AMD, Intel, and ARM processors. You therefore get the exact same functionality and can follow the same update instructions if your device meets the system requirements.
Try explicitly pulling the ARM64 version if you've booted your device with the arm_64bit=1
flag and you see the "no matching manifest" error on Raspberry Pi OS (Raspbian):
docker pull --platform=arm64 photoprism/photoprism:latest
If you don't use legacy software, we recommend choosing a standard 64-bit Linux distribution as it requires less experience. For ARMv7-based devices, 32-bit images are provided separately.
Darktable is not included in the ARMv7 version because it is not 32-bit compatible.
PhotoPrism® Plus¶
Our members can activate additional features by logging in with the admin user created during setup and then following the steps described in our activation guide. Thank you for your support, which has been and continues to be essential to the success of the project!
Compare Memberships › View Membership FAQ ›
We recommend that new users install our free Community Edition before signing up for a membership.
How can I shorten the startup time after a restart or update?¶
To reduce startup time, do not set PHOTOPRISM_INIT
to avoid running additional setup scripts, and set PHOTOPRISM_DISABLE_CHOWN
to "true"
to disable automatic permission updates.
If your instance doesn't start even after waiting for some time, our Troubleshooting Checklists help you quickly diagnose and solve the problem.
-
With the latest version of Docker Compose, the default config file name is
compose.yaml
, although thedocker compose
command still supports legacydocker-compose.yml
files for backward compatibility. ↩