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
# 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_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)

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,
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
<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.
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!

View file

@ -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!

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
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 <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.
### 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!

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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
;;
*)