<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Go on Mi&amp;Bee Blog</title><link>/en/tags/go/</link><description>Recent content in Go on Mi&amp;Bee Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>蓝宝石的傻话</managingEditor><lastBuildDate>Fri, 05 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="/en/tags/go/rss.xml" rel="self" type="application/rss+xml"/><item><title>MiBeeNvr v0.6.0: Timelapse + Transcoding UI + ONVIF Enhancements + Documentation Restructure</title><link>/en/posts/mibee-oss/mibee-nvr-v0.6-promo/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid>/en/posts/mibee-oss/mibee-nvr-v0.6-promo/</guid><description>&lt;p&gt;After running continuous recording for a few weeks, storage became the first bottleneck. A single 1080p camera writes tens of GB per day — with a 30-day retention policy, a 1TB硬盘 is mostly consumed. Many community members reported the same issue, and during discussions, the ideas of timelapse and transcoding storage gained the most traction: most of the time the画面 is static, and compressing it with timelapse requires only 5% of the space for the same duration.&lt;/p&gt;</description></item><item><title>MiBeeNvr v0.5.0: Full ONVIF Protocol Support + Hardware Transcoding + rpi-cam Co-development</title><link>/en/posts/mibee-oss/mibee-nvr-v0.5/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/mibee-oss/mibee-nvr-v0.5/</guid><description>&lt;p&gt;Less than a week after v0.4.0, another 31 commits were pushed. v0.5.0 is a feature-dense release: &lt;strong&gt;full ONVIF protocol support&lt;/strong&gt; (covering all five major services: Device/Media/PTZ/Imaging/Event), &lt;strong&gt;hardware transcoding&lt;/strong&gt; (H.265 → H.264), and recorder reconnection optimizations. 127 files changed, +24,509 / -730 lines. See the full changelog at &lt;a href="https://github.com/Mi-Bee-Studio/MiBeeNvr/releases/tag/v0.5.0"&gt;GitHub Release Notes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t seen the previous versions, check out &lt;a href="/en/posts/iot/mibee-nvr-introduction/"&gt;MiBeeNvr Introduction&lt;/a&gt; and &lt;a href="/en/posts/iot/mibee-nvr-v0.4-tech/"&gt;v0.4.0 Technical Post&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="full-onvif-protocol-support"&gt;Full ONVIF Protocol Support&lt;/h2&gt;
&lt;p&gt;v0.4.0 already had ONVIF device discovery and stream URL retrieval, but that was just the tip of the ONVIF iceberg. v0.5.0 completes the core services of ONVIF Profile S:&lt;/p&gt;</description></item><item><title>MiBeeHive: The "Hive" Toolbox I Built for My Studio</title><link>/en/posts/mibee-oss/mibeehive-introduction/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/mibee-oss/mibeehive-introduction/</guid><description>&lt;p&gt;Coming from an operations background, later transitioning to development, the number of projects I maintain keeps growing. Various middleware, databases, monitoring components… each version upgrade is a manual labor: go to the official site to find the download link, compare version numbers, manually download to the internal network, then distribute to each machine. I used to write a bunch of Shell scripts to periodically pull the latest versions to the LAN — functional but not user-friendly: scripts scattered everywhere, adding new software required writing parsing logic by hand, and there was nothing to check when things went wrong.&lt;/p&gt;</description></item><item><title>MiBeeNvr v0.4.0: Audio Recording Finally Arrives, Auto-Recovery When Cameras Go Down</title><link>/en/posts/iot/mibee-nvr-v0.4-promo/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/iot/mibee-nvr-v0.4-promo/</guid><description>&lt;p&gt;Previously, MiBeeNvr&amp;rsquo;s MP4 files only had a video track — playback was silent. v0.4.0 fills this gap with &lt;strong&gt;audio recording&lt;/strong&gt;. It also adds more practical &lt;strong&gt;camera health monitoring and auto-recovery&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="recordings-now-have-sound"&gt;Recordings Now Have Sound&lt;/h2&gt;
&lt;p&gt;Each camera can independently enable audio recording:&lt;/p&gt;
&lt;div class="code-block-wrapper" data-lang="yaml"&gt;
 &lt;div class="code-block-header"&gt;
 &lt;div class="code-block-meta"&gt;&lt;span class="code-language"&gt;yaml&lt;/span&gt;&lt;/div&gt;
 
 &lt;button class="copy-button" aria-label="Copy code"&gt;
 &lt;svg class="copy-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"/&gt;&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/&gt;&lt;/svg&gt;
 &lt;svg class="check-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;polyline points="20 6 9 17 4 12"/&gt;&lt;/svg&gt;
 &lt;/button&gt;
 
 &lt;/div&gt;
 &lt;div class="code-block-body"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;cameras&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;front-door&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Front Door Camera&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;protocol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;rtsp&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;h264&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;audio_enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Supported audio formats:&lt;/p&gt;</description></item><item><title>MiBeeNvr v0.4.0: Audio Recording Pipeline and Multi-Layer Health Monitoring Architecture</title><link>/en/posts/iot/mibee-nvr-v0.4-tech/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/iot/mibee-nvr-v0.4-tech/</guid><description>&lt;p&gt;After v0.3.1 shipped, I put in another 196 commits. v0.4.0 is a feature-dense release: audio recording pipeline, multi-layer health monitoring engine, HLS/LL-HLS playback stability optimization, and a major UI redesign. For the full changelog, see &lt;a href="https://github.com/Mi-Bee-Studio/MiBeeNvr/releases/tag/v0.4.0"&gt;GitHub Release Notes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The previous post covered v0.3.x&amp;rsquo;s multi-protocol streaming and Xiaomi camera support (&lt;a href="/en/posts/iot/mibee-nvr-v0.3-tech/"&gt;v0.3.0 Tech Post&lt;/a&gt;). If you haven&amp;rsquo;t read the first post, start with &lt;a href="/en/posts/iot/mibee-nvr-introduction/"&gt;MiBeeNvr Introduction&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="audio-recording-from-silent-to-sound"&gt;Audio Recording: From Silent to Sound&lt;/h2&gt;
