mirror of
https://github.com/photoprism/photoprism.git
synced 2025-12-12 00:34:13 +01:00
Merge branch 'develop' into feature/custom-tf-model-127
This commit is contained in:
5
scripts/dist/Makefile
vendored
5
scripts/dist/Makefile
vendored
@@ -44,7 +44,7 @@ install-intel-graphics: intel
|
||||
intel-graphics: intel
|
||||
install-intel:
|
||||
@echo "Installing Intel GPU Drivers..."
|
||||
apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders mesa-va-drivers libmfx-gen1.2 va-driver-all vainfo libva2
|
||||
apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders mesa-va-drivers libmfx-gen1.2 va-driver-all vainfo libva2 libvpl2
|
||||
amd: update install-amd
|
||||
install-amd:
|
||||
@echo "Installing AMD VA-API GPU Drivers..."
|
||||
@@ -61,6 +61,9 @@ darktable:
|
||||
sudo apt-get update
|
||||
sudo apt-get install darktable
|
||||
sudo apt-get autoremove
|
||||
yt-dlp: update-yt-dlp
|
||||
update-yt-dlp:
|
||||
sudo yt-dlp -U
|
||||
|
||||
# Declare all targets as "PHONY", see https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html.
|
||||
MAKEFLAGS += --always-make
|
||||
|
||||
4
scripts/dist/build-libheif.sh
vendored
4
scripts/dist/build-libheif.sh
vendored
@@ -56,11 +56,11 @@ mkdir -p "$DESTDIR"
|
||||
|
||||
ARCHIVE="${CURRENT_DIR}/build/$BUILD.tar.gz"
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION: $LIBHEIF_VERSION"
|
||||
echo "LATEST : $LATEST"
|
||||
echo "ARCHIVE: $ARCHIVE"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
echo "Installing build dependencies..."
|
||||
|
||||
|
||||
2
scripts/dist/heif-convert.sh
vendored
2
scripts/dist/heif-convert.sh
vendored
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ -z $1 ]] && [[ -z $2 ]]; then
|
||||
echo "Usage: heif-convert <filename> <output>" 1>&2
|
||||
echo "Usage: ${0##*/} <filename> <output>" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
9
scripts/dist/install-admin-tools.sh
vendored
9
scripts/dist/install-admin-tools.sh
vendored
@@ -18,14 +18,17 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Installing duf, a better df alternative..."
|
||||
echo "Installing the duf command to check storage usage..."
|
||||
GOBIN="/usr/local/bin" go install github.com/muesli/duf@latest
|
||||
|
||||
echo "Installing muffet, a fast website link checker..."
|
||||
echo "Installing muffet, a tool for checking links..."
|
||||
GOBIN="/usr/local/bin" go install github.com/raviqqe/muffet@latest
|
||||
|
||||
echo "Installing petname, an RFC1178 implementation to generate pronounceable names..."
|
||||
echo "Installing petname to generate pronounceable names..."
|
||||
GOBIN="/usr/local/bin" go install github.com/dustinkirkland/golang-petname/cmd/petname@latest
|
||||
|
||||
echo "Installing doctl for using the DigitalOcean API...."
|
||||
GOBIN="/usr/local/bin" go install github.com/digitalocean/doctl/cmd/doctl@latest
|
||||
|
||||
# Create a symbolic link for "duf" so that it is used instead of the original "df".
|
||||
ln -sf /usr/local/bin/duf /usr/local/bin/df
|
||||
7
scripts/dist/install-darktable.sh
vendored
7
scripts/dist/install-darktable.sh
vendored
@@ -28,12 +28,7 @@ echo "Installing Darktable for ${DESTARCH^^}..."
|
||||
|
||||
case $DESTARCH in
|
||||
amd64 | AMD64 | x86_64 | x86-64)
|
||||
if [[ $VERSION_CODENAME == "jammy" ]]; then
|
||||
echo 'deb http://download.opensuse.org/repositories/graphics:/darktable/xUbuntu_22.04/ /' | tee /etc/apt/sources.list.d/graphics:darktable.list
|
||||
curl -fsSL https://download.opensuse.org/repositories/graphics:darktable/xUbuntu_22.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/graphics_darktable.gpg > /dev/null
|
||||
apt-get update
|
||||
apt-get -qq install darktable
|
||||
elif [[ $VERSION_CODENAME == "bullseye" ]]; then
|
||||
if [[ $VERSION_CODENAME == "bullseye" ]]; then
|
||||
apt-get update
|
||||
apt-get -qq install -t bullseye-backports darktable
|
||||
elif [[ $VERSION_CODENAME == "buster" ]]; then
|
||||
|
||||
4
scripts/dist/install-ffmpeg.sh
vendored
4
scripts/dist/install-ffmpeg.sh
vendored
@@ -64,11 +64,11 @@ else
|
||||
DESTDIR="${DESTDIR}/bin"
|
||||
fi
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION: $FFMPEG_VERSION"
|
||||
echo "ARCHIVE: $ARCHIVE"
|
||||
echo "DESTDIR: $DESTDIR"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
echo "Extracting \"$URL\" to \"$DESTDIR\"."
|
||||
sudo mkdir -p "${DESTDIR}"
|
||||
|
||||
2
scripts/dist/install-gpu.sh
vendored
2
scripts/dist/install-gpu.sh
vendored
@@ -51,7 +51,7 @@ for t in ${GPU_DETECTED[@]}; do
|
||||
case $t in
|
||||
i915 | i965 | intel | opencl | icd)
|
||||
echo "Installing Intel GPU Drivers..."
|
||||
apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders mesa-va-drivers libmfx-gen1.2 va-driver-all vainfo libva2
|
||||
apt-get -qq install intel-opencl-icd intel-media-va-driver-non-free i965-va-driver-shaders mesa-va-drivers libmfx-gen1.2 va-driver-all vainfo libva2 libvpl2
|
||||
;;
|
||||
|
||||
nvidia)
|
||||
|
||||
4
scripts/dist/install-jxl.sh
vendored
4
scripts/dist/install-jxl.sh
vendored
@@ -34,10 +34,10 @@ case $DESTARCH in
|
||||
URL="https://github.com/libjxl/libjxl/releases/download/${LIB_VERSION}/${ARCHIVE}"
|
||||
TMPDIR="/tmp/jpegxl"
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION: $LIB_VERSION"
|
||||
echo "ARCHIVE: $ARCHIVE"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
echo "Installing JPEG XL for ${DESTARCH^^}..."
|
||||
|
||||
|
||||
4
scripts/dist/install-libheif.sh
vendored
4
scripts/dist/install-libheif.sh
vendored
@@ -67,11 +67,11 @@ echo "Installing libheif..."
|
||||
ARCHIVE="libheif-${VERSION_CODENAME}-${DESTARCH}-${LIBHEIF_VERSION}.tar.gz"
|
||||
URL="https://dl.photoprism.app/dist/libheif/${ARCHIVE}"
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION: $LIBHEIF_VERSION"
|
||||
echo "ARCHIVE: $ARCHIVE"
|
||||
echo "DESTDIR: $DESTDIR"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
if curl -fsSL "$URL" | tar --overwrite --mode=755 -xz -C "$DESTDIR" 2> /dev/null; then
|
||||
echo "✅ Extracted \"$URL\" to \"$DESTDIR\""
|
||||
|
||||
4
scripts/dist/install-nats.sh
vendored
4
scripts/dist/install-nats.sh
vendored
@@ -58,12 +58,12 @@ VERSION=${2:-$GITHUB_LATEST}
|
||||
ARCHIVE="nats-server-${VERSION}-linux-${DESTARCH}.tar.gz"
|
||||
GITHUB_URL="https://github.com/nats-io/nats-server/releases/download/${VERSION}/${ARCHIVE}"
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION : ${VERSION}"
|
||||
echo "LATEST : ${GITHUB_LATEST}"
|
||||
echo "DOWNLOAD: ${GITHUB_URL}"
|
||||
echo "DESTDIR : ${DESTDIR}"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
# Adjust the installation path because the archive does not contain a bin directory.
|
||||
DESTDIR="${DESTDIR}/bin"
|
||||
|
||||
18
scripts/dist/install-nodejs.sh
vendored
18
scripts/dist/install-nodejs.sh
vendored
@@ -42,16 +42,16 @@ fi
|
||||
echo "Configuring NPM..."
|
||||
sudo npm config set cache ~/.cache/npm
|
||||
echo "Updating NPM..."
|
||||
sudo npm update --unsafe-perm=true --allow-root -g npm
|
||||
sudo npm update -g npm
|
||||
echo "Installing TestCafe..."
|
||||
sudo npm install --unsafe-perm=true --allow-root -g \
|
||||
npm@latest npm-check-updates@latest license-report@latest n@latest testcafe@3.7.2
|
||||
sudo npm install -g npm@latest npm-check-updates@latest license-report@latest n@latest testcafe@3.7.2
|
||||
echo "Installing Vitest..."
|
||||
sudo npm install -g vitest @vitest/browser @vitest/coverage-v8 @vitest/ui
|
||||
echo "Installing ESLint..."
|
||||
sudo npm install --unsafe-perm=true --allow-root -g \
|
||||
eslint globals @eslint/eslintrc @eslint/js eslint-config-prettier eslint-formatter-pretty \
|
||||
sudo npm install -g eslint prettier globals \
|
||||
@eslint/eslintrc @eslint/js eslint-config-prettier eslint-formatter-pretty \
|
||||
eslint-plugin-html eslint-plugin-import eslint-plugin-node eslint-plugin-prettier \
|
||||
eslint-plugin-promise eslint-plugin-vue eslint-webpack-plugin prettier
|
||||
echo "Installing Vue Language Tools..."
|
||||
sudo npm install --unsafe-perm=true --allow-root -g \
|
||||
@vue/language-server @vue/typescript-plugin
|
||||
eslint-plugin-vue eslint-plugin-vuetify eslint-webpack-plugin
|
||||
echo "Installing Vue Language Server..."
|
||||
sudo npm install -g @vue/language-server
|
||||
echo "Done."
|
||||
4
scripts/dist/install-qdrant.sh
vendored
4
scripts/dist/install-qdrant.sh
vendored
@@ -54,12 +54,12 @@ VERSION=${2:-$GITHUB_LATEST}
|
||||
ARCHIVE="qdrant-${DESTARCH}-unknown-linux-musl.tar.gz"
|
||||
GITHUB_URL="https://github.com/qdrant/qdrant/releases/download/${VERSION}/${ARCHIVE}"
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION : ${VERSION}"
|
||||
echo "LATEST : ${GITHUB_LATEST}"
|
||||
echo "DOWNLOAD: ${GITHUB_URL}"
|
||||
echo "DESTDIR : ${DESTDIR}"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
# Adjust the installation path because the archive does not contain a bin directory.
|
||||
DESTDIR="${DESTDIR}/bin"
|
||||
|
||||
4
scripts/dist/install-s6.sh
vendored
4
scripts/dist/install-s6.sh
vendored
@@ -65,13 +65,13 @@ S6_BINARY_URL="https://github.com/just-containers/s6-overlay/releases/download/$
|
||||
|
||||
echo "Installing S6 Overlay for ${S6_OVERLAY_ARCH^^}..."
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION: ${S6_OVERLAY_VERSION}"
|
||||
echo "LATEST : ${S6_OVERLAY_LATEST}"
|
||||
echo "NOARCH : ${ARCHIVE_NOARCH}"
|
||||
echo "BINARY : ${ARCHIVE_BINARY}"
|
||||
echo "DESTDIR: ${S6_OVERLAY_DESTDIR}"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
# Create the destination directory if it does not already exist.
|
||||
mkdir -p "${S6_OVERLAY_DESTDIR}"
|
||||
|
||||
4
scripts/dist/install-yt-dlp.sh
vendored
4
scripts/dist/install-yt-dlp.sh
vendored
@@ -64,13 +64,13 @@ fi
|
||||
GITHUB_URL="https://github.com/yt-dlp/yt-dlp/releases/download/${VERSION}/${BINARY}"
|
||||
DESTBIN="${DESTDIR}/bin/yt-dlp"
|
||||
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION : ${VERSION}"
|
||||
echo "LATEST : ${GITHUB_LATEST}"
|
||||
echo "DOWNLOAD: ${GITHUB_URL}"
|
||||
echo "DESTDIR : ${DESTDIR}"
|
||||
echo "DESTBIN : ${DESTBIN}"
|
||||
echo "------------------------------------------------"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
echo "Downloading the yt-dlp binary to \"${DESTBIN}\"..."
|
||||
mkdir -p "${DESTDIR}"
|
||||
|
||||
88
scripts/setup/nas/raspberry-pi/build.sh
Executable file
88
scripts/setup/nas/raspberry-pi/build.sh
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Builds a PhotoPrismPi SD card image for use with Raspberry Pi 4 and 5.
|
||||
|
||||
# Stop the script if an error occurs.
|
||||
set -e
|
||||
|
||||
echo "Building PhotoPrismPi SD card image..."
|
||||
|
||||
# Build directory:
|
||||
DESTDIR=$(realpath "${1:-./setup/nas/raspberry-pi}")
|
||||
|
||||
# Ubuntu Server version and download URL:
|
||||
UBUNTU_VERSION="${2:-24.04.2}"
|
||||
UBUNTU_URL="https://cdimage.ubuntu.com/releases/${UBUNTU_VERSION}/release/ubuntu-${UBUNTU_VERSION}-preinstalled-server-arm64+raspi.img.xz"
|
||||
|
||||
# SD card image file name and path:
|
||||
IMAGE_NAME="photoprismpi-ubuntu-${UBUNTU_VERSION}.img"
|
||||
IMAGE_PATH="${DESTDIR}/${IMAGE_NAME}"
|
||||
|
||||
# Cloud init config path:
|
||||
CONFIG_PATH="${DESTDIR}/cloud-init"
|
||||
|
||||
# Boot partition mount path:
|
||||
MOUNT_DEV="/dev/nbd0"
|
||||
MOUNT_PATH="${DESTDIR}/boot"
|
||||
|
||||
# Show image and build details.
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "VERSION: Ubuntu Server ${UBUNTU_VERSION} for Raspberry Pi"
|
||||
echo "CDIMAGE: ${UBUNTU_URL}"
|
||||
echo "DESTDIR: ${DESTDIR}"
|
||||
echo "SDIMAGE: ${IMAGE_PATH}.xz"
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
# Install build dependencies.
|
||||
sudo apt update
|
||||
sudo apt install -y qemu-utils xz-utils cloud-init
|
||||
|
||||
# Remove existing Ubuntu Server image, if any.
|
||||
rm -f "${IMAGE_PATH}" "${IMAGE_PATH}.xz"
|
||||
|
||||
# Download latest Ubuntu Server image.
|
||||
echo "Downloading Ubuntu Server image..."
|
||||
curl -o "${IMAGE_PATH}.xz" -fsSL "${UBUNTU_URL}"
|
||||
echo "Done."
|
||||
|
||||
# Unpack Ubuntu Server image.
|
||||
echo "Unpacking ${IMAGE_NAME}.xz..."
|
||||
(cd "${DESTDIR}" && unxz "${IMAGE_NAME}.xz")
|
||||
echo "Done."
|
||||
|
||||
# Mount the boot partition to customize it.
|
||||
echo "Mounting boot partition to ${MOUNT_PATH}..."
|
||||
mkdir -p "${MOUNT_PATH}"
|
||||
sudo umount -q "${MOUNT_PATH}" || true
|
||||
|
||||
if [[ -e "${MOUNT_DEV}p1" ]]; then
|
||||
sudo qemu-nbd --disconnect "${MOUNT_DEV}" || true
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
sudo modprobe nbd max_part=8
|
||||
sudo qemu-nbd --connect="${MOUNT_DEV}" --format=raw "${IMAGE_PATH}"
|
||||
sleep 3
|
||||
sudo mount "${MOUNT_DEV}p1" "${MOUNT_PATH}"
|
||||
echo "Done."
|
||||
|
||||
# Copy cloud-init files to the boot partition.
|
||||
echo "Copying files to boot partition..."
|
||||
sudo cp "${CONFIG_PATH}/meta-data" "${CONFIG_PATH}/network-config" "${CONFIG_PATH}/user-data" "${MOUNT_PATH}"
|
||||
echo "Done."
|
||||
|
||||
# Unmount boot partition.
|
||||
echo "Unmounting boot partition..."
|
||||
sudo umount "${MOUNT_PATH}"
|
||||
sleep 1
|
||||
if [[ -e "${MOUNT_DEV}p1" ]]; then
|
||||
sudo qemu-nbd --disconnect "${MOUNT_DEV}"
|
||||
fi
|
||||
sleep 1
|
||||
rmdir "${MOUNT_PATH}"
|
||||
echo "Done."
|
||||
|
||||
# Create the final SD card image.
|
||||
echo "Creating ${IMAGE_PATH}.xz..."
|
||||
xz -T0 -z -q -9 "${IMAGE_PATH}"
|
||||
echo "Done."
|
||||
Reference in New Issue
Block a user