Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


Aiursoft Nextcloud 事故调查、分析与总结

在2022年10月4日的两小时服务中断事件中,Aiursoft Nextcloud遭遇了从内核到业务层的连锁崩溃。当服务器因系统盘被填满而彻底死机时,技术团队不得不通过VNC强制重启虚拟机,却在恢复过程中发现了更深层的逻辑陷阱——原本应写入NFS备份盘的数据,因存储分离迁移期间的短暂断连,意外将系统盘推至临界点。这场灾难的根源并非硬件故障或软件缺陷,而是备份流程在挂载状态失效时的沉默执行:当/mnt/backup从网络磁盘退化为本地目录时,300GB的rsync复制瞬间吞噬了64GB的系统盘。这个案例揭示了三个值得深思的悖论:看似安全的备份机制为何成为系统脆弱性的放大器?当基础架构变更时,我们是否真正理解了所有依赖路径的失效模式?更重要的是,如何让监控系统在灾难发生前就嗅到风险的气味?事件最终催生出两个关键改进:通过df -Th验证挂载状态的备份脚本,以及在磁盘使用率低于10%时触发警报的监控机制。但更值得警惕的是,这场事故暴露了现代云服务架构中普遍存在的"沉默失效"——那些在监控盲区里悄然腐化的连接、挂载和配置,它们究竟还隐藏着多少未被发现的定时炸弹?--Qwen3

bash Linux Backup Nextcloud Disk Incident

Install your own NFS ESXI storage server

文章详细介绍了基于Debian系统搭建NFS存储服务器并连接ESXI主机的全流程。包括:安装Debian系统后配置RAID 10+ZFS存储池,调整内核参数优化性能;通过IPMI管理硬件,使用ip link命令设置网络桥接和Jumbo Frames(MTU 9000)提升网络传输效率;部署ISC DHCP服务器为ESXI主机分配存储网络IP,配置桥接接口和DHCP范围;安装Cockpit监控工具及Navigator插件实现服务器状态可视化;在VMware vSphere中创建存储虚拟交换机,配置VMkernel网络并挂载NFS存储;最后通过CrystalDiskMark测试验证10Gbps网络可达1200MB/s的传输速度。整个方案通过物理隔离存储网络、优化协议栈和硬件参数,实现了高性能的虚拟化存储架构。--Qwen3

Linux Storage NFS VMware ESXI Vsphere Dell IPMI Debian Server

If a Ubuntu server should run apt upgrade automatically?

在管理大量Ubuntu服务器时是否应该启用apt upgrade自动更新?这既是一场效率与风险的博弈也是对运维哲学的深刻思考。当服务器数量庞大时手动执行update和upgrade再重启的重复操作确实会消耗大量时间而自动更新看似能完美解决这个问题尤其在安全补丁及时性和系统稳定性方面展现出明显优势。但这种看似完美的方案却暗藏玄机:当服务器需要排查历史问题时自动更新可能抹去关键调试线索;对航空控制系统这类零容忍变更的场景自动更新简直是灾难性的;更不用说功能更新可能引入新bug导致业务中断而强制重启对游戏服务器等系统可能直接中断正在进行的赛事。尽管作者给出了每周日凌晨执行脚本的配置方案却在最后提出了令人警醒的条件清单——只有当系统不重要能容忍可用性下降且具备完美快照和互联网连通性时才适合启用自动更新。这引发我们思考:在自动化浪潮中我们是否正在失去对系统演进过程的掌控?当安全更新与业务连续性产生矛盾时该如何在风险与收益间找到平衡点?或许真正的智慧不在于选择自动或手动而在于建立对系统生命周期的深度认知。--Qwen3

bash Linux Ubuntu Upgrade Crontab Update

Install Cockpit on Ubuntu 22.04

