Home Server โ Setup Summary & Storage Plan
Built 16 August 2026, updated 30 August 2026 โ the always-on storage anchor for the whole multi-machine system
Hardware
| Component | Details |
|---|---|
| Motherboard | ASUS M5A78L-M LE/USB3 |
| CPU | AMD FX-4320 Quad-Core |
| RAM | 6.9 GB |
| Boot drive | Samsung SSD 840 EVO, 250 GB (/dev/sdb) โ SMART: PASSED, 0 reallocated sectors, healthy |
| Storage drive 1 | Seagate ST3000VX000, 2.7 TB (/dev/sda) โ SMART: PASSED, 0 reallocated sectors. Had a bad SATA cable causing bus errors, replaced, confirmed clean afterward. Added 2 extra case fans. |
| Storage drive 2 | 931 GB HDD, ext4 (/dev/sdc) โ SMART not yet deeply checked, but mounting/reading fine |
| Network | Wired ethernet (enp2s0), static IP configured |
| Spare SSD (unused) | Micron RealSSD C400, 256 GB โ kept as spare/backup boot drive |
Software
- OS: Ubuntu Server 26.04 LTS (clean install, fully updated)
- Access: SSH enabled, password auth working โ
ssh r@192.168.2.42 - Static IP:
192.168.2.42/24, gateway192.168.2.1(set via netplan, file:/etc/netplan/00-installer-config.yaml) - Docker: Docker Engine + Compose plugin installed, running rootless-friendly (user
radded todockergroup โ nosudoneeded for docker commands) - File sharing: Samba installed and configured
- Share
storage1โ/mnt/storage1(the 2.7 TB drive) - Share
storage2โ/mnt/storage2(the 931 GB drive) - Connect from Mac via Finder โ
Cmd+Kโsmb://192.168.2.42
- Share
Storage Mounts
| Mount point | Drive | Size | Free (at setup) | Filesystem |
|---|---|---|---|---|
/mnt/storage1 | 2.7 TB Seagate | 2.7T | ~1.9 TB | ext4 |
/mnt/storage2 | 931 GB HDD | 932G | ~903 GB | ext4 |
Both are in /etc/fstab (auto-mount on boot) using UUIDs, so they survive reboots and drive-letter reshuffles.
Wake-on-LAN (WoL) Configured 30 Aug
The server runs on-demand via Wake-on-LAN rather than 24/7, to reduce electricity use and wear on the older FX-4320 hardware.
Network card
Interface: enp2s0
MAC address: 2c:56:dc:74:c4:ff
Supports Wake-on: pumbg (g = magic packet supported)
Wake-on: g (enabled)
BIOS setting
Motherboard: ASUS M5A78L-M LE/USB3
BIOS โ Power โ APM Configuration โ Power On By PCI-E/PCI โ Enabled
systemd service (persistent across reboots)
File: /etc/systemd/system/wol.service
[Unit]
Description=Enable Wake-on-LAN
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s enp2s0 wol g
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
sudo systemctl enable wol.service
sudo systemctl start wol.service
Waking the server
From any machine on the local network:
wakeonlan 2c:56:dc:74:c4:ff
Alias set on all machines as wakeserver (see the ML Desktop setup). Server is reachable via SSH ~60โ90 seconds after sending the magic packet.
Tested and confirmed
- Cold poweroff โ magic packet โ SSH connected
- Working from Mac (M4)
- Working from ML Desktop (Ubuntu 26.04)
Proposed Storage Organization Draft
Rather than a strict "active drive vs. cold drive" split, organize by what the data is and how it behaves:
storage2 (931 GB) โ small, stable, frequently touched
storage2/
โโโ github/ # active repos, cloned from GitHub
โ โโโ active/ # things currently being worked on
โ โโโ misc/ # small utility repos, one-offs
โโโ docs/ # project docs, notes, references
โโโ vs-projects/ # non-repo scripts
storage1 (2.7 TB) โ large, growing, less frequently touched
storage1/
โโโ datasets/
โ โโโ alloy_lab/ # NdFeB SEM/XRD/VSM data (migrating from Mac)
โ โโโ sem/
โ โโโ mh/
โ โโโ xrd/
โโโ training/
โ โโโ lerobot/ # robot arm training runs, checkpoints
โ โโโ other-ml/
โโโ to be sorted/ # old PPMS data from previous lab (sorting in progress)
โ โโโ PPMS1_old/
โ โโโ Data/
โ โโโ Andreas/ # historical MnGa/CoTi VSM measurements
โโโ archive/ # old backups, superseded project versions
PostgreSQL Migration Complete
PostgreSQL (alloy_lab DB) now runs in Docker on this server, not the Mac โ migrated in one session, no data loss. All machines (Mac, ML Desktop) connect to one canonical DB here. No diverging copies, no data sitting on the Mac Desktop.
storage1/datasets/alloy_lab/ and re-running path_repair.py is deferred to the data organization pass before Stage 3.
Known Follow-ups
git gc --aggressive on my_db_project (was ~783 MB)
lerobot training runs once reviewed
odenwald-monitor โ do not touch until data collection wraps up (~1 month). Known logic issue: train line matching pulling wrong stations, debug after pause.