Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My home NAS

English · Polski

My NAS

This is my home server. It's a Raspberry Pi 5 in a case I designed and printed myself, running OpenMediaVault and 17 services in Docker. It replaced Google Photos, Google Drive and a drawer full of external hard drives.

I started it because I was running out of space on my phone and didn't want to pay a subscription for photo storage. It grew from there.

Two things I'm proud of: it runs off one power cable (the PSU and the step-down converter are inside the case), and I can reach it from anywhere without opening a single port on my router.

Specs

Board Raspberry Pi 5, 8 GB
Storage 512 GB NVMe + 2 × 2 TB HDD in RAID 1 (2 TB usable)
OS OpenMediaVault
Services 17, all in Docker
Remote access Tailscale
Power 15 W measured, so about 130 kWh a year
Case My own design, printed in PETG

How it fits together

flowchart TB
    PH[Phone] --> TS
    PC[My PC] --> TS
    LT[Laptop] --> TS

    TS[Tailscale] --> AG[AdGuard Home<br/>DNS + ad blocking]
    AG --> NPM[Nginx Proxy Manager<br/>HTTPS]
    NPM --> APPS[17 containers]

    APPS --> NVME[(NVMe<br/>system + volumes)]
    APPS --> HDD[(2 x 2 TB<br/>media + data)]

    NVME -->|rsync over SSH| PC
    HDD -->|rsync over SSH| PC
    PC -->|system image| HDD
Loading

Everything goes through Tailscale. Nothing is exposed to the internet.

What's actually mine here

The containers are other people's software. I installed and configured them. The parts I actually made:

  • the case — designed in CAD, printed, assembled (STL files here)
  • the power setup — 12 V for the drives, stepped down to 5 V for the Pi, sized so the drives don't brown it out when they spin up
  • the network setup — DNS pointing at Tailscale addresses, HTTPS certificates without any open ports
  • figuring out what actually needs backing up, and what doesn't

Docs

I wrote these mostly so I'd remember how things work when something breaks at 2 a.m.

Hardware The case, power, PCIe, cooling
Network AdGuard, Tailscale, reverse proxy
Services What all 17 things do
Backups What's protected and what isn't
Automation Update script and cron
Git server Using the NAS as my own Git remote
Decisions Why I picked what I picked

What I'm working on next

I build my own sensor devices, and right now the readings go into InfluxDB and I look at them through Home Assistant. What I actually want is my own web page on the server showing all of it — live values from each device, history, graphs, laid out how I want rather than how someone else's dashboard does it.

That's the next project, and it's the part where I'll be writing the code rather than configuring someone else's.

Stuff I haven't sorted out yet

  • No offsite backup. Both copies are in my flat, so a fire takes both.
  • AdGuard is a single point of failure — if the Pi dies, DNS dies for everything on my tailnet, including my phone outside the house.
  • The PSU is 60 W and both drives spinning up at once gets close to that.
  • The daily apt upgrade -y in cron should really be unattended-upgrades limited to security patches.

Notes

The Git repo for this documentation lives on the NAS itself. GitHub is just a mirror.

Domains and hostnames in here are made up. The 192.168.x and 100.x addresses are private ranges, so I left them alone.

Code and docs are MIT. The case models are CC BY-SA — see hardware/.

About

Server based on raspberry pi 5 8Gb / linux / OMV / dockers / 3D print /self-hosted aplication/ and other interesting staff

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages