惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy International News Feed
WordPress大学
WordPress大学
Security Latest
Security Latest
Cyberwarzone
Cyberwarzone
K
Kaspersky official blog
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
G
GRAHAM CLULEY
N
News | PayPal Newsroom
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
美团技术团队
J
Java Code Geeks
I
Intezer
The Cloudflare Blog
SecWiki News
SecWiki News
S
Secure Thoughts
Microsoft Azure Blog
Microsoft Azure Blog
V2EX - 技术
V2EX - 技术
C
Cyber Attacks, Cyber Crime and Cyber Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Spread Privacy
Spread Privacy
D
DataBreaches.Net
S
Security Affairs
Help Net Security
Help Net Security
S
Securelist
F
Full Disclosure
C
Check Point Blog
F
Fortinet All Blogs
Know Your Adversary
Know Your Adversary
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
人人都是产品经理
人人都是产品经理
博客园_首页
G
Google Developers Blog
Google Online Security Blog
Google Online Security Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Hacker News: Front Page
L
LINUX DO - 热门话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LangChain Blog

Pierce Freeman

A browser for agents | Pierce Freeman The grey market of podcast appearances The way I travel | Pierce Freeman Fixing slow AWS uploads | Pierce Freeman Local tools should still use vaults We solved scratch content first Starting a podcast in 2025 Being late but still being early Automating our home video imports Adding my parents to tailscale A deep dive on agent sandboxes Language servers for AI | Pierce Freeman My simple home podcast studio We need centralized infrastructure | Pierce Freeman Coercing agents to follow conventions using AST validation My unified theory of social selling My personal backup strategy | Pierce Freeman How the KV Cache works httpx is the right way to do web requests in Python Reputation is becoming everything | Pierce Freeman Building a (kind of) invisible mac app Updated knowledge in language models Making an ascii animation | Pierce Freeman How speculative decoding works | Pierce Freeman Under the hood of Claude Code Doing things because they're easy, not hard Speeding up sideeffects with JIT in mountaineer Firehot for hot reloading in Python Misadventures in Python hot reloading How text diffusion works | Pierce Freeman The tenacity of modern LLMs The ergonomics of rails | Pierce Freeman How language servers work | Pierce Freeman Just add eggs | Pierce Freeman Unfortunately SEO still matters | Pierce Freeman The futility of human-only web requirements Setting up Input Leap | Pierce Freeman Checking in on Waymo | Pierce Freeman The react revolution | Pierce Freeman Speeding up many small transfers to a unifi nas Quick notes on swift libraries AI engineering is a different animal San Francisco | Pierce Freeman Debugging a mountaineer rendering segfault Local network config on macOS Building our home network | Pierce Freeman Introducing Envelope.dev | Pierce Freeman Legacy code and AI copilots Typehinting from day-zero | Pierce Freeman Generating database migrations with acyclic graphs Lofoten | Pierce Freeman Mountaineer v0.1: Webapps in Python and React Constraining LLM Outputs | Pierce Freeman Passthrough above all | Pierce Freeman Accuracy in kudos | Pierce Freeman How quick we are to adapt The curious case of LM repetition Costa Rica | Pierce Freeman Debugging chrome extensions with system-level logging Speeding up runpod | Pierce Freeman Inline footnotes with html templates Parsing Common Crawl in a day for $60 An era of rich CLI All or nothing with remote work The Next 10 Years | Pierce Freeman Adding wheels to flash-attention | Pierce Freeman LLMs as interdisciplinary agents | Pierce Freeman New Zealand | Pierce Freeman Representations in autoregressive models | Pierce Freeman Let's talk about Siri | Pierce Freeman Minimum viable public infrastructure | Pierce Freeman Reasoning vs. Memorization in LLMs Automatically migrate enums in alembic Greater sequence lengths will set us free On learning to ski | Pierce Freeman Dolomites | Pierce Freeman Using grpc with node and typescript Opportunity years | Pierce Freeman Buzzword peaks and valleys | Pierce Freeman Buenos Aires | Pierce Freeman Network routing interaction on MacOS Independent work: November recap | Pierce Freeman Debugging slow pytorch training performance The provenance of copy and paste Debugging tips for neural network training Patagonia | Pierce Freeman Santiago | Pierce Freeman My 2022 digital travel kit AWS vs GCP - GPU Availability V2 Independent work: October recap | Pierce Freeman Planning Patagonia | Pierce Freeman Relationship modeling | Pierce Freeman The power of status updates A new chapter | Pierce Freeman Give my library a coffee shop AWS vs GCP - GPU Availability V1 Switzerland | Pierce Freeman Headfull browsers beat headless | Pierce Freeman Webcrawling tradeoffs | Pierce Freeman Copenhagen | Pierce Freeman
July updates to the homelab
2025-07-29 · via Pierce Freeman

