Moving cloud storage to my desk (finally)
Showcase of current self-hosting progress
What runs on my home server
This is a short look at the small server running at home and the services that have found a place on it. It is not a guide, and it intentionally skips configuration details, addresses, and anything that would make the setup easier to target.
The goal is simple: keep personal files, photos, music, and a few useful tools under my own control without turning the whole thing into a second job.
The ultimate goal is to leave the Google ecosystem altogether and self-host everything. "The cloud is just someone else's computer." In this case, it is on my desk.
The hardware
The server is built in a Jonsbo N4 case. It is compact enough to fit where it needs to, while still leaving room for storage and future changes.
I chose this enclosure because it supports mATX boards. Mini-ITX boards are more expensive and usually have only one PCIe slot. Let’s call that future-proofing.
There are ready-made CWWK boards, for example, with an N100 or N305 processor and four to eight SATA ports. Their performance is a tier below the i3-12100, and unlike with those boards, I can replace the CPU later if needed.
The current specification is:
- Intel Core i3-12100, with integrated graphics for Immich video transcoding
- 16 GB DDR4 memory (cheaper obviously than DDR5 in current market situation)
- 1 TB NVMe drive for Debian 13 and applications
- Two 4 TB Seagate IronWolf drives in RAID 1 for primary storage, including Immich photos and Nextcloud files
- 2 TB WD Black drive for backups
It is not a huge machine and it does not need to be. For the number of people and the type of services it supports, it is quiet, efficient, and more than capable.
The services
Everything starts from a Homepage dashboard. It is the front door for the services below and makes the setup feel less like a collection of containers and more like one place to visit.
Immich
Immich handles the photo library. It gives photos and videos a proper home outside a phone, with an interface that is pleasant to browse when looking for something from a past trip or a random day worth remembering. Moving away from Google Photos has been pleasant because Immich has a similar interface and feature set while giving me more control over the instance and its settings. Also immich-go by simulot is fantastic piece of software which allowed me to automatically import my 800GB Google Takeout archive directly to Immich with all metadata and structure.
Nextcloud
Nextcloud is used for files. It is useful for documents, folders that need to be shared, and anything that should not depend on a third party storage account.
Navidrome
Navidrome is the music server. It keeps the personal music library available from one place without relying on a streaming subscription for albums already owned.
The process of ripping my CDs and imported digital albums is ongoing, and I cannot yet estimate when it will be complete.
Cloudflared
Cloudflared is used for selected web services that need remote access. It keeps the public side separate from the services themselves and avoids exposing more than necessary.
Tailscale
Tailscale provides private access between trusted devices. It is the boring part of the setup, which is exactly what a network tool should be.
This also allows remote access over SSH and to other services if Cloudflare is unavailable, or playing games with friends over VPN without exposing them to public.
Trilium
I also installed Trilium notes with intention to organize my electronics and computer science knowledge - datasheets, manuals, schematics with nice addition of project management/tasks to ditch Todoist.
Keeping it practical
The storage layout is deliberately uncomplicated. The mirrored IronWolf drives hold the main data, while the WD Black drive is there for backups. RAID helps with a drive failure, but it is not a backup, so the two jobs stay separate.
The NVMe drive is reserved for the operating system and applications. That keeps the system responsive and makes it easier to work on storage without mixing it with the rest of the machine.
This server will probably change over time. Services come and go, storage grows, and a home lab is never really finished. For now, though, it does the useful everyday work quietly in the background.
During the first week of uptime, I already experienced a power outage. It was risky because I do not have a UPS yet, but that should change soon. Unexpected outages are quite common in my area compared with the city.
Tinkering
I would not be myself if I did not try to modify something. The N4's front drive cover almost has room for two slim 120 mm fans. Since there are only two drives on the left side, and the WD Black is connected only for backup tasks, one fan at the back is enough.
A ridge inside the cover allowed me to attach an ARGB LED strip. It creates a nice visual effect through the front mesh and also indicates system load through OpenRGB plugins.
I also bought the Corsair SF600 as used because new units were unavailable and the offer was attractive. Under heavy load, it turned out to be louder than expected. Further investigation showed that the PSU fan bearing was already quite loose, so I replaced it with a Noctua NF-A9x14, which noticeably reduced the noise.
Of course stack of apps is going to change (probably a lot) in the future - I will post update if there will be something interesting going on.