群晖docker 安装 chrome,访问服务器内的页面

本文将基于 DSM 群晖操作系统,利用 docker 容器管理,简单介绍 chrome 的安装。

背景

由于群晖系统没有自带的浏览器,难免有一些访问本地页面的需求。如路由器的管理页面,以及一些本地不适合放到公网访问的页面等。基于此需求,可以在docker(现名称Container Manager)中安装 chrome 的内核,来实现浏览器的效果。

前提

  1. 确保你的群晖已经安装了 docker (新版叫container Manager),如下图所示。
    container Manager
  2. 请确保您的docker 能访问到docker hub 的镜像源(由于一些众所周知的原因,目前的docker hub在一般情况下是无法被访问到的)

参考文章:docker 内 clash 的安装可以查看 群晖 DSM 安装 clash

安装

下载镜像

在docker中选中注册表,右侧搜索 oldiy (网上很多文章推荐的是这个,本篇文章基于这个镜像给出)

image-20241027131636279

双击后下载,就会在映像选项卡中找到它。

运行容器

点击映像,点运行,下一步

image-20241027132027314

端口设置里填一下自己的映射。我这里不用默认的5900和8083,是怕这些端口被扫到,改一个端口防止不必要的攻击。

5900对应的是http,8083对应的是https端口

运行好后,进入网页看看情况

访问URL为: https://{本机ip}:1003/vnc.html

image-20241027132635370

界面长这样,点击连接后就可以正常进入浏览器了。

为浏览器设置密码

这一步很重要!!!

尤其是你希望你的chrome在外网开放的时候。一定不要小瞧这些攻击者,等到真的出事就晚了!

点击操作-打开终端机 (也可以直接ssh进去sudo docker exec -it 容器名 /bin/bash 这里只演示界面操作)

image-20241027132833679

点击新增-bash

image-20241027132927726

设置密码(在界面上想要粘贴命令,要先按Ctrl + A 再按 Ctrl + V 才能粘贴)

1
x11vnc -storepasswd

image-20241027133312539

让容器启动时自动加载密码配置, 先安装VIM工具;

1
apt install vim -y

然后执行如下修改设置默认加载;

1
vi /etc/supervisor/conf.d/supervisord.conf

在 command=/usr/bin/x11vnc 后面,加上:

1
-rfbauth /root/.vnc/passwd

(在vi中要先按一次 i 才可以输入)

如图

image-20241027133428308

保存退出(按键 :先 Esc ,然后输入 :wq 再按回车 )

重启容器

可以看到现在的连接就需要输入密码了

image-20241027133756522

为应用端口在路由器中设置端口映射。使能外网访问

因为大家的路由器都不一样,这里只是用我自己的小米路由器做参考。

一般都是有端口映射功能的,找到它,然后添加一条

image-20241027134012934

完成了,现在你就可以在外网,通过映射的端口,访问nas内的浏览器,访问本地应用了

博主目前主要用这个浏览器访问一些敏感内容,如clash的配置,路由器设置,以及用它来测试nas内部应用的部署情况

群晖在ddns配置下,检测ip使用直连模式的 clash 配置

前提条件

  1. 使用的动态 dns 配置,使本地的群晖服务器在外网可访问
  2. docker 内安装了 clash,导致了动态 dns 检测到了机场服务商的 ip。

docker 内 clash 的安装可以查看 群晖 DSM 安装 clash

问题

image-20241020214625670

在 ddns 点击立即更新的时候,会从服务器向群晖指定的某个网址发送请求,但由于这个请求走了代理,导致服务器以为我们的ip是机场代理商的ip。

解决方案

进入上一篇文章中提到的 clash 控制台前端页面。点击 日志 选项卡

在这里可以看到之前命中的各条规则。如果找不到日志的话,可以在前面的ddns界面点击一次 立即更新 按钮

我图片中展示的是已经修改完配置文件后的样例,命中的是 using DIRECT 走直连。如果各位的 DDNS 展示的是机场服务商 ip 而非本机 ip 的,这里一般会命中一条走对应规则的记录。

对了,顺带一提,记得不要开全局模式。配置在这里

image-20241027114724711

那接下来问题就很简单,该配置文件让访问群晖的ip探测地址时,不要走代理就行了。找到config.yaml

image-20241027114941897

我添加了很多条,这里对于群晖的ip检测,一般添加红框内这一条已经足够了

1
2
3
4
5
6
7
8
9
10
- DOMAIN-SUFFIX,whatismyip.akamai.com,DIRECT
- DOMAIN,whatismyip.akamai.com,DIRECT
- DOMAIN-SUFFIX,synology.com,DIRECT
- DOMAIN-SUFFIX,synology.cn,DIRECT
- IP-CIDR,68.183.160.0/20,DIRECT
- DOMAIN,checkip.synology.com,DIRECT
- DOMAIN,checkipv6.synology.com,DIRECT
- DOMAIN,checkport.synology.com,DIRECT
- DOMAIN,ddns.synology.com,DIRECT
- DOMAIN,account.synology.com,DIRECT