Homelab V2

I set up our homelab early this year to replace my old external drive with way more storage. I was happy enough with the initial setup but as I started stress testing it with my daily flow1, some pretty clear areas of improvement kept nagging at me.

As they say - a homelab is never finished, only abandoned.

Here's some rationale about why I'm singlehandedly pumping Ubiquiti's stock, alongside some lessons learned about homelab ergonomics.

New NAS

The most popular consumer NAS systems all come from one of two companies: Synology and QNAP. Synology has gotten into some hot water with their move to requiring validated drives. I went with QNAP originally which felt more open by default and was a bit cheaper.

I gave it a good crack but the QNAP had to go back. Despite having a 10gbps network connection and spinning Red Pro disks that should theoretically hit 200-300MB/s per drive, I was stuck at embarrassingly slow transfer rates. We're talking sub-50MB/s for sequential writes, which is slower than even most USB 3.0 external drives.

I spent a good few weeks going back and forth with QNAP support. I found their reps were actually super technical, which was a nice surprise. They had me dump some iperf logs and did some remote debugging on my device. They measured that the actual device hardware seemed fine (~350mb/s writes, 420mb/s reads) but something over the network was capping the overall drive transfer rate.

But even after tweaking the network interface settings and adjusting the file system parameters, the throughput was still stubbornly capped at the original measured speed. The hardware should have been capable of much more, but something in the software stack was clearly limiting performance.

After returning the QNAP, I decided to try Unifi's UNAS, their relatively new entry into network-attached storage. This thing is designed to just be storage over the network. No bundled VMs, no app ecosystem, no Docker containers.2

I'll be honest here: I've never really understood the fundamental benefit of these NAS-as-a-server hosts. If you only have a NAS and no other server on your network, totally get that. But if you're already building a homelab with some logical server that you're hacking on anyway, it's almost guaranteed to have a better CPU/memory than your NAS ever will. The only rationale I could see is actually having the HDDs attached via a physical medium (versus having to do transcoding over the network) but as network transfers have gotten way faster than hard drives can spin at, it's less of an issue.

So the UNAS fits into my mental model a lot clearer. It's just storage, they have a nice online interface that you can hide behind your tailscale VPC (to use when you're traveling or share with extended family). It still has a 10gbps connection into the network and it was cheaper than the QNAP model.

My original UNAS order was a dud. On transferring my ~5TB of past storage it kept bricking itself during the transfer, computer would lose the connection, and it required a hard reboot to restart the NAS. Not even the on-device screen was responsive. Recognizing that this is a first gen product, I had the foresight to buy the UI Care package that Unifi offers. I sent them some debug logs and within a day they had overnighted me a new device. After setting that one up, it's still going strong. I'm not typically one for an extended warranty but in this case damn it was worth every penny.

Screenshot of blackmagic

Benchmarking showed it was meaningfully faster than the QNAP even with the same hard-drive config. Who knows what the limiting factor on my old NAS was, but clearly the hard drives were not the problem.

These speeds are fast enough that I don't hesitate to put almost everything on the external. When I profile my local disk it's really just build caches, dockerfiles, and a local clone of all my engineering projects. All the media and company documents are on the network.

Patch panel

