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?
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!