This post explains why and how I moved about 1TB of photos and videos from cloud services to a local photo server. My main requirement was simple: sync media directly from mobile devices and access the original files quickly, especially when I am at home.
Linksys
OpenWRT Router
ThinkCentre
Home Server
I had an old WD external HDD with most of my older photos and videos backed up, so I plugged it into a Lenovo Tiny PC with 8GB of RAM and an 8th-generation i5 processor. Initially, this was just for experimenting with Immich features.
For networking, I use a Linksys MR5500 router with OpenWRT firmware and a Cloudflare Tunnel to access the server from outside my home network.
The Lenovo Tiny PC does not have a GPU, so I use my personal laptop with a 5060 mobile GPU to run the Immich machine learning container for face recognition and other GPU-accelerated features.
The core setup is Immich running in Docker, with Nginx in front of it for HTTPS and password protection. The Immich machine learning container runs separately on my laptop and connects back to the server.
I installed the Immich server on the Lenovo Tiny PC with Docker and configured it to use a folder on the external HDD as an external media library.
I configured Nginx to enforce HTTPS and password protection when accessing Immich through the Cloudflare Tunnel.
Finally, I updated the Immich Docker Compose file to use the machine learning container running on my personal laptop.
I use WPA3 for WiFi security and keep the router firmware up to date. I also use strong passwords for Nginx authentication and Cloudflare Tunnel access.
There is no port forwarding, no public IP exposure, and no plain HTTP access to the server.
