Replace Google Photos with Immich on your home server. Complete Docker Compose setup on Intel N100, machine learning face recognition, mobile app configuration, and backup automation.
Tired of paying for Google Photos storage and handing over your personal memories to a third party? With a modern low-power mini PC like the Intel N100, you can run your own private, feature-rich photo backup service that rivals the big tech offerings. This guide will walk you through setting up Immich, the leading self-hosted Google Photos alternative, on a budget-friendly, energy-efficient home server.

Immich is an open-source, self-hosted photo and video backup solution designed from the ground up to be a direct replacement for services like Google Photos. It provides a clean web interface and robust mobile apps for automatic uploads, but with one critical difference: you own all your data. Your photos stay on hardware you control, in a location you choose.
The reasons to self-host your photo library are compelling. First is privacy and ownership. When you use a cloud service, you're often granting a company a broad license to use your uploaded content. With Immich, your family photos, vacation videos, and personal moments never leave your network unless you explicitly set up a remote backup. Second is cost control. While Google Photos and others use a subscription model that increases over time, a one-time investment in a small server can provide storage for years without recurring fees. Third is feature independence. You're not subject to the whims of a company that might discontinue a beloved feature or change its pricing structure unexpectedly.
For the home server enthusiast, Immich is a perfect "killer app." It justifies the existence of your homelab by solving a real, everyday problem for you and your family. It leverages modern tools like Docker, machine learning, and responsive web design to deliver a polished experience that feels like a commercial product, but with the transparency and control of open source.

Before diving into the installation, you'll need to have a few things in place. This guide assumes you are starting with a fresh installation of a Linux server on compatible hardware.
Hardware:
Software:
nano or vim.Network:

