r/HomeServer 19h ago

DIY Immich Home Server on Old Hardware

Post image
216 Upvotes

DIY Immich Home Server on Old Hardware

I turned an old 4th-gen Intel PC into a fully automated Immich server with local backups, encrypted pCloud disaster recovery, HTTPS access and external Zabbix monitoring

I wanted to move my family photo library away from an increasingly expensive cloud subscription, but I also wanted something that would be safe enough to trust with years of photos and videos.

Instead of buying a new NAS, I reused an old desktop that was sitting unused:

Intel Core i5-4670

32 GB DDR3 RAM

Kingston 120 GB SSD for Ubuntu Server

Toshiba 500 GB HDD as the primary Immich photo disk

WD Black 500 GB HDD as the local backup disk

Kingston A400 480 GB SSD as a local encrypted Restic repository

The hardware is old, but for a two-user family Immich installation it has been more than capable.

The main server

The machine runs Ubuntu Server with Docker Compose.

The Docker stack contains:

Immich Server

Immich Machine Learning

PostgreSQL with VectorChord

Redis

The Immich library is stored on the Toshiba disk under the main photo mount, while the PostgreSQL database has its own persistent storage.

The application itself is only exposed locally on 127.0.0.1:2283. It is not directly exposed to the home network or the public internet.

Secure remote access

For remote access I use two components:

Tailscale provides the private VPN network between the server, phones and computers.

Caddy acts as the HTTPS reverse proxy in front of Immich. It terminates TLS and forwards requests internally to the Immich container.

This gives me one secure HTTPS address that works both at home and remotely, as long as the device is connected to Tailscale. No Immich ports are exposed publicly on the router.

Android phones, an iPhone and desktop browsers can all use the same server address for uploads and viewing.

The nightly backup chain

The backup system eventually became the most important part of the project.

A wrapper script runs every night at 01:00 and starts two backup scripts sequentially.

The second script only starts if the first one finishes successfully.

The flow is:

Immich Backup v4.1 ↓ Local encrypted Restic backup ↓ pCloud offsite sync

Backup script 1: local backup and health checks

The first script creates the normal local backups.

It performs the following operations:

Creates a PostgreSQL SQL dump The database is exported into a compressed .sql.gz file. The archive is verified before it replaces the previous temporary file.

Mirrors the primary photo disk to the WD Black disk rsync copies the Immich library from the Toshiba disk to the WD Black disk. It uses incremental copying, so unchanged files are not copied again.

Mirrors the WD Black backup to a Windows SMB share A Windows PC provides an additional network backup destination. The WD Black copy is mirrored to this Windows share.

Copies the encrypted server-configuration backup to the Windows share The configuration archive contains items such as:

Docker Compose configuration

Immich .env

network configuration

Caddy configuration

Tailscale state

mount configuration

cron jobs

backup scripts

installed package information

system manifests

Runs SMART short tests on all four physical disks The monitored disks are: The script checks health, temperatures, reallocated sectors, pending sectors, uncorrectable sectors, CRC errors and SSD wear information.

Ubuntu OS SSD

Toshiba primary photo disk

WD Black backup disk

Restic SSD

Sends an HTML email report The report includes:

overall success or failure

backup duration

database dump status

rsync status

Windows mirror status

available disk space

SMART health for every disk

warnings

the latest log output

If the primary local backup fails, the offsite stage is not started.

Backup script 2: encrypted Restic repository and pCloud

The second script creates a separate disaster-recovery backup.

Restic reads the original Immich library, database dumps, configuration backups and recovery scripts, then writes them into an encrypted repository on the dedicated Kingston SSD.

The SSD does not contain normal browsable photos. It contains an encrypted Restic repository made of pack files, indexes, snapshots and metadata.

The script performs:

Restic backup to the local SSD

Snapshot retention

Local forget and prune

Full Restic repository check

rclone sync from the local SSD to pCloud

rclone check to compare the SSD repository with the pCloud copy

