使用 Docker-compose 安装 Kasm VNC Chromium 浏览器

23/12/2024 71点热度 0条评论

灵感/技术来源

https://docs.linuxserver.io/images/docker-chromium/

Chromium 安装版本

Version 131.0.6778.139 (Official Build) built on Debian GNU/Linux 12(bookworm) (64-bit)

这是一个基于 Kasm VNC 支持 X86-64/ARM64 部署的几乎全能的浏览器,支持各大流媒体,长时间 Web 端下载,Chromium 扩展插件,支持无缝剪切板,自动全屏(支持移动端),快捷键映射,WebRTC UDP 传输,WebP 压缩,在线文件管理,更是重量级的是支持本地输入法,可以从本地输入中文韩文等语言。
甚至支持调节视频传输码率,支持视频/音乐声音输出,以及麦克风语音输入(VNC 看 4K 不是梦),功能如此全面,那么,古尔丹,代价是什么呢?

[root@server]# docker images
REPOSITORY                     TAG       IMAGE ID       CREATED         SIZE
lscr.io/linuxserver/chromium   latest    dc5933dfa496   4 days ago      2.84GB
langren1353/chrome-cn          latest    91a806bdb506   13 months ago   677MB

它有着 2.84 GB 的巨大体积,而此前介绍的 Chrome 项目仅有 677 MB,是否值得为了更新的版本和更多的功能,付出 4 倍的存储空间就见仁见智了,各位还请按需选择。

项目目录结构如下

chromium/
    config/
    docker-compose.yml
        Downloads/
        ssl/

创建目录

mkdir chromium
cd chromium
touch docker-compose.yml
vim docker-compose.yml

编辑 docker-compose.yml

---
services:
  chromium:
    image: lscr.io/linuxserver/chromium:latest
    container_name: chromium
    security_opt:
      - seccomp:unconfined #optional 禁用安全限制,兼容旧设备
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Tokyo #时区
      - CHROME_CLI=https://www.linuxserver.io/ #optional
      - DOCKER_MODS=linuxserver/mods:universal-package-install
      - INSTALL_PACKAGES=fonts-noto-cjk # 安装 CJK 语言包
      - LC_ALL=zh_CN.UTF-8 # 设置中文
      - CUSTOM_USER=admin # 用户名
      - PASSWORD=admin # 密码
      #- TITLE =  # 默认标题为 Chromium
    volumes:
      - ./config:/config # 映射数据目录
    ports:
      - 3000:3000 # http 端口
      - 3001:3001 # https 端口
    shm_size: "2gb" # 内存大小建议不少于 1GB
    restart: unless-stopped

构建容器

docker-compose up -d

访问

http://yourhost:3000
https://yourhost:3001

如果 ip 访问正常,挂域名访问后出现 LastActiceAT 错误

                    KasmVNC encountered an error 
Uncaught TypeError: Cannot read properties of undefined (reading 'lastActiveAt')

在 nginx 对应 conf 配置文件的 location 模块中加入 WebSocket 支持

# WebSocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

以下是举例的 conf 配置文件,模块按需求添加即可

#  http
server {
    listen    80;
    server_name  your.domain.com;
    if ($host = your.domain.com) {
        return 301 https://$host$request_uri;
    }
}

#  https
server {
    listen    443 ssl;
    server_name  your.domain.com;
    location / {
        proxy_redirect off;
        proxy_pass https://127.0.0.1:3001;

        proxy_set_header  Host                $http_host;
        proxy_set_header  X-Real-IP           $remote_addr;
        proxy_set_header  X-Forwarded-Ssl     on;
        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto   $scheme;
        proxy_set_header  X-Frame-Options     SAMEORIGIN;

        client_max_body_size        100m;
        client_body_buffer_size     128k;

        proxy_buffer_size           4k;
        proxy_buffers               4 32k;
        proxy_busy_buffers_size     64k;
        proxy_temp_file_write_size  64k;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

 很符合我对 VNC 的想象

要是体积小点就更好了

pen Lens

这个人很懒,什么都没留下

文章评论