本文通过分步指南解析了在Ubuntu 22.04系统上部署Cockpit的完整流程并揭示了其背后的技术逻辑。安装过程从基础命令切入却巧妙融入了权限管理的底层思考——为何要避免root用户直接操作?当网络异常导致PackageKit缓存刷新失败时解决方案通过Netplan配置迁移与NetworkManager渲染器调整既解决了表层问题更暗示了系统服务间依赖关系的复杂性。插件安装环节通过自动化脚本实现版本追踪与动态下载展现了现代DevOps中CI/CD的实践思维而Caddy反向代理的配置则抛出了安全与便捷的永恒命题:如何在TLS证书验证与服务可达性之间取得平衡?当浏览器地址栏中的9090端口打破传统Web服务的80/443端口惯例时是否预示着更多非标准服务的崛起?最后通过反向代理实现HTTPS的方案既解决了证书信任链问题又引发了对自动化证书管理(如Let's Encrypt)与手动配置安全性的对比思考——当技术方案面临选择时我们究竟应该追求极致安全还是适度妥协?--Qwen3

bash Linux Ubuntu Remote Management Cockpit NetworkManager

CaddyV2 tips and examples (How to correctly get user's IP address after a reverse proxy)

Caddy V2作为现代反向代理工具展现了极强的可定制性与场景适配能力文章通过编译带有Proxy Protocol插件的自定义Caddy版本揭示了如何在FRP等隧道代理后精准获取用户真实IP地址这一核心难题同时展示了从静态文件托管到动态负载均衡的12种典型配置方案包括如何通过header操作实现安全加固如何结合IP白名单与路径匹配进行精细化访问控制以及如何利用基础认证与健康检查构建多层防护体系值得注意的是当反向代理链涉及多层嵌套时配置的允许规则与超时参数往往成为系统稳定性的关键变量文章尤其值得关注的创新点在于将Caddy的模块化特性与实际网络拓扑深度结合例如通过cookie-based负载均衡策略实现会话保持或在HTTPS跳转时自动移除潜在风险头字段这种将协议细节与安全策略有机融合的实践思路值得深入思考当面对混合云环境或混合网络架构时如何设计既能满足性能要求又能保证可观测性的反向代理方案或许正是本文抛砖引玉的价值所在--Qwen3

Reverse Proxy Linux Ubuntu Proxy FRP Caddy CaddyV2 IP Address Proxy Protocol

Build a new NFS server with WinServer or Ubuntu and mount it

本文详细介绍了如何在Windows Server和Ubuntu系统上搭建NFS服务器并实现跨平台挂载的过程。通过分步解析的方式,文章展示了Windows Server中通过图形界面安装NFS角色并配置共享目录的便捷操作,同时对比了Ubuntu系统中使用命令行安装服务、设置共享路径及权限的标准化流程。在挂载环节则分别演示了Windows客户端通过PowerShell和CMD实现匿名挂载的技术要点,Ubuntu系统使用mount命令与fstab配置的差异性方案,以及VMware ESXI环境通过VCenter添加网络存储的可视化操作路径。文章通过技术细节的对比揭示了不同操作系统在NFS协议实现层面的兼容性特征,并通过实际配置过程中的端口开放、权限继承等关键环节,引发了关于跨平台资源共享安全性与性能优化的深层思考。当NFS服务器在异构系统间架起数据通道时,如何平衡便捷性与安全防护?在容器化和云原生趋势下,传统NFS存储方案如何适应动态扩展需求?这些问题或许正是理解现代存储架构演进的关键切入点。--Qwen3

Linux Ubuntu File Windows Server Share NFS VMware ESXI Vsphere NAS

Mount Windows SMB folder to Ubuntu

本文通过简洁的步骤解析了如何在Ubuntu系统中挂载Windows SMB共享文件夹,并延伸探讨了跨平台协作的技术可能性。文章从安装cifs-utils工具包切入,演示了通过命令行创建挂载点、输入认证参数实现远程目录本地化的完整流程,特别展示了交互式密码输入和挂载后文件访问的实操场景,同时提供了开机自动挂载的配置方案。这种将网络存储无缝集成到本地文件系统的技术,不仅打破了操作系统的边界,更引发了关于数据访问权限管理、跨平台协作效率以及自动化运维方案的深层思考——当远程文件如同本地磁盘般可读写时,我们是否重新定义了“文件”的存在形式?在享受技术便利的同时,如何平衡自动化配置与安全性需求?当SMB协议成为连接异构系统的桥梁,我们是否能想象出更多跨平台协作的创新应用场景?--Qwen3

bash Linux Ubuntu Windows Server SMB Share

Run WeChat in Ubuntu

本文介绍了在Ubuntu系统中通过Wine运行微信的完整流程并探讨了不同方案的取舍。文章首先演示了如何通过调整Wine配置优化高分辨率显示效果并解决字体渲染问题随后通过环境变量设置实现中文语言支持但指出微信在Linux环境下仍存在浏览器调用异常和小程序崩溃等兼容性问题。同时文章对比分析了Kylin和Deepin两款原生Linux微信方案发现虽然它们避免了Wine的复杂性但牺牲了后台运行自动登录历史记录同步等核心功能引发读者思考:当选择技术方案时到底是优先考虑功能完整性还是系统原生性?此外文章暗示了Linux环境下Windows应用适配的深层矛盾——我们是否应该继续追求跨平台兼容还是应该推动更多原生应用开发?最后抛出一个值得深思的问题:在追求完美体验的过程中我们究竟应该在多大程度上妥协于现有生态的限制?--Qwen3

bash Linux Ubuntu China WeChat Wine

Install Nextcloud on a Ubuntu 20.04\22.04 server

文章详细介绍了Nextcloud服务器的部署与优化流程涵盖从基础安装到高级配置的17个步骤。核心内容包括:安装LAMP环境后通过APT部署Nextcloud,配置外部存储通过挂载大容量硬盘修改数据目录,设置邮件服务与默认区域,优化预览功能;引入Redis缓存通过修改配置文件与权限组提升性能,编写自动化备份脚本结合rsync和mysqldump实现数据与数据库的定期备份;部署反向代理时配置信任代理IP并使用Caddy进行反向代理;针对GPU加速场景提供CUDA与cuDNN的安装指引。全文重点强调配置文件的修改细节包括config.php中数据目录、缓存机制、信任域等参数调整,以及权限管理、服务重启等关键操作,最终通过分层架构实现可扩展的云存储解决方案。--Qwen3

Web Linux Ubuntu IT Apache2 PHP MySQL Certbot Nextcloud Storage

Minecraft Most wanted 比赛

Minecraft Most wanted比赛以Java版1.19服务器为舞台展开一场极限生存博弈所有玩家需在指定时间内通过击杀猎物或让猎物自然死亡达成胜利目标而猎物若能保持存活则直接成为赢家这场24小时限时的追捕游戏将考验参与者对陷阱布置资源储备与战术路线的周密规划指南针始终指向猎物的设计让追踪与反追踪成为核心博弈点死亡机制的特殊调整更增添了策略深度玩家可通过携带盾牌末影珍珠紫颂果等道具构建多维度的攻防体系而服务器提供的复活机制与随机传送设计则让每次决策都充满风险与机遇从基础方块到黑曜石从火把到TNT的物资准备清单揭示了这场较量需要同时具备工程思维与战斗技巧当所有玩家提前探索地图建设防线制定逃生路线时这场生存竞赛早已演变为一场心理与资源的立体战争上海服务器的实时状态链接与详细参赛指南为这场数字世界的猫鼠游戏提供了技术支撑而64块指定方块的奖品则成为驱动所有玩家突破极限的催化剂当虚拟世界的坐标系中指南针开始转动当复活点与死亡点的距离成为计算公式当每个方块都可能隐藏致命机关你是否思考过在绝对公平的数字规则下人类的生存本能会如何演化出新的博弈形态你准备好在虚拟世界中成为猎手还是猎物了吗--Qwen3

Minecraft Kill Hunt Hunt Game Competition Rules Block Reward Player Preparation

Make and prepare your own Windows image and deploy with the OOBE experience

本篇文章深入解析了如何通过`sysprep`与`dism`工具构建自定义Windows镜像并实现OOBE(开箱即用体验)部署的完整流程。文章揭示了Windows系统镜像定制的核心逻辑:通过`sysprep`擦除设备数据并进入OOBE模式,配合`dism`捕获系统镜像形成通用的`wim`文件,最终实现快速部署与个性化配置。这一技术路径既解决了预装系统未激活、缺少驱动等常见痛点,又为批量部署和设备交付提供了标准化方案。 文章通过审计模式与OOBE模式的切换机制,展示了如何在临时配置阶段安装驱动和软件,同时保持系统通用性。值得注意的是,`sysprep /generalize`参数的使用场景区分了镜像捕获与单机部署的不同需求,而`dism`的优化功能则进一步提升了系统启动效率。当需要扩展定制时,文章展示了如何通过审计模式注入驱动、添加软件,并保留重新进入OOBE的灵活性。这种动态调整能力为系统镜像的持续迭代提供了技术基础。 文章最后抛出关键思考:如何在镜像定制中平衡通用性与个性化需求?当面对不同硬件平台时,驱动注入策略应如何动态适配?对于需要长期维护的镜像,如何设计自动化的更新机制?这些问题的答案或许就隐藏在系统镜像的分层结构与OOBE流程的深度定制中,等待读者通过实践探索。--Qwen3

Windows Customization DISM Tool Driver Injection System Deployment Audit Mode Windows RE Preparation

Why do low-code development is a pseudo requirement?

低代码开发平台被广泛宣传为降低技术门槛的解决方案,但其本质是否真的解决了开发难题仍值得深思。文章通过对比网页设计工具与低代码平台的相似性指出,所见即所得(WYSIWYG)的开发模式在复杂场景中反而会暴露局限性——当需求涉及动态表单、复杂交互或可扩展性时,低代码平台生成的代码往往充斥着冗余标记,缺乏结构复用能力。作者进一步质疑:若企业具备组织低代码开发团队的能力,为何不直接招聘原生开发人员?这种看似降低学习成本的方案,实际上隐含了对平台规则的深度掌握需求,甚至可能形成新的技术债务。代码作为人类对现实世界的抽象,其价值在于通过形式化语言实现精准控制,而低代码平台试图以图形化操作替代代码逻辑,本质上是用非标准化的抽象方式处理复杂问题。尽管低代码在特定场景(如快速构建简易工具)中具备价值,但其适用范围受限于需求复杂度、基础设施完备性及开发者基础素养。文章结尾抛出值得反思的问题:当低代码平台宣称“无需编程即可开发”时,是否忽略了软件工程的核心价值?在AI逐步介入开发流程的今天,我们究竟是在解放生产力,还是将复杂问题强行简化为可被机器理解的表象?--Qwen3

Software Development Low Code PowerApps WYSIWYG Low code Development Software Abstraction