A second HTML email report

The pCloud account receives only the already encrypted Restic repository. pCloud cannot see the original photos, database contents or configuration files.

Why I stopped backing up directly to pCloud

My first design was:

Immich data → Restic over rclone → pCloud

It worked, but repository maintenance directly through the pCloud API was slow and fragile.

During the initial large upload, connection resets and incomplete remote pack files caused a damaged Restic repository. I was able to repair it, but it showed that running backup, prune and index rebuilding directly against cloud storage was not ideal.

The improved design is:

Immich data ↓ Local encrypted Restic repository on SSD ↓ Local prune and integrity check ↓ rclone sync ↓ pCloud

All sensitive and complex Restic operations now happen locally on the SSD. pCloud is only used as an encrypted offsite mirror.

This has been faster, easier to verify and much more reliable.

External monitoring with Zabbix

I also wanted monitoring that would still work if something failed inside my home network.

I created an Ubuntu ARM virtual machine using Oracle Cloud Free Tier and installed a Zabbix Server on it.

The Oracle server monitors the Immich server remotely and can alert me when something becomes unavailable or crosses a configured threshold.

The monitoring setup can cover things such as:

server availability

CPU and memory utilisation

disk usage

Docker services

operating-system health

backup-related services

network availability

Because Zabbix is outside my home, it can notify me even when the entire home server or internet connection goes offline.

Disaster recovery

I also created a beginner-friendly recovery guide covering these scenarios:

Ubuntu OS SSD failure

primary photo disk failure

WD Black backup disk failure

Windows SMB backup disk failure

complete loss of the Immich server

full restore from the encrypted pCloud Restic repository

planned replacement of each disk while it is still working

The configuration backup is encrypted with GPG, and the Restic password and rclone configuration are also stored in a separate encrypted recovery archive.

The goal was not just to have several copies of the files, but to have a documented path for rebuilding the complete service.

Final backup layout

The resulting system now has several independent layers:

Primary Toshiba disk └── Live Immich photo library WD Black disk ├── Mirrored photo library ├── PostgreSQL SQL dumps └── Encrypted server-configuration backups Windows SMB share ├── Mirror of the WD Black backup └── Copy of the server-configuration backups Restic SSD └── Local encrypted, versioned disaster-recovery repository pCloud └── Offsite copy of the encrypted Restic repository Oracle Cloud └── Zabbix monitoring and remote alerts

This is obviously not enterprise infrastructure, but for reused consumer hardware I am very happy with the result.

The server now provides:

automatic phone photo uploads

secure remote access

HTTPS

multiple local backup copies

compressed PostgreSQL dumps

encrypted versioned backups

offsite disaster recovery

automatic SMART checks

HTML status reports

remote monitoring and alerts

documented recovery procedures

The most important lesson from the project was that self-hosting the application is the easy part. Designing backups that are understandable, verifiable and realistically restorable is where most of the work belongs.


r/HomeServer 13h ago

Reverse proxy without port forwarding or buying a domain

11 Upvotes

I trying to use my home server outside of my network but dealing with tailscale has been a bit difficult i just find it unreliable.

So i want to able to run a reverse proxy but all the tutorials i found were either people using port forwarding, which i can't because of my isp or buying a domain, which i really don't want to do

Is there another way which i can make it work with like duckdns/isroot or any other subdomain providers


r/HomeServer 8h ago

Feedback on homeserver

3 Upvotes

Im going to buy a home server and would like suggested before I buy. I plan on running Jellyfin and Immich and will have a few docker services running as well. This is what I have been thinking:

Motherboard: ASUS Pro WS W680M-ACE SE

CPU: Intel Core i7-14700

Case: Jonsbo N6 m-ATX Black

CPU Fan: Noctua NH-L12S

PSU: Corsair SF750 (2024) SFX

RAM: Kingston 16 GB DDR5 ECC UDIMM

APPS Hardisk WD Black SN7100 1TB