记得不要放在最最后边,因为一般config.yaml的最后,有一条什么都匹配不上时的规则,如我这里的 - MATCH, others 会走Others对应的代理。如果- DOMAIN,checkip.synology.com,DIRECT放在最后边的话,优先级关系是会先命中 - MATCH, others `

修改完成后,重新启动一下clash (我是没找到重新加载配置的命令, 直接重启了)

再次尝试ddns刷新配置,发现可以正常映射为本机ip了。大功告成

如果还有不行的小伙伴,也可以用上述方法看clash的日志,看看它到底是命中了哪一条规则。关于规则的介绍:https://clash.wiki/configuration/rules.html

群晖DSM安装clash

本文将基于 DSM 群晖操作系统,利用 docker 容器管理,简单介绍 clash 的安装。

前提条件

  1. 本篇文章基于读者已有可用机场资源,文章将不包含机场推荐
  2. 确保你的群晖已经安装了 docker (新版叫container Manager),如下图所示。
    container Manager

将 clash 镜像导入 docker

由于近些日子,dockerHub 在特定情况下(特指clash安装前)可能无法访问。此时打开注册表大概率长这个样子

所以就下载不到clash,然而不下载 clash 又无法访问 docker 注册表,由此进入死循环。

下面提供几种解决方案

方案一: 临时本地 pc 开启 LAN 访问 (推荐)

打开另一台已经安装好clash的电脑,选好节点,然后点击Allow LAN

然后进入nas控制面板,找到网络,选择代理服务器,如下填写

然后就可以在 docker 中搜索安装clash了,我们选最多星星的这个

方案二:本地下载好镜像后上传至 nas 中安装

* 不推荐这种安装方式,除非就是上面的方案一不可选择的情况

如果 nas 连接本地困难的话,也可以选择在本地先下载好镜像(需要本地拥有能连接外网的docker)。

1
docker pull clash

选好对应的版本

1
docker save -o clash.tar clash:latest

然后到处到本地。访问群晖页面,选到映像

导入进去

方案三:去网上找到一个国内可访问的 镜像地址

这个只能说看运气,网上搜一搜。作者尝试这个方案的时候,就没有找到一个可以使用的国内镜像源。

配置文件和前端ui准备

这里仅做页面配置方案的启动,如果想用 docker 命令行启动的同学,配置是类似的。

1.创建本地配置文件目录,并将原来 clash 配置中的 config.yaml 复制进来

2.下载一个ui管理界面前端(强烈建议要装前端ui,否则某个节点挂的时候,每次都需要修改配置文件或者登录ssh去更改成本非常高)。

如果实在不愿意自己搭建的,有一个在线的网站。
https://clash.razord.top/#/proxies

但这种是个人网站,什么时候挂了也说不定。自己搭建好得多。

这个前端ui目前还是可用的,将其下载下来后,也放在同一个目录下。
本地目录如图所示,例如我的本地目录路径是 /docker/clash

正常应该只有红框中的两个就可以了。

修改配置使前端可访问

打开config.yaml

按如图所示配置:

记得将密码修改为你自己的登录密码。这里ui路径的 /root/ui 是实际容器内的路径。具体的路径映射我们会在下一步完成,这里照抄我的就可以了。

配置容器的路径挂载和端口映射

  1. 进入Container Manager中的镜像,选中 dreamacro/clash ,点击运行,第一个页面没什么需要配置的。直接点击下一步

  2. 在端口设置中新增两条 7890 和 9090 端口对应的外部端口,我这边依旧选择 7890 和 9090. 新增两条存储空间设置,左边的路径选择上一步中配置文件的文件路径。右边的容器内路径可以照抄我的
    image-20241020201326558

  3. 点击下一步,启动容器,在容器选项卡中找到这个容器。双击打开日志,大概长这样
    image-20241020201552898

  4. 尝试通过网页访问 9090 端口,查看网页 http://你的设备ip:9090/ui/ 填写127.0.0.1:9090并输入密码
    image-20241020203947029

  5. 检查下配置页面有没有问题
    image-20241020201805863

  6. 选择你中意的节点,这一步我相信你会的

  7. 然后进入nas控制面板,找到网络,选择代理服务器,将代理服务器地址填写为容器内的7890
    image-20241020202029252

  8. 大功告成,你可以ping一下google 或者在container manager中,点击网络注册表,测试一下连通性

你可能还会遇到

  1. clash 配置后,我通过 ddns 配置的域名,指向的是机场运营商的ip 而非我的公网本地 ip,怎么解决?

    请查看下一篇文章: 群晖在ddns配置下,检测ip使用直连模式的 clash 配置

  2. 我的公网ip指向的是路由器的端口映射,我家路由器不支持在群晖中配置端口转发,我如何在公网访问并添加ip?

    todo 请看下一篇文章:群晖docker 安装 chrome,访问服务器内的页面