Interdisciplinary ยท Reference

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

Static IP
192.168.2.42
Power mode
Wake-on-LAN
Total storage
~3.9 TB
Postgres
Migrated โœ“

Hardware

ComponentDetails
MotherboardASUS M5A78L-M LE/USB3
CPUAMD FX-4320 Quad-Core
RAM6.9 GB
Boot driveSamsung SSD 840 EVO, 250 GB (/dev/sdb) โ€” SMART: PASSED, 0 reallocated sectors, healthy
Storage drive 1Seagate 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 2931 GB HDD, ext4 (/dev/sdc) โ€” SMART not yet deeply checked, but mounting/reading fine
NetworkWired ethernet (enp2s0), static IP configured
Spare SSD (unused)Micron RealSSD C400, 256 GB โ€” kept as spare/backup boot drive

Software

Storage Mounts

Mount pointDriveSizeFree (at setup)Filesystem
/mnt/storage12.7 TB Seagate2.7T~1.9 TBext4
/mnt/storage2931 GB HDD932G~903 GBext4

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
๐Ÿ’ก This keeps the NIC powered during full poweroff so it can receive the magic packet. Without this, WoL only works from suspend/sleep, not cold poweroff.

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

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.

๐ŸŽฏ Full migration record โ€” every step, the dump/restore commands, the final architecture: Database Migration: Alloy Lab Moves to the Home Server.
โณ Still open: raw data files (as opposed to the database itself) remain on the Mac Desktop for now โ€” moving them to storage1/datasets/alloy_lab/ and re-running path_repair.py is deferred to the data organization pass before Stage 3.

Known Follow-ups

Consider switching SSH to key-based auth (more secure for an always-available server)
Consider git gc --aggressive on my_db_project (was ~783 MB)
Consider periodically pruning old lerobot training runs once reviewed
Deep SMART check on storage drive 2 (931 GB) โ€” not yet done
Optional: self-hosted Gitea in Docker for local git hosting
odenwald-monitor โ€” do not touch until data collection wraps up (~1 month). Known logic issue: train line matching pulling wrong stations, debug after pause.