diff --git a/Dockerfile b/Dockerfile
index a81cb4709..930d18374 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM photoprism/develop:220301-bullseye
+FROM photoprism/develop:220302-bullseye
## alternative base images
# FROM photoprism/develop:buster # Debian 10, Codename "Buster"
diff --git a/docker-compose.yml b/docker-compose.yml
index 96d2cff22..3a46631bd 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -107,8 +107,8 @@ services:
PHOTOPRISM_OIDC_ISSUER_URL: "https://keycloak.localssl.dev/auth/realms/master"
PHOTOPRISM_OIDC_CLIENT_ID: "photoprism-develop"
PHOTOPRISM_OIDC_CLIENT_SECRET: "9d8351a0-ca01-4556-9c37-85eb634869b9"
- ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean):
- # PHOTOPRISM_INIT: "update gpu tensorflow clean"
+ ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
+ # PHOTOPRISM_INIT: "gpu tensorflow"
## Hardware video transcoding config (optional):
# PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32)
# PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50)
diff --git a/docker/examples/arm64/README b/docker/examples/arm64/README
index 8270086e8..c29b7fdfa 100644
--- a/docker/examples/arm64/README
+++ b/docker/examples/arm64/README
@@ -1,33 +1,40 @@
-# Running PhotoPrism on ARM64-based devices (64-bit)
+>> Running PhotoPrism on ARM64-based devices (64-bit) <<
-Our stable version and development preview have been built into a single multi-arch Docker image for 64-bit AMD, Intel,
-and ARM processors:
+Our stable version and development preview have been built into a single multi-arch Docker
+image for 64-bit AMD, Intel, and ARM processors (Apple Silicon, Raspberry Pi 4):
-Stable Release : photoprism/photoprism:latest
-Development Preview: photoprism/photoprism:preview
-MariaDB : arm64v8/mariadb:10.6
+ Stable Release : photoprism/photoprism:latest
+ Development Preview: photoprism/photoprism:preview
-If your device meets the system requirements, mostly the same installation instructions as for regular Linux
-servers apply:
+In case the default multi-arch images cause problems, you can also use the following
+single-arch ARM64 images (updated and tested less frequently):
+
+ Stable Release : photoprism/photoprism:arm64
+ Development Preview: photoprism/photoprism:preview-arm64
+ MariaDB : arm64v8/mariadb:10.6
+
+If your device meets the system requirements, mostly the same installation instructions
+as for regular Linux servers apply:
https://docs.photoprism.app/getting-started/docker-compose/
-Existing users are advised to check their "docker-compose.yml" against our examples at dl.photoprism.app/docker from
-time to time in case there are new configuration options or other improvements. Update instructions can be found at
-the bottom of this README file.
+Existing users are advised to check their "docker-compose.yml" against our examples at
+
from time to time in case there are new configuration options
+or other improvements. Update instructions can be found at the bottom of this README file.
-Note that Raspberry Pi OS (Raspbian) is a 32-bit user-space Linux with a 64-bit kernel to remain compatible with older
-Raspberry software. This requires special configuration to run modern 64-bit applications and Docker images (see below).
+Note that Raspberry Pi OS (Raspbian) is a 32-bit user-space Linux with a 64-bit kernel to
+remain compatible with older Raspberry software. This requires special configuration to run
+modern 64-bit applications and Docker images (see below).
-If you do not have legacy software, we recommend choosing a standard 64-bit Linux distribution as it requires less
-experience:
+If you do not have legacy software, we recommend choosing a standard 64-bit Linux distribution
+as it requires less experience:
- Raspberry Pi Debian: https://raspi.debian.net/
- Ubuntu for Raspberry Pi: https://ubuntu.com/raspberry-pi
-- UbuntuDockerPi: https://github.com/guysoft/UbuntuDockerPi (64-bit Ubuntu Server with Docker pre-configured)
+- UbuntuDockerPi: https://github.com/guysoft/UbuntuDockerPi (Ubuntu incl. Docker pre-configured)
-Other distributions that target the same use case as Raspbian, such as CoreELEC, may have the same problems and
-should also not be used to run modern server applications.
+Other distributions that target the same use case as Raspbian, such as CoreELEC, may have
+the same problems and should also not be used to run modern server applications.
### Raspberry Pi OS ###
@@ -48,68 +55,79 @@ It may also help to set the DOCKER_DEFAULT_PLATFORM environment variable to "lin
### System Requirements ###
- Your device should have at least 3 GB of physical memory and a 64-bit operating system
-- While PhotoPrism has been reported to work on devices with less memory, we take no responsibility for instability or
- performance problems
+- While PhotoPrism has been reported to work on devices with less memory, we take no
+ responsibility for instability or performance problems
- RAW image conversion and TensorFlow are disabled on systems with 1 GB or less memory
-- Indexing large photo and video collections significantly benefits from local SSD storage and plenty of memory for
- caching, especially the conversion of RAW images and the transcoding of videos are very demanding
-- If less than 4 GB of swap space is configured or a manual memory/swap limit is set, this can cause unexpected
- restarts, for example, when the indexer temporarily needs more memory to process large files
-- High-resolution panoramic images may require additional swap space and/or physical memory above the recommended
- minimum
-- We recommend disabling kernel security in your docker-compose.yml, especially if you do not have experience with the
- configuration:
+- Indexing large photo and video collections significantly benefits from local SSD storage
+ and plenty of memory for caching, especially the conversion of RAW images and the transcoding
+ of videos are very demanding
+- If less than 4 GB of swap space is configured or a manual memory/swap limit is set, this can
+ cause unexpected restarts, for example, when the indexer temporarily needs more memory to
+ process large files
+- High-resolution panoramic images may require additional swap space and/or physical memory
+ above the recommended minimum
+- We recommend disabling kernel security in your docker-compose.yml, especially if you do not
+ have experience with the configuration:
```
photoprism:
security_opt:
- seccomp:unconfined
- apparmor:unconfined
```
-- If you install PhotoPrism on a public server outside your home network, always run it behind a secure HTTPS reverse
- proxy such as Traefik or Caddy https://docs.photoprism.app/getting-started/proxies/traefik/
+- If you install PhotoPrism on a public server outside your home network,
+ always run it behind a secure HTTPS reverse proxy such as Traefik or Caddy:
+ https://docs.photoprism.app/getting-started/proxies/traefik/
### Troubleshooting ###
-If your server runs out of memory, the index is frequently locked, or other system resources are running low:
+If your server runs out of memory, the index is frequently locked, or other
+system resources are running low:
-- Try reducing the number of workers by setting PHOTOPRISM_WORKERS to a reasonably small value in docker-compose.yml,
- depending on the performance of your device or cloud server:
+- Try reducing the number of workers by setting PHOTOPRISM_WORKERS to a
+ reasonably small value in docker-compose.yml, depending on the performance
+ of your device or cloud server:
https://docs.photoprism.app/getting-started/config-options/
-- If you are using SQLite, switch to MariaDB, which is better optimized for high concurrency
+- If you are using SQLite, switch to MariaDB, which is better optimized
+ for high concurrency
-- As a last measure, you can disable the use of TensorFlow for image classification and facial recognition
+- As a last measure, you can disable the use of TensorFlow for image
+ classification and facial recognition
-Other issues? Our troubleshooting checklists help you quickly diagnose and solve them:
+Other issues? Our troubleshooting checklists help you quickly diagnose
+and solve them:
https://docs.photoprism.app/getting-started/troubleshooting/
### Is a Raspberry Pi fast enough? ###
-This largely depends on your expectations and the number of files you have. Most users report that
-PhotoPrism runs smoothly on their Raspberry Pi 4. However, initial indexing typically takes much longer
-than on standard desktop computers.
+This largely depends on your expectations and the number of files you have.
+Most users report that PhotoPrism runs smoothly on their Raspberry Pi 4.
+However, initial indexing typically takes much longer than on standard
+desktop computers.
-Also keep in mind that the hardware has limited video transcoding capabilities, so the conversion of video
-file formats is not well-supported and software transcoding is generally slow.
+Also keep in mind that the hardware has limited video transcoding capabilities,
+so the conversion of video file formats is not well-supported and software
+transcoding is generally slow.
### Getting Updates ###
-Open a terminal and change to the folder where the "docker-compose.yml" file was saved. Now run the
-following commands to download the most recent image from Docker Hub and restart your instance
-in the background:
+Open a terminal and change to the folder where the "docker-compose.yml" file
+was saved. Now run the following commands to download the most recent image
+from Docker Hub and restart your instance in the background:
docker-compose pull --platform=arm64 photoprism
docker-compose stop photoprism
docker-compose up -d photoprism
-Pulling a new version can take several minutes, depending on your internet connection speed.
+Pulling a new version can take several minutes, depending on your internet
+connection speed.
-Note that running an image with ":latest" tag does not cause Docker to automatically download
-new images.
+Note that running an image with ":latest" tag does not cause Docker to
+automatically download new images.
### Credits ###
-A big thank you to [Guy Sheffer](https://github.com/guysoft) for helping us [build](https://github.com/photoprism/photoprism/issues/109)
-a Raspberry Pi version!
+A big thank you to Guy Sheffer (https://github.com/guysoft) for helping us
+build a Raspberry Pi version!
diff --git a/docker/examples/arm64/docker-compose.yml b/docker/examples/arm64/docker-compose.yml
index 35e9a5723..2395c1054 100644
--- a/docker/examples/arm64/docker-compose.yml
+++ b/docker/examples/arm64/docker-compose.yml
@@ -46,9 +46,8 @@ version: '3.5'
services:
photoprism:
- ## photoprism/photoprism-arm64 has been replaced by a single multi-arch image for AMD64 and ARM64 (64-bit).
- ## Use photoprism/photoprism:preview for testing preview builds or :latest for the stable release:
- image: photoprism/photoprism:latest
+ ## Use photoprism/photoprism:preview-arm64 for testing preview builds:
+ image: photoprism/photoprism:arm64
depends_on:
- mariadb
## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!
diff --git a/docker/examples/armv7/README b/docker/examples/armv7/README
index 0ba33f7f1..5f471b827 100644
--- a/docker/examples/armv7/README
+++ b/docker/examples/armv7/README
@@ -1,6 +1,7 @@
-# Running PhotoPrism on ARMv7-based devices (32-bit)
+>> Running PhotoPrism on ARMv7-based devices (32-bit) <<
-You may use the following 32-bit Docker images to run PhotoPrism and MariaDB on ARMv7-based devices:
+You may use the following 32-bit Docker images to run PhotoPrism and MariaDB
+on ARMv7-based devices:
Stable Release : photoprism/photoprism:armv7
Development Preview: photoprism/photoprism:preview-armv7
@@ -10,56 +11,65 @@ Docker Hub URL:
https://hub.docker.com/r/photoprism/photoprism/tags?page=1&name=armv7
-Note that Darktable is not included in the ARMv7 image because it is not 32-bit compatible.
-Always choose the regular 64-bit version if your device supports it.
+Note that Darktable is not included in the ARMv7 image because it is not
+32-bit compatible. Always choose the regular 64-bit version if your device
+supports it.
-If your device meets the system requirements, mostly the same installation instructions as for regular Linux
-servers apply:
+If your device meets the system requirements, mostly the same installation
+instructions as for regular Linux servers apply:
https://docs.photoprism.app/getting-started/docker-compose/
Please pay close attention to changed directory and environment variable names!
-Existing users are advised to check their "docker-compose.yml" against our examples at dl.photoprism.app/docker from
-time to time in case there are new configuration options or other improvements. Update instructions can be found at
+Existing users are advised to check their "docker-compose.yml" against our
+examples at from time to time in case there are new
+configuration options or other improvements. Update instructions can be found at
the bottom of this README file.
### System Requirements ###
-- Your device should have at least 3 GB of physical memory and a 64-bit operating system (always use our ARM64 image
- if possible)
-- While PhotoPrism has been reported to work on devices with less memory, we take no responsibility for instability or
- performance problems
+- Your device should have at least 3 GB of physical memory and a 64-bit operating
+ system (always use our ARM64 image if possible)
+- While PhotoPrism has been reported to work on devices with less memory, we take
+ no responsibility for instability or performance problems
- RAW image conversion and TensorFlow are disabled on systems with 1 GB or less memory
-- Indexing large photo and video collections significantly benefits from local SSD storage and plenty of memory for
- caching, especially the conversion of RAW images and the transcoding of videos are very demanding
-- If less than 4 GB of swap space is configured or a manual memory/swap limit is set, this can cause unexpected
- restarts, for example, when the indexer temporarily needs more memory to process large files
-- High-resolution panoramic images may require additional swap space and/or physical memory above the recommended
- minimum
-- We recommend disabling kernel security in your docker-compose.yml, especially if you do not have experience with the
- configuration:
+- Indexing large photo and video collections significantly benefits from local SSD
+ storage and plenty of memory for caching, especially the conversion of RAW images
+ and the transcoding of videos are very demanding
+- If less than 4 GB of swap space is configured or a manual memory/swap limit is set,
+ this can cause unexpected restarts, for example, when the indexer temporarily needs
+ more memory to process large files
+- High-resolution panoramic images may require additional swap space and/or physical
+ memory above the recommended minimum
+- We recommend disabling kernel security in your docker-compose.yml, especially if you
+ do not have experience with the configuration:
```
photoprism:
security_opt:
- seccomp:unconfined
- apparmor:unconfined
```
-- If you install PhotoPrism on a public server outside your home network, always run it behind a secure HTTPS reverse
- proxy such as Traefik or Caddy https://docs.photoprism.app/getting-started/proxies/traefik/
+- If you install PhotoPrism on a public server outside your home network, always run
+ it behind a secure HTTPS reverse proxy such as Traefik or Caddy:
+ https://docs.photoprism.app/getting-started/proxies/traefik/
### Troubleshooting ###
-If your server runs out of memory, the index is frequently locked, or other system resources are running low:
+If your server runs out of memory, the index is frequently locked, or other
+system resources are running low:
-- Try reducing the number of workers by setting PHOTOPRISM_WORKERS to a reasonably small value in docker-compose.yml,
- depending on the performance of your device or cloud server:
+- Try reducing the number of workers by setting PHOTOPRISM_WORKERS to a reasonably
+ small value in docker-compose.yml, depending on the performance of your device
+ or cloud server:
https://docs.photoprism.app/getting-started/config-options/
-- If you are using SQLite, switch to MariaDB, which is better optimized for high concurrency
+- If you are using SQLite, switch to MariaDB, which is better optimized for
+ high concurrency
-- As a last measure, you can disable the use of TensorFlow for image classification and facial recognition
+- As a last measure, you can disable the use of TensorFlow for image classification
+ and facial recognition
Other issues? Our troubleshooting checklists help you quickly diagnose and solve them:
@@ -67,20 +77,21 @@ Other issues? Our troubleshooting checklists help you quickly diagnose and solve
### Getting Updates ###
-Open a terminal and change to the folder where the "docker-compose.yml" file was saved. Now run the
-following commands to download the most recent image from Docker Hub and restart your instance
-in the background:
+Open a terminal and change to the folder where the "docker-compose.yml" file
+was saved. Now run the following commands to download the most recent image
+from Docker Hub and restart your instance in the background:
docker-compose pull --platform=arm photoprism
docker-compose stop photoprism
docker-compose up -d photoprism
-Pulling a new version can take several minutes, depending on your internet connection speed.
+Pulling a new version can take several minutes, depending on your internet
+connection speed.
-Note that running an image with ":latest" tag does not cause Docker to automatically download
-new images.
+Note that running an image with ":latest" tag does not cause Docker to automatically
+download new images.
### Credits ###
-A big thank you to [Guy Sheffer](https://github.com/guysoft) for helping us [build](https://github.com/photoprism/photoprism/issues/109)
-a Raspberry Pi version!
+A big thank you to Guy Sheffer (https://github.com/guysoft) for helping us
+build a Raspberry Pi version!
\ No newline at end of file
diff --git a/docker/examples/armv7/docker-compose.yml b/docker/examples/armv7/docker-compose.yml
index 44835696a..72122a95d 100644
--- a/docker/examples/armv7/docker-compose.yml
+++ b/docker/examples/armv7/docker-compose.yml
@@ -41,7 +41,7 @@ version: '3.5'
services:
photoprism:
- ## Special Docker image for running PhotoPrism on ARMv7-based devices and those with a 32-bit operating system:
+ ## Use photoprism/photoprism:preview-armv7 for testing preview builds:
image: photoprism/photoprism:armv7
depends_on:
- mariadb
diff --git a/docker/examples/docker-compose.yml b/docker/examples/docker-compose.yml
index 1d230dc88..3aaa9dedc 100644
--- a/docker/examples/docker-compose.yml
+++ b/docker/examples/docker-compose.yml
@@ -79,8 +79,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
- ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean):
- # PHOTOPRISM_INIT: "update gpu tensorflow clean"
+ ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
+ # PHOTOPRISM_INIT: "gpu tensorflow"
## Hardware video transcoding config (optional)
# PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32)
# PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50)
diff --git a/docker/examples/macos/docker-compose.yml b/docker/examples/macos/docker-compose.yml
index 7c77a7769..b3970da0d 100644
--- a/docker/examples/macos/docker-compose.yml
+++ b/docker/examples/macos/docker-compose.yml
@@ -75,8 +75,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
- ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean):
- # PHOTOPRISM_INIT: "update gpu tensorflow clean"
+ ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
+ # PHOTOPRISM_INIT: "gpu tensorflow"
## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
volumes:
# "/host/folder:/photoprism/folder" # example
diff --git a/docker/examples/scheduler/docker-compose.yml b/docker/examples/scheduler/docker-compose.yml
index a9e83b190..27f28013c 100644
--- a/docker/examples/scheduler/docker-compose.yml
+++ b/docker/examples/scheduler/docker-compose.yml
@@ -81,8 +81,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
- ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean):
- # PHOTOPRISM_INIT: "update gpu tensorflow clean"
+ ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
+ # PHOTOPRISM_INIT: "gpu tensorflow"
## Run as a specific user, group, or with a custom umask (does not work together with "user:")
# PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000
diff --git a/docker/examples/sqlite/docker-compose.yml b/docker/examples/sqlite/docker-compose.yml
index 1c1f9bf18..73b2c80ba 100644
--- a/docker/examples/sqlite/docker-compose.yml
+++ b/docker/examples/sqlite/docker-compose.yml
@@ -74,8 +74,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: ""
- ## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean):
- # PHOTOPRISM_INIT: "update gpu tensorflow clean"
+ ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
+ # PHOTOPRISM_INIT: "gpu tensorflow"
## Run as a specific user, group, or with a custom umask (does not work together with "user:")
# PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000
diff --git a/scripts/build.sh b/scripts/build.sh
index 9e89a16b8..be3fa052e 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -31,7 +31,7 @@ fi
# build binary
echo "=> compiling \"$BUILD_NAME\" with \"${GO_VER^}\""
-echo "=> command: ${BUILD_CMD[*]}"
+echo "=> ${BUILD_CMD[*]}"
"${BUILD_CMD[@]}"
# show size
diff --git a/scripts/dist/Makefile b/scripts/dist/Makefile
index 9c4161e64..38561b71c 100644
--- a/scripts/dist/Makefile
+++ b/scripts/dist/Makefile
@@ -16,16 +16,16 @@ clean:
apt-get -y autoremove
apt-get -y autoclean
rm -rf /var/lib/apt/lists/*
-nano:
- apt-get update
- apt-get -qq install nano
gpu:
./install-gpu.sh
tensorflow:
./install-tensorflow.sh auto
davfs:
./install-davfs.sh
+nano:
+ apt-get update
+ apt-get -qq install nano
-.PHONY: update apt-upgrade clean apt-cleanup nano gpu tensorflow davfs \
+.PHONY: update apt-upgrade clean apt-cleanup gpu tensorflow davfs nano \
tensorflow-amd64-cpu tensorflow-amd64-avx tensorflow-amd64-avx2 \
intel-graphics install-intel-graphics install-davfs;
diff --git a/scripts/dist/install-gpu.sh b/scripts/dist/install-gpu.sh
index 1f8d2a44c..e37a99f11 100755
--- a/scripts/dist/install-gpu.sh
+++ b/scripts/dist/install-gpu.sh
@@ -33,7 +33,7 @@ for t in ${GPU_DETECTED[@]}; do
;;
nvidia)
- apt-get -qq install nvidia-vdpau-driver nvidia-driver-libs nvidia-kernel-dkms libva2 vainfo libva-wayland2
+ apt-get -qq install nvidia-opencl-icd nvidia-vdpau-driver nvidia-driver-libs nvidia-kernel-dkms libva2 vainfo libva-wayland2
;;
*)