Is Immich the Best Self-Hosted Google Photos Alternative?

Immich is a great self-hosted photo and video management app that rivals cloud-based solutions like Google Photos. Here's how it compares, why you should consider it, and how to set it up.

Publish date: 5/22/2024

When it comes to photo and video management options, there are numerous options available, ranging from cloud-based services like Google Photos and iCloud Photos to self-hosted alternatives.

While cloud services offer convenience and ample storage, they also come with privacy concerns and limited control over your personal data.

Think about it: do you really want to give Google even more data than you already do? Your photos and videos are essentially a timeline of your entire life.

Self-hosted photo management apps, on the other hand, provide you with complete ownership and control over your photos and metadata.

And among the various self-hosted solutions, Immich is one photo management app you'll keep consistently hearing about. Because it's simply quite good.

That said, in this article, our goal is to explain Immich in depth so you confidently know if it's the right photo and video management app for you or not--and we'll even include instructions for installing and setting it up.

Let's dive in.

Comparing Immich to alternatives

First things first: when considering self-hosted photo management apps, it's essential to compare Immich to other notable alternatives.

I won't be incredibly detailed here as we've already done that over on our "The 15 Best Self-Hosted Photo Management Apps" article (which is definitely worth a read... if you ask me).

But when it comes to other popular self-hosted photo/video management options, the main 3 are going to be Immich, PhotoPrism, and Nextcloud Memories.

Nextcloud Memories is actually quite good, so if you're already in the Nextcloud ecosystem, it may be worth trying first. But I wasn't a big fan of the overall user experience, mostly because I'm not a big fan of Nextcloud.

PhotoPrism is again quite good in it's own right, but I'd say it's a little bit too experimental to me.

Then when it comes to Immich, while the top banner of their website says, "The project is under very active development. Expect bugs and changes. Do not use it as the only way to store your photos and videos." I've been using it for over a year with zero issues.

I've found they find a good balance between experimental features and functionality. So that's why I stuck with it.

But if you're interested in dipping your toes in the self-hosted photo management world, these three are certainly my first recommendations.

Continuing on:

Why use Immich?

Immich

The obvious reason to use Immich is because it serves its purpose of backing up photos and videos quite well, but outside of that...

Mobile-friendly experience with reliable automatic backup and syncs

Immich offers a seamless mobile experience through its dedicated iOS and Android apps.

These apps allow you to effortlessly back up photos from your mobile devices, with support for automatic background uploads.

The mobile apps also offer offline access, allowing you to view and manage your photo library even when an internet connection is unavailable.

Advanced organization and search with a touch of machine learning and AI

When it comes to organization, of course you have the standard basic albums you would on any other photo management app.

On top of that, you have either the timeline view, which presents photos chronologically, or the location view which displays photos on an interactive map based on geotags.

Immich's integration of machine learning-based tagging and categorization takes that a step further by automatically analyzing and tagging photos based on their content, making accurate organization and searches much more easier.

Furthermore, Immich utilizes AI-powered facial recognition to identify and group individuals within photos.

This feature allows you to easily find and organize photos based on the people present, making it convenient to locate specific memories or create personalized collections. It's pretty reliable too.

Collaborative sharing with privacy in mind

Immich allows you to easily share albums and individual photos with family and friends, all while maintaining control over privacy.

You have full control over who can access and view your shared content, and it's just as easy to do as it would be on an app like Google Photos.

Easy to setup, easy to integrate

Immich is dockerized, making it easy to set up and deploy on various platforms and infrastructures.

This simplifies the installation process and allows you to quickly get Immich up and running.

Additionally, Immich provides API keys for integration with other applications and services, allowing you to extend its functionality and seamlessly integrate it into your existing workflows or tools.

Now that we've explained why you should use Immich, let's explain how to install it:

Installing Immich

Docker Compose is the recommended method to run Immich in production.

And while Docker works on Windows and Mac as well, this example will be for Linux, as it's often the best OS for self-hosting.

Specifically, we'll be using Debian 12 "Bookworm" in this guide, but using Windows or Mac just requires slight modifications.

Step 1) Obtain an affordable server

Before installing Immich, you'll need a server to host it on.