We'll run Immich using Docker Compose, which manages all its required services in a single, declarative file. First, connect to your server via SSH.
Create a dedicated directory for Immich:
sudo mkdir -p /opt/immich && cd /opt/immich
Download the official docker-compose.yml file: It's best to get the latest version from the Immich GitHub repository.
sudo wget -O docker-compose.yml https://raw.githubusercontent.com/immich-app/immich/release/docker/docker-compose.yml
Create the necessary environment file: This file holds your specific configuration secrets.
sudo nano .env
Paste the following configuration into the file. You must change the DB_PASSWORD, REDIS_PASSWORD, and JWT_SECRET to strong, unique values. Generate a strong JWT_SECRET with openssl rand -base64 128.
# PostgreSQL Database
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
# !! CHANGE THIS PASSWORD !!
DB_PASSWORD=your_super_secure_db_password_here
DB_DATABASE_NAME=immich
# Redis for caching and queues
REDIS_HOSTNAME=immich_redis
# !! CHANGE THIS PASSWORD !!
REDIS_PASSWORD=your_super_secure_redis_password_here
# Immich Core Settings
IMMICH_WEB_URL=http://your-server-local-ip:2283 # Or https://your-domain.com
IMMICH_SERVER_URL=http://immich-server:3001
# !! GENERATE & CHANGE THIS SECRET !!
JWT_SECRET=your_generated_jwt_secret_here
# Machine Learning (ML) Settings
ML_CORE_URL=http://immich-machine-learning:3003
# Set to 'cpu' for N100/RPi5, 'openvino' for Intel GPU acceleration (experimental on N100)
ML_CORE_ACCELERATION=cpu
# Upload File Location (Point this to your large storage drive)
UPLOAD_LOCATION=/path/to/your/photos/library
Save the file (Ctrl+X, then Y, then Enter in nano).
Create the directory for your photo library as specified in UPLOAD_LOCATION:
sudo mkdir -p /path/to/your/photos/library
sudo chown -R 1000:1000 /path/to/your/photos/library
Launch Immich: From within the /opt/immich directory, run:
sudo docker compose up -d
Docker will pull all the necessary images and start the containers. This may take several minutes on a first run. You can monitor the logs with sudo docker compose logs -f.
Once the containers are running, Immich's web interface will be available at http://YOUR_SERVER_IP:2283.
Navigate to http://YOUR_SERVER_IP:2283 in your browser. You'll be greeted with a registration page.
UPLOAD_LOCATION is correct.http://YOUR_SERVER_IP:2283 (or your domain if configured).Immich is packed with features that directly compete with Google Photos. Here’s how to use the most important ones.
Automatic Mobile Backup: As configured above, this is the set-and-forget feature. The app runs in the background, uploading new media seamlessly.
Face Recognition & People Album: Immich uses machine learning to cluster faces.
Object & Scene Search: You can search your library using natural language.
Shared Albums & Partner Sharing:
Map View: Photos with GPS metadata (most from smartphones) are plotted on an OpenStreetMap-based global map. Click "Places" in the sidebar to browse by location.
Archive & Favorites: Keep your timeline clean.
A common concern is whether a low-power chip like the Intel N100 can handle the machine learning demands of face and object recognition. The short answer is yes, but with managed expectations.
Resource Usage Breakdown:
| Task | Intel N100 (16GB RAM) | Raspberry Pi 5 (8GB RAM) | Notes |
|---|---|---|---|
| Idle (No Activity) | CPU: 1-3%, RAM: ~2.5GB | CPU: 2-5%, RAM: ~2GB | Base footprint of all containers. |
| Mobile Backup (Upload) | CPU: 5-15%, RAM: ~3GB | CPU: 10-25%, RAM: ~2.5GB | Light load, mostly I/O on storage. |
| ML Scanning (Face/Object) | CPU: 60-95%, RAM: ~5GB | CPU: 100%, RAM: ~4.5GB | All cores utilized. Scan speed is limited. |
| Video Transcoding | CPU: 40-80%, RAM: ~3GB | CPU: 100%, RAM: ~3GB | Converting for web playback. |
Performance Notes for N100/RPi5:
Power Consumption: With an Intel N100 mini PC, a single NVMe SSD, and no external HDDs, the entire system typically idles between 8W and 12W, well within our target. Under full ML load, it may peak around 20-25W.
rclone to back up your UPLOAD_LOCATION to a cloud service like Backblaze B2 or another remote server.https://).all, none, or video only. If your library has many non-person photos, setting it to none can speed up initial scanning, as face recognition is the most intensive task.sudo docker compose logs to see error messages. Most often, it's an issue with the .env file (wrong path, missing password) or a port conflict (something else is using port 2283).sudo ufw allow 2283). Using a reverse proxy is a more secure solution.immich-machine-learning container is running (sudo docker compose ps). Check its logs for errors. On first run, it downloads large model files (~500MB); this can take time on slow internet. Ensure ML_CORE_ACCELERATION is set to cpu in your .env file for compatibility./var/lib/docker). If your system drive is small, you may need to move Docker's data directory to your larger storage drive.UPLOAD_LOCATION directory. It must be owned by the user inside the container (UID 1000). The chown -R 1000:1000 command in the installation step sets this.Setting up Immich on an Intel N100 mini PC represents a perfect synergy of modern, efficient hardware and powerful, open-source software. For a one-time investment well under $300, you gain a permanent, private, and highly capable photo management system that cuts the cord from subscription services. While the initial machine learning scan requires patience, the day-to-day experience—automatic backups from your phone, fast searching by person or subject, and easy sharing with family—is impressively smooth and rewarding.
You are not just building a server; you are reclaiming your digital memories. The low power draw means you can run it 24/7 without guilt, creating a living, growing family archive that you truly control. Dive in, upload your first photos, and enjoy the peace of mind that comes from self-hosting.
Use Cases
From replacing Netflix to running local AI, a home server running on 8W can do far more than you'd expect. Here are 15 real uses with app recommendations — and the cost breakdown that makes it worth it.

Use Cases
Run 15 self-hosted services on an Intel N100 mini PC using a single Docker Compose file. Jellyfin, Nextcloud, Pi-hole, Immich, Home Assistant, Vaultwarden, Grafana, and more — all under 12W idle.
Use Cases
Replace Google Drive, Photos, Music & more with apps running on 8W. Service-by-service guide with difficulty ratings, power requirements, and a 30-day migration plan.
Check out our build guides to get started with hardware.
View Build Guides