由于群晖的特殊设计,在使用加速源时无法正常使用搜索功能,该教程是通过Web Station的nginx代理功能在使用加速源时适配搜索。
申请DDNS域名以及证书(如果已经有信任的HTTPS证书可以跳过该步骤)
在 控制面板 -> 外部访问 -> DDNS 中创建一个群晖的DDNS解析并额外勾选获取证书。
确认在 控制面板 -> 安全性 -> 证书 中是否有对应的可信任证书。
在Web Station建立托管网页
建立静态网站
在 Web Station -> 网页服务 中新增一个静态网站:
自定义名称和描述,文档根目录点击浏览然后在web共享文件夹中新增一个自定义文件夹并选择即可,后端服务器保持Nginx:
确认创建:
建立网页服务
在 Web Station -> 网页门户 中新增一个网页服务门户:
服务选择之前建立的静态网站,门户类型选择基于端口,输入自定义https端口这边使用的是36443
:
调整托管网页证书
在 控制面板 -> 安全性 -> 证书 设置 将对应托管网页端口36443
切换为DDNS证书域名。
修改底层配置
参考以下教程,使用SSH登录到NAS并切换到root:
https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet
修改解析配置
修改 /etc/hosts 将对应https证书域名解析到本机:
echo "127.0.0.1 dptest2.synology.me" >> /etc/hosts
检查配置是否正确:
cat /etc/hosts
检查解析是否正常:
ping -c 5 dptest2.synology.me
修改托管网页配置
查询托管网页的serivce id
,这边配置托管网页的端口是36443
就使用36443
进行搜索:
cat /var/packages/WebStation/etc/Portal.json | grep -A 4 https_port | grep -A 4 36443 | grep '"service"' | awk -F'"' '{print $4}'
这边查询到托管网页的serivce id
为7b114047-97fc-4282-86ea-95c5b18cbf9c
,然后使用该ID创建对应的路径以及配置文件:
创建路径:
mkdir /usr/local/etc/nginx/conf.d/7b114047-97fc-4282-86ea-95c5b18cbf9c
创建配置文件:
vi /usr/local/etc/nginx/conf.d/7b114047-97fc-4282-86ea-95c5b18cbf9c/user.conf
以下为配置文件内容,请按需调整。
其中location /
与location /v1/search
是UI搜索用的镜像站,需要通过以下命令测试对应镜像站是否有镜像搜索页面:
curl "https://docker.1ms.run/v1/search?q=library/&n=50&page=1"
如果有返回类似以下信息则说明可用:
如果返回404、503则说明不可用:
这边用的是docker.1ms.run
,如果要使用其他的镜像站则需要将所有proxy_pass
和proxy_ssl_name
修改,各有两处:
location / {
proxy_pass https://docker.1ms.run;
proxy_ssl_name docker.1ms.run;
proxy_ssl_server_name on;
}
##修复搜索
location /v1/search {
if ($arg_q ~* ^library/(.*)) {
set $new_q $1;
}
if ($arg_q = library/) {
set $new_q library/;
}
if ($new_q = "") {
set $new_q $arg_q;
}
proxy_pass https://docker.1ms.run/v1/search?q=$new_q&n=$arg_n&page=$arg_page;
proxy_ssl_name docker.1ms.run;
proxy_ssl_server_name on;
}
添加以上内容到托管网站的配置文件内。
可以通过vi并进入粘贴模式:set paste
目前测试以下网址可以正常工作:
docker-0.unsee.tech
docker.hlmirror.com
docker.1ms.run
粘贴完成后检查配置文件内容是否如下:
通过以下命令检查配置是否正常:
nginx -t
使用以下命令让配置生效:
systemctl reload nginx
Containr Manager连接托管网页
在 Containr Manager 注册表 -> 设置 选择新增注册表,添加站点名称以及之前配置的托管网页与端口:
https://dptest2.synology.me:36443
选择使用托管网页注册表查看是否可以正常搜索:
部分镜像源可能没有提供标签功能只能下latest:
查看是否可以正常下载: