<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sysadmin on Margrop Blog</title>
    <link>https://blog.margrop.net/en/tag/sysadmin/</link>
    <description>Recent content in Sysadmin on Margrop Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 02 Jul 2026 20:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/en/tag/sysadmin/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cross-Border VPS Feels Glacial? One Kernel Sysctl Speeds International Links 20×</title>
      <link>https://blog.margrop.net/en/post/bbr-fix-china-us-vps-slow-network/</link>
      <pubDate>Thu, 02 Jul 2026 20:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/bbr-fix-china-us-vps-slow-network/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;re accessing your overseas VPS from within China. SSH feels snappy. &lt;code&gt;curl&lt;/code&gt; on a small JSON endpoint returns instantly. But downloading a 2 MB HTML file takes over a minute. Convinced it&amp;rsquo;s &amp;ldquo;peak-hour international link congestion&amp;rdquo;? Probably not — you&amp;rsquo;re being sabotaged by Linux&amp;rsquo;s default CUBIC congestion control. CUBIC treats every packet loss as &amp;ldquo;the road ahead is jammed&amp;rdquo; and immediately backs off. But international links have baseline 5–15% loss from physical-layer imperfections, not congestion. So your TCP flow gets permanently stuck in slow-mo. Switch to Google&amp;rsquo;s &lt;strong&gt;BBR&lt;/strong&gt; algorithm and the exact same physical path, same moment, same loss rate delivers &lt;strong&gt;15–24× more throughput&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This post walks through a real mesh-VPN investigation: pulling a 2.3 MB page from a US VPS across a Chinese home connection went from &lt;strong&gt;30 KB/s to 500–1000 KB/s&lt;/strong&gt; after four shell commands. It ships three one-shot scripts (Windows 11 / Ubuntu 26.04 / macOS 26), covering both manual execution and AI-agent-driven deployment. All internal IPs, hostnames, and public IPs have been redacted.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>VPN Connected, But Internal Hostnames Won&#39;t Resolve? A Complete macOS Routing Table Walkthrough</title>
      <link>https://blog.margrop.net/en/post/macos-routing-table-vpn-troubleshooting/</link>
      <pubDate>Mon, 01 Jun 2026 18:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/macos-routing-table-vpn-troubleshooting/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;When two VPNs run side-by-side on macOS (e.g. &lt;code&gt;utun0&lt;/code&gt; and &lt;code&gt;utun15&lt;/code&gt;), an aggregate &lt;code&gt;10.0.0.0/8&lt;/code&gt; route pushed by one of them can silently &amp;ldquo;swallow&amp;rdquo; every address in the 10.x.x.x range — including the one you actually wanted to reach on the other VPN. DNS resolves fine; TCP/ICMP just hangs. &lt;strong&gt;&lt;code&gt;route -n get&lt;/code&gt; is the first knife you should reach for.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Home Network 1000Mbps but Games Stutter? A Complete Guide to Diagnosing and Fixing Bufferbloat</title>
      <link>https://blog.margrop.net/en/post/bufferbloat-sqm-cake-home-network-fix/</link>
      <pubDate>Sat, 30 May 2026 09:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/bufferbloat-sqm-cake-home-network-fix/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The Short Version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Your router has a hidden enemy called &lt;strong&gt;Bufferbloat&lt;/strong&gt; — and it&amp;rsquo;s likely the reason your games lag even when your bandwidth test shows perfect speeds. When a router buffers too aggressively, download traffic fills up the queue and real-time traffic (games, video calls) gets stuck waiting behind thousands of buffered packets. Your speedtest stays at 950Mbps, but your game ping explodes from 50ms to 500ms.&lt;/p&gt;&#xA;&lt;p&gt;In this article, I walk through the complete diagnosis and resolution of a Bufferbloat problem in a real home network environment using a multi-WAN iKuai gateway + ImmortalWrt soft router setup. The fix: deploying &lt;strong&gt;SQM (Smart Queue Management) + Cake qdisc&lt;/strong&gt; on the ImmortalWrt layer, which reduced latency under full-speed download from ~300ms+ down to a stable ~12ms with zero configuration complexity.&lt;/p&gt;&#xA;&lt;p&gt;All internal IP addresses, device hostnames, and network topologies have been sanitized for privacy.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Python App in macOS LaunchAgent Can&#39;t Reach the Internet? Here&#39;s the httpx Proxy Trap You Need to Know</title>
      <link>https://blog.margrop.net/en/post/macos-launchagent-python-httpx-proxy-no-route-to-host/</link>
      <pubDate>Sat, 30 May 2026 09:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/macos-launchagent-python-httpx-proxy-no-route-to-host/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;When a Python application using httpx with &lt;code&gt;trust_env=True&lt;/code&gt; runs inside a macOS LaunchAgent, it silently picks up the system proxy settings from &lt;code&gt;scutil --proxy&lt;/code&gt;. But the LaunchAgent process may not be able to reach that proxy server at all — resulting in &lt;code&gt;All connection attempts failed&lt;/code&gt; or &lt;code&gt;No route to host&lt;/code&gt; errors.&lt;/p&gt;&#xA;&lt;p&gt;The fix is one line: add &lt;code&gt;NO_PROXY=*&lt;/code&gt; to the LaunchAgent&amp;rsquo;s plist &lt;code&gt;EnvironmentVariables&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This article documents the full debugging journey: from discovering that my AI Agent&amp;rsquo;s WeChat Enterprise (WeCom) messages weren&amp;rsquo;t being replied to, through methodical proxy troubleshooting, to finally pinning down the root cause — macOS system proxy + LaunchAgent network isolation. We&amp;rsquo;ll dive deep into Python httpx source code, macOS proxy architecture, and the many gotchas of LaunchAgent runtime environments.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>The Complete AI Agent Migration Guide: A Real-World Journey from Scratch with 9 Pitfalls and Fixes</title>
      <link>https://blog.margrop.net/en/post/ai-agent-complete-migration-guide-from-scratch/</link>
      <pubDate>Sat, 30 May 2026 08:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-agent-complete-migration-guide-from-scratch/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Migrating from one AI Agent platform to another sounds like a &amp;ldquo;copy and paste&amp;rdquo; job. In reality, it&amp;rsquo;s a systems engineering challenge involving data migration, channel integration, scheduled tasks, auto-start configuration, proxy settings, and module compatibility.&lt;/p&gt;&#xA;&lt;p&gt;This article documents my complete migration journey: from installing the new platform, migrating memories and skills, configuring messaging channels, debugging mysterious failures, to achieving fully automated operation. 9 pitfalls encountered, 9 solutions found — all shared here.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Seamless Homelab Networking: Deploying Tailscale on Ubuntu 26.04 for Effortless Remote Access</title>
      <link>https://blog.margrop.net/en/post/seamless-homelab-networking-deploy-tailscale-ubuntu-2604/</link>
      <pubDate>Tue, 26 May 2026 14:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/seamless-homelab-networking-deploy-tailscale-ubuntu-2604/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The Short Version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cross-carrier connectivity, lack of public IPv4 addresses, and multi-device connection management have always been the ultimate pain points for Homelab enthusiasts and enterprise sysadmins alike. This article provides a comprehensive, step-by-step guide on how to cleanly and securely install and configure the latest version of Tailscale on the newly released Ubuntu 26.04 (Resolute Raccoon) using the modern APT Keyring standards. Beyond a clean command-line install walkthrough, we delve into the architectural design of Tailscale, Subnet Router routing, and Exit Node proxying to establish a seamless, encrypted mesh network linking your home Synology NAS, Proxmox VE hypervisors, remote laptops, and mobile devices.&lt;/p&gt;&#xA;&lt;p&gt;All setups and commands documented here have been rigorously tested on a clean Ubuntu 26.04 (Resolute Raccoon) environment. To prioritize safety and avoid leakage, all internal IP addresses, access tokens, routing tables, and server domains have been fully masked using generic placeholders.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
  </channel>
</rss>
