Immich: v1.139.2 (#7116)
* Switch to pnpm for build - The Immich repo now uses pnpm to build the server, web/api and cli * streamline dependency installation - remove unnecessary duplicates - install libaom-dev from testing repo * Bump version to v1.139.2
This commit is contained in:
parent
5cd24b503c
commit
d7dea7cc5d
52
ct/immich.sh
52
ct/immich.sh
@ -29,6 +29,8 @@ function update_script() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
setup_uv
|
setup_uv
|
||||||
|
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
|
|
||||||
STAGING_DIR=/opt/staging
|
STAGING_DIR=/opt/staging
|
||||||
BASE_DIR=${STAGING_DIR}/base-images
|
BASE_DIR=${STAGING_DIR}/base-images
|
||||||
@ -59,7 +61,7 @@ function update_script() {
|
|||||||
done
|
done
|
||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
fi
|
||||||
RELEASE="1.138.1"
|
RELEASE="1.139.2"
|
||||||
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
#RELEASE=$(curl -fsSL https://api.github.com/repos/immich-app/immich/releases?per_page=1 | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
if [[ -f ~/.immich && "$RELEASE" == "$(cat ~/.immich)" ]]; then
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
@ -116,8 +118,12 @@ set +a
|
|||||||
EOF
|
EOF
|
||||||
chmod +x "$INSTALL_DIR"/start.sh
|
chmod +x "$INSTALL_DIR"/start.sh
|
||||||
fi
|
fi
|
||||||
rm -rf "${APP_DIR:?}"/*
|
|
||||||
mkdir -p "$ML_DIR"
|
(
|
||||||
|
shopt -s dotglob
|
||||||
|
rm -rf "${APP_DIR:?}"/*
|
||||||
|
)
|
||||||
|
|
||||||
rm -rf "$SRC_DIR"
|
rm -rf "$SRC_DIR"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v${RELEASE}" "$SRC_DIR"
|
||||||
@ -127,30 +133,34 @@ EOF
|
|||||||
if [[ "$RELEASE" == "1.135.1" ]]; then
|
if [[ "$RELEASE" == "1.135.1" ]]; then
|
||||||
rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
|
rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
|
||||||
fi
|
fi
|
||||||
$STD npm install -g node-gyp node-pre-gyp
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
$STD npm ci
|
export CI=1
|
||||||
$STD npm run build
|
corepack enable
|
||||||
$STD npm prune --omit=dev --omit=optional
|
|
||||||
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
# server build
|
||||||
cp package.json "$APP_DIR"/bin
|
$STD pnpm --filter immich --frozen-lockfile build
|
||||||
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
$STD pnpm --filter immich --frozen-lockfile --prod --no-optional deploy "$APP_DIR"
|
||||||
|
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
||||||
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
|
||||||
$STD npm ci
|
# openapi & web build
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"/web
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web build
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
|
|
||||||
|
# cli build
|
||||||
|
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
||||||
|
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
||||||
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
cd "$APP_DIR"
|
cd "$APP_DIR"
|
||||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
mv "$INSTALL_DIR"/start.sh "$APP_DIR"/bin
|
||||||
$STD npm install sharp
|
|
||||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
|
||||||
msg_ok "Updated ${APP} web and microservices"
|
msg_ok "Updated ${APP} web and microservices"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
|
mkdir -p "$ML_DIR"
|
||||||
export VIRTUAL_ENV="${ML_DIR}"/ml-venv
|
export VIRTUAL_ENV="${ML_DIR}"/ml-venv
|
||||||
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
|
$STD /usr/local/bin/uv venv "$VIRTUAL_ENV"
|
||||||
if [[ -f ~/.openvino ]]; then
|
if [[ -f ~/.openvino ]]; then
|
||||||
@ -178,10 +188,6 @@ EOF
|
|||||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
||||||
ln -s "$GEO_DIR" "$APP_DIR"
|
ln -s "$GEO_DIR" "$APP_DIR"
|
||||||
|
|
||||||
msg_info "Updating Immich CLI"
|
|
||||||
$STD npm i -g @immich/cli
|
|
||||||
msg_ok "Updated Immich CLI"
|
|
||||||
|
|
||||||
chown -R immich:immich "$INSTALL_DIR"
|
chown -R immich:immich "$INSTALL_DIR"
|
||||||
if [[ ! -f ~/.debian_version.bak ]]; then
|
if [[ ! -f ~/.debian_version.bak ]]; then
|
||||||
cp /etc/debian_version ~/.debian_version.bak
|
cp /etc/debian_version ~/.debian_version.bak
|
||||||
|
@ -30,8 +30,12 @@ $STD apt-get install --no-install-recommends -y \
|
|||||||
autoconf \
|
autoconf \
|
||||||
build-essential \
|
build-essential \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
|
automake \
|
||||||
cmake \
|
cmake \
|
||||||
jq \
|
jq \
|
||||||
|
libtool \
|
||||||
|
libltdl-dev \
|
||||||
|
libgdk-pixbuf-2.0-dev \
|
||||||
libbrotli-dev \
|
libbrotli-dev \
|
||||||
libde265-dev \
|
libde265-dev \
|
||||||
libexif-dev \
|
libexif-dev \
|
||||||
@ -39,37 +43,28 @@ $STD apt-get install --no-install-recommends -y \
|
|||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgsf-1-dev \
|
libgsf-1-dev \
|
||||||
libjpeg62-turbo-dev \
|
libjpeg62-turbo-dev \
|
||||||
librsvg2-dev \
|
|
||||||
libspng-dev \
|
libspng-dev \
|
||||||
|
liblcms2-dev \
|
||||||
|
libopenexr-dev \
|
||||||
|
libgif-dev \
|
||||||
|
librsvg2-dev \
|
||||||
|
libexpat1 \
|
||||||
|
libgcc-s1 \
|
||||||
|
libgomp1 \
|
||||||
|
liblqr-1-0 \
|
||||||
|
libltdl7 \
|
||||||
|
libmimalloc2.0 \
|
||||||
|
libopenjp2-7 \
|
||||||
meson \
|
meson \
|
||||||
ninja-build \
|
ninja-build \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
cpanminus \
|
cpanminus \
|
||||||
libde265-0 \
|
|
||||||
libexif12 \
|
|
||||||
libexpat1 \
|
|
||||||
libgcc-s1 \
|
|
||||||
libglib2.0-0 \
|
|
||||||
libgomp1 \
|
|
||||||
libgsf-1-114 \
|
|
||||||
liblcms2-dev \
|
|
||||||
liblqr-1-0 \
|
|
||||||
libltdl7 \
|
|
||||||
libmimalloc2.0 \
|
|
||||||
libopenexr-dev \
|
|
||||||
libgif-dev \
|
|
||||||
libopenjp2-7 \
|
|
||||||
librsvg2-2 \
|
|
||||||
libspng0 \
|
|
||||||
mesa-utils \
|
mesa-utils \
|
||||||
mesa-va-drivers \
|
mesa-va-drivers \
|
||||||
mesa-vulkan-drivers \
|
mesa-vulkan-drivers \
|
||||||
ocl-icd-libopencl1 \
|
ocl-icd-libopencl1 \
|
||||||
tini \
|
tini \
|
||||||
libaom-dev \
|
|
||||||
zlib1g
|
zlib1g
|
||||||
$STD apt-get install -y \
|
|
||||||
libgdk-pixbuf-2.0-dev librsvg2-dev libtool
|
|
||||||
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
|
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
|
||||||
DPKG_ARCHITECTURE="$(dpkg --print-architecture)"
|
DPKG_ARCHITECTURE="$(dpkg --print-architecture)"
|
||||||
export DPKG_ARCHITECTURE
|
export DPKG_ARCHITECTURE
|
||||||
@ -111,7 +106,8 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
msg_ok "Installed OpenVINO dependencies"
|
msg_ok "Installed OpenVINO dependencies"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="22" setup_nodejs
|
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
|
||||||
|
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
|
||||||
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
|
PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql
|
||||||
|
|
||||||
msg_info "Setting up Postgresql Database"
|
msg_info "Setting up Postgresql Database"
|
||||||
@ -149,7 +145,8 @@ $STD apt-get install -t testing --no-install-recommends -y \
|
|||||||
libhwy1t64 \
|
libhwy1t64 \
|
||||||
libdav1d-dev \
|
libdav1d-dev \
|
||||||
libhwy-dev \
|
libhwy-dev \
|
||||||
libwebp-dev
|
libwebp-dev \
|
||||||
|
libaom-dev
|
||||||
if [[ -f ~/.openvino ]]; then
|
if [[ -f ~/.openvino ]]; then
|
||||||
$STD apt-get install -t testing -y patchelf
|
$STD apt-get install -t testing -y patchelf
|
||||||
fi
|
fi
|
||||||
@ -281,36 +278,39 @@ APP_DIR="${INSTALL_DIR}/app"
|
|||||||
ML_DIR="${APP_DIR}/machine-learning"
|
ML_DIR="${APP_DIR}/machine-learning"
|
||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
mkdir -p "$INSTALL_DIR"
|
mkdir -p "$INSTALL_DIR"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${ML_DIR}","${INSTALL_DIR}"/cache}
|
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.138.1" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.139.2" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (more patience please)"
|
msg_info "Installing ${APPLICATION} (more patience please)"
|
||||||
|
|
||||||
cd "$SRC_DIR"/server
|
cd "$SRC_DIR"/server
|
||||||
$STD npm install -g node-gyp node-pre-gyp
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
$STD npm ci
|
export CI=1
|
||||||
$STD npm run build
|
corepack enable
|
||||||
$STD npm prune --omit=dev --omit=optional
|
|
||||||
cp -a {bin,dist,node_modules,resources,package*.json} "$APP_DIR"/
|
# server build
|
||||||
cp package.json "$APP_DIR"/bin
|
$STD pnpm --filter immich --frozen-lockfile build
|
||||||
|
$STD pnpm --filter immich --frozen-lockfile --prod --no-optional deploy "$APP_DIR"
|
||||||
|
cp "$APP_DIR"/package.json "$APP_DIR"/bin
|
||||||
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
|
||||||
cd "$SRC_DIR"/open-api/typescript-sdk
|
|
||||||
$STD npm ci
|
# openapi & web build
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"/web
|
|
||||||
$STD npm ci
|
|
||||||
$STD npm run build
|
|
||||||
cd "$SRC_DIR"
|
cd "$SRC_DIR"
|
||||||
|
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
|
||||||
|
$STD pnpm --filter @immich/sdk --filter immich-web build
|
||||||
cp -a web/build "$APP_DIR"/www
|
cp -a web/build "$APP_DIR"/www
|
||||||
cp LICENSE "$APP_DIR"
|
cp LICENSE "$APP_DIR"
|
||||||
cd "$APP_DIR"
|
|
||||||
export SHARP_FORCE_GLOBAL_LIBVIPS=true
|
# cli build
|
||||||
$STD npm install sharp
|
$STD pnpm --filter @immich/sdk --filter @immich/cli --frozen-lockfile install
|
||||||
rm -rf "$APP_DIR"/node_modules/@img/sharp-{libvips*,linuxmusl-x64}
|
$STD pnpm --filter @immich/sdk --filter @immich/cli build
|
||||||
|
$STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
|
||||||
msg_ok "Installed Immich Server and Web Components"
|
msg_ok "Installed Immich Server and Web Components"
|
||||||
|
|
||||||
cd "$SRC_DIR"/machine-learning
|
cd "$SRC_DIR"/machine-learning
|
||||||
|
mkdir -p "$ML_DIR"
|
||||||
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
export VIRTUAL_ENV="${ML_DIR}/ml-venv"
|
||||||
$STD uv venv "$VIRTUAL_ENV"
|
$STD uv venv "$VIRTUAL_ENV"
|
||||||
if [[ -f ~/.openvino ]]; then
|
if [[ -f ~/.openvino ]]; then
|
||||||
@ -337,10 +337,6 @@ sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
|||||||
ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
|
ln -s "$UPLOAD_DIR" "$APP_DIR"/upload
|
||||||
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
ln -s "$UPLOAD_DIR" "$ML_DIR"/upload
|
||||||
|
|
||||||
msg_info "Installing Immich CLI"
|
|
||||||
$STD npm i -g @immich/cli
|
|
||||||
msg_ok "Installed Immich CLI"
|
|
||||||
|
|
||||||
msg_info "Installing GeoNames data"
|
msg_info "Installing GeoNames data"
|
||||||
cd "$GEO_DIR"
|
cd "$GEO_DIR"
|
||||||
URL_LIST=(
|
URL_LIST=(
|
||||||
@ -400,10 +396,10 @@ cat <<EOF >"$APP_DIR"/bin/start.sh
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -a
|
set -a
|
||||||
. "$INSTALL_DIR"/.env
|
. ${INSTALL_DIR}/.env
|
||||||
set +a
|
set +a
|
||||||
|
|
||||||
/usr/bin/node "$APP_DIR"/dist/main.js "\$@"
|
/usr/bin/node ${APP_DIR}/dist/main.js "\$@"
|
||||||
EOF
|
EOF
|
||||||
chmod +x "$ML_DIR"/ml_start.sh "$APP_DIR"/bin/start.sh
|
chmod +x "$ML_DIR"/ml_start.sh "$APP_DIR"/bin/start.sh
|
||||||
cat <<EOF >/etc/systemd/system/"${APPLICATION}"-web.service
|
cat <<EOF >/etc/systemd/system/"${APPLICATION}"-web.service
|
||||||
|
Loading…
x
Reference in New Issue
Block a user