🚀 Docker中开箱即用的浏览器 | Chromium 浏览器即容器
Chromium 介绍
Chromium 是一个开源浏览器项目,旨在为所有用户构建一种更安全、更快速、更稳定的 Web 体验方式。
🚢 项目地址
- 项目代码地址:https://chromium.googlesource.com/chromium/src.git
- 官网: https://www.chromium.org/Home/
- 镜像地址: https://docs.linuxserver.io/
🚀Chromium 容器化特性
- 环境隔离与一致性:无论是在开发机、测试服务器还是生产环境,容器化的 Chromium 都能保持完全相同的运行条件,消除“在我机器上能用”的问题。
- 一键启动:通过容器镜像(如 Docker Image),可以在任何支持容器化的平台上秒级启动 Chromium 实例,无需手动安装或配置依赖。
- 无缝集成 CI 工具:在 Jenkins、GitHub Actions 等持续集成系统中,通过容器化 Chromium 直接运行自动化测试,无需预装浏览器或手动配置环境。
- 低资源开销:相比虚拟机,容器共享主机内核,资源占用更低,适合高密度部署(如同时启动数十个浏览器实例进行压力测试)。
- 快速启停:容器化的 Chromium 可快速创建和销毁,节省测试和维护时间。
- **跨平台兼容性:**容器化的 Chromium 可以在 Linux、Windows、macOS 等不同操作系统上运行,确保团队协作或跨平台应用的行为一致性。
🛠️ 部署 Chromium容器版本
👻 先决条件/要求
- 最低 1GB RAM(推荐 2GB+)
- 具备docker,docker-compose 环境
🐳 使用Docker Compose部署
- 此镜像已经封装好了字体在容器中,无需再单独挂载字体
services:
chromium:
image: docker.cnb.cool/srebro/pidin/chromium:latest
container_name: chromium
hostname: chromium
shm_size: "2gb"
restart: unless-stopped
security_opt:
- seccomp:unconfined # 仅对于 Docker 引擎,如果没有它,Chromium 将在无沙箱测试模式下运行。
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai # 设置容器所属时区
- CHROME_CLI=https://pidin.srebro.cn/ # 默认打开的网址
- LANGUAGE=zh_CN:zh
- LANG=zh_CN.UTF-8
- LANG=C.UTF-8 # 设置本地语言为"C.UTF-8",让KasmVNC支持中文输入
- TITLE=Pidin # 设置页面的标题
volumes:
- ./config:/config
- /var/run/docker.sock:/var/run/docker.sock # 挂载docker.sock配置文件
ports:
- 3010:3000
- 3011:3001
devices:
- /dev/dri/:/dev/dri # 使用GPU加速
浏览器访问Chromium 地址:http://ip:3010/
🧭 使用Nginx反向代理
#chromium
server {
listen 443 ssl;
server_name chromium.srebro.cn; ##替换成自己的域名
error_page 404 /404/404.html;
charset utf-8;
ssl_certificate /home/application/nginx/cert/srebro.cn.pem;
ssl_certificate_key /home/application/nginx/cert/srebro.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-wiz-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3010;
}
}
- 可以同时打开多个浏览器,你会发现都是显示同一个内容,那岂不是可以作为 培训平台😊 ,用户直接打开浏览器就能看到相同的内容
补充: 在Nginx 中为页面配置用户名密码认证
上面我们直接通过Nginx 反向代理了 浏览器,但是放在公网访问,很危险,这时我们可以对 页面配置用户名密码认证
1. 安装 htpasswd
工具
生成密码文件的工具 htpasswd
位于 Apache 工具包中,按系统安装:
# Debian/Ubuntu 系统
sudo apt-get install apache2-utils
# CentOS/RHEL 系统
sudo yum install httpd-tools
2. 创建用户名密码文件
运行以下命令生成密码文件(保存在 /home/application/nginx/.htpasswd
):
htpasswd -c /home/application/nginx/.htpasswd pidin
New password:
Re-type new password:
Adding password for user pidin
按提示输入密码,文件将包含加密后的凭证。
3. 配置 Nginx
#chromium
server {
listen 443 ssl;
server_name chromium.srebro.cn; ##替换成自己的域名
error_page 404 /404/404.html;
charset utf-8;
ssl_certificate /home/application/nginx/cert/srebro.cn.pem;
ssl_certificate_key /home/application/nginx/cert/srebro.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
auth_basic "Restricted Access"; # 认证提示标题
auth_basic_user_file /home/application/nginx/.htpasswd; # 指向密码文件
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-wiz-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3010;
}
}
4. 访问验证
- 提示需要输入用户名/密码
🎁 获取Chromium
- CNB 仓库地址:Chromium
License:
CC BY 4.0