Google Drive stopped sending my folders to Google Photos, so I created a photo backup server that didn’t need Google at all

Google Drive stopped sending my folders to Google Photos, so I created a photo backup server that didn’t need Google at all

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

HP T620 image opened

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.

Screenshot of immich desktop app

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.

Emich logo

Operating system

iOS, Android, Web

Key points

Self-hosted

Immich is a self-hosted image and video backup solution.


Leave a Reply

Your email address will not be published. Required fields are marked *