Immich: Difference between revisions

From NixOS Wiki
Scrumplex (talk | contribs)
m Fix heading of VA-API section
Updated the immich hardware acceleration docs to reflect the changes in https://github.com/NixOS/nixpkgs/pull/376339
 
(11 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[https://immich.app Immich] is an open-source software, designed to provide a self-hosted alternative for managing and backing up photos and videos, with a focus on privacy and ease of use.
[https://immich.app Immich] is a self-hosted photo and video management solution.


== Setup ==
== Installation ==
To install Immich, add the following to your NixOS configuration:
{{file|/etc/nixos/configuration.nix|nix|3=services.immich.enable = true;
services.immich.port = 2283;}}
More options are available: {{nixos:option|services.immich.}}


{{Note|The module is not yet part of the latest NixOS stable release and is currently in a PR at https://github.com/NixOS/nixpkgs/pull/324127}}
== Tips and Tricks ==


The following example configuration will enable Immich locally
=== Enabling Hardware Accelerated Video Transcoding ===
Add the Immich user to the <code>render</code> and <code>video</code> groups, override the <code>PrivateDevices</code> service config setting to allow the service to access <code>/dev/dri/</code> and enable [[Accelerated Video Playback]] on your system:{{file|/etc/nixos/configuration.nix|nix|3=# `null` will give access to all devices.
# You may want to restrict this by using something like `[ "/dev/dri/renderD128" ]`
services.immich.accelerationDevices = null;


{{file|/etc/nixos/configuration.nix|nix|3=services.immich = {
hardware.graphics = {  
  enable = true;
# ...
  environment.IMMICH_MACHINE_LEARNING_URL = "http://localhost:3003";
# See: https://wiki.nixos.org/wiki/Accelerated_Video_Playback
};
};
}}After applying the configuration you can access the instance via http://localhost:3001.


=== Hardware Accelerated Transcoding using VA-API ===
users.users.immich.extraGroups = [ "video" "render" ]; }}
First make sure you have configured hardware acceleration on your system as described in [[Accelerated Video Playback]].


To make use of hardware accelerated video transcoding using VA-API, make sure to add your Immich user to the <code>render</code> and <code>video</code> groups. If you are using the default <code>immich</code> user, you can use the following snippet to enable VA-API support.{{file|/etc/nixos/configuration.nix|nix|3=users.users.immich.extraGroups = [ "video" "render" ];
=== Using Immich behind Nginx ===
 
This is a typical [[Nginx]] configuration for Immich:
{{file|/etc/nixos/configuration.nix|nix|3=services.nginx.virtualHosts."immich.example.com" = {
  enableACME = true;
  forceSSL = true;
  locations."/" = {
    proxyPass = "http://[::1]:${toString config.services.immich.port}";
    proxyWebsockets = true;
    recommendedProxySettings = true;
    extraConfig = ''
      client_max_body_size 50000M;
      proxy_read_timeout  600s;
      proxy_send_timeout  600s;
      send_timeout        600s;
    '';
  };
};
}}
}}
[[Category:Server]]
[[Category:Server]]
[[Category:Web Applications]]
[[Category:Web Applications]]

Latest revision as of 07:33, 5 February 2025

Immich is a self-hosted photo and video management solution.

Installation

To install Immich, add the following to your NixOS configuration:

/etc/nixos/configuration.nix
services.immich.enable = true;
services.immich.port = 2283;

More options are available: services.immich.

Tips and Tricks

Enabling Hardware Accelerated Video Transcoding

Add the Immich user to the render and video groups, override the PrivateDevices service config setting to allow the service to access /dev/dri/ and enable Accelerated Video Playback on your system:

/etc/nixos/configuration.nix
# `null` will give access to all devices.
# You may want to restrict this by using something like `[ "/dev/dri/renderD128" ]`
services.immich.accelerationDevices = null;

hardware.graphics = { 
 # ...
 # See: https://wiki.nixos.org/wiki/Accelerated_Video_Playback
};

users.users.immich.extraGroups = [ "video" "render" ];

Using Immich behind Nginx

This is a typical Nginx configuration for Immich:

/etc/nixos/configuration.nix
services.nginx.virtualHosts."immich.example.com" = {
  enableACME = true;
  forceSSL = true;
  locations."/" = {
    proxyPass = "http://[::1]:${toString config.services.immich.port}";
    proxyWebsockets = true;
    recommendedProxySettings = true;
    extraConfig = ''
      client_max_body_size 50000M;
      proxy_read_timeout   600s;
      proxy_send_timeout   600s;
      send_timeout         600s;
    '';
  };
};