mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-12 00:34:13 +01:00
Docker: Update and improve scripts for installing CPU/GPU support #1337
This commit is contained in:
@@ -107,20 +107,19 @@ 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"
|
||||||
## Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root):
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
# PHOTOPRISM_INIT: "tensorflow-amd64-avx2"
|
# PHOTOPRISM_INIT: "update gpu tensorflow clean"
|
||||||
## 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)
|
||||||
# PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # use Video4Linux for AVC transcoding (default: libx264)
|
# PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # use Video4Linux for AVC transcoding (default: libx264)
|
||||||
# PHOTOPRISM_FFMPEG_ENCODER: "h264_qsv" # use Intel Quick Sync Video for AVC transcoding (default: libx264)
|
# PHOTOPRISM_FFMPEG_ENCODER: "h264_qsv" # use Intel Quick Sync Video for AVC transcoding (default: libx264)
|
||||||
# PHOTOPRISM_INIT: "intel-graphics tensorflow-amd64-avx2" # Enable TensorFlow AVX2 & Intel Graphics support
|
## Share hardware devices for video transcoding and machine learning (optional):
|
||||||
# PHOTOPRISM_INIT: "install-updates" # installs general operating system updates
|
|
||||||
## Hardware devices for video transcoding and machine learning (optional):
|
|
||||||
# devices:
|
# devices:
|
||||||
|
# - "/dev/dri:/dev/dri"
|
||||||
|
# - "/dev/nvidia0:/dev/nvidia0"
|
||||||
|
# - "/dev/nvidiactl:/dev/nvidiactl"
|
||||||
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
||||||
# - "/dev/dri/renderD128:/dev/dri/renderD128" # Intel GPU
|
|
||||||
# - "/dev/dri/card0:/dev/dri/card0"
|
|
||||||
working_dir: "/go/src/github.com/photoprism/photoprism"
|
working_dir: "/go/src/github.com/photoprism/photoprism"
|
||||||
volumes:
|
volumes:
|
||||||
- ".:/go/src/github.com/photoprism/photoprism"
|
- ".:/go/src/github.com/photoprism/photoprism"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ ENV DOCKER_ARCH=$TARGETARCH \
|
|||||||
|
|
||||||
# copy scripts and debian backports sources list
|
# copy scripts and debian backports sources list
|
||||||
COPY --chown=root:root --chmod=755 /scripts/dist/* /root/.local/bin/
|
COPY --chown=root:root --chmod=755 /scripts/dist/* /root/.local/bin/
|
||||||
COPY --chown=root:root --chmod=644 /docker/develop/bullseye/backports.list /etc/apt/sources.list.d/backports.list
|
COPY --chown=root:root --chmod=644 /docker/develop/bullseye/sources.list /etc/apt/sources.list.d/bullseye.list
|
||||||
COPY --chown=root:root --chmod=755 /docker/develop/entrypoint.sh /entrypoint.sh
|
COPY --chown=root:root --chmod=755 /docker/develop/entrypoint.sh /entrypoint.sh
|
||||||
COPY --chown=root:root --chmod=644 /.my.cnf /etc/my.cnf
|
COPY --chown=root:root --chmod=644 /.my.cnf /etc/my.cnf
|
||||||
|
|
||||||
@@ -33,7 +33,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
||||||
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
gpg \
|
gpg \
|
||||||
@@ -44,14 +45,19 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
gcc \
|
gcc \
|
||||||
g++ \
|
g++ \
|
||||||
sudo \
|
sudo \
|
||||||
|
bash \
|
||||||
make \
|
make \
|
||||||
nano \
|
nano \
|
||||||
|
lsof \
|
||||||
|
lshw \
|
||||||
|
git \
|
||||||
|
jq \
|
||||||
git \
|
git \
|
||||||
zip \
|
zip \
|
||||||
|
unzip \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
rsync \
|
rsync \
|
||||||
unzip \
|
|
||||||
sqlite3 \
|
sqlite3 \
|
||||||
chrpath \
|
chrpath \
|
||||||
gettext \
|
gettext \
|
||||||
@@ -76,7 +82,7 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
ffmpeg \
|
ffmpeg \
|
||||||
ffmpegthumbnailer \
|
ffmpegthumbnailer \
|
||||||
libavcodec-extra \
|
libavcodec-extra \
|
||||||
sudo && \
|
&& \
|
||||||
/root/.local/bin/install-nodejs.sh && \
|
/root/.local/bin/install-nodejs.sh && \
|
||||||
/root/.local/bin/install-tensorflow.sh && \
|
/root/.local/bin/install-tensorflow.sh && \
|
||||||
/root/.local/bin/install-go.sh && \
|
/root/.local/bin/install-go.sh && \
|
||||||
@@ -93,7 +99,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ ENV DOCKER_ARCH=$TARGETARCH \
|
|||||||
|
|
||||||
# copy scripts and debian backports sources list
|
# copy scripts and debian backports sources list
|
||||||
COPY /scripts/dist/ /opt/photoprism/scripts
|
COPY /scripts/dist/ /opt/photoprism/scripts
|
||||||
COPY /docker/develop/bullseye/backports.list /etc/apt/sources.list.d/backports.list
|
COPY /docker/develop/bullseye/sources.list /etc/apt/sources.list.d/bullseye.list
|
||||||
|
|
||||||
# install additional distribution packages
|
# install additional distribution packages
|
||||||
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
||||||
@@ -25,10 +25,14 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
||||||
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
|
jq \
|
||||||
|
zip \
|
||||||
gpg \
|
gpg \
|
||||||
|
lshw \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
make \
|
make \
|
||||||
@@ -42,7 +46,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
rawtherapee \
|
rawtherapee \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
ffmpegthumbnailer \
|
ffmpegthumbnailer \
|
||||||
libavcodec-extra && \
|
libavcodec-extra \
|
||||||
|
&& \
|
||||||
install-mariadb.sh mariadb-client && \
|
install-mariadb.sh mariadb-client && \
|
||||||
install-darktable.sh && \
|
install-darktable.sh && \
|
||||||
install -d -m 0777 -o 1000 -g 1000 \
|
install -d -m 0777 -o 1000 -g 1000 \
|
||||||
@@ -55,7 +60,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
cleanup.sh
|
cleanup.sh
|
||||||
|
|
||||||
# define default directory and user
|
# define default directory and user
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ ENV DOCKER_ARCH=$TARGETARCH \
|
|||||||
|
|
||||||
# copy scripts and debian backports sources list
|
# copy scripts and debian backports sources list
|
||||||
COPY --chown=root:root --chmod=755 /scripts/dist/* /root/.local/bin/
|
COPY --chown=root:root --chmod=755 /scripts/dist/* /root/.local/bin/
|
||||||
COPY --chown=root:root --chmod=644 /docker/develop/bullseye/backports.list /etc/apt/sources.list.d/backports.list
|
COPY --chown=root:root --chmod=644 /docker/develop/bullseye/sources.list /etc/apt/sources.list.d/bullseye.list
|
||||||
COPY --chown=root:root --chmod=755 /docker/develop/entrypoint.sh /entrypoint.sh
|
COPY --chown=root:root --chmod=755 /docker/develop/entrypoint.sh /entrypoint.sh
|
||||||
COPY --chown=root:root --chmod=644 /.my.cnf /etc/my.cnf
|
COPY --chown=root:root --chmod=644 /.my.cnf /etc/my.cnf
|
||||||
|
|
||||||
@@ -33,7 +33,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
||||||
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
gpg \
|
gpg \
|
||||||
@@ -47,12 +48,15 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
bash \
|
bash \
|
||||||
make \
|
make \
|
||||||
nano \
|
nano \
|
||||||
|
lsof \
|
||||||
|
lshw \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
rsync \
|
rsync \
|
||||||
unzip \
|
jq \
|
||||||
zip \
|
|
||||||
git \
|
git \
|
||||||
|
zip \
|
||||||
|
unzip \
|
||||||
gettext \
|
gettext \
|
||||||
chromium \
|
chromium \
|
||||||
chromium-driver \
|
chromium-driver \
|
||||||
@@ -83,8 +87,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
libavcodec-extra \
|
libavcodec-extra \
|
||||||
davfs2 \
|
davfs2 \
|
||||||
chrpath \
|
chrpath \
|
||||||
lsof \
|
apache2-utils \
|
||||||
apache2-utils && \
|
&& \
|
||||||
/root/.local/bin/install-nodejs.sh && \
|
/root/.local/bin/install-nodejs.sh && \
|
||||||
/root/.local/bin/install-mariadb.sh mariadb-client && \
|
/root/.local/bin/install-mariadb.sh mariadb-client && \
|
||||||
/root/.local/bin/install-tensorflow.sh && \
|
/root/.local/bin/install-tensorflow.sh && \
|
||||||
@@ -102,7 +106,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
|
|
||||||
4
docker/develop/bullseye/sources.list
Normal file
4
docker/develop/bullseye/sources.list
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
deb http://deb.debian.org/debian bullseye contrib non-free
|
||||||
|
deb http://deb.debian.org/debian bullseye-updates contrib non-free
|
||||||
|
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
|
||||||
|
deb http://security.debian.org/debian-security bullseye-security contrib non-free
|
||||||
@@ -23,7 +23,7 @@ ENV DOCKER_ARCH=$TARGETARCH \
|
|||||||
|
|
||||||
# copy scripts and debian backports sources list
|
# copy scripts and debian backports sources list
|
||||||
COPY --chown=root:root --chmod=755 /scripts/dist/* /root/.local/bin/
|
COPY --chown=root:root --chmod=755 /scripts/dist/* /root/.local/bin/
|
||||||
COPY --chown=root:root --chmod=644 /docker/develop/buster/backports.list /etc/apt/sources.list.d/backports.list
|
COPY --chown=root:root --chmod=644 /docker/develop/buster/sources.list /etc/apt/sources.list.d/buster.list
|
||||||
COPY --chown=root:root --chmod=755 /docker/develop/entrypoint.sh /entrypoint.sh
|
COPY --chown=root:root --chmod=755 /docker/develop/entrypoint.sh /entrypoint.sh
|
||||||
COPY --chown=root:root --chmod=644 /.my.cnf /etc/my.cnf
|
COPY --chown=root:root --chmod=644 /.my.cnf /etc/my.cnf
|
||||||
|
|
||||||
@@ -33,7 +33,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
||||||
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
gpg \
|
gpg \
|
||||||
@@ -47,12 +48,15 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
bash \
|
bash \
|
||||||
make \
|
make \
|
||||||
nano \
|
nano \
|
||||||
|
lsof \
|
||||||
|
lshw \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
rsync \
|
rsync \
|
||||||
unzip \
|
jq \
|
||||||
zip \
|
|
||||||
git \
|
git \
|
||||||
|
zip \
|
||||||
|
unzip \
|
||||||
gettext \
|
gettext \
|
||||||
chromium \
|
chromium \
|
||||||
chromium-driver \
|
chromium-driver \
|
||||||
@@ -83,8 +87,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
libavcodec-extra \
|
libavcodec-extra \
|
||||||
davfs2 \
|
davfs2 \
|
||||||
chrpath \
|
chrpath \
|
||||||
lsof \
|
apache2-utils \
|
||||||
apache2-utils && \
|
&& \
|
||||||
/root/.local/bin/install-nodejs.sh && \
|
/root/.local/bin/install-nodejs.sh && \
|
||||||
/root/.local/bin/install-tensorflow.sh && \
|
/root/.local/bin/install-tensorflow.sh && \
|
||||||
/root/.local/bin/install-darktable.sh && \
|
/root/.local/bin/install-darktable.sh && \
|
||||||
@@ -101,7 +105,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
deb http://deb.debian.org/debian buster-backports main contrib non-free
|
|
||||||
4
docker/develop/buster/sources.list
Normal file
4
docker/develop/buster/sources.list
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
deb http://deb.debian.org/debian buster contrib non-free
|
||||||
|
deb http://deb.debian.org/debian buster-updates contrib non-free
|
||||||
|
deb http://deb.debian.org/debian buster-backports main contrib non-free
|
||||||
|
deb http://security.debian.org/debian-security buster-security contrib non-free
|
||||||
@@ -32,7 +32,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
echo 'APT::Install-Suggests "false";' > /etc/apt/apt.conf.d/80suggests && \
|
||||||
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/80forceyes && \
|
||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
apt-utils \
|
apt-utils \
|
||||||
gpg \
|
gpg \
|
||||||
@@ -43,12 +44,18 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
build-essential \
|
build-essential \
|
||||||
g++ \
|
g++ \
|
||||||
gcc \
|
gcc \
|
||||||
|
sudo \
|
||||||
bash \
|
bash \
|
||||||
make \
|
make \
|
||||||
nano \
|
nano \
|
||||||
|
lsof \
|
||||||
|
lshw \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
|
jq \
|
||||||
git \
|
git \
|
||||||
|
zip \
|
||||||
|
unzip \
|
||||||
gettext \
|
gettext \
|
||||||
firefox \
|
firefox \
|
||||||
mariadb-client \
|
mariadb-client \
|
||||||
@@ -70,8 +77,6 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
libxtst6 \
|
libxtst6 \
|
||||||
librsvg2-bin \
|
librsvg2-bin \
|
||||||
rsync \
|
rsync \
|
||||||
unzip \
|
|
||||||
zip \
|
|
||||||
sqlite3 \
|
sqlite3 \
|
||||||
tzdata \
|
tzdata \
|
||||||
libheif-examples \
|
libheif-examples \
|
||||||
@@ -80,10 +85,9 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
ffmpeg \
|
ffmpeg \
|
||||||
ffmpegthumbnailer \
|
ffmpegthumbnailer \
|
||||||
libavcodec-extra \
|
libavcodec-extra \
|
||||||
lsof \
|
|
||||||
apache2-utils \
|
apache2-utils \
|
||||||
fonts-roboto \
|
fonts-roboto \
|
||||||
sudo && \
|
&& \
|
||||||
/root/.local/bin/install-nodejs.sh && \
|
/root/.local/bin/install-nodejs.sh && \
|
||||||
/root/.local/bin/install-tensorflow.sh && \
|
/root/.local/bin/install-tensorflow.sh && \
|
||||||
/root/.local/bin/install-darktable.sh && \
|
/root/.local/bin/install-darktable.sh && \
|
||||||
@@ -102,7 +106,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nsfw.zip?${BUILD_TAG}" -O /tmp/photoprism/nsfw.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/nasnet.zip?${BUILD_TAG}" -O /tmp/photoprism/nasnet.zip && \
|
||||||
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
wget "https://dl.photoprism.app/tensorflow/facenet.zip?${BUILD_TAG}" -O /tmp/photoprism/facenet.zip && \
|
||||||
|
|||||||
@@ -91,6 +91,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: ""
|
||||||
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
|
# PHOTOPRISM_INIT: "update clean"
|
||||||
## 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
|
||||||
@@ -98,7 +100,7 @@ services:
|
|||||||
HOME: "/photoprism"
|
HOME: "/photoprism"
|
||||||
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
|
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
|
||||||
# user: "1000:1000"
|
# user: "1000:1000"
|
||||||
## Hardware devices for video transcoding and machine learning (optional)
|
## Share hardware devices for video transcoding and machine learning (optional):
|
||||||
# devices:
|
# devices:
|
||||||
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
||||||
working_dir: "/photoprism"
|
working_dir: "/photoprism"
|
||||||
|
|||||||
@@ -84,6 +84,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: ""
|
||||||
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
|
# PHOTOPRISM_INIT: "update clean"
|
||||||
## 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
|
||||||
@@ -91,7 +93,7 @@ services:
|
|||||||
HOME: "/photoprism"
|
HOME: "/photoprism"
|
||||||
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
|
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
|
||||||
# user: "1000:1000"
|
# user: "1000:1000"
|
||||||
## Hardware devices for video transcoding and machine learning (optional)
|
## Share hardware devices for video transcoding and machine learning (optional):
|
||||||
# devices:
|
# devices:
|
||||||
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
||||||
working_dir: "/photoprism"
|
working_dir: "/photoprism"
|
||||||
|
|||||||
@@ -154,7 +154,8 @@ services:
|
|||||||
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
|
PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name
|
||||||
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
|
PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name
|
||||||
PHOTOPRISM_DATABASE_PASSWORD: "_admin_password_" # MariaDB or MySQL database user password
|
PHOTOPRISM_DATABASE_PASSWORD: "_admin_password_" # MariaDB or MySQL database user password
|
||||||
PHOTOPRISM_INIT: "tensorflow-amd64-avx2"
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
|
PHOTOPRISM_INIT: "update tensorflow clean"
|
||||||
HOME: "/photoprism"
|
HOME: "/photoprism"
|
||||||
working_dir: "/photoprism"
|
working_dir: "/photoprism"
|
||||||
## 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
|
||||||
|
|||||||
@@ -79,14 +79,13 @@ 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: ""
|
||||||
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
|
# PHOTOPRISM_INIT: "update gpu tensorflow clean"
|
||||||
## 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)
|
||||||
# PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # use Video4Linux for AVC transcoding (default: libx264)
|
# PHOTOPRISM_FFMPEG_ENCODER: "h264_v4l2m2m" # use Video4Linux for AVC transcoding (default: libx264)
|
||||||
# PHOTOPRISM_FFMPEG_ENCODER: "h264_qsv" # use Intel Quick Sync Video for AVC transcoding (default: libx264)
|
# PHOTOPRISM_FFMPEG_ENCODER: "h264_qsv" # use Intel Quick Sync Video for AVC transcoding (default: libx264)
|
||||||
# PHOTOPRISM_INIT: "intel-graphics tensorflow-amd64-avx2" # enable TensorFlow AVX2 & Intel Graphics support
|
|
||||||
## Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root)
|
|
||||||
# PHOTOPRISM_INIT: "tensorflow-amd64-avx2"
|
|
||||||
## 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
|
||||||
@@ -94,11 +93,12 @@ services:
|
|||||||
HOME: "/photoprism"
|
HOME: "/photoprism"
|
||||||
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
|
## Start as a non-root user (see https://docs.docker.com/engine/reference/run/#user)
|
||||||
# user: "1000:1000"
|
# user: "1000:1000"
|
||||||
## Hardware devices for video transcoding and machine learning (optional)
|
## Share hardware devices for video transcoding and machine learning (optional):
|
||||||
# devices:
|
# devices:
|
||||||
|
# - "/dev/dri:/dev/dri"
|
||||||
|
# - "/dev/nvidia0:/dev/nvidia0"
|
||||||
|
# - "/dev/nvidiactl:/dev/nvidiactl"
|
||||||
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
# - "/dev/video11:/dev/video11" # Video4Linux (h264_v4l2m2m)
|
||||||
# - "/dev/dri/renderD128:/dev/dri/renderD128" # Intel GPU
|
|
||||||
# - "/dev/dri/card0:/dev/dri/card0"
|
|
||||||
working_dir: "/photoprism"
|
working_dir: "/photoprism"
|
||||||
## 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:
|
||||||
|
|||||||
@@ -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: ""
|
||||||
## Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root)
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
# PHOTOPRISM_INIT: "tensorflow-amd64-avx2"
|
# PHOTOPRISM_INIT: "update gpu tensorflow clean"
|
||||||
HOME: "/photoprism"
|
HOME: "/photoprism"
|
||||||
## 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:
|
||||||
|
|||||||
@@ -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: ""
|
||||||
## Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root)
|
## Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
# PHOTOPRISM_INIT: "tensorflow-amd64-avx2"
|
# PHOTOPRISM_INIT: "update gpu tensorflow clean"
|
||||||
## 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
|
||||||
|
|||||||
@@ -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: ""
|
||||||
## Enable TensorFlow AVX2 support for modern Intel CPUs (requires starting the container as root)
|
### Add/update packages (service must be started as root; options: update, gpu, tensorflow, davfs, clean):
|
||||||
# PHOTOPRISM_INIT: "tensorflow-amd64-avx2"
|
# PHOTOPRISM_INIT: "update gpu tensorflow clean"
|
||||||
## 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
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ ENV DOCKER_ARCH=$TARGETARCH \
|
|||||||
|
|
||||||
# copy app dist files and debian backports sources list
|
# copy app dist files and debian backports sources list
|
||||||
COPY --from=build /opt/photoprism/ /opt/photoprism
|
COPY --from=build /opt/photoprism/ /opt/photoprism
|
||||||
COPY /docker/develop/bullseye/backports.list /etc/apt/sources.list.d/backports.list
|
COPY /docker/develop/bullseye/sources.list /etc/apt/sources.list.d/bullseye.list
|
||||||
|
|
||||||
# install additional distribution packages
|
# install additional distribution packages
|
||||||
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
||||||
@@ -86,10 +86,13 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
cp /opt/photoprism/bin/gosu /bin/gosu && \
|
cp /opt/photoprism/bin/gosu /bin/gosu && \
|
||||||
chown root:root /bin/gosu && \
|
chown root:root /bin/gosu && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
|
jq \
|
||||||
gpg \
|
gpg \
|
||||||
|
lshw \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
make \
|
make \
|
||||||
@@ -104,7 +107,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
rawtherapee \
|
rawtherapee \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
ffmpegthumbnailer \
|
ffmpegthumbnailer \
|
||||||
libavcodec-extra && \
|
libavcodec-extra \
|
||||||
|
&& \
|
||||||
install -d -m 0777 -o 1000 -g 1000 \
|
install -d -m 0777 -o 1000 -g 1000 \
|
||||||
/var/lib/photoprism \
|
/var/lib/photoprism \
|
||||||
/tmp/photoprism \
|
/tmp/photoprism \
|
||||||
@@ -115,7 +119,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
cleanup.sh
|
cleanup.sh
|
||||||
|
|
||||||
# define default directory and user
|
# define default directory and user
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ ENV DOCKER_ARCH=$TARGETARCH \
|
|||||||
|
|
||||||
# copy app dist files and debian backports sources list
|
# copy app dist files and debian backports sources list
|
||||||
COPY --from=build /opt/photoprism/ /opt/photoprism
|
COPY --from=build /opt/photoprism/ /opt/photoprism
|
||||||
COPY --chown=root:root --chmod=644 /docker/develop/buster/backports.list /etc/apt/sources.list.d/backports.list
|
COPY --chown=root:root --chmod=644 /docker/develop/buster/sources.list /etc/apt/sources.list.d/buster.list
|
||||||
|
|
||||||
# install additional distribution packages
|
# install additional distribution packages
|
||||||
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
||||||
@@ -86,10 +86,13 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
cp /opt/photoprism/bin/gosu /bin/gosu && \
|
cp /opt/photoprism/bin/gosu /bin/gosu && \
|
||||||
chown root:root /bin/gosu && \
|
chown root:root /bin/gosu && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
|
jq \
|
||||||
gpg \
|
gpg \
|
||||||
|
lshw \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
make \
|
make \
|
||||||
@@ -104,7 +107,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
rawtherapee \
|
rawtherapee \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
ffmpegthumbnailer \
|
ffmpegthumbnailer \
|
||||||
libavcodec-extra && \
|
libavcodec-extra \
|
||||||
|
&& \
|
||||||
install-darktable.sh && \
|
install-darktable.sh && \
|
||||||
install -d -m 0777 -o 1000 -g 1000 \
|
install -d -m 0777 -o 1000 -g 1000 \
|
||||||
/var/lib/photoprism \
|
/var/lib/photoprism \
|
||||||
@@ -116,7 +120,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
cleanup.sh
|
cleanup.sh
|
||||||
|
|
||||||
# define default directory and user
|
# define default directory and user
|
||||||
|
|||||||
@@ -85,9 +85,12 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
echo 'APT::Get::Fix-Missing "true";' > /etc/apt/apt.conf.d/80fixmissing && \
|
||||||
cp /opt/photoprism/bin/gosu /bin/gosu && \
|
cp /opt/photoprism/bin/gosu /bin/gosu && \
|
||||||
chown root:root /bin/gosu && \
|
chown root:root /bin/gosu && \
|
||||||
useradd -m -U -u 1000 -d /photoprism photoprism && \
|
groupadd -f -r -g 44 video && groupadd -f -r -g 109 render && groupadd -f -g 1000 photoprism && \
|
||||||
|
useradd -m -g 1000 -u 1000 -d /photoprism -G video,render photoprism && \
|
||||||
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
apt-get update && apt-get -qq dist-upgrade && apt-get -qq install --no-install-recommends \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
|
jq \
|
||||||
|
lshw \
|
||||||
gpg \
|
gpg \
|
||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
@@ -103,7 +106,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
rawtherapee \
|
rawtherapee \
|
||||||
ffmpeg \
|
ffmpeg \
|
||||||
ffmpegthumbnailer \
|
ffmpegthumbnailer \
|
||||||
libavcodec-extra && \
|
libavcodec-extra \
|
||||||
|
&& \
|
||||||
install-darktable.sh && \
|
install-darktable.sh && \
|
||||||
install -d -m 0777 -o 1000 -g 1000 \
|
install -d -m 0777 -o 1000 -g 1000 \
|
||||||
/var/lib/photoprism \
|
/var/lib/photoprism \
|
||||||
@@ -115,7 +119,8 @@ RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
|
|||||||
/photoprism/storage/albums \
|
/photoprism/storage/albums \
|
||||||
/photoprism/storage/backups \
|
/photoprism/storage/backups \
|
||||||
/photoprism/storage/config \
|
/photoprism/storage/config \
|
||||||
/photoprism/storage/cache && \
|
/photoprism/storage/cache \
|
||||||
|
&& \
|
||||||
cleanup.sh
|
cleanup.sh
|
||||||
|
|
||||||
# define default directory and user
|
# define default directory and user
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
||||||
echo "Usage: build.sh [debug|race|static|prod] [filename]" 1>&2
|
echo "Usage: ${0##*/} [debug|race|static|prod] [filename]" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
57
scripts/dist/Makefile
vendored
57
scripts/dist/Makefile
vendored
@@ -1,37 +1,28 @@
|
|||||||
# INSTALLS OPTIONAL PACKAGES AND DRIVERS IN DOCKER IMAGES
|
# INSTALLS OPTIONAL PACKAGES AND DRIVERS IN DOCKER IMAGES
|
||||||
# Maintainer: Michael Mayer <hello@photoprism.app>
|
# Maintainer: Michael Mayer <hello@photoprism.app>
|
||||||
|
|
||||||
.PHONY: apt-upgrade apt-cleanup install-davfs install-updates install-intel-graphics intel-graphics \
|
intel-graphics: gpu
|
||||||
tensorflow-amd64-cpu tensorflow-amd64-cpu-install \
|
install-intel-graphics: gpu
|
||||||
tensorflow-amd64-avx tensorflow-amd64-avx-install \
|
install-davfs: davfs
|
||||||
tensorflow-amd64-avx2 tensorflow-amd64-avx2-install;
|
tensorflow-amd64-cpu: tensorflow
|
||||||
|
tensorflow-amd64-avx: tensorflow
|
||||||
|
tensorflow-amd64-avx2: tensorflow
|
||||||
|
apt-cleanup: clean
|
||||||
|
apt-upgrade: update
|
||||||
|
update:
|
||||||
|
apt-get update
|
||||||
|
apt-get -qq dist-upgrade
|
||||||
|
clean:
|
||||||
|
apt-get -y autoremove
|
||||||
|
apt-get -y autoclean
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
gpu:
|
||||||
|
install-gpu.sh
|
||||||
|
tensorflow:
|
||||||
|
install-tensorflow.sh auto
|
||||||
|
davfs:
|
||||||
|
install-davfs.sh
|
||||||
|
|
||||||
install-updates: apt-upgrade apt-cleanup
|
.PHONY: update apt-upgrade clean apt-cleanup gpu tensorflow davfs install-davfs \
|
||||||
intel-graphics: apt-upgrade install-intel-graphics apt-cleanup
|
tensorflow-amd64-cpu tensorflow-amd64-avx tensorflow-amd64-avx2 install-davfs \
|
||||||
tensorflow-amd64-cpu: /tmp/libtensorflow-linux-cpu-1.15.2.tar.gz tensorflow-amd64-cpu-install
|
intel-graphics install-intel-graphics;
|
||||||
tensorflow-amd64-avx: /tmp/libtensorflow-linux-avx-1.15.2.tar.gz tensorflow-amd64-avx-install
|
|
||||||
tensorflow-amd64-avx2: /tmp/libtensorflow-linux-avx2-1.15.2.tar.gz tensorflow-amd64-avx2-install
|
|
||||||
apt-upgrade:
|
|
||||||
apt-get -y update
|
|
||||||
apt-get -y dist-upgrade
|
|
||||||
apt-cleanup:
|
|
||||||
apt-get -y autoremove && apt-get -y autoclean && apt-get -y clean && rm -rf /var/lib/apt/lists/*
|
|
||||||
install-davfs:
|
|
||||||
apt-get -y install davfs2
|
|
||||||
install-intel-graphics:
|
|
||||||
apt-get -y install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders libmfx1
|
|
||||||
/tmp/libtensorflow-linux-cpu-1.15.2.tar.gz:
|
|
||||||
curl -fsSL "https://dl.photoprism.app/tensorflow/linux/libtensorflow-linux-cpu-1.15.2.tar.gz" > /tmp/libtensorflow-linux-cpu-1.15.2.tar.gz
|
|
||||||
tensorflow-amd64-cpu-install:
|
|
||||||
tar --overwrite -C "/usr" -xzf /tmp/libtensorflow-linux-cpu-1.15.2.tar.gz
|
|
||||||
ldconfig
|
|
||||||
/tmp/libtensorflow-linux-avx-1.15.2.tar.gz:
|
|
||||||
curl -fsSL "https://dl.photoprism.app/tensorflow/linux/libtensorflow-linux-avx-1.15.2.tar.gz" > /tmp/libtensorflow-linux-avx-1.15.2.tar.gz
|
|
||||||
tensorflow-amd64-avx-install:
|
|
||||||
tar --overwrite -C "/usr" -xzf /tmp/libtensorflow-linux-avx-1.15.2.tar.gz
|
|
||||||
ldconfig
|
|
||||||
/tmp/libtensorflow-linux-avx2-1.15.2.tar.gz:
|
|
||||||
curl -fsSL "https://dl.photoprism.app/tensorflow/linux/libtensorflow-linux-avx2-1.15.2.tar.gz" > /tmp/libtensorflow-linux-avx2-1.15.2.tar.gz
|
|
||||||
tensorflow-amd64-avx2-install:
|
|
||||||
tar --overwrite -C "/usr" -xzf /tmp/libtensorflow-linux-avx2-1.15.2.tar.gz
|
|
||||||
ldconfig
|
|
||||||
|
|||||||
2
scripts/dist/cleanup.sh
vendored
2
scripts/dist/cleanup.sh
vendored
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run cleanup.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
2
scripts/dist/dist-upgrade.sh
vendored
2
scripts/dist/dist-upgrade.sh
vendored
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run dist-upgrade.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
11
scripts/dist/install-chrome.sh
vendored
11
scripts/dist/install-chrome.sh
vendored
@@ -2,21 +2,20 @@
|
|||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run install-chrome.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
||||||
INSTALL_ARCH=${2:-$SYSTEM_ARCH}
|
DESTARCH=${2:-$SYSTEM_ARCH}
|
||||||
|
. /etc/os-release
|
||||||
|
|
||||||
if [[ $INSTALL_ARCH != "amd64" ]]; then
|
if [[ $DESTARCH != "amd64" ]]; then
|
||||||
echo "Google Chrome (stable) is only available for AMD64."
|
echo "Google Chrome (stable) is only available for AMD64."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
. /etc/os-release
|
echo "Installing Google Chrome (stable) on ${ID} for ${DESTARCH^^}..."
|
||||||
|
|
||||||
echo "Installing Google Chrome (stable) on ${ID} for ${INSTALL_ARCH^^}..."
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|||||||
12
scripts/dist/install-darktable.sh
vendored
12
scripts/dist/install-darktable.sh
vendored
@@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run install-darktable.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
||||||
INSTALL_ARCH=${2:-$SYSTEM_ARCH}
|
DESTARCH=${2:-$SYSTEM_ARCH}
|
||||||
|
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
|
|
||||||
echo "Installing Darktable for ${INSTALL_ARCH^^}..."
|
echo "Installing Darktable for ${DESTARCH^^}..."
|
||||||
|
|
||||||
if [[ $INSTALL_ARCH == "amd64" ]]; then
|
if [[ $DESTARCH == "amd64" ]]; then
|
||||||
if [[ $VERSION_CODENAME == "bullseye" ]]; then
|
if [[ $VERSION_CODENAME == "bullseye" ]]; then
|
||||||
echo 'deb http://download.opensuse.org/repositories/graphics:/darktable/Debian_11/ /' | tee /etc/apt/sources.list.d/graphics:darktable.list
|
echo 'deb http://download.opensuse.org/repositories/graphics:/darktable/Debian_11/ /' | tee /etc/apt/sources.list.d/graphics:darktable.list
|
||||||
curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/Debian_11/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
|
curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/Debian_11/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
|
||||||
@@ -31,7 +31,7 @@ if [[ $INSTALL_ARCH == "amd64" ]]; then
|
|||||||
apt-get -qq install darktable
|
apt-get -qq install darktable
|
||||||
fi
|
fi
|
||||||
echo "Done."
|
echo "Done."
|
||||||
elif [[ $INSTALL_ARCH == "arm64" ]]; then
|
elif [[ $DESTARCH == "arm64" ]]; then
|
||||||
if [[ $VERSION_CODENAME == "bullseye" ]]; then
|
if [[ $VERSION_CODENAME == "bullseye" ]]; then
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get -qq install -t bullseye-backports darktable
|
apt-get -qq install -t bullseye-backports darktable
|
||||||
@@ -44,5 +44,5 @@ elif [[ $INSTALL_ARCH == "arm64" ]]; then
|
|||||||
fi
|
fi
|
||||||
echo "Done."
|
echo "Done."
|
||||||
else
|
else
|
||||||
echo "Unsupported Machine Architecture: $INSTALL_ARCH"
|
echo "Unsupported Machine Architecture: $DESTARCH"
|
||||||
fi
|
fi
|
||||||
|
|||||||
14
scripts/dist/install-davfs.sh
vendored
Executable file
14
scripts/dist/install-davfs.sh
vendored
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# abort if the user is not root
|
||||||
|
if [[ $(id -u) != "0" ]]; then
|
||||||
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Installing WebDAV filesystem driver..."
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get -qq install davfs2
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
16
scripts/dist/install-go.sh
vendored
16
scripts/dist/install-go.sh
vendored
@@ -4,34 +4,34 @@ GOLANG_VERSION=1.17.7
|
|||||||
|
|
||||||
DESTDIR=$(realpath "${1:-/usr/local}")
|
DESTDIR=$(realpath "${1:-/usr/local}")
|
||||||
|
|
||||||
echo "Installing Go in \"$DESTDIR\"..."
|
|
||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run install-go.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "Installing Go in \"$DESTDIR\"..."
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
mkdir -p "$DESTDIR"
|
mkdir -p "$DESTDIR"
|
||||||
|
|
||||||
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
||||||
INSTALL_ARCH=${2:-$SYSTEM_ARCH}
|
DESTARCH=${2:-$SYSTEM_ARCH}
|
||||||
|
|
||||||
set -eux;
|
set -eux;
|
||||||
|
|
||||||
if [[ $INSTALL_ARCH == "amd64" ]]; then
|
if [[ $DESTARCH == "amd64" ]]; then
|
||||||
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz"
|
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz"
|
||||||
CHECKSUM="02b111284bedbfa35a7e5b74a06082d18632eff824fd144312f6063943d49259 *go.tgz"
|
CHECKSUM="02b111284bedbfa35a7e5b74a06082d18632eff824fd144312f6063943d49259 *go.tgz"
|
||||||
elif [[ $INSTALL_ARCH == "arm64" ]]; then
|
elif [[ $DESTARCH == "arm64" ]]; then
|
||||||
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-arm64.tar.gz"
|
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-arm64.tar.gz"
|
||||||
CHECKSUM="a5aa1ed17d45ee1d58b4a4099b12f8942acbd1dd09b2e9a6abb1c4898043c5f5 *go.tgz"
|
CHECKSUM="a5aa1ed17d45ee1d58b4a4099b12f8942acbd1dd09b2e9a6abb1c4898043c5f5 *go.tgz"
|
||||||
elif [[ $INSTALL_ARCH == "arm" ]]; then
|
elif [[ $DESTARCH == "arm" ]]; then
|
||||||
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-armv6l.tar.gz"
|
URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-armv6l.tar.gz"
|
||||||
CHECKSUM="874774f078b182fa21ffcb3878467eb5cb7e78bbffa6343ea5f0fbe47983433b *go.tgz"
|
CHECKSUM="874774f078b182fa21ffcb3878467eb5cb7e78bbffa6343ea5f0fbe47983433b *go.tgz"
|
||||||
else
|
else
|
||||||
echo "Unsupported Machine Architecture: $INSTALL_ARCH" 1>&2
|
echo "Unsupported Machine Architecture: $DESTARCH" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
45
scripts/dist/install-gpu.sh
vendored
Executable file
45
scripts/dist/install-gpu.sh
vendored
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# abort if the user is not root
|
||||||
|
if [[ $(id -u) != "0" ]]; then
|
||||||
|
echo "Error: Run ${0##*/} as root" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
||||||
|
DESTARCH=${DESTARCH:-$SYSTEM_ARCH}
|
||||||
|
TMPDIR=${TMPDIR:-/tmp}
|
||||||
|
. /etc/os-release
|
||||||
|
|
||||||
|
if [[ $DESTARCH != "amd64" ]]; then
|
||||||
|
echo "Installing GPU drivers for ${DESTARCH} is not supported yet."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get -qq upgrade
|
||||||
|
apt-get -qq install lshw jq
|
||||||
|
|
||||||
|
# shellcheck disable=SC2207
|
||||||
|
GPU_DETECTED=($(lshw -c display -json 2>/dev/null | jq -r '.[].configuration.driver'))
|
||||||
|
|
||||||
|
# shellcheck disable=SC2068
|
||||||
|
for t in ${GPU_DETECTED[@]}; do
|
||||||
|
case $t in
|
||||||
|
i915)
|
||||||
|
apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders libmfx1 libva2 vainfo libva-wayland2
|
||||||
|
;;
|
||||||
|
|
||||||
|
nvidia)
|
||||||
|
apt-get -qq install nvidia-vdpau-driver nvidia-driver-libs nvidia-kernel-dkms libva2 vainfo libva-wayland2
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unsupported GPU: \"$t\"";
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
4
scripts/dist/install-mariadb.sh
vendored
4
scripts/dist/install-mariadb.sh
vendored
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run install-mariadb-client.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z $1 ]]; then
|
if [[ -z $1 ]]; then
|
||||||
echo "Usage: install-mariadb.sh [package names...]" 1>&2
|
echo "Usage: ${0##*/} [package names...]" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
2
scripts/dist/install-nodejs.sh
vendored
2
scripts/dist/install-nodejs.sh
vendored
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]]; then
|
if [[ $(id -u) != "0" ]]; then
|
||||||
echo "Usage: run install-nodejs.sh as root" 1>&2
|
echo "Usage: run ${0##*/} as root" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
35
scripts/dist/install-tensorflow.sh
vendored
35
scripts/dist/install-tensorflow.sh
vendored
@@ -2,33 +2,44 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
TF_VERSION="1.15.2"
|
TF_VERSION=${TF_VERSION:-1.15.2}
|
||||||
|
|
||||||
DESTDIR=$(realpath "${1:-/usr}")
|
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
||||||
|
DESTARCH=${DESTARCH:-$SYSTEM_ARCH}
|
||||||
|
|
||||||
echo "Installing TensorFlow in \"$DESTDIR\"..."
|
if [[ $1 == "auto" ]]; then
|
||||||
|
TF_DRIVER="auto";
|
||||||
|
DESTDIR="/usr";
|
||||||
|
else
|
||||||
|
DESTDIR=$(realpath "${1:-/usr}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
TMPDIR=${TMPDIR:-/tmp}
|
||||||
|
|
||||||
# abort if the user is not root
|
# abort if the user is not root
|
||||||
if [[ $(id -u) != "0" ]] && [[ $DESTDIR == "/usr" || $DESTDIR == "/usr/local" ]]; then
|
if [[ $(id -u) != "0" ]] && [[ $DESTDIR == "/usr" || $DESTDIR == "/usr/local" ]]; then
|
||||||
echo "Error: Run install-tensorflow.sh as root to install in a system directory!" 1>&2
|
echo "Error: Run ${0##*/} as root to install in a system directory!" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "$DESTDIR"
|
mkdir -p "$DESTDIR"
|
||||||
|
|
||||||
SYSTEM_ARCH=$("$(dirname "$0")/arch.sh")
|
if [[ $TF_DRIVER == "auto" ]]; then
|
||||||
INSTALL_ARCH=${2:-$SYSTEM_ARCH}
|
echo "Detecting driver..."
|
||||||
TMPDIR=${TMPDIR:-/tmp}
|
TF_DRIVER=$("$(dirname "$0")/tensorflow-driver.sh")
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z $3 ]]; then
|
if [[ -z $TF_DRIVER ]]; then
|
||||||
INSTALL_FILE="${INSTALL_ARCH}/libtensorflow-${INSTALL_ARCH}-${TF_VERSION}.tar.gz"
|
echo "Installing TensorFlow ${TF_VERSION} ${DESTARCH^^} in \"$DESTDIR\"..."
|
||||||
|
INSTALL_FILE="${DESTARCH}/libtensorflow-${DESTARCH}-${TF_VERSION}.tar.gz"
|
||||||
else
|
else
|
||||||
INSTALL_FILE="${INSTALL_ARCH}/libtensorflow-${INSTALL_ARCH}-${2}-${TF_VERSION}.tar.gz"
|
echo "Installing TensorFlow ${TF_VERSION} ${DESTARCH^^} ${TF_DRIVER^^} in \"$DESTDIR\"..."
|
||||||
|
INSTALL_FILE="${DESTARCH}/libtensorflow-${DESTARCH}-${TF_DRIVER}-${TF_VERSION}.tar.gz"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$TMPDIR/$INSTALL_FILE" ]; then
|
if [ ! -f "$TMPDIR/$INSTALL_FILE" ]; then
|
||||||
URL="https://dl.photoprism.app/tensorflow/${INSTALL_FILE}"
|
URL="https://dl.photoprism.app/tensorflow/${INSTALL_FILE}"
|
||||||
echo "Downloading $INSTALL_ARCH libs from \"$URL\". Please wait."
|
echo "Downloading ${DESTARCH} libs from \"$URL\". Please wait."
|
||||||
curl --create-dirs -fsSL -o "$TMPDIR/$INSTALL_FILE" "$URL"
|
curl --create-dirs -fsSL -o "$TMPDIR/$INSTALL_FILE" "$URL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -37,7 +48,7 @@ echo "Extracting \"$TMPDIR/$INSTALL_FILE\" to \"$DESTDIR\"..."
|
|||||||
if [ -f "$TMPDIR/$INSTALL_FILE" ]; then
|
if [ -f "$TMPDIR/$INSTALL_FILE" ]; then
|
||||||
tar --overwrite --mode=755 -C "$DESTDIR" -xzf "$TMPDIR/$INSTALL_FILE"
|
tar --overwrite --mode=755 -C "$DESTDIR" -xzf "$TMPDIR/$INSTALL_FILE"
|
||||||
else
|
else
|
||||||
echo "Fatal: \"$TMPDI/$INSTALL_FILE\" not found"
|
echo "Fatal: \"$TMPDIR/$INSTALL_FILE\" not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
9
scripts/dist/tensorflow-driver.sh
vendored
Executable file
9
scripts/dist/tensorflow-driver.sh
vendored
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
CPU_DETECTED=$(lshw -c processor -json 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ $(echo "${CPU_DETECTED}" | jq -r '.[].capabilities.avx2') == "true" ]]; then
|
||||||
|
echo "avx2"
|
||||||
|
elif [[ $(echo "${CPU_DETECTED}" | jq -r '.[].capabilities.avx') == "true" ]]; then
|
||||||
|
echo "avx"
|
||||||
|
fi
|
||||||
@@ -6,7 +6,7 @@ set -e
|
|||||||
export DOCKER_BUILDKIT=1
|
export DOCKER_BUILDKIT=1
|
||||||
|
|
||||||
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
||||||
echo "Usage: scripts/docker/build.sh [name] [tag] [/subimage]" 1>&2
|
echo "Usage: ${0##*/} [name] [tag] [/subimage]" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
export DOCKER_BUILDKIT=1
|
export DOCKER_BUILDKIT=1
|
||||||
|
|
||||||
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
||||||
echo "Usage: scripts/docker/buildx-multi.sh [name] [linux/amd64|linux/arm64|linux/arm] [tag] [/subimage]" 1>&2
|
echo "Usage: ${0##*/} [name] [linux/amd64|linux/arm64|linux/arm] [tag] [/subimage]" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
export DOCKER_BUILDKIT=1
|
export DOCKER_BUILDKIT=1
|
||||||
|
|
||||||
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
||||||
echo "Usage: scripts/docker/buildx.sh [name] linux/[amd64|arm64|arm] [tag] [/subimage]" 1>&2
|
echo "Usage: ${0##*/} [name] linux/[amd64|arm64|arm] [tag] [/subimage]" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user