Ungoogled Chromium Binaries 离线部署实战指南
—— 跨发行版、多架构服务器环境下的"绿色版"精准获取与使用
1. 为什么选择 Ungoogled Chromium Binaries?
在离线、多发行版(EulerOS / Kylin / Ubuntu)、多版本且混合架构(x86_64 + ARM64)的服务器环境中部署 Chrome,官方 .deb/.rpm 包因对 glibc、NSS、GTK 等系统库的严格版本锁定而完全不可用。
Ungoogled Chromium Binaries 是 ungoogled-software/ungoogled-chromium 主仓库官方推荐的预编译二进制分发页面。它专门解决了以下核心痛点:
- 零/低系统依赖:Portable(便携)版本静态链接了大部分运行时库,不绑定特定版本的 glibc,真正实现"解压即用"。
- 双架构全覆盖:同时提供 x86_64 和 aarch64 (ARM64) 构建,完美适配信创鲲鹏/飞腾及传统 Intel/AMD 服务器。
- 去 Google 化:移除了所有 Google 私有服务、追踪器和 API 依赖,符合内网及信创环境的安全合规要求。
- 免 Root 权限:无需系统级安装,普通用户即可运行,避免污染宿主系统环境。
⚠️ 安全声明
该页面的二进制由社区贡献者构建,非可重现构建(non-reproducible)。若用于高安全合规环境,建议在隔离环境中自行从源码审计构建。对于一般内网服务器自动化、渲染、截图等场景,此方案是当前兼容性最优解。
2. 读懂下载页:没有搜索框,如何找到"绿色版"?
很多用户首次打开该页面时会困惑:没有搜索框,也没有"绿色版/安装版"的中文标签。这是因为该页面遵循开源社区惯例,按 平台 + 架构 + 构建类型 分类。
你需要建立以下概念映射:
| 页面表格中的名称 | 实际含义 | 对应 Windows 概念 | 是否推荐离线多系统环境 |
|---|---|---|---|
| Portable Linux 64-bit | 解压后直接运行的 tar.xz 包,自带依赖库 | ✅ 真·绿色版 | 强烈推荐 |
| Linux AppImage 64-bit | 自包含的 .AppImage 单文件 | ✅ 绿色版 | 推荐(仅 x86_64) |
| Portable Linux 64-bit (musl) | 针对 Alpine/Void 等轻量系统的静态构建 | ✅ 超级绿色版 | 老旧系统兜底 |
| Debian/Ubuntu (unportable) | .deb 包,需 dpkg 安装,强依赖系统库 | ❌ 安装版 | 绝对不要用 |
| Fedora/RHEL (unportable) | .rpm 包,需 rpm 安装,强依赖系统库 | ❌ 安装版 | 绝对不要用 |
💡 核心原则
只认准Portable和AppImage字样。凡是带有unportable、.deb、.rpm后缀的,一律跳过。
快速定位技巧
页面为静态生成,无搜索功能。请使用浏览器 Ctrl+F 搜索以下关键词:
- x86_64 绿色版 → 搜索
Portable Linux 64-bit - ARM64 绿色版 → 搜索
Portable Linux 64-bit ARM或aarch64 - 自包含单文件 → 搜索
AppImage
3. 下载与离线部署全流程
第一步:联网机下载
- 访问 Ungoogled Chromium Binaries
- 在表格中找到目标架构对应的 Portable 行,点击版本号链接(如
150.0.7871.128-1),跳转至 GitHub Release 页面。 - 下载对应文件:
| 目标架构 | 文件名示例 |
|---|---|
| x86_64 | ungoogled-chromium-150.0.7871.128-1-linux-portable.tar.xz |
| ARM64 | ungoogled-chromium-150.0.7871.128-1-linux-arm64-portable.tar.xz |
务必同时下载中文字体(离线服务器无 CJK 字体必然乱码):
wget https://github.com/notofonts/noto-cjk/raw/main/Sans/SubsetOTF/SC/NotoSansSC-Regular.otf第二步:离线服务器部署
将下载的文件通过 U 盘或内网传输至目标服务器后执行:
# 1. 创建目录并解压(无需 root)
mkdir -p /opt/chromium
tar -xf ungoogled-chromium-*-portable.tar.xz -C /opt/chromium --strip-components=1
# 2. 放置字体
mkdir -p /opt/chromium/fonts
cp NotoSansSC-Regular.otf /opt/chromium/fonts/
# 3. 赋予执行权限
chmod +x /opt/chromium/chrome
# 4. 验证动态链接库完整性(应全部显示 found 或 static)
ldd /opt/chromium/chrome第三步:运行测试
/opt/chromium/chrome \
--headless=new \
--no-sandbox \
--disable-gpu \
--disable-dev-shm-usage \
--font-path=/opt/chromium/fonts \
--screenshot=/tmp/test.png \
https://example.com确认 /tmp/test.png 生成且中文渲染正常,即部署成功。
4. 多架构统一启动脚本(生产环境推荐)
在混合架构集群中,建议封装 wrapper 脚本自动适配,屏蔽底层差异:
#!/bin/bash
# /usr/local/bin/chrome-headless
ARCH=$(uname -m)
CHROME_DIR="/opt/chromium"
FONT_DIR="${CHROME_DIR}/fonts"
case "$ARCH" in
x86_64)
CHROME_BIN="${CHROME_DIR}/chrome-x86_64"
;;
aarch64)
CHROME_BIN="${CHROME_DIR}/chrome-aarch64"
# ARM64 二进制缺失时回退到容器
if [ ! -f "$CHROME_BIN" ]; then
exec docker run --rm \
-v "${FONT_DIR}:/usr/share/fonts/custom:ro" \
zenika/alpine-chrome \
--headless=new --no-sandbox --disable-gpu \
--disable-dev-shm-usage \
--font-path=/usr/share/fonts/custom \
"$@"
fi
;;
*)
echo "Unsupported architecture: $ARCH" >&2
exit 1
;;
esac
exec "$CHROME_BIN" \
--headless=new \
--no-sandbox \
--disable-gpu \
--disable-dev-shm-usage \
--font-path="$FONT_DIR" \
"$@"调用方式统一为:
chrome-headless --screenshot=/tmp/output.png https://example.com5. 常见问题速查表
| 问题现象 | 根因 | 解决方案 |
|---|---|---|
GLIBC_2.xx not found | 宿主机 glibc 版本过低 | 换用 musl Portable 构建,或使用容器方案 |
| 中文显示方块/乱码 | 缺少 CJK 字体 | 添加 --font-path 指向 Noto Sans SC 或文泉驿字体 |
| Out of memory / 崩溃 | /dev/shm 空间不足 | 必须加 --disable-dev-shm-usage |
Running as root without --no-sandbox | root 用户运行 | 加 --no-sandbox(容器内或 root 下必需) |
| ARM64 无可用 Portable 构建 | 社区未覆盖该架构 | 使用 zenika/alpine-chrome ARM64 容器镜像替代 |
ldd 显示大量 not found | Portable 版仍依赖少量系统库 | 安装缺失基础库(如 libnss3),或换用完全静态构建 |
评论 (0)