avatar

PiDIN

Play In Docker In NAS

  • 首页
  • 关于本站
  • 项目地址
  • 发布文章
Home 🚀 Docker中开箱即用的浏览器 | Chromium 浏览器即容器
文章

🚀 Docker中开箱即用的浏览器 | Chromium 浏览器即容器

Posted 17 days ago Updated 17 days ago
By srebro
19~24 min read

Chromium 介绍

image-20250425102809098

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;
        }
}

image-20250425110803073

image-20250425110851902

  • 可以同时打开多个浏览器,你会发现都是显示同一个内容,那岂不是可以作为 培训平台😊 ,用户直接打开浏览器就能看到相同的内容

image-20250425111043058

补充: 在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. 访问验证

  • 提示需要输入用户名/密码

image-20250425113154752

🎁 获取Chromium

  • CNB 仓库地址:Chromium
网络工具
网络工具
License:  CC BY 4.0
Share

Further Reading

May 6, 2025

三分钟搭建私有云存储!File Browser轻量级文件管理神器

File Browser 介绍 FileBrowser 在指定目录中提供了一个文件管理界面,可用于上传、删除、预览、重命名和编辑您的文件。它允许创建多个用户,并且每个用户都可以拥有自己的目录。它可以用作独立应用程序。 🚢 项目地址 Github: https://github.com/filebr

May 5, 2025

Sun-Panel | 一款小而美的NAS导航面板,上手简单

Sun-Panel 介绍 Sun-Panel 是一个简单、易用、美观的NAS、服务器导航面板、支持简易docker管理器、Homepage、浏览器首页。 🚢 项目地址 Github:https://github.com/hslr-s/sun-panel 官网: https://doc.sun-pa

May 1, 2025

Etherpad,又一款强大的实时协作Markdown工具 | OpenEuler 社区SIG Meeting同款工具

Etherpad 介绍 Etherpad是一种开源的实时协作编辑器,允许多个用户同时编辑同一文档,并实时显示每个用户的输入内容。Etherpad最初由Etherpad基金会开发,后来被Google收购,现在由Apache软件基金会维护。Etherpad可以用于协作编辑文档、记录会议纪要、编写代码等多

OLDER

一个简单&强大的 私有化Web思维导图 | SimpleMindMap 8.8K ⭐

NEWER

给Nas换新装!DPanel可视化管理Docker(新手友好)

Recently Updated

  • 从厨房到储物间:Grocy 家庭的智能物资管理助手
  • 三分钟搭建私有云存储!File Browser轻量级文件管理神器
  • 📚️ TaleBook | 用NAS打造私人图书馆,一款基于Calibre的个人图书管理器
  • Sun-Panel | 一款小而美的NAS导航面板,上手简单
  • Etherpad,又一款强大的实时协作Markdown工具 | OpenEuler 社区SIG Meeting同款工具

Trending Tags

网络工具 无线电 人工智能 智能家居 影音娱乐 阅读学习

Contents

©2025 PiDIN. Some rights reserved.

Using the Halo theme Chirpy