A patch panel is literally just a dumb 1U piece of plastic in your rack that has ethernet passthrough. You connect a row of cables behind the panel, and the panel exposes a female connector that you can connect other cables into. It's one of the ultimate "nice to haves."

Patches are most useful when you're feeding cables from your whole house or data center into the panel. Since the cables end up disappearing to who-knows-what in your roof, the patch panel is used to label the termination point. Then you never adjust the patch panel. You just change where the patch panel ends are connected into if you need to change your topology.

Most of my loops are actually just going from network hardware to network hardware so this case doesn't apply. That said, I still found it convenient to have one central point to label all of the network attachments: wifi, server, laptop, etc.

I have noticed that patch panels (and indeed the patch cords themselves) only really work when you're able to connect them to the box that's directly above or directly below them. If even one cable is stretching from the patch panel further down the rack it ruins a lot of the organizational gains you have from getting a patch panel in the first place.

The specific model I went with is a standard 24-port Cat6A patch panel. Yes, one of Ubiquiti's. Nothing fancy, but it gives me plenty of room to grow. The key bit here is that the visual organization is almost as important as the functional organization.

New mounts

Conventional rack mounts suck. They're almost adversarial. They're apt to pinch you, jiggle out of the rack sliders, and generally make every modification of your equipment more frustrating than it needs to be.

I talked about this a bit last time but there's really an art to adding mounts. If you're adding them one at a time and keeping your rack in the same orientation, it's fine to bite that bullet. But as I was reorganizing my rack and having to slide the patch panel in and out repeatedly, it was becoming pretty annoying.

I heard good things about /dev/mount3. You slide the back units together, clip them in, then can just screw in the attachments on the front. They make it super easy to attach the skeleton of your layout and then put your equipment into place without having to hold both simultaneously. Red's the only color, which seemed a bit jarring, but it ends up being a nice splash of color in an otherwise monotone rack.

One interesting learning in doing this4 was seeing that my mounting holes were slightly off-centered from standard. They're still just about 1U apart, but some of them are just different enough that the inflexible /dev/mount couldn't lock to them. When I moved the whole array down by a unit, it worked perfectly.

New UPS

Swapped out my vertical UPS power backup for a horizontal UPS with a marginally larger battery.

New: CyberPower CP1500PFCRM2U (1500VA/1000W)

Old: CyberPower CP1500AVRLCD3 (1500VA/900W)

These model names are giving major laptop vibes from 2005.

It's basically exactly the same unit but you're paying the rack premium of ~$100 for the horizontal format.5 I made this upgrade begrudgingly because the new NAS is also horizontal rack mounted, so there wasn't enough vertical clearance in the cage anymore.

The power calculation is actually more interesting than the form factor change. With the new NAS, switch, and server all running simultaneously, I'm drawing about 107W at idle. My NUT server will shutdown all but the most necessary hardware (wifi & fiber switch) when we lose power for anything longer than 5 minutes, so we should be able to keep running for a while during a blackout.

Conclusion

I'm actually really happy with this new setup.6 The combination of reliable storage, clean cable management, and proper mounting hardware makes the whole thing feel a bit more put together and maintainable.

Mostly, I'm just happy to use it. Any hardware hacking that I do is typically in the cloud anyway. I'm not usually debugging Kubernetes locally. So the best pro of this layout is it's reliable. You'd be surprised how many people ask to come over whenever PG&E is doing some maintenance and the power goes out.

  1. My usage is pretty spiky, but generally it's heavy content editing early in the week (podcast audio, video) then just reading documents, datasets, and a few dumps of raw photos later in the week. ↩

  2. Technically speaking this is just a Linux box like any of them, so you can ssh into it and run things as you'd like. But that internal state can be wiped at any time by a firmware update, and plus most modifications can void your warranty. So I'm inclined not to mess with it until it's out of coverage. ↩

  3. Such a cheeky name. Bad to type into your Google search bar but a great wink to the community. ↩

  4. I'm not sure how generalizable this is to anything other than the Tech Mojo rack. ↩

  5. Plus $100 for 100 more watts. smh. ↩

  6. Famous words, I know. ↩