What is Immich?
Immich is a self-hosted, full stack, containerized application that is effectively a drop-in replacement for Google Photos and Apple Photos.
Why would I want this
You have a lot of photos and videos and you don't want to pay subscription fees to Google and Apple for the rest of eternity. You want to take control of your own cloud services and own your own data again!
What do I need to host Immich
You need some hardware and storage. You can get started with what you already have, i.e. a laptop or a desktop. In this setup, you can boot up your hardware whenever you want to view photos or sync photos from your mobile apps. Eventually, you'll want to upgrade to a dedicated machine that is always on. This can be as simple as a raspberry pi to run the app or as complicated as a used enterprise server.
How can I "test" Immich out before purchasing additional hardware
I'm assuming you have a Windows or Mac device. You can run Immich in Docker Desktop which is able to run docker containers on your OS with a intuitive user interface. If you want to continue this approach and be able to access your website from the web and sync your phone app with your Immich running in Docker desktop, you can install TailScale on both devices or set up a CloudFlare tunnel in another docker container.
If you want to test running Immich on an actual server, you can then create a Virtual Machine on your computer using Oracle VM Virtual Box. This allows you to test any configuration you want on a server that you can clone or destroy at any time.
Setting up Immich seems complicated, why isn't it easier?
You have to remember, Google Photos isn't just a front end web site. It has a database running on a server, it has microservices that need to run object detection and facial recognition and update that meta data on the database. It has an API for the front end applications on web and mobile to fetch and sync images.
This is why we use Docker. Docker allows us to run a "container" with a simple build script outline in a docker-compose.yml
file that will basically pull the images of each of these necessary applications from the docker hub repository, and start them up in a docker container which is basically like an optimized Virtual Server. It's pretty amazing really.
I have a dedicated machine to run Immich on, now what?
There are essentially three different ways to do this.
Normal Linux OS, Docker Install
-
Run a normal operating system like Ubuntu or Fedora. Install docker, and install docker with docker compose.
Normal Linux OS, us a PaaS
-
Same as above, but install a Platform as a Service to manage Immich. This can be something relatively simple like
Portainer
. Or something even more hands off likeCloudron
. Home Server OS with 'App Store'
-
In this case, we're talking about installing an OS that is dedicated to streamlining the home server experience. This would be something like
Umbrel
orCasaOS
, where we can just navigate to the app store and basically click on Immich to be installed.