Immich is the self-hosted answer to a phone maker's photo cloud. It backs up from the phone automatically, recognises faces, searches by what is in the picture rather than only by filename, and shows you the same timeline you are used to — from a machine in your house.

It is the heaviest of the common self-hosted applications, and almost all of that weight is one feature.

The machine learning is what costs you

Serving photos is easy; recognising the faces in them is not. That one task determines whether the installation is comfortable or miserable.

The project's own guidance offers two tiers. A bare minimum of around 4 GB of memory, two cores and 50 GB of disk will run the application for a modest library. For a comfortable experience, plan on 8 GB or more, four cores, 250 GB or more of disk, and a GPU if you want face recognition to finish in hours rather than days.

Pay attention to that last part about the GPU. The initial pass over an existing library is the expensive part, and on a small machine with a large backlog it is measured in days of continuous work. The application remains usable throughout; it is just busy.

If your hardware is modest, let the first pass run over a weekend and stop watching it. The steady state afterwards, processing new photographs as they arrive, is undemanding.

Choose the upload location once

One setting, UPLOAD_LOCATION, decides where every photograph and video lands. It is chosen before the first start and it is where the library physically lives from then on.

Moving it later means moving the data, which is exactly as unpleasant as it sounds once there are a few hundred gigabytes of it. Point it at the big disk on the first day, even if the big disk is nearly empty and the small one is more convenient right now.

The database is a separate concern from the photographs and both matter. The pictures are the irreplaceable part; the database holds the albums, the people you have named and the search index, and rebuilding it from scratch over a large library is a very long afternoon.

The environment file is a rename

The project ships an example environment file, and setup is renaming it and filling in the handful of values that matter rather than composing one from nothing.

This trips people who go looking for documentation on every variable before starting. Most of them have sensible defaults. The ones that need a decision are the upload location, the database credentials and the timezone, and the timezone is worth setting properly because it is what the timeline sorts by.

Back up before you trust it

The reason to run this is usually to stop paying someone else to hold the only copy of your photographs. That is a good reason, and it comes with an obligation the hosted service was quietly meeting for you.

A single machine in your house is not a backup, it is a copy. A disk failure, a flood or a theft takes it. If this is where the family photographs live, there needs to be a second copy somewhere else, and the phones should not be set to delete after upload until that second copy demonstrably exists.

Verify a restore before turning off whatever you are migrating away from. Not the file count — actually stand it up and look at the pictures.

What it will not do

It is not an editor, and it is not trying to be. It stores, organises and finds; the editing happens elsewhere.

Automatic backup from a phone needs the mobile application installed and permitted to run in the background, and phone operating systems are increasingly aggressive about suspending applications that do exactly that. If photographs stop appearing, the first place to look is the phone's battery settings rather than the server.

Where this comes from

Composed from the project's own installation documentation and hardware guidance together with several independent published setups, cross-checked against each other on 31 August 2026. Hardware requirements in particular move as the machine learning models change, so check the current documentation rather than trusting a figure in any article, including this one.

This is an actively developed project and it moves fast. Read the release notes before upgrading, take the database backup first, and be aware that a rapid release cadence is a real cost as well as a benefit when the thing being upgraded holds your photographs.

Face recognition is a considered choice, not a default to accept quietly. Running it on your own hardware is meaningfully different from sending faces to somebody else's, which is much of the point — but if other people's children are in your library, the fact that the processing is local does not settle every question about it.