dev-infra — a sanitized homelab blueprint for Remote-SSH, SMB storage, and private Tailscale access.
A polished, public-safe blueprint of my cross-platform homelab and remote development workflow.
The setup centers on a headless M4 Mac Mini as the always-on compute/NAS node. At home, traffic flows from router → switch → devices, with the ThinkPad also able to use Wi-Fi. When I am outside or overseas, the same client devices connect through a private Tailscale mesh.
Real IPs, hostnames, usernames, SMB credentials, SSH keys, and private share names are intentionally excluded.
- ✨ Highlights
- 🧭 Architecture
- 🧩 Device roles
- 📁 Repository layout
- 🖼️ Screenshots
- 🚀 Quick check
- ⚙️ Templates
- 🔒 Privacy choices
- ⚖️ License
- 🖥️ Remote development: VSCodium Remote-SSH into the Mac Mini
- 🗂️ Shared storage: SMB access across desktop, laptop, and phone
- 🔐 Private remote access: Tailscale instead of public SSH/SMB exposure
- 🐧 Linux client support: sanitized
/etc/fstabCIFS mount example - 📦 Reusable docs: config templates without private machine details
graph TD
subgraph LAN [Home LAN: 192.168.x.x]
Router[Router / Gateway]
Switch[Network Switch]
Mac[M4 Mac Mini\nCompute + NAS]
Win[Windows 11 Gaming PC\nVSCodium]
Think[ThinkPad T495\nArch Linux]
Phone[Android Phone\nWi-Fi Client]
Router --- Switch
Switch --- Mac
Switch --- Win
Switch -. optional wired .- Think
Router -. Wi-Fi .- Think
Router -. Wi-Fi .- Phone
Win -->|Remote-SSH + SMB mapped drives| Mac
Think -->|Remote-SSH + CIFS mount| Mac
Phone -->|SMB file access over LAN| Mac
end
subgraph Mesh [Private Tailnet]
Tailnet((Tailscale\n100.x.x.x))
end
Think -. when outside / overseas .-> Tailnet
Phone -. when outside / overseas .-> Tailnet
Tailnet -. private SSH / SMB route .-> Mac
This keeps the home path as router → switch → devices, and shows the same ThinkPad and Android devices using Tailscale when I am outside or overseas.
| Device | Role | Access |
|---|---|---|
| 🪟 Windows 11 gaming PC | Main at-home coding client | Wired LAN through switch; VSCodium Remote-SSH + SMB mapped drives |
| 🐧 ThinkPad T495 | Portable Arch Linux client | Home Wi-Fi or optional wired LAN; Tailscale SSH when outside/overseas |
| 🍎 M4 Mac Mini | Headless compute + NAS | Wired LAN through switch; reachable at 192.168.x.x or 100.x.x.x |
| 🤖 Android phone | Mobile file client | Wi-Fi/LAN at home; Tailscale while outside/overseas |
dev-infra/
├── README.md
├── LICENSE
├── infrastructure.json
├── setup_infra.sh
├── configs/
│ ├── fstab.example
│ └── ssh_config.example
├── docs/
│ └── images/
└── .gitignore
Redacted workflow screenshots live under docs/images/.
![]() Windows VSCodium Remote-SSH workflow |
![]() Linux VSCodium Remote-SSH workflow |
![]() Windows mapped SMB network drive |
![]() Android SMB/file-manager access |
![]() Linux terminal / CIFS workflow |
All screenshots are redacted before publishing.
Run the read-only diagnostics script:
./setup_infra.shIt checks for useful client tools such as ssh, tailscale, mount.cifs, and smbclient. It does not modify system files.
- 🔑
configs/ssh_config.example— LAN and Tailscale SSH aliases - 🗄️
configs/fstab.example— Linux CIFS mount example usingNAS-Share - 🧾
infrastructure.json— sanitized machine-readable topology
This repo intentionally uses placeholders:
| Placeholder | Meaning |
|---|---|
192.168.x.x |
Home LAN address range |
100.x.x.x |
Tailscale address range |
NAS-Share |
Example SMB share name |
your_mac_username |
Example SSH username |
Real local config should stay outside git.
This project is licensed under the MIT License.




