Docker: Auto-install "nvidia-opencl-icd" and update docs #1337 #2076

This commit is contained in:
Michael Mayer 2022-03-02 12:21:46 +01:00
parent 3d9cb51641
commit 6fb0eb2abe
13 changed files with 133 additions and 105 deletions

View file

@ -1,4 +1,4 @@
FROM photoprism/develop:220301-bullseye FROM photoprism/develop:220302-bullseye
## alternative base images ## alternative base images
# FROM photoprism/develop:buster # Debian 10, Codename "Buster" # FROM photoprism/develop:buster # Debian 10, Codename "Buster"

View file

@ -107,8 +107,8 @@ services:
PHOTOPRISM_OIDC_ISSUER_URL: "https://keycloak.localssl.dev/auth/realms/master" PHOTOPRISM_OIDC_ISSUER_URL: "https://keycloak.localssl.dev/auth/realms/master"
PHOTOPRISM_OIDC_CLIENT_ID: "photoprism-develop" PHOTOPRISM_OIDC_CLIENT_ID: "photoprism-develop"
PHOTOPRISM_OIDC_CLIENT_SECRET: "9d8351a0-ca01-4556-9c37-85eb634869b9" PHOTOPRISM_OIDC_CLIENT_SECRET: "9d8351a0-ca01-4556-9c37-85eb634869b9"
## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean): ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
# PHOTOPRISM_INIT: "update gpu tensorflow clean" # PHOTOPRISM_INIT: "gpu tensorflow"
## Hardware video transcoding config (optional): ## Hardware video transcoding config (optional):
# PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32) # PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32)
# PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50) # PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50)

View file

