MENU

私服加速

• 2023 年 06 月 01 日 • Linux

私服加速使用

在内网搭建私有服务器方便更快速地访问外网资源,提供一些常见外网仓库加速。同时私服还提供内网仓库托管,对于一些公司内部发布的资源,则需要使用内网托管,避免发布到外网造成数据泄漏。

目前提供加速的私服仓库有:

  • pypi
  • npm
  • dockerhub:仅支持加速拉取,暂不支持加速推送。
    maven

目前提供私有托管的仓库有:

  • pypi-private
  • docker-private
  • npm-private
  • helm-private

网站访问

网站访问可以通过 http 或 https 来访问。当访问网站时,浏览器页面会显示 你的连接不是专用连接 。这是因为浏览器获取 tls 证书时,发现证书的颁发者不可信。点击页面中的 NET::ERR_CERT_AUTHORITY_INVALID 会展开当前域名证书的概要。从证书概要中可以看到证书的颁发者是 Issuer: Zncdata ROOT CA 1 。这个颁发者是我们手动创建的。

此时有两种方法跳过证书检查,继续以不安全的方式访问。

方法一:

点击页面中的 高级 ,会展开隐藏内容,点击 https://repo.iloveyou.cn 继续访问 (不安全) 的链接,然后浏览器会以不安全模式访问该页面。

但是对于一些没用高级隐藏内容的网站可以使用方法二继续以不安全模式访问。

方法二:

刷新该页面,直接使用键盘输入 thisisunsafe ,此时浏览器会跳过证书验证,以不安全模式访问。

在浏览器访问时跳过证书检查会比较简单,但是当程序使用私服仓库下载内容时,跳过证书检查往往比较麻烦。为了减少后续麻烦,可以将根证书颁发者即 CA 机构根证书添加到操作系统的证书信任列表中,这样基于该证书颁发的证书就是可信的。

CA 根证书内容如下:

-----BEGIN CERTIFICATE-----
MIIFizCCA3OgAwIBAgIUe8XvwJNQoMxgks8GSmIEY9zCGCQwDQYJKoZIhvcNAQEL
BQAwVDELMAkGA1UEBhMCQ04xETAPBgNVBAgMCFNoYW5nSGFpMREwDwYDVQQHDAhT
aGFuZ0hhaTEMMAoGA1UECgwDd2hnMREwDwYDVQQDDAhjbi53aGcuKjAgFw0yMzA2
MDEwNzMwMjRaGA8yMTIzMDUwODA3MzAyNFowVDELMAkGA1UEBhMCQ04xETAPBgNV
BAgMCFNoYW5nSGFpMREwDwYDVQQHDAhTaGFuZ0hhaTEMMAoGA1UECgwDd2hnMREw
DwYDVQQDDAhjbi53aGcuKjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
ALTNxeBmHACPdQN08yUUUjTKJclwbdsyAZvjoUzQxeJtwTPsQ5q5k6/e9lTasQEV
q8dWQQmgmaemepmG7KAGUQpA+OKDMfWbXbat5viUWaoxN+1CyYRooa2ZZ8h00D52
Zh03RG36Hoyen5rxJQeNfaZvM8QZ3IaqF6ABjq1C/gL9dQ13BT0y4hmiH6QmLtFh
UfZ7MDsgSehVwS+BPRvgqA6eJhdtycYGxtCn4aJm9eFDviFn4cMFFTGKqxwxZsHA
aka+ROZG7GhgsUux1SDgS8dZUzzG1SpcLJo5lAGJPnIVBwnATu9lqyua7jj1JJ5v
zDry/FvNpyA4CUmdoQRDNyj1G9n8ONEM2yPjGdCLMij5t8Fi79H8Rq/yM9SC7/e1
s0FX7pYaYFct7OZ+rKjvDAn1nTM+DPMHi33JgpI/UNhIuOGlEdrUgqgqpnTiH6Ss
NXXYndZVBRDrMJgMDWiEazzTAD2kFJ31Wat6g7chQlAeYVpGDQAa8NMneTbT/LcK
vZtIlu2fjqeXpvH9FUZwIVSFmtQ07ZzumHt16yLDSSL3ozcBGY65M/MdqpxHh9yR
xO0/43YF2ggbl9pnHzXYqC8g68ESwDTdWarxTewRMR0AszEe7xUMnjLl48UmFErC
madwPR/tvm47ij2xeq+pkjrpZ9IijN7HahIJEbHhtwQbAgMBAAGjUzBRMB0GA1Ud
DgQWBBTeoTCKb7qyHRLezoyf3K2Q8JLmSDAfBgNVHSMEGDAWgBTeoTCKb7qyHRLe
zoyf3K2Q8JLmSDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQA7
I4x1uyhG1Ns7MjHkoq+YM/H9nkqlK+oDmJ0WA/mCWLuLxiGAUFUxpU+e6xygfHdH
y4ckQEh1Vc1HvTLdFmoNYdlKF2nUccSrnWszhU626YbMC1vk5phBmAi5CWpbJtvB
gK4buJd/kKdbB+g9kvQi/X4Qi06UD4khv6dJLqZJLMTzTFAaAYAz5D9dutiGihjj
GQlw+oUQe1sGdlsqeScIv6gfBoATEuDY5lWAV1Ae2yKr4+R5PzzEyOsF6q/MnIE9
x4I1PjMFMQJ0AyQ0CWdfP4Q0XR1TbnvMzZtVOXaSZHNu5Fn4mK56C7Hvdf3jtdoC
VP8L06heGLAD67Epfd751MddVMfBsGFQBvZ5O5J59qvVEDBtByNAJ+rvrMmDJYPm
qT65m7m0gpKepQXx8DcMqUalwrtjAyj0gVDekLQPcXtdRE9bB/DCQ8nV19IGJOAk
dCWN6dbEecnAa3HLVoglYb0lLHvdN/fdYm4T+4YCNmsW80QDPO0Pb5rhFywmdfnW
/vD7BR2/pdsRY3NNC+9s82w8RryzDchD9dDUlp1A/c4/hLXTNEBMUc/JqICRdj5W
bQG83AkTv9mhM/rKC4nxKPggMxSNHprlptlG99g5d9XuOtPrhlCxwG58O+b3bLHF
dHojVHhNaHolOXBcOBZ6Uv1FnidKPYA8XdJysXz//g==
-----END CERTIFICATE-----

