---
title: "The home cloud"
url: "https://edoardo.anteprime.edoardogabrielli.com/en/projects/home-cloud"
lang: "en"
updated: "2026-11-01"
---

# The home cloud

> A small home cloud on two mini PCs: files with Nextcloud, photos with Immich, cameras with Frigate and services that switch off when idle.

Two mini PCs that stay on all the time and host my family's files, photos and cameras, without relying on outside services.

### Why I built it

My family uses files, photos and cameras every day, and I wanted them under my own control: synchronisation, sharing and backups decided by me. The photo archive holds more than 72,000 images. The constraint was the hardware, two small computers with four cores and little memory, so no service could stay on for nothing.

From outside, everything goes through a Cloudflare tunnel, with no ports open on the router.

![Diagram: tunnel, services, data disk and backup](https://edoardo.anteprime.edoardogabrielli.com/media/originals/2026/11/282d114d19c0493d915aeae82b39fb99/infra-casa-schema.svg)

Simplified diagram: from the tunnel to the services, the disks and the backup.

### What is in it

- **Nextcloud** for files, installed directly on the system with two-factor authentication. The configuration is versioned, with a script that hides the secrets before saving it.
- **Immich** as a photo gallery, with face recognition and search by words. It works on top of the photos already in Nextcloud, without moving any file.
- **Frigate** for three cameras, with a Telegram bot that sends alerts and answers commands.
- **Automatic shutdown**: idle services stop after 30 minutes (two hours for the download program) and start again on the first visit, with a waiting page that reloads by itself.

## Some choices and problems

### 1. A backup that does not stay connected

Every night a script copies the data (about 260 GB) to a 6 TB external disk that stays unplugged the rest of the time: it mounts it, copies, and unmounts it even if the copy fails. It also backs up Immich's database.

### 2. Moving to Immich without moving files

The existing photos went from an external to an internal library with a single UPDATE on the database, after a safety dump. Then I had to recompute the checksums by hand, otherwise the phone app wanted to upload everything again. The integrity check turned up 6,715 identical copies (6.8 GB), which went to the trash.

### 3. Recognition on the GPU

Recognition runs on the integrated graphics chip. It needs a driver installed by hand and I reduced the number of parallel jobs: with the default values the load rose to 16 on 4 cores. Partly it was an apparent load, and I noted that in the README.

### 4. A Cloudflare limit

The free plan caps requests at 100 MB: 236 videos, the largest 11 GB, can only be uploaded from the home network or over a VPN. I wrote it in the documentation.

### 5. Camera privacy

The program that tells the two cats apart sends a crop to an AI assistant only if no family phone is at home and the frame does not look like a person. When unsure, it sends nothing. This caution is needed because presence detected over Wi-Fi can be wrong: once a false «at home» had kept the program silent for 20 days.

### What I did

All of it: installation, configuration, scripts, documentation. I worked together with an AI assistant and left handover documents and a list of «things not to break», so that the work can be picked up after weeks or handed over to an agent. I measured before deciding: concurrency, thresholds, timings. One experiment, Nextcloud's recognition plugin ported to the GPU, went from 3.2 to 0.52 seconds per photo on 229 photos. I then switched it off because Immich does the same job, but it stays documented.

### Limits

It is a hobbyist system: two machines, no redundancy beyond the backup on an external disk, and if one computer stops, everything stops. Some parts remain manual and outside git (system scheduled jobs, the GPU driver, credentials). Recognising the two cats is still a work in progress. My family has used it since September 2026 and I maintain it; the repositories are private, so there is no code to look at and no demo.

### Stack

Linux (Ubuntu) · Docker · Nextcloud · Immich · Frigate · Caddy and Sablier · Cloudflare Tunnel · Pi-hole · Python · shell

### My role

Personal project: design, installation and maintenance.

[← All projects](https://edoardo.anteprime.edoardogabrielli.com/en/projects)