Immich is an open source photo and video management solution, designed to provide a self-hosted alternative for managing and backing up photos and videos, with a focus on privacy and ease of use.

Setup

The following example configuration will enable Immich locally.

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

To see more options, visit the Immich module's options page.

After applying the above configuration you will be able to access Immich at http://localhost:2283.

Hardware Accelerated Transcoding using VA-API

Before anything else, 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, add your Immich user to the render and video groups.

If you are using the default immich user, you can use the following snippet to enable VA-API support.

 
/etc/nixos/configuration.nix
users.users.immich.extraGroups = [ "video" "render" ];

Reverse Proxy

A typical nginx configuration to multiplex Immich with other web services might look like:

 
/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;
  };
};