@ -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, Our stable version and development preview have been built into a single multi-arch Docker
and ARM processors: image for 64-bit AMD, Intel, and ARM processors (Apple Silicon, Raspberry Pi 4):
Stable Release : photoprism/photoprism:latest Stable Release : photoprism/photoprism:latest
Development Preview: photoprism/photoprism:preview Development Preview: photoprism/photoprism:preview
MariaDB : arm64v8/mariadb:10.6
If your device meets the system requirements, mostly the same installation instructions as for regular Linux In case the default multi-arch images cause problems, you can also use the following
servers apply: 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/ 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 Existing users are advised to check their "docker-compose.yml" against our examples at
time to time in case there are new configuration options or other improvements. Update instructions can be found at <dl.photoprism.app/docker> from time to time in case there are new configuration options
the bottom of this README file. 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 Note that Raspberry Pi OS (Raspbian) is a 32-bit user-space Linux with a 64-bit kernel to
Raspberry software. This requires special configuration to run modern 64-bit applications and Docker images (see below). 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 If you do not have legacy software, we recommend choosing a standard 64-bit Linux distribution
experience: as it requires less experience:
- Raspberry Pi Debian: https://raspi.debian.net/ - Raspberry Pi Debian: https://raspi.debian.net/
- Ubuntu for Raspberry Pi: https://ubuntu.com/raspberry-pi - 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 Other distributions that target the same use case as Raspbian, such as CoreELEC, may have
should also not be used to run modern server applications. the same problems and should also not be used to run modern server applications.
### Raspberry Pi OS ### ### Raspberry Pi OS ###
@ -48,68 +55,79 @@ It may also help to set the DOCKER_DEFAULT_PLATFORM environment variable to "lin
### System Requirements ### ### System Requirements ###
- Your device should have at least 3 GB of physical memory and a 64-bit operating system - 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 - While PhotoPrism has been reported to work on devices with less memory, we take no
performance problems responsibility for instability or performance problems
- RAW image conversion and TensorFlow are disabled on systems with 1 GB or less memory - 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 - Indexing large photo and video collections significantly benefits from local SSD storage
caching, especially the conversion of RAW images and the transcoding of videos are very demanding and plenty of memory for caching, especially the conversion of RAW images and the transcoding
- If less than 4 GB of swap space is configured or a manual memory/swap limit is set, this can cause unexpected of videos are very demanding
restarts, for example, when the indexer temporarily needs more memory to process large files - If less than 4 GB of swap space is configured or a manual memory/swap limit is set, this can
- High-resolution panoramic images may require additional swap space and/or physical memory above the recommended cause unexpected restarts, for example, when the indexer temporarily needs more memory to
minimum process large files
- We recommend disabling kernel security in your docker-compose.yml, especially if you do not have experience with the - High-resolution panoramic images may require additional swap space and/or physical memory
configuration: 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: photoprism:
security_opt: security_opt:
- seccomp:unconfined - seccomp:unconfined
- apparmor:unconfined - apparmor:unconfined
``` ```
- If you install PhotoPrism on a public server outside your home network, always run it behind a secure HTTPS reverse - If you install PhotoPrism on a public server outside your home network,
proxy such as Traefik or Caddy https://docs.photoprism.app/getting-started/proxies/traefik/ always run it behind a secure HTTPS reverse proxy such as Traefik or Caddy:
https://docs.photoprism.app/getting-started/proxies/traefik/
### Troubleshooting ### ### 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, - Try reducing the number of workers by setting PHOTOPRISM_WORKERS to a
depending on the performance of your device or cloud server: 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/ 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/ https://docs.photoprism.app/getting-started/troubleshooting/
### Is a Raspberry Pi fast enough? ### ### Is a Raspberry Pi fast enough? ###
This largely depends on your expectations and the number of files you have. Most users report that This largely depends on your expectations and the number of files you have.
PhotoPrism runs smoothly on their Raspberry Pi 4. However, initial indexing typically takes much longer Most users report that PhotoPrism runs smoothly on their Raspberry Pi 4.
than on standard desktop computers. 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 Also keep in mind that the hardware has limited video transcoding capabilities,
file formats is not well-supported and software transcoding is generally slow. so the conversion of video file formats is not well-supported and software
transcoding is generally slow.
### Getting Updates ### ### Getting Updates ###
Open a terminal and change to the folder where the "docker-compose.yml" file was saved. Now run the Open a terminal and change to the folder where the "docker-compose.yml" file
following commands to download the most recent image from Docker Hub and restart your instance was saved. Now run the following commands to download the most recent image
in the background: from Docker Hub and restart your instance in the background:
docker-compose pull --platform=arm64 photoprism docker-compose pull --platform=arm64 photoprism
docker-compose stop photoprism docker-compose stop photoprism
docker-compose up -d 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 Note that running an image with ":latest" tag does not cause Docker to
new images. automatically download new images.
### Credits ### ### Credits ###
A big thank you to [Guy Sheffer](https://github.com/guysoft) for helping us [build](https://github.com/photoprism/photoprism/issues/109) A big thank you to Guy Sheffer (https://github.com/guysoft) for helping us
a Raspberry Pi version! build a Raspberry Pi version!

View file

@ -46,9 +46,8 @@ version: '3.5'
services: services:
photoprism: photoprism:
## photoprism/photoprism-arm64 has been replaced by a single multi-arch image for AMD64 and ARM64 (64-bit). ## Use photoprism/photoprism:preview-arm64 for testing preview builds:
## Use photoprism/photoprism:preview for testing preview builds or :latest for the stable release: image: photoprism/photoprism:arm64
image: photoprism/photoprism:latest
depends_on: depends_on:
- mariadb - mariadb
## Don't enable automatic restarts until PhotoPrism has been properly configured and tested! ## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!

View file

@ -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 Stable Release : photoprism/photoprism:armv7
Development Preview: photoprism/photoprism:preview-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 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. Note that Darktable is not included in the ARMv7 image because it is not
Always choose the regular 64-bit version if your device supports it. 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 If your device meets the system requirements, mostly the same installation
servers apply: instructions as for regular Linux servers apply:
https://docs.photoprism.app/getting-started/docker-compose/ https://docs.photoprism.app/getting-started/docker-compose/
Please pay close attention to changed directory and environment variable names! 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 Existing users are advised to check their "docker-compose.yml" against our
time to time in case there are new configuration options or other improvements. Update instructions can be found at 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. the bottom of this README file.
### System Requirements ### ### System Requirements ###
- Your device should have at least 3 GB of physical memory and a 64-bit operating system (always use our ARM64 image - Your device should have at least 3 GB of physical memory and a 64-bit operating
if possible) 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 - While PhotoPrism has been reported to work on devices with less memory, we take
performance problems no responsibility for instability or performance problems
- RAW image conversion and TensorFlow are disabled on systems with 1 GB or less memory - 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 - Indexing large photo and video collections significantly benefits from local SSD
caching, especially the conversion of RAW images and the transcoding of videos are very demanding storage and plenty of memory for caching, especially the conversion of RAW images
- If less than 4 GB of swap space is configured or a manual memory/swap limit is set, this can cause unexpected and the transcoding of videos are very demanding
restarts, for example, when the indexer temporarily needs more memory to process large files - If less than 4 GB of swap space is configured or a manual memory/swap limit is set,
- High-resolution panoramic images may require additional swap space and/or physical memory above the recommended this can cause unexpected restarts, for example, when the indexer temporarily needs
minimum more memory to process large files
- We recommend disabling kernel security in your docker-compose.yml, especially if you do not have experience with the - High-resolution panoramic images may require additional swap space and/or physical
configuration: 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: photoprism:
security_opt: security_opt:
- seccomp:unconfined - seccomp:unconfined
- apparmor:unconfined - apparmor:unconfined
``` ```
- If you install PhotoPrism on a public server outside your home network, always run it behind a secure HTTPS reverse - If you install PhotoPrism on a public server outside your home network, always run
proxy such as Traefik or Caddy https://docs.photoprism.app/getting-started/proxies/traefik/ it behind a secure HTTPS reverse proxy such as Traefik or Caddy:
https://docs.photoprism.app/getting-started/proxies/traefik/
### Troubleshooting ### ### 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, - Try reducing the number of workers by setting PHOTOPRISM_WORKERS to a reasonably
depending on the performance of your device or cloud server: small value in docker-compose.yml, depending on the performance of your device
or cloud server:
https://docs.photoprism.app/getting-started/config-options/ 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:
@ -67,20 +77,21 @@ Other issues? Our troubleshooting checklists help you quickly diagnose and solve
### Getting Updates ### ### Getting Updates ###
Open a terminal and change to the folder where the "docker-compose.yml" file was saved. Now run the Open a terminal and change to the folder where the "docker-compose.yml" file
following commands to download the most recent image from Docker Hub and restart your instance was saved. Now run the following commands to download the most recent image
in the background: from Docker Hub and restart your instance in the background:
docker-compose pull --platform=arm photoprism docker-compose pull --platform=arm photoprism
docker-compose stop photoprism docker-compose stop photoprism
docker-compose up -d 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 Note that running an image with ":latest" tag does not cause Docker to automatically
new images. download new images.
### Credits ### ### Credits ###
A big thank you to [Guy Sheffer](https://github.com/guysoft) for helping us [build](https://github.com/photoprism/photoprism/issues/109) A big thank you to Guy Sheffer (https://github.com/guysoft) for helping us
a Raspberry Pi version! build a Raspberry Pi version!

View file

@ -41,7 +41,7 @@ version: '3.5'
services: services:
photoprism: 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 image: photoprism/photoprism:armv7
depends_on: depends_on:
- mariadb - mariadb

View file

@ -79,8 +79,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "" PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: "" PHOTOPRISM_SITE_AUTHOR: ""
## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean): ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
# PHOTOPRISM_INIT: "update gpu tensorflow clean" # PHOTOPRISM_INIT: "gpu tensorflow"
## Hardware video transcoding config (optional) ## Hardware video transcoding config (optional)
# PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32) # PHOTOPRISM_FFMPEG_BUFFERS: "64" # FFmpeg capture buffers (default: 32)
# PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50) # PHOTOPRISM_FFMPEG_BITRATE: "32" # FFmpeg encoding bitrate limit in Mbit/s (default: 50)

View file

@ -75,8 +75,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "" PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: "" PHOTOPRISM_SITE_AUTHOR: ""
## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean): ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
# PHOTOPRISM_INIT: "update gpu tensorflow clean" # PHOTOPRISM_INIT: "gpu tensorflow"
## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory ## Storage Folders: "~" is a shortcut for your home directory, "." for the current directory
volumes: volumes:
# "/host/folder:/photoprism/folder" # example # "/host/folder:/photoprism/folder" # example

View file

@ -81,8 +81,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "" PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: "" PHOTOPRISM_SITE_AUTHOR: ""
## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean): ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
# PHOTOPRISM_INIT: "update gpu tensorflow clean" # PHOTOPRISM_INIT: "gpu tensorflow"
## Run as a specific user, group, or with a custom umask (does not work together with "user:") ## Run as a specific user, group, or with a custom umask (does not work together with "user:")
# PHOTOPRISM_UID: 1000 # PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000 # PHOTOPRISM_GID: 1000

View file

@ -74,8 +74,8 @@ services:
PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
PHOTOPRISM_SITE_DESCRIPTION: "" PHOTOPRISM_SITE_DESCRIPTION: ""
PHOTOPRISM_SITE_AUTHOR: "" PHOTOPRISM_SITE_AUTHOR: ""
## Run/install on first startup (options: update, gpu, tensorflow, davfs, clean): ## Run/install on first startup (options: update, gpu, tensorflow, davfs, nano, clean):
# PHOTOPRISM_INIT: "update gpu tensorflow clean" # PHOTOPRISM_INIT: "gpu tensorflow"
## Run as a specific user, group, or with a custom umask (does not work together with "user:") ## Run as a specific user, group, or with a custom umask (does not work together with "user:")
# PHOTOPRISM_UID: 1000 # PHOTOPRISM_UID: 1000
# PHOTOPRISM_GID: 1000 # PHOTOPRISM_GID: 1000

View file

@ -31,7 +31,7 @@ fi
# build binary # build binary
echo "=> compiling \"$BUILD_NAME\" with \"${GO_VER^}\"" echo "=> compiling \"$BUILD_NAME\" with \"${GO_VER^}\""
echo "=> command: ${BUILD_CMD[*]}" echo "=> ${BUILD_CMD[*]}"
"${BUILD_CMD[@]}" "${BUILD_CMD[@]}"
# show size # show size

View file

@ -16,16 +16,16 @@ clean:
apt-get -y autoremove apt-get -y autoremove
apt-get -y autoclean apt-get -y autoclean
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
nano:
apt-get update
apt-get -qq install nano
gpu: gpu:
./install-gpu.sh ./install-gpu.sh
tensorflow: tensorflow:
./install-tensorflow.sh auto ./install-tensorflow.sh auto
davfs: davfs:
./install-davfs.sh ./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 \ tensorflow-amd64-cpu tensorflow-amd64-avx tensorflow-amd64-avx2 \
intel-graphics install-intel-graphics install-davfs; intel-graphics install-intel-graphics install-davfs;

View file

@ -33,7 +33,7 @@ for t in ${GPU_DETECTED[@]}; do
;; ;;
nvidia) 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
;; ;;
*) *)