Google’s recent policy change to Google Drive for desktop has angered a lot of users. The new policy prevents Drive from uploading photos to your photo library. It was a nice feature, but Google no longer wants to pursue it. So, it’s forcing a lot of Drive desktop users to switch to a new strategy because direct automatic integration won’t work. The limited free storage wasn’t for me anyway.
SoI put my trust in Immich, a Google Photos alternative that stores and serves My photos and videos locally. This project isn’t as complicated as you might expect, but it does require an average computer with 4GB or more of memory. Let’s explore how to create this server and set up your Windows PC to sync photos to it.
Choose the right system
Devices that are underpowered will not work
Although it’s exciting to create home servers on low-end systems, Immich is a tool that’s not suitable for most entry-level hardware. You certainly can’t use the Raspberry Pi Zero 2 W which only has 512MB of memory. Likewise, even 1GB memory configuration SBCs like the Raspberry Pi 4 Model B cannot fully handle all of Immich’s features.
I recently purchased a thin client machine, an HP t620, and equipped it with a used 8GB DDR3 memory stick and a new 128GB M.2 SATA SSD. The storage is very fast for a home server, and I deployed DietPi on it because it seemed more liberating than on the Ubuntu server. I could praise DietPi’s features all day long, but right now, the most important aspect is memory usage. I used the non-desktop version, and it needs about 250MB of memory to run all OS processes and services.
Despite having an old and slow quad core processor, my thin client could run Immich without any problem. It has so much memory that the tool is never short, and the entire setup costs about $50. Even SBCs with a 4GB memory configuration, like the Raspberry Pi 5, can run Immich and all its features without stuttering. The next step was to deploy the stack, which includes the image server and other necessary components.
Docker’s use of the Immich stack
Easy to maintain
I prefer to use Docker on every server I build, as it makes management and cleanup easy. Even my Raspberry Pi Zero 2W server uses Docker, and I suggest you do the same. I created the necessary directories, modified the build file to suit my needs, and deployed the Immich container. The web portal was live, and now I needed to populate it with the necessary folders.
Uploading images to the Immich server is very simple. You can use the upload button, browse through the directories, select all the items in them, and then click OK. The Immich server stores these images and runs functions like OCR, metadata building, thumbnail generation, and more in the background. You now have a second copy of the photos on your Windows PC, stored and organized on a home server.
When you need images from an Immich server, you can type the host URL, port number and access the library. All devices on your home network, including smartphones, can access it. You can also use the Immich mobile app for a better experience that looks better than the old web browser UI. But there is one big problem. Immich’s web server can be accessed via a web browser, but you need to feed images into it every time you have something new.
This seems like a mundane task and requires you to consciously upload new photos from your favorite folders to the server. The process should automatically upload all new files to the server in one direction. There are two ways to solve this problem, both of which work well to sync folders with the server.
Configure automatic folder synchronization
Manage server availability
Immich’s CLI tool used the first method to enable uploads and synchronization for a specific folder. Immich supports API keys, and I had to create a new key with the necessary privileges given to the user. The next step is to run a simple login command to connect to the server using the API key:
immich login http://serveriP:2283/api YOUR_API_KEY
Next, I tested with a small folder, and uploads and syncing worked as they should. The minor caveat with this approach is that you need to create a Task Scheduler task to create the full sync experience.
immich upload --recursive --watch "PATH"
The monitoring tag keeps checking for new files in the background, and you need to open a PowerShell window for it. Creating a task that runs after you log in makes the process simpler without opening a PowerShell window every time.
There is also a community-run app for immich desktop synchronization. The application is very simple and only needs a server IP address and API key to access and manage uploads. You can configure it to start at boot, and then it can sync new folder items with the server. The app is a much simpler option for setting up folder sync, but I need to test it more to build up my confidence in it.
So, the local image server needed to make minor adjustments after deployment to get the experience of uploading folders and syncing them with a common tool like Google Drive. I’m happy with my little home server setup, it just syncs my work screenshots, downloads and family photo folder.
Getting rid of the Google ecosystem
My one-way image backup server is a cheap and more private solution to any paid cloud storage service. The thin client stores photos from my private folders while keeping the original on my Windows PC. My phone does the same thing, and for uninterrupted access, I plugged the thin client and router into my home inverter port. They stay alive even during power outages, and Tailscale allows me to access the library even when I’m off my home network.
- Operating system
-
iOS, Android, Web
- Key points
-
Self-hosted
Immich is a self-hosted image and video backup solution.
