<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>运维日常 on 友派博客</title><link>https://blog.uipad.com/zh-cn/tags/%E8%BF%90%E7%BB%B4%E6%97%A5%E5%B8%B8/</link><description>Recent content in 运维日常 on 友派博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 02 Apr 2026 21:00:00 +0800</lastBuildDate><atom:link href="https://blog.uipad.com/zh-cn/tags/%E8%BF%90%E7%BB%B4%E6%97%A5%E5%B8%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>全网首发：ColoCrossing 独服踩坑记，用 Docker 优雅征服上古 IPMI 与 KVM 假死</title><link>https://blog.uipad.com/zh-cn/post/2026-04/colocrossing-ipmi-kvm-docker-solution/</link><pubDate>Thu, 02 Apr 2026 21:00:00 +0800</pubDate><guid>https://blog.uipad.com/zh-cn/post/2026-04/colocrossing-ipmi-kvm-docker-solution/</guid><description>&lt;p&gt;便宜大碗的 ColoCrossing 独立服务器一直备受独立开发者青睐。但当你满怀期待地拿到机器，准备通过 IPMI 挂载 ISO 安装系统时，通常会被现实狠狠地泼一盆冷水——&lt;strong&gt;它的底层硬件和 IPMI 管理系统，实在是太老旧了！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;翻遍了目前的中文互联网，几乎找不到用现代优雅方式解决这个问题的完整记录。这篇文章记录了我最近在 ColoCrossing 服务器上的一场“受难记”，以及最终如何通过 Docker 实现降维打击的填坑历程。&lt;/p&gt;
&lt;h2 id="-灾难的开始现代浏览器与上古协议的冲突"&gt;💥 灾难的开始：现代浏览器与上古协议的冲突
&lt;/h2&gt;&lt;p&gt;面对基于老旧 Supermicro 主板的 IPMI，我的第一反应是直接用浏览器打开管理地址。然而，噩梦开始了：&lt;/p&gt;
&lt;p&gt;现代浏览器早就彻底封杀了不安全的通信协议。无论我是用 Chrome，还是煞有介事地打开 Edge 的 IE 兼容模式，甚至是换用 Firefox，不是“过期的或不安全的 TLS 安全设置”，就是“PR_END_OF_FILE_ERROR”。因为这些老古董 IPMI 使用的是早已被废弃的 TLS 1.0 甚至更古老的弱加密算法。浏览器连登录界面都不让你看。&lt;/p&gt;
&lt;h2 id="-越陷越深ipmiviewer-与-java-security-地狱"&gt;🌀 越陷越深：IPMIViewer 与 Java Security 地狱
&lt;/h2&gt;&lt;p&gt;Web 端走不通，那就用官方推荐的方法：下载 IPMIViewer（官方基于 Java 的客户端工具）。&lt;/p&gt;
&lt;p&gt;但这引发了第二个深坑。现代版本的本地 JDK 同样对弱加密零容忍。网上的传统教程会教你：找到本地 JDK 目录下的 &lt;code&gt;java.security&lt;/code&gt; 文件，把里面禁用的 &lt;code&gt;TLSv1&lt;/code&gt;、&lt;code&gt;MD5&lt;/code&gt; 等弱加密算法从黑名单里删掉。&lt;/p&gt;
&lt;p&gt;我照做了，一顿操作猛如虎，满心欢喜地打开 IPMIViewer 输入 IP 和密码，结果等了半天，直接弹出一个无情的 &lt;strong&gt;&amp;ldquo;Connection failed&amp;rdquo;&lt;/strong&gt;。无论怎么调参数、换 Java 版本，就是连不上 KVM 控制台。本地环境被搞得乱七八糟，心态几近崩溃。&lt;/p&gt;
&lt;h2 id="-破局之道docker-容器化降维打击"&gt;🐳 破局之道：Docker 容器化降维打击
&lt;/h2&gt;&lt;p&gt;在折腾了许久毫无进展后，我意识到：&lt;strong&gt;用现代系统去向下兼容上古环境，本身就是一条弯路。&lt;/strong&gt; 最干净、最优雅的解法是：用 Docker 给它造一个原汁原味的“上古沙盒”。&lt;/p&gt;
&lt;p&gt;经过一番搜寻，我找到了一个堪称神器的开源镜像：&lt;strong&gt;&lt;code&gt;solarkennedy/ipmi-kvm-docker&lt;/code&gt;&lt;/strong&gt;。这个镜像专门为老旧 IPMI 设计，内置了匹配的 Java 环境和 VNC 桥接。&lt;/p&gt;
&lt;h3 id="操作步骤极其简单"&gt;操作步骤极其简单
&lt;/h3&gt;&lt;p&gt;只需在任意一台装有 Docker 的机器上（甚至是你的本地电脑）执行以下命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run -d &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --name ipmi-kvm &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -p 8080:8080 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; solarkennedy/ipmi-kvm-docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;见证奇迹的时刻：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;容器启动后，打开你本机的现代浏览器，访问 &lt;code&gt;http://localhost:8080&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;此时，你的浏览器里会通过 HTML5 NoVNC 渲染出一个极其清爽的虚拟桌面。&lt;/li&gt;
&lt;li&gt;在这个容器提供的浏览器里，输入你 ColoCrossing 服务器的 IPMI IP 地址。在这里，所有的 TLS 协议报错都不复存在。&lt;/li&gt;
&lt;li&gt;顺畅登录，点击 Launch KVM，下载 &lt;code&gt;.jnlp&lt;/code&gt; 文件并直接在容器内双击运行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;毫无阻碍，KVM 画面瞬间出现！没有 Connection failed，没有任何报错。&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://blog.uipad.com/images/2026/04/022103_ipmi_kvm.png"
loading="lazy"
alt="ipmi-kvm-古老超微服务器的救星"
&gt;&lt;/p&gt;
&lt;p&gt;用完之后，直接 &lt;code&gt;docker rm -f ipmi-kvm&lt;/code&gt; 销毁容器，深藏功与名，宿主机依然一尘不染。&lt;/p&gt;
&lt;h2 id="-意料之外的-boss-战kvm-画面假死"&gt;🛑 意料之外的 Boss 战：KVM 画面假死
&lt;/h2&gt;&lt;p&gt;本以为搞定了 KVM 控制台就可以挂载镜像、一路 Next 安装系统了。结果在尝试安装 Ubuntu 时，我又踩到了最后也是最隐蔽的一个坑。&lt;/p&gt;
&lt;p&gt;Ubuntu 的系统引导菜单正常显示，但一敲回车进入安装程序，KVM 画面就瞬间定格，仿佛死机了一样。键盘没反应，无论怎么重新连接 KVM 都没用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;背后的真相是：&lt;/strong&gt; 当 Ubuntu 等现代系统内核启动，并尝试启用 KMS (Kernel Mode Setting) 切换到高分辨率的现代图形安装界面时，老旧主板上的那颗负责“录制”KVM 画面的底层管理芯片根本无法解码这种高级别/高分辨率的画面，直接“瞎了”。系统其实没死机，还在后台等我点安装，只是我成了盲人。&lt;/p&gt;
&lt;h3 id="优雅的解决方案退守纯文本模式"&gt;优雅的解决方案：退守纯文本模式
&lt;/h3&gt;&lt;p&gt;既然复杂的图形驱动会搞瞎管理芯片，那就彻底放弃图形界面！&lt;/p&gt;
&lt;p&gt;放弃死磕 Ubuntu，我果断换用了 &lt;strong&gt;Debian 13 (Trixie)&lt;/strong&gt; 的 ISO。在启动引导菜单中，选择 &lt;strong&gt;&lt;code&gt;Command-line install&lt;/code&gt; (文本/命令行安装模式)&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Debian 经典的蓝黑相间字符安装界面虽然复古，它极其克制，绝不去触碰底层的复杂显卡驱动。在这个模式下，安装过程异常稳健，行云流水般就完成了磁盘划分（还顺手调教了 LVM 取消了 Swap 分区）和系统安装。&lt;/p&gt;
&lt;h2 id="-总结与启发"&gt;💡 总结与启发
&lt;/h2&gt;&lt;p&gt;这次 ColoCrossing 的装机之旅可谓一波三折，但也留下了极其宝贵的运维经验：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;容器化是跨时代运维的最强武器&lt;/strong&gt;：面对老旧的硬件和协议，不要试图去降级自己的主力系统，用 Docker 隔离运行特定的上古环境才是正解。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;克制即稳定&lt;/strong&gt;：在老旧服务器上，抛弃花里胡哨的图形安装界面，拥抱纯净的 Debian 文本模式，不仅能避开显卡驱动的暗坑，还能为后期的业务留出最极致的系统资源。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;底层基建搭好了，接下来就可以放心跑核心业务了。如果你对后续的高可用架构感兴趣，可以看看我的另一篇实践：&lt;a class="link" href="https://blog.uipad.com/post/2026-03/postgresql-cross-cloud-streaming-replication-with-ssl/" &gt;《独立开发者的异地灾备实践：PostgreSQL 跨云流复制与全链路 SSL 加固》&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;折腾不息，运维不止。祝各位的服务器永不宕机！&lt;/p&gt;</description></item></channel></rss>