I have a working PKGBUILD at latest version v1.87.0 and with all features working (typesense search, machine learning, etc), see here on github. Happy to be co-maintainer.
Search Criteria
Package Details: immich-server 1.131.3-2
Package Actions
Git Clone URL: | https://aur.archlinux.org/immich.git (read-only, click to copy) |
---|---|
Package Base: | immich |
Description: | Self-hosted photos and videos backup tool |
Upstream URL: | https://github.com/immich-app/immich |
Licenses: | MIT |
Conflicts: | immich |
Replaces: | immich |
Submitter: | wabi |
Maintainer: | wabi (pikl) |
Last Packager: | pikl |
Votes: | 15 |
Popularity: | 1.43 |
First Submitted: | 2022-12-30 11:41 (UTC) |
Last Updated: | 2025-04-03 19:10 (UTC) |
Dependencies (43)
- brotli (brotli-gitAUR)
- dav1d (dav1d-gitAUR)
- expat (expat-gitAUR)
- glib2 (glib2-gitAUR, glib2-selinuxAUR, glib2-patched-thumbnailerAUR)
- highway (highway-gitAUR)
- imagemagick (imagemagick-gitAUR, imagemagick-full-gitAUR, imagemagick-fullAUR)
- jellyfin-ffmpeg
- lcms2 (lcms2-ff-gitAUR, lcms2-gitAUR, lcms2-ffAUR)
- libde265 (libde265-gitAUR)
- libexif (libexif-gitAUR)
- libgsf (libgsf-gitAUR)
- libheif (libheif-gitAUR, libheif-highmemAUR)
- libjpeg-turbo (mozjpeg-gitAUR, libjpeg-turbo-gitAUR, mozjpegAUR)
- liblqr
- libpng (libpng-gitAUR, libpng-apngAUR)
- libraw (libraw-gitAUR)
- librsvg (librsvg-gitAUR)
- libtool (libtool-gitAUR)
- libvips (libvips-notiffAUR, libvips-gitAUR)
- libwebp (libwebp-gitAUR)
- mimalloc (mimalloc-gitAUR)
- nodejs (nodejs-gitAUR, python-nodejs-wheelAUR, nodejs-lts-iron, nodejs-lts-jod)
- openexr (openexr-gitAUR)
- openjpeg2 (openjpeg-gitAUR)
- openslide
- perl-io-compress-brotli
- pgvecto.rsAUR (pgvecto.rs-immichAUR, pgvecto.rs-immich-binAUR, pgvecto.rs-binAUR, pgvecto.rsAUR)
- poppler-glib (poppler-glib-gitAUR)
- postgresql (postgresql13AUR, postgresql-gitAUR, postgresql-12AUR, postgresql15-docsAUR, postgresql15AUR, postgresql16-docsAUR, postgresql16AUR)
- python312AUR
- redis (redis-testingAUR, redis-gitAUR, keydbAUR, redictAUR, valkey)
- zlib (zlib-ng-compat-gitAUR, zlib-gitAUR, zlib-ng-compat)
- git (git-gitAUR, git-glAUR) (make)
- jq (jq-gitAUR, jaq-binAUR) (make)
- npm (corepackerAUR, python-nodejs-wheelAUR) (make)
- ts-node (make)
- uv (make)
- intel-compute-runtime (intel-compute-runtime-legacy-binAUR, intel-compute-runtime-legacyAUR, intel-compute-runtime-binAUR, intel-compute-runtime-gitAUR) (optional) – OpenCL support
- intel-media-driver (intel-media-stack-binAUR, intel-media-driver-gitAUR) (optional) – HW acceleration
- libva-mesa-driver (mesa-wsl2-gitAUR, amdonly-gaming-mesa-gitAUR, mesa-gitAUR, mesa-minimal-gitAUR, mesa) (optional) – GPU acceleration
- mesa-utils (optional) – GPU acceleration
- nginx (nginx-rtmp-sergey-gitAUR, nginx-mainline-pushstreamAUR, tengineAUR, tengine-extraAUR, freenginx-mainline-hgAUR, angieAUR, freenginx-mainlineAUR, freenginx-libresslAUR, nginx-quic-libresslAUR, nginx-mainline) (optional) – Reverse proxy
- vulkan-driver (nvidia-410xx-utilsAUR, nvidia-440xx-utilsAUR, nvidia-430xx-utilsAUR, swiftshader-gitAUR, amdvlk-debugAUR, amdvlk-2023q3.3AUR, amdvlk-2021q2.5AUR, amdvlk-gitAUR, vulkan-amdgpu-pro-legacyAUR, mesa-wsl2-gitAUR, vulkan-radeon-amd-bc250AUR, nvidia-525xx-utilsAUR, nvidia-510xx-utilsAUR, nvidia-utils-teslaAUR, vulkan-amdgpu-proAUR, nvidia-vulkan-utilsAUR, amdonly-gaming-vulkan-radeon-gitAUR, nvidia-390xx-utilsAUR, nvidia-470xx-utilsAUR, vulkan-terakanAUR, mesa-gitAUR, nvidia-550xx-utilsAUR, mesa-minimal-gitAUR, nvidia-535xx-utilsAUR, nvidia-utils-betaAUR, vulkan-nouveau-gitAUR, amdvlk, nvidia-utils, vulkan-dzn, vulkan-gfxstream, vulkan-intel, vulkan-nouveau, vulkan-radeon, vulkan-swrast, vulkan-virtio) (optional) – Vulkan support
Required by (1)
Sources (12)
- base-images
- https://download.geonames.org/export/dump/admin1CodesASCII.txt
- https://download.geonames.org/export/dump/admin2Codes.txt
- https://download.geonames.org/export/dump/cities500.zip
- https://raw.githubusercontent.com/nvkelso/natural-earth-vector/v5.1.2/geojson/ne_10m_admin_0_countries.geojson
- immich-1.131.3.tar.gz
- immich-machine-learning.service
- immich-server.service
- immich.conf
- immich.sysusers
- immich.tmpfiles
- nginx.immich.conf
Latest Comments
« First ‹ Previous 1 .. 6 7 8 9 10 11 12 Next › Last »
pikl commented on 2023-11-19 16:49 (UTC)
trainzkid commented on 2023-10-15 05:07 (UTC)
@wabi sorry for the massive delay!
I just tried to install this immich package into a systemd-nspawn container and didn't receive the poppler-glib
related error. I'm going to guess it's a possible conflict on my server. I'll research further and get back to you when I've got more information.
I also see a lot of the changes you made, because setting immich up on this container was a thousand times easier this time than when I tried on my server before. Thanks for all your hard work!!!
hrdl commented on 2023-08-25 11:37 (UTC)
@wabi: thanks for packaging immich. chown
requires the user to exist, which in general doesn't happen until installation -- hence my suggestion to use tmpfiles.d. I use something like this:
# PKGBUILD
package() {
...
install -Dm644 "${srcdir}/immich.sysusers" "${pkgdir}/usr/lib/sysusers.d/immich.conf"
install -Dm644 "${srcdir}/immich.tmpfiles" "${pkgdir}/usr/lib/tmpfiles.d/immich.conf"
...
install -d "${pkgdir}/var/lib/immich/upload" "${pkgdir}/var/lib/immich/app/server/.reverse-geocoding-dump"
}
# immich.tmpfiles
d /var/lib/immich 0700 immich immich -
wabi commented on 2023-08-25 08:19 (UTC)
@trainzkid: thanks for the suggestions. Incorporated some of them. The redis connection is configurable to either use sockets or a network connection in the immich.conf file. What I can't replicate is the use of poppler-glib. What tries to call these libraries on your system (they are not installed or used on mine).
hrdl commented on 2023-08-24 19:55 (UTC)
@trainzkid: nginx.immich.conf
contains a configuration for nginx. For immich.tmpfiles
I would use something like d /var/lib/immich 0700 immich immich -
, possibly adjusting the mode bits to something less restrictive. I'd be happy to see a more elegant solution though.
trainzkid commented on 2023-08-24 19:37 (UTC) (edited on 2023-08-24 19:37 (UTC) by trainzkid)
@hrdl: is there documentation or a guide for either of those that I could reference? I've set up a reverse proxy before, but I'm not familiar with configuring it to strip a portion of the URL, and I've never explicitly configured tmpfiles.d
.
I'm utilizing lighttpd as my web server if it helps!
I'm assuming tmpfiles.d
allows a copy of a directory to be stored and accessed in /tmp/*
with different permissions than the original.
hrdl commented on 2023-08-24 13:56 (UTC)
@trainzkid: immich is intended to be run behind a reverse proxy that strips the api/
component from the URL. The ownership for /var/lib/immich
and its subdirectories can be fixed via tmpfiles.d
.
trainzkid commented on 2023-07-25 06:08 (UTC) (edited on 2023-07-25 06:10 (UTC) by trainzkid)
Here's a collection of errors I came across while trying to set immich up, as well as the ways I resolved them. Some of these should probably be added/updated in this aur PKGBUILD. Some of these are just dumb mistakes on my part, but may help others running into them.
node:fs:1396
handleErrorFromBinding(ctx);
^
Error: EACCES: permission denied, mkdir 'upload/library'
at mkdirSync (node:fs:1396:3)
at FilesystemProvider.mkdirSync (/var/lib/immich/app/server/dist/infra/repositories/filesystem.provider.js:72:32)
at StorageService.init (/var/lib/immich/app/server/dist/domain/storage/storage.service.js:28:32)
at AppService.init (/var/lib/immich/app/server/dist/immich/app.service.js:28:29)
at bootstrap (/var/lib/immich/app/server/dist/immich/main.js:31:45)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
errno: -13,
syscall: 'mkdir',
code: 'EACCES',
path: 'upload/library'
}
/var/lib/immich/*
needs proper permissions if services are ran as user immich; chmod --recursive immich:immich /var/lib/immich/
to fix.
/var/lib/immich/app/server/node_modules/@nestjs/config/dist/config.module.js:75
throw new Error(`Config validation error: ${error.message}`);
^
Error: Config validation error: "TYPESENSE_API_KEY" is not allowed to be empty
at ConfigModule.forRoot (/var/lib/immich/app/server/node_modules/@nestjs/config/dist/config.module.js:75:23)
at Object.<anonymous> (/var/lib/immich/app/server/dist/infra/infra.module.js:49:35)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Module.require (node:internal/modules/cjs/loader:1141:19)
at require (node:internal/modules/cjs/helpers:110:18)
at Object.<anonymous> (/var/lib/immich/app/server/dist/infra/index.js:19:14)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
Fix by commenting out TYPESENSE_API_KEY=
in /etc/immich.conf
.
unable to load "/usr/lib/vips-modules-8.14/vips-openslide.so" -- libopenslide.so.0: cannot open shared object file: No such file or directory
unable to load "/usr/lib/vips-modules-8.14/vips-poppler.so" -- libpoppler-glib.so.8: cannot open shared object file: No such file or directory
Fix by installing extra/poppler-glib
.
Error: connect ENOENT /run/redis/redis.sock
at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) {
errno: -2,
code: 'ENOENT',
syscall: 'connect',
address: '/run/redis/redis.sock'
}
Make sure to configure redis to provide a unix socket
Error: connect EACCES /run/redis/redis.sock
at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) {
errno: -13,
code: 'EACCES',
syscall: 'connect',
address: '/run/redis/redis.sock'
}
Again, make sure to follow the redis guide on the arch wiki about providing a unix socket, specifically the socket's permissions; the immich user also needs to be added to the redis group
immich-microservices.service: Failed to set up mount namespacing: /run/systemd/unit-root/var/lib/immich/app/server/.reverse-geocoding-dump: No such file or directory
immich-microservices.service: Failed at step NAMESPACE spawning node: No such file or directory
immich-microservices.service: Main process exited, code=exited, status=226/NAMESPACE
mkdir /var/lib/immich/app/server/.reverse-geocoding-dump
to fix.
I also noticed /var/lib/immich/app/server/upload/
is a symbolic link to /var/lib/immich/upload
, which doesn't exist after install, so I mkdir
'd it and chown
'd it to immich:immich
.
After fixing all these and starting all 3 services (immich-{server,web,microservices}), they run without errors and I get a first time login page at port 3000, but filling out all the fields and pressing 'sign up' does nothing. By using the browser's debugging, it looks like pressing 'sign up' sends a post req to port 3001, which is returning a 404 not found. Accessing immich-server
and immich-microservices
located on ports 3001 and 3002 respectively show json returning a 404 for 'Cannot GET /'. As of right now, this is as far as I've gotten. Any advice or feedback is welcomed! Let me know if these were obvious, or if there's some documentation I might have missed.
dp20eic commented on 2023-07-11 17:18 (UTC)
@wabi: thanks for the hint, I read it, but as I see it right now, I over read it :( I will do the next try, after it is not too hot, I also wait for my new hardware :(
Thanks Bernd
wabi commented on 2023-07-08 09:01 (UTC)
@dp20eic: did you add the immich domain names to the /etc/hosts file as localhosts? They are hard coded in immich thus they are required. See https://github.com/immich-app/immich/discussions/1657
Pinned Comments
pikl commented on 2025-01-25 21:54 (UTC) (edited on 2025-01-26 08:23 (UTC) by pikl)
Upgrading to
postgresql-17
is awkward because ofpgvecto.rs
if you have been using0.2.0
as provided by AUR package pgvecto.rs-immich. If you have been using0.3.0
as provided by AUR package pgvecto.rs-immich-bin then these extra steps are likely not required and I suggest the wiki instructions for upgrades for major version increments ofpostgresql
are followed.If you would like to stick at
postgresql-16
please add the following topacman.conf
:Following the manual dump and reload in the wiki does appear to work, with a few extra steps to consider the
pgvecto.rs
upgrade.Starting point is
postgresql-old-upgrade
installed withpgvector.rs-0.2.0
. Symlink the installation outputs ofpgvecto.rs
into the directories used by the parallel installation ofpostgresql-old-upgrade
.Then perform the database start (
/opt/psql-16/bin/pg_ctl .. start
), "dump" (pg_dumpall...
) and database stop (/opt/psql-16/bin/pg_ctl .. start
) steps in the wiki.Upgrade to
postgresql-17
andpgvecto.rs-0.3.0
(provided bypgvector.rs-immich-bin
). Clear out/var/lib/postgresql/data
then initialise the database (initdb...
) as per the wiki.Start the service using
systemctl start postgresql
and install thepgvecto.rs
using the following command:Finally restart the postgresql service and perform the reload (
psql...
) steps in the wiki.EDITED: Various clarifications
pikl commented on 2024-08-05 09:52 (UTC)
From
v1.111.0
, this package does not build withnodejs
<v20
.