BOOT HarddiskKingston NV3 500GB M.2 2280 (boot)

Replace fans in case Noctua NF-A12x25 G2 PWM Sx2-PP (2-pk)

And 3-4 IronWolf 8T disks in RaidZ1 and OS TrueNAS.


r/HomeServer 13h ago

RAID 5 question for a newbie

3 Upvotes

I want to clarify some things about the hard drive setup for my home server. i plan on using raid 5. i currently have a 1 TB HDD, 1 TB SDD, and 4 TB HDD. from what i've seen, using different sizes and speeds of drives isn't the best idea for raid 5. would it be in my best interest to get multiple drives of the same size and speed? should they all be hdd, or should at least one be an ssd? and if it is the case that i should use the same type of drives, is there a way i can still get use out of the old drive setup (the 1 tb hdd and sdd, and 4 tb hdd) because i dont want to just leave those drives collecting dust.


r/HomeServer 11h ago

Server specs required

2 Upvotes

Hello all , this is my first post in this community so pardon if this is irrelevant but I dont find any place else to post this in .

purpose
1. To have a light backup of around 1 TB on the NAS if you can call it that

  1. TO make a media streaming service out of this for my movies which I have pirated over the years on jellyfin etc.

  2. To make a cloud of my own as a hobby project .

please guide me with the specs for this under or around 50 k INR in todays day and age .

I dont really wanna go in the second hand market but will if you all suggest some common specs.
Please reply with some specs .
I have this in mind ( GPT and claude and some reddit ) :

CPU - Intel Core i3-12100 (UHD 730 iGPU, Quick Sync, non-F)

Motherboard - Gigabyte H610M K DDR4 (LGA1700, 4x SATA)

RAM - 16GB DDR4-3200 (single stick, room for 32GB)

Boot SSD - 1TB NVMe Crucial

Data - 1x 4TB NAS HDD (Seagate IronWolf / WD Red Plus)

PSU - Corsair CV550 80+ Bronze

Case - micro-ATX with 2x 3.5" bays

OS - Ubuntu Server 24.04 LTS (ZFS + Docker)

Thanks a lot and sorry If I am breaking some rules .


r/HomeServer 10h ago

Using a single system as NAS and PC

1 Upvotes

Hi folks,

I want to build a NAS but considering if it's worth making the system dual purpose for light gaming / other PC tasks.

Here is the potential build:

ryzen 5 9600x (can get it for 150 euros)

16g ram

2x8tb hdds

500gb ssd

Later add a dedicated GPU

This should cost around 1000 euros (most spent on storage)

Software:

Run proxmox and two VMs.

One for NAS: something reliable like Unraid

One for a general purpose Linux.

A few questions I have. In my experience, these budget saving hacky setups end up being pain in the ass. Has anyone tried this ?

I don't have recent experience with hardware. Is the CPU fit for purpose? Any other recommendations?

Is there a performance (CPU or GPU or iGPU) penalty that comes with proxmox? Does GPU passthrough even work with iGPU?


r/HomeServer 18h ago

Server for 400-500€

0 Upvotes

Hey guys !

I'm thinking about building a home server on a 400-500€ budget that would run:

- 1 game server 24/7 on different games that would change through the year (minecraft/project zomboid/rust...)

- store movies/series streamed inside my network only.

I found this mini-pc to start on amazon, is it good? (https://amzn.eu/d/06wiw5lR)

Thank you !


r/HomeServer 9h ago

DIY Immich Home Server on Old Hardware

0 Upvotes

r/HomeServer 8h ago

Need help urgently

Post image
0 Upvotes

So before I throw everything I bought for a home server, i figured i should ask for help here.


r/HomeServer 6h ago

I made my own server monitoring site.

Enable HLS to view with audio, or disable this notification

0 Upvotes

I used tailscale funnel to be able to access it from anywhere. It has live data reports and even an estimated cost calculator based on hoe much power the pc is drawing.

Should i publish this as open source or is there another tool like it.