@@ -15,14 +15,7 @@ update_os
1515
1616setup_uv
1717
18- msg_info " Configuring apt and installing dependencies"
19- echo " deb http://deb.debian.org/debian testing main contrib" > /etc/apt/sources.list.d/immich.list
20- cat << EOF >/etc/apt/preferences.d/immich
21- Package: *
22- Pin: release a=testing
23- Pin-Priority: -10
24- EOF
25-
18+ msg_info " Installing dependencies"
2619$STD apt-get update
2720$STD apt-get install --no-install-recommends -y \
2821 git \
@@ -53,25 +46,33 @@ $STD apt-get install --no-install-recommends -y \
5346 libgomp1 \
5447 liblqr-1-0 \
5548 libltdl7 \
56- libmimalloc2.0 \
49+ libmimalloc3 \
5750 libopenjp2-7 \
5851 meson \
5952 ninja-build \
6053 pkg-config \
61- cpanminus \
6254 mesa-utils \
6355 mesa-va-drivers \
6456 mesa-vulkan-drivers \
6557 ocl-icd-libopencl1 \
6658 tini \
67- zlib1g
59+ zlib1g \
60+ libio-compress-brotli-perl \
61+ libwebp7 \
62+ libwebpdemux2 \
63+ libwebpmux3 \
64+ libhwy1t64 \
65+ libdav1d-dev \
66+ libhwy-dev \
67+ libwebp-dev \
68+ libaom-dev
6869curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
6970DPKG_ARCHITECTURE=" $( dpkg --print-architecture) "
7071export DPKG_ARCHITECTURE
7172cat << EOF >/etc/apt/sources.list.d/jellyfin.sources
7273Types: deb
7374URIs: https://repo.jellyfin.org/debian
74- Suites: bookworm
75+ Suites: trixie
7576Components: main
7677Architectures: ${DPKG_ARCHITECTURE}
7778Signed-By: /etc/apt/keyrings/jellyfin.gpg
@@ -93,13 +94,15 @@ read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machin
9394if [[ ${prompt,,} =~ ^(y| yes)$ ]]; then
9495 msg_info " Installing OpenVINO dependencies"
9596 touch ~ /.openvino
97+ $STD apt-get install -y --no-install-recommends patchelf
9698 tmp_dir=$( mktemp -d)
9799 $STD pushd " $tmp_dir "
98100 curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-core_1.0.17384.11_amd64.deb
99101 curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-opencl_1.0.17384.11_amd64.deb
100102 curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/intel-opencl-icd_24.31.30508.7_amd64.deb
101103 curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/libigdgmm12_22.4.1_amd64.deb
102104 $STD apt install -y ./* .deb
105+ $STD apt-mark hold libigdgmm12
103106 $STD popd
104107 rm -rf " $tmp_dir "
105108 dpkg -l | grep " intel-opencl-icd" | awk ' {print $3}' > ~/.intel_version
@@ -134,27 +137,7 @@ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
134137} >> ~/" $APPLICATION " .creds
135138msg_ok " Set up Postgresql Database"
136139
137- msg_info " Installing Packages from Testing Repo"
138- export APT_LISTCHANGES_FRONTEND=none
139- export DEBIAN_FRONTEND=noninteractive
140- $STD apt-get install -t testing --no-install-recommends -y \
141- libio-compress-brotli-perl \
142- libwebp7 \
143- libwebpdemux2 \
144- libwebpmux3 \
145- libhwy1t64 \
146- libdav1d-dev \
147- libhwy-dev \
148- libwebp-dev \
149- libaom-dev
150- if [[ -f ~ /.openvino ]]; then
151- $STD apt-get install -t testing -y patchelf
152- fi
153- msg_ok " Packages from Testing Repo Installed"
154-
155- $STD sudo -u postgres psql -c " ALTER DATABASE postgres REFRESH COLLATION VERSION;"
156- $STD sudo -u postgres psql -c " ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;"
157-
140+ msg_info " Compiling Custom Photo-processing Library (extreme patience)"
158141LD_LIBRARY_PATH=/usr/local/lib
159142export LD_RUN_PATH=/usr/local/lib
160143STAGING_DIR=/opt/staging
@@ -169,8 +152,7 @@ cd "$STAGING_DIR"
169152SOURCE=${SOURCE_DIR} /libjxl
170153JPEGLI_LIBJPEG_LIBRARY_SOVERSION=" 62"
171154JPEGLI_LIBJPEG_LIBRARY_VERSION=" 62.3.0"
172- # : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
173- : " ${LIBJXL_REVISION:= 794a5dcf0d54f9f0b20d288a12e87afb91d20dfc} "
155+ : " ${LIBJXL_REVISION:= $(jq -cr ' .revision' $BASE_DIR / server/ sources/ libjxl.json)} "
174156$STD git clone https://github.com/libjxl/libjxl.git " $SOURCE "
175157cd " $SOURCE "
176158$STD git reset --hard " $LIBJXL_REVISION "
@@ -207,8 +189,7 @@ msg_ok "(1/5) Compiled libjxl"
207189
208190msg_info " (2/5) Compiling libheif"
209191SOURCE=${SOURCE_DIR} /libheif
210- # : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
211- : " ${LIBHEIF_REVISION:= 35dad50a9145332a7bfdf1ff6aef6801fb613d68} "
192+ : " ${LIBHEIF_REVISION:= $(jq -cr ' .revision' $BASE_DIR / server/ sources/ libheif.json)} "
212193$STD git clone https://github.com/strukturag/libheif.git " $SOURCE "
213194cd " $SOURCE "
214195$STD git reset --hard " $LIBHEIF_REVISION "
@@ -233,8 +214,7 @@ msg_ok "(2/5) Compiled libheif"
233214
234215msg_info " (3/5) Compiling libraw"
235216SOURCE=${SOURCE_DIR} /libraw
236- # : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
237- : " ${LIBRAW_REVISION:= 09bea31181b43e97959ee5452d91e5bc66365f1f} "
217+ : " ${LIBRAW_REVISION:= $(jq -cr ' .revision' $BASE_DIR / server/ sources/ libraw.json)} "
238218$STD git clone https://github.com/libraw/libraw.git " $SOURCE "
239219cd " $SOURCE "
240220$STD git reset --hard " $LIBRAW_REVISION "
@@ -249,12 +229,11 @@ msg_ok "(3/5) Compiled libraw"
249229
250230msg_info " (4/5) Compiling imagemagick"
251231SOURCE=$SOURCE_DIR /imagemagick
252- # : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
253- : " ${IMAGEMAGICK_REVISION:= 8289a3388a085ad5ae81aa6812f21554bdfd54f2} "
232+ : " ${IMAGEMAGICK_REVISION:= $(jq -cr ' .revision' $BASE_DIR / server/ sources/ imagemagick.json)} "
254233$STD git clone https://github.com/ImageMagick/ImageMagick.git " $SOURCE "
255234cd " $SOURCE "
256235$STD git reset --hard " $IMAGEMAGICK_REVISION "
257- $STD ./configure --with-modules
236+ $STD ./configure --with-modules CPPFLAGS= " -DMAGICK_LIBRAW_VERSION_TAIL=202502 "
258237$STD make -j" $( nproc) "
259238$STD make install
260239ldconfig /usr/local/lib
@@ -264,8 +243,7 @@ msg_ok "(4/5) Compiled imagemagick"
264243
265244msg_info " (5/5) Compiling libvips"
266245SOURCE=$SOURCE_DIR /libvips
267- # : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
268- : " ${LIBVIPS_REVISION:= 8fa37a64547e392d3808eed8d72adab7e02b3d00} "
246+ : " ${LIBVIPS_REVISION:= $(jq -cr ' .revision' $BASE_DIR / server/ sources/ libvips.json)} "
269247$STD git clone https://github.com/libvips/libvips.git " $SOURCE "
270248cd " $SOURCE "
271249$STD git reset --hard " $LIBVIPS_REVISION "
@@ -314,6 +292,7 @@ sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
314292
315293# openapi & web build
316294cd " $SRC_DIR "
295+ echo " packageImportMethod: hardlink" >> ./pnpm-workspace.yaml
317296$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
318297$STD pnpm --filter @immich/sdk --filter immich-web build
319298cp -a web/build " $APP_DIR " /www
@@ -326,16 +305,17 @@ $STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
326305msg_ok " Installed Immich Server and Web Components"
327306
328307cd " $SRC_DIR " /machine-learning
329- mkdir -p " $ML_DIR "
308+ $STD useradd -U -s /usr/sbin/nologin -r -M -d " $INSTALL_DIR " immich
309+ mkdir -p " $ML_DIR " && chown -R immich:immich " $INSTALL_DIR "
330310export VIRTUAL_ENV=" ${ML_DIR} /ml-venv"
331311if [[ -f ~ /.openvino ]]; then
332312 msg_info " Installing HW-accelerated machine-learning"
333- $STD uv sync --extra openvino --no-cache --active
313+ $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --active -n -p python3.11 --managed-python
334314 patchelf --clear-execstack " ${VIRTUAL_ENV} /lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
335315 msg_ok " Installed HW-accelerated machine-learning"
336316else
337317 msg_info " Installing machine-learning"
338- $STD uv sync --extra cpu --no-cache --active
318+ $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --active -n -p python3.11 --managed-python
339319 msg_ok " Installed machine-learning"
340320fi
341321cd " $SRC_DIR "
@@ -374,8 +354,7 @@ mkdir -p /var/log/immich
374354touch /var/log/immich/{web.log,ml.log}
375355msg_ok " Installed ${APPLICATION} "
376356
377- msg_info " Creating user, env file, scripts & services"
378- $STD useradd -U -s /usr/sbin/nologin -r -M -d " $INSTALL_DIR " immich
357+ msg_info " Modifying user, creating env file, scripts & services"
379358usermod -aG video,render immich
380359
381360cat << EOF >"${INSTALL_DIR} "/.env
@@ -464,11 +443,8 @@ WantedBy=multi-user.target
464443EOF
465444chown -R immich:immich " $INSTALL_DIR " /var/log/immich
466445systemctl enable -q --now " $APPLICATION " -ml.service " $APPLICATION " -web.service
467- msg_ok " Created user, env file, scripts and services"
446+ msg_ok " Modified user, created env file, scripts and services"
468447
469- sed -i " $ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail
470- cp /etc/debian_version ~ /.debian_version.bak
471- sed -i ' s/.*/13.0/' /etc/debian_version
472448motd_ssh
473449customize
474450
0 commit comments