I’ve been slowly building a home server, not because I want to self-host everything under the sun, but because I want my data to have a calm place to live.
This is Part 1 of what will probably be a small series. The goal here isn’t to show the “best” or most secure setup—it’s to show the first setup that actually made sense to me.
That setup turned out to be Nextcloud, run locally, on a machine in my house, without overthinking it.
The intention (before the tech)
Before touching software, I had to decide what I wanted this thing to be.
Not
- a public cloud replacement
- a family system (yet)
- a perfectly hardened server
But
- a local-first dumping ground
- something I could understand and undo
- a system that didn’t punish experimentation
That decision shaped everything that followed.
The machine (light context)
I’m running a small Linux box (a Minisforum mini PC) that stays on. Once it’s booted, I don’t need to stay SSH’d in. Services run whether I’m watching or not.
SSH is for administration, not operation.
That mental shift alone reduced a lot of friction.
Keeping the machine boring (important early step)
Before installing anything fun, I made sure the machine wouldn’t disappear on me.
I disabled sleep/suspend entirely and stabilized SSH so idle sessions wouldn’t drop.
# Prevent the system from sleeping
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
# Keep SSH sessions alive during idle time
sudo sed -i 's/^#\?ClientAliveInterval.*/ClientAliveInterval 60/' /etc/ssh/sshd_config
sudo sed -i 's/^#\?ClientAliveCountMax.*/ClientAliveCountMax 10/' /etc/ssh/sshd_config
sudo systemctl restart ssh
Nothing fancy—just making the box behave like a server instead of a laptop.
Installing Nextcloud (containerized, on purpose)
I wanted Nextcloud to be:
- easy to stop
- easy to remove
- isolated from the rest of the system
So I ran it in containers. In my case, that ended up being Podman + podman-compose, but the concept matters more than the tool.
The key idea:
Nextcloud is just a web app sitting on top of storage I already own.
Here’s the core of the compose file I used (simplified for readability):
services:
db:
image: docker.io/library/mariadb:10.11
volumes:
- db:/var/lib/mysql
app:
image: docker.io/library/nextcloud:28
ports:
- "8080:80"
volumes:
- nextcloud:/var/www/html
depends_on:
- db
Once running, Nextcloud was simply available at:
http://192.168.x.x ;)
Local network only. No exposure. No drama.
The mental breakthrough: selective sync
This was the moment everything clicked.
I stopped thinking of Nextcloud as “something that syncs everywhere” and started thinking of it as:
A server that holds everything, and clients that choose what they care about.
On my Mac, I enabled “Choose what to sync” in the Nextcloud desktop app and only synced folders I actively work in.
That led to a simple, human folder model.
The folder structure that stuck
At the top level, I landed on this:
Misc
Working
Archive
Photos
Media
Family
What this means in practice:
- Misc → temporary inbox / dumping ground (synced to my Mac)
- Working → active projects (synced)
- Archive → finished things (server-only)
- Photos → personal images (sync optional)
- Media → large files, movies, future Jellyfin use
- Family → placeholder for shared access later
If a folder isn’t synced, it simply doesn’t appear on my laptop. It still exists on the server and is accessed through the browser when needed.
No fear of accidental deletes. No laptop clutter.
Access model (surprisingly simple)
There’s no ritual when I leave and come back.
- The Minis stays on
- Nextcloud keeps running
- Sync happens in the background
When I’m home and want to see everything, I just open a browser:
http://192.168.x.x
That’s it. SSH and VNC are optional tools, not requirements.
Why this feels sustainable
Right now, this setup gives me:
- A calm dumping ground for files
- A lean working set on my Mac
- A clear path toward media (Jellyfin later)
- A structured place for family access when I’m ready
Most importantly, nothing here feels irreversible.
I can:
- change folder structure
- move storage later
- add users later
- even remove Nextcloud entirely if I want
For a home server, that flexibility matters more than perfection.
Coming up next
Part 2 will likely be one of:
- Media + Jellyfin (connecting to the
Mediafolder) - Notes with Joplin (using Nextcloud as storage)
- Adding family users without chaos
For now, the system is boring and that’s exactly what I wanted.