&lt;p&gt;In the v0.3.x era, recorded MP4 files only had a video track. v0.4.0 introduces a complete audio capture and muxing pipeline, supporting AAC audio from RTSP cameras and G.711 audio from ONVIF/Xiaomi cameras.&lt;/p&gt;</description></item><item><title>MiBeeNvr v0.3.1: Multi-Protocol Streaming and Native Xiaomi Camera Support</title><link>/en/posts/iot/mibee-nvr-v0.3-tech/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/iot/mibee-nvr-v0.3-tech/</guid><description>&lt;p&gt;A lot of work went into the releases after v0.2.0. v0.3.x brings several major updates: native Xiaomi camera support, recording archiving, multi-protocol streaming architecture (WebRTC/HTTP-FLV/RTMP/SRT/LL-HLS), and a wave of security hardening. The architectural evolution from external dependencies to built-in implementation, from single protocol to full protocol support, was much more曲折 than I expected.&lt;/p&gt;
&lt;p&gt;The previous post introduced v0.2.0&amp;rsquo;s 15 new features (&lt;a href="/en/posts/iot/mibee-nvr-v0.2/"&gt;v0.2.0 Update&lt;/a&gt;). If you haven&amp;rsquo;t read the first post, start with &lt;a href="/en/posts/iot/mibee-nvr-introduction/"&gt;MiBeeNvr Introduction&lt;/a&gt;. v0.3.0 focuses on deep Xiaomi camera integration, and v0.3.1 builds on that with a complete multi-protocol streaming architecture. For the full changelog, see &lt;a href="https://github.com/Mi-Bee-Studio/MiBeeNvr/releases/tag/v0.3.1"&gt;GitHub Release Notes&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>From Compliance to Real-Time Defense: The Evolution of security-collector-exporter</title><link>/en/posts/telemetry/security-collector-exporter-from-compliance-to-runtime/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/telemetry/security-collector-exporter-from-compliance-to-runtime/</guid><description>&lt;h2 id="the-origin-compliance-check-hassles"&gt;The Origin: Compliance Check Hassles&lt;/h2&gt;
&lt;p&gt;Anyone in operations knows there&amp;rsquo;s no escaping one hurdle for domestic servers: &lt;strong&gt;Cybersecurity Level Protection&lt;/strong&gt; (GB/T 22239-2019, commonly known as &amp;ldquo;Level Protection 2.0&amp;rdquo;). Whether you&amp;rsquo;re Level 3 or Level 2, auditors come asking about these things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is SSH root login disabled? Are password policies compliant?&lt;/li&gt;
&lt;li&gt;Is the firewall on? Is SELinux enforcing?&lt;/li&gt;
&lt;li&gt;Are there expired accounts? What&amp;rsquo;s the password validity period?&lt;/li&gt;
&lt;li&gt;Which ports are open? Are there high-risk services running?&lt;/li&gt;
&lt;li&gt;Are audit logs enabled? How long are they retained?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are plenty of compliance check tools on the market—search GitHub and you&amp;rsquo;ll find a bunch: &lt;code&gt;Golin&lt;/code&gt;, &lt;code&gt;EvaluationTools&lt;/code&gt;, &lt;code&gt;Linux-Security-Compliance-Check&lt;/code&gt;, etc. But they all share one limitation: &lt;strong&gt;Run once, get a report, done&lt;/strong&gt;. You check compliance today, and someone changes &lt;code&gt;sshd_config&lt;/code&gt; tomorrow, turns off the firewall, installs a backdoor service—you&amp;rsquo;d never know.&lt;/p&gt;</description></item><item><title>security-collector-exporter v0.3.0: Real-Time Security Monitoring with eBPF</title><link>/en/posts/telemetry/security-collector-exporter-ebpf-v030/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/telemetry/security-collector-exporter-ebpf-v030/</guid><description>&lt;h2 id="from-static-to-real-time"&gt;From Static to Real-Time&lt;/h2&gt;
&lt;p&gt;The previous article introduced &lt;a href="../security-collector-exporter-v010/"&gt;security-collector-exporter v0.1.0&lt;/a&gt; — turning Linux security configuration states into Prometheus metrics. But v0.1.0 is essentially &amp;ldquo;snapshot-based&amp;rdquo;: periodically reading &lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;/proc&lt;/code&gt;, capturing the static configuration at a single point in time.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s an area of security operations that snapshots can&amp;rsquo;t cover: &lt;strong&gt;real-time security events&lt;/strong&gt;. Someone running a reverse shell, a process escalating privileges, an abnormal network connection, someone loading a kernel module — these events happen and pass; you&amp;rsquo;d never see them at your next scrape.&lt;/p&gt;</description></item><item><title>security-collector-exporter: Monitoring Linux Security Auditing</title><link>/en/posts/telemetry/security-collector-exporter-v010/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/telemetry/security-collector-exporter-v010/</guid><description>&lt;h2 id="why-this-was-built"&gt;Why This Was Built&lt;/h2&gt;
&lt;p&gt;Anyone managing servers has probably had this experience: compliance audit comes, SSH into machines one by one to check—SSH config correct, SELinux enabled, firewall running, any expired accounts, password policies compliant. A few machines are fine; dozens or hundreds becomes purely manual grunt work.&lt;/p&gt;
&lt;p&gt;And the more painful part: none of this has continuous monitoring. You check compliance today, someone changes a config tomorrow, and you&amp;rsquo;d never know.&lt;/p&gt;</description></item><item><title>MiBeeNvr v0.2.0 Update: Docker Deployment, HLS Streaming, Recording Merging, and a Complete Installation Guide</title><link>/en/posts/iot/mibee-nvr-v0.2/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/iot/mibee-nvr-v0.2/</guid><description>&lt;p&gt;The previous article introduced MiBeeNvr&amp;rsquo;s basic features and design philosophy. It&amp;rsquo;s only been a week since v0.1.0, and v0.2.0 follows right behind. This update is substantial — 15 new features, some I needed myself, others from community feedback.&lt;/p&gt;
&lt;p&gt;This article covers three things: what&amp;rsquo;s new in v0.2.0, how to deploy from scratch, and some practical tips for real-world use.&lt;/p&gt;
&lt;h2 id="v020-new-features-overview"&gt;v0.2.0 New Features Overview&lt;/h2&gt;
&lt;p&gt;This update has a lot of content. Here&amp;rsquo;s a breakdown by category:&lt;/p&gt;</description></item><item><title>MiBeeNvr: A Lightweight Home NVR System I Built</title><link>/en/posts/iot/mibee-nvr-introduction/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/iot/mibee-nvr-introduction/</guid><description>&lt;p&gt;I have several cameras at home — a few Xiaomi cameras, some DIY ESP32 cameras, and multiple Raspberry Pi CSI cameras. I&amp;rsquo;d been using cloud storage solutions, but I was never comfortable with them: vendor lock-in, network dependency, and the costs add up. So I decided to build my own NVR system, called MiBeeNvr.&lt;/p&gt;
&lt;h2 id="why-build-mibeenvr"&gt;Why Build MiBeeNvr&lt;/h2&gt;
&lt;p&gt;To be honest, I was never satisfied with existing cloud storage solutions. Take Xiaomi cameras, for example. By default, you can only view them through the Mi Home app. Recordings are either stored on an SD card (limited capacity, frequent plugging/unplugging) or in the cloud. Cloud storage costs tens of dollars per month, and there&amp;rsquo;s the privacy concern — you never know when the manufacturer might use your video data for AI training or sell it to third parties. Not to mention vendor lock-in — switching platforms is nearly impossible.&lt;/p&gt;</description></item></channel></rss>