I generally recommend against self-hosting things at home because you'll often find it isn't reliable, and with electricity added in you don't really save much (unless you're extremely lucky and get free electricity, in that case, by all means... go ahead).

Additionally, hosting it remotely in a data center will allow you great connectivity pretty much anywhere you go. And you won't have to worry about power outages and things like that.

That said, there are several options for affordable hosting, but we'll obviously recommend us as we think we're the best (and we would love to prove it to you).

For most people, our NVMe VPS line will work great for affordably self-hosting their Immich instance.

But if you have quite a bit of photos/videos, we can even setup a custom solution for you. You can reach out to us here over at xTom.com.

Step 2) Download the required files

Providing you're using Debian, the first thing I suggest is making sure you're entirely up to date.

You can do it with the following commands:

apt update
apt upgrade

Next, you'll want to create a directory for Immich and move inside of it:

mkdir immich
cd immich

Then, we'll need to download the according docker-compose.yml and example.env files for Immich by running the following commands:

wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Step 3) Install Docker Compose

The first thing we need to do here is add the Docker repository, which you can do with the following command:

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

(Note: If you're logged in as root, which isn't recommended, you don't need to use sudo.)

Then run the following:

sudo apt install docker-compose-plugin docker-ce docker-ce-cli containerd.io

Step 4) Populate the .env file with custom values

Next, you'll need to open the .env file in a text editor like nano, which you can do with the following command:

nano .env

Then customize your desired variables. I strongly recommend changing the default password.

Here's an explanation of the important variables:

  • UPLOAD_LOCATION: Specify the location where your uploaded files will be stored. By default, it is set to ./library.
  • DB_DATA_LOCATION: Specify the location where your database files will be stored. By default, it is set to ./postgres.
  • IMMICH_VERSION: Specify the Immich version you want to use. You can pin it to a specific version like "v1.71.0" or use "release" for the latest release.
  • DB_PASSWORD: Set a secure password for your Postgres database.

Here's what the actual file will look like:

# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB_DATA_LOCATION=./postgres

# The Immich version to use. You can pin this to a specific version like "v1.71>
IMMICH_VERSION=release  

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=postgres

# The values below this line do not need to be changed

###############################################################################>
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Step 5) Start the containers

From the directory you created in Step 2, (which should now contain your customized docker-compose.yml and .env files) run:

docker compose up -d

The -d at the end there is for detached mode, which will allow you to concurrently run more self-hosted apps on the same server if you'd like.

If everything is successful, you should see something like this:

user@server:~/immich# docker compose up -d
[+] Running 5/5
 ✔ redis Pulled                                                          17.5s 
 ✔ immich-server Pulled                                                  66.8s 
 ✔ immich-microservices Pulled                                           66.8s 
 ✔ database Pulled                                                       41.1s 
 ✔ immich-machine-learning Pulled                                        44.8s 

[+] Running 7/7
 ✔ Network immich_default             Created                             0.1s 
 ✔ Volume "immich_model-cache"        Created                             0.0s 
 ✔ Container immich_postgres          Started                             1.6s 
 ✔ Container immich_machine_learning  Started                             1.6s 
 ✔ Container immich_redis             Started                             1.6s 
 ✔ Container immich_microservices     Started                             1.8s 
 ✔ Container immich_server            Started                             2.0s

...which means your Immich instance is now live. Congrats!

Post-installation steps

After installing Immich, you may need to perform some additional steps to customize and configure the application according to your needs.

You can refer to the official Immich documentation for common post-installation tasks and configuration options.

I would also suggest setting up their automatic Borg backups, which will seamlessly backup your entire Immich instance. It works without a hitch, and makes it extremely unlikely to lose your data.

Additionally, you could use something like Watchtower to automatically keep Immich up to date.

Conclusion

Immich is a fantastic self-hosted photo/video management app that gives the likes of Google Photos and iCloud photos a run for their money.

All you need to do is find a reliable and affordable host (such as xTom for larger use cases, or V.PS for personal use cases), and spend 15 minutes setting up Immich; then you're set.

So, why not give it a try? It's free, and worst case scenario you can simply try one of the other many available self-hosted options.

That's the beauty of self-hosting.

Thanks for reading, and hopefully you found the article helpful!