编辑
2025-02-07
折腾
00
请注意,本文编写于 52 天前,最后修改于 52 天前,其中某些信息可能已经过时。

目录

前言
准备
项目介绍
DockerCompose + Traefik 一把梭
防薅

前言

众所周知docker hub需要上网辅助工具才能访问,但是给服务器部署上网辅助工具比较繁琐且有一定风险,所以搭建一个对docker hub的反代会更加合适。

准备

准备台能流畅拉docker image的服务器,一个域名。

由于我使用的是traefik,所以接下来的教程也会以traefik为准。

项目介绍

CRProxy,可以直接部署到dockerhub、ghcr等一大堆常用hub的反代的软件,基本上不需要配置,直接docker-compose一把梭即可。

DockerCompose + Traefik 一把梭

由于使用了traefik,有一个label用来令traefik能够识别容器并进行反代。

值得注意的是需要处理好证书,这里的tls.certresolver=就是traefik.yml中配置好的certprovider,根据情况做设定。

traefik.yml

yaml
certificatesResolvers: letsencrypt: acme: email: xxx@xxx.com storage: /etc/traefik/acme.json httpChallenge: entryPoint: web

docker-compose.yml

yaml
version: '3' services: crproxy: image: ghcr.io/daocloud/crproxy/crproxy:v0.8.0 container_name: crproxy restart: unless-stopped expose: - 8080 command: | --default-registry=docker.io tmpfs: - /tmp/acme labels: - "traefik.enable=true" - "traefik.http.services.crproxy-https.loadbalancer.server.port=8080" - "traefik.http.routers.crproxy-https.entrypoints=websecure" - "traefik.http.routers.crproxy-https.rule=Host(`xxx`)" - "traefik.http.routers.crproxy-https.tls.certresolver=letsencrypt" networks: - traefik-network networks: traefik-network: name: traefik-network

如果不喜欢traefik,可以把label和networks去掉,随后改用ports将8080端口映射出来,然后使用你喜欢的反代软件(nginx、caddy啥的)反代也是一样的。

接下来把域名解析到服务器上即可使用。

防薅

直接公开到公网上会有被薅羊毛的风险,故首先我将这个加速服务限制为仅有内网可以访问,在我的服务器和服务器间使用easytier组网,这样一来基本上杜绝了被其他人薅羊毛的风险。

具体来说,你需要在crproxy的label添加两行以限制访问的IP段:

- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=172.16.255.0/24, 172.30.255.0/24" - "traefik.http.routers.crproxy-https.middlewares=ipwhitelist@docker"

这里的traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange就是限制的ip段。

如果懒得使用easytier这类的工具组网,也可以使用ipwhitelist中间件限制可访问到加速节点的IP,实在不行也请把域名设置的复杂点,避免被人薅羊毛。

本文作者:Nature

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!