mirror of
https://github.com/photoprism/photoprism.git
synced 2026-01-23 02:24:24 +00:00
Setup: Add build script for the PhotoPrismPi SD card image #4414
Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
parent
78f5a48b0b
commit
675c2a3f95
12 changed files with 115 additions and 16 deletions
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..."
|
||||
|
||||
|
|
|
|||
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}"
|
||||
|
|
|
|||
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"
|
||||
|
|
|
|||
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."
|
||||
Loading…
Add table
Add a link
Reference in a new issue