将该内容保存为 ca-iloveyou.crt 文件为后续操作做准备。

注意:文件内容包含 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 这两行!

为 Windows 添加私有根证书

以下操作环境为 Windows 11 ,其他操作系统如有不同,请自行调整。

将根证书文件 ca-zncdata.crt 放到桌面。
右击根证书文件,选择安装证书
选择证书导入位置为 本地计算机 。下一步
选择 将所有的证书都放入下列存储,点击 浏览 ,选择 受信任的根证书颁发机构 ,下一步
点击完成,然后提示 导入成功
访问 https://repo.iloveyou.cn ,浏览器显示一切正常,地址栏上的锁显示正常。

为 Mac 添加私有证书
以下操作环境为 Macos Venture 13.0.1 ,其他版本如有不同,请自行调整。

打开 钥匙串访问 程序。可以通过 ⌘ + 空格 调出全局搜索,然后输入 钥匙串访问 打开程序
点击左侧 系统钥匙串 下的 系统
点击右边标签栏中的 证书
将 ca-zncdata.crt 证书文件拖入右侧区域,此时证书列表中可以看到添加的证书。但是会显示证书不被信任
右击证书,选择 显示简介
在证书简介中,展开 信任
将 使用证书时: 的条件选择为 始终信任 ,然后关闭证书简介
此时证书列表中的该证书显示为 次证书已标记为所有用户信任
访问 https://repo.iloveyou.cn ,浏览器显示一切正常,地址栏上的锁显示正常。

为 Linux 添加私有证书

CentOS/Fedora/RHEL

# CentOS/Fedora/RHEL
yum install ca-certificates
# 启用动态 CA 配置功能:
update-ca-trust force-enable
cp ca-zncdata.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust

Debian/Ubuntu/Gentoo

# - 安装
sudo cp root_ca.crt /usr/local/share/ca-certificates/root_ca.crt
# update-ca-certificates 会添加 /etc/ca-certificates.conf 配置文件中指定的证书
#   另外所有 /usr/local/share/ca-certificates/*.crt 会被列为隐式信任
sudo update-ca-certificates

# - 删除
sudo rm /usr/local/share/ca-certificates/root_ca.crt
sudo update-ca-certificates --fresh

Alpine

# Alpine
apk update && apk add --no-cache ca-certificates
cp root_ca.crt /usr/local/share/ca-certificates/
update-ca-certificates

OpenSUSE/SLES

cp root_ca.crt /etc/pki/trust/anchors/
update-ca-certificates

私服仓库配置

python

python 环境使用 pypi 仓库安装发布的软件。默认使用 pip 命令安装,在一些现代虚拟环境管理工具中,一般都会有自己的配置,比如 poetry 和 pipenv 都有项目级别配置文件指定仓库地址,所以在使用时需要额外配置。

pip

运行命令:

pip config set global.index-url https://repo.iloveyou.cn/repository/pypi/simple

poetry

TODO

pipenv

TODO

docker

docker 的安装分为两种模式,一种是桌面环境中,使用 Docker Desktop 图形化安装和使用,一种是 Linux 服务器环境,使用 docker-ce 或者 docker-ee 安装使用。

而在使用使用证书时,既可以将证书设置到系统信任,也可以直接配置 docker 信任。对于根证书,建议将其加入到系统信任,服务证书,使用 docker 配置即可。

Docker Desktop

进入 docker desktop 配置目录:

Windows 目录在 C:/Users/{Username}/.docker/
Mac OS 目录在 /Users/{Username}/.docker
打开配置文件 daemon.json ,增加 registry-mirrors ,并加入私服地址 https://docker.iloveyou.cn 。调整后文件内容如下,部分参数可能不一样:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors":[
    "https://docker-private.iloveyou.cn",
    "https://docker.iloveyou.cn"
  ]
}

然后重启 Docker Desktop 。

在终端使用:

docker pull python:3.10

docker ce

添加私有仓库证书

创建私有仓库证书目录

mkdir -p /etc/docker/certs.d/docker-private.iloveyou.cn

将证书放入目录下

mv ca-iloveyou.crt /etc/docker/certs.d/docker-private.iloveyou.cn

编辑daemon.json文件

加入私有仓库地址

sudo vi /etc/docker/daemon.json

文件内容:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors":[
    "https://docker-private.iloveyou.cn",
    "https://docker.iloveyou.cn"

    ]
}

如果不添加证书,应添加: "insecure-registries" : ["https://docker.iloveyou.cn"]

重启服务

systemctl daemon-reload
systemctl restart docker

登录私服

docker login docker-private.iloveyou.cn

查看镜像

sudo docker images

给镜像打标签

docker tag SOURCE_IMAGE[:TAG] docker-private.iloveyou.cn/TARGET_IMAGE[:TAG]

推送镜像

docker push docker-private.iloveyou.cn/TARGET_IMAGE[:TAG]

npm

maven