自建代理全教程:从零到顺畅访问 GitHub / Hugging Face / Docker
本文最后更新于 45 天前,其中的信息可能已经有所发展或是发生改变。

如果你还没有合适的服务器,可以看看 雨云 的入门套餐作为起点;也欢迎把这套流程分享给同样被 GitHub 折磨的朋友。

为什么你需要一个自己的通道

国内访问 GitHub、Hugging Face、Docker Hub 的体验,懂的都懂:克隆仓库动不动超时、拉模型下到一半断流、docker pull 卡在 waiting……换镜像源、改 hosts、各种临时方案治标不治本。

买机场?价格倒是便宜,但节点质量参差、晚高峰排队、还要担心跑路。于是很多开发者选择自己搭一个通道:可控、稳定、不共享、想换就换。

这篇教程会带你从一台全新的境外服务器开始,完成一个「双通道」代理:TCP 通道负责日常稳定,UDP/QUIC 通道负责网络拥堵时兜底。全程不需要装 Nginx、不需要数据库、不需要可视化面板——一个 Xray 二进制 + 一个配置文件就够。

⚠️ 动手前请先备份服务器上的重要数据。本文涉及服务器端配置修改,操作有风险,请按步骤谨慎进行。

准备工作:三样东西

  1. 一台境外 VPS(推荐香港/日本等低延迟地区,内存 512MB 以上即可)
  2. 一个域名(用于申请可信证书,也便于伪装;新手也可先用自签证书体验,见第三节备选)
  3. 一个客户端(Clash Verge / mihomo 系,或 v2rayN)

服务器选购这里多说一句:预算有限的话可以从年付的小机器起步。我用过 雨云 的入门款,性价比不错,支持支付宝、按量灵活,适合先跑通再升级。当然,选任何一家都行,核心是地区离你近、线路稳定。

第一步:DNS 解析

把你要用的子域名指向 VPS 的公网 IP(在域名服务商后台添加 A 记录):

类型: A
主机记录: node
记录值: 你的服务器IP

也就是让 node.your-domain.com 能解析到服务器。等待几分钟后可用 ping node.your-domain.com 验证。

第二步:申请证书

方式 A(推荐):Let’s Encrypt 真证书

有域名就能申请免费可信证书,让通道在外部看起来和普通 HTTPS 网站无异。服务器上执行:

# 安装 acme.sh
curl https://get.acme.sh | sh -s [email protected]

# 用 standalone 模式申请(临时占用 80 端口,不需要 Nginx)
~/.acme.sh/acme.sh --issue --standalone -d node.your-domain.com

# 安装证书到固定目录(后续 Xray 读取)
~/.acme.sh/acme.sh --install-cert -d node.your-domain.com \
  --key-file /usr/local/etc/xray/privkey.pem \
  --fullchain-file /usr/local/etc/xray/fullchain.pem \
  --reloadcmd "systemctl restart xray"

acme.sh 会注册定时任务自动续期,证书快到期前自动重新签发并重启 Xray,无需人工干预。

方式 B(快速体验):自签证书

如果暂时不想用域名,可以自签一张先用起来(客户端需要关闭证书校验,伪装效果打折,但功能完整):

mkdir -p /usr/local/etc/xray
openssl req -x509 -newkey rsa:2048 -nodes -keyout /usr/local/etc/xray/privkey.pem \
  -out /usr/local/etc/xray/fullchain.pem -days 3650 \
  -subj "/CN=your-domain.com"

第三步:安装 Xray

VPS 在境外,直接去 GitHub 拉官方二进制即可:

curl -L https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip -o /tmp/x.zip
cd /tmp && unzip -o x.zip xray
mv xray /usr/local/bin/xray && chmod +x /usr/local/bin/xray
xray version

能打印出版本号就说明装好了。

第四步:写配置(核心)

生成一个 UUID(每个用户唯一,用于客户端鉴权):

cat /proc/sys/kernel/random/uuid
# 例如输出: 3f8c...-....-....(记下来,后面要用)

创建配置文件 /usr/local/etc/xray/config.json:

{
  "log": { "loglevel": "warning" },
  "inbounds": [
    {
      "tag": "tcp-ws",
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [ { "id": "你的UUID", "flow": "" } ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {
          "certificates": [
            { "certificateFile": "/usr/local/etc/xray/fullchain.pem",
              "keyFile": "/usr/local/etc/xray/privkey.pem" }
          ]
        },
        "wsSettings": { "path": "/api/v1/sync" }
      }
    },
    {
      "tag": "udp-h3",
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [ { "id": "你的UUID", "flow": "" } ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "xhttp",
        "security": "tls",
        "tlsSettings": {
          "certificates": [
            { "certificateFile": "/usr/local/etc/xray/fullchain.pem",
              "keyFile": "/usr/local/etc/xray/privkey.pem" }
          ],
          "alpn": [ "h3" ]
        },
        "xhttpSettings": { "path": "/sync", "mode": "auto" }
      }
    }
  ],
  "outbounds": [ { "protocol": "freedom" } ]
}

这份配置同时开启了两个入口,共用一个 UUID:

  • TCP 入口(WS):日常主力,兼容性最好,几乎所有客户端都支持;
  • UDP 入口(XHTTP/H3):基于 QUIC,网络拥堵丢包时比 TCP 抗造,作为兜底。

端口 443 的 TCP 与 UDP 互不冲突,可以并存。请把配置里的 你的UUID 替换成上一步生成的 UUID。

第五步:注册服务并启动

cat > /etc/systemd/system/xray.service << 'EOF'
[Unit]
Description=Xray Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now xray
systemctl status xray

看到 active (running) 即启动成功。注意在云控制台的安全组/防火墙放行 TCP 443 和 UDP 443。

第六步:客户端接入

以 Clash Verge(mihomo 内核,需 v1.19.25+ 才支持 H3)为例,在配置的 proxies 中增加两个节点:

proxies:
  - name: "我的通道-TCP"
    type: vless
    server: node.your-domain.com
    port: 443
    uuid: 你的UUID
    network: ws
    tls: true
    servername: node.your-domain.com
    client-fingerprint: chrome
    ws-opts:
      path: "/api/v1/sync"
      headers: { Host: node.your-domain.com }

  - name: "我的通道-QUIC"
    type: vless
    server: node.your-domain.com
    port: 443
    udp: true
    uuid: 你的UUID
    network: xhttp
    tls: true
    servername: node.your-domain.com
    alpn: [ h3 ]
    client-fingerprint: chrome
    xhttp-opts:
      path: /sync
      host: node.your-domain.com
      mode: packet-up

proxy-groups:
  - name: "♻️ 自动选择"
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 120
    proxies:
      - "我的通道-TCP"
      - "我的通道-QUIC"

日常把规则出口指到「自动选择」,客户端会定时测速,自动在 TCP / QUIC 之间切换:网络好时用 TCP,拥堵时自动切到 QUIC。

第七步:验证

开启系统代理后,终端验证通道是否真的通了:

# 访问 GitHub
curl -I https://github.com

# 拉一次 Docker 镜像(如果安装了 Docker)
docker pull alpine:latest

能正常返回 200 / 正常拉取,说明通道工作正常。再访问一下 Hugging Face 首页确认没有额外限制。

日常使用与维护

查看/重启服务

systemctl status xray      # 看状态
journalctl -u xray -n 50   # 看最近日志
systemctl restart xray     # 重启

证书续期

方式 A 用 acme.sh 自动续期,无需操心。自签证书(方式 B)到期前需手动重签并重启服务。

换服务器 / 换域名

只需改配置里的证书路径与域名、更新 DNS 指向,客户端对应改 server 与 servername 即可,UUID 可保持不变。

常见问题

Q:连不上 / 一直超时

  1. 确认云控制台安全组放行了 TCP/UDP 443;
  2. 确认 systemctl status xray 是 running;
  3. 本地 ping node.your-domain.com 是否解析到正确 IP;
  4. 客户端 servername / UUID 是否与服务器一致。

Q:白天顺畅,晚上卡顿

多为运营商晚高峰对跨境线路的限速/丢包导致。此时把出口切到 QUIC 节点往往有明显改善(UDP/QUIC 对丢包更不敏感)。

Q:TCP 和 QUIC 怎么选

不需要手动选。日常用「自动选择」组即可;如果某天 QUIC 走不动(某些网络封锁 UDP),单独切回 TCP 节点即可。

Q:只访问 GitHub/HuggingFace 需要全量代理吗

不需要。在客户端规则里把 GitHub、HuggingFace、Docker 等域名指向代理组,其余保持直连,速度和隐私都更好。

结语

这套方案的优点在于:依赖极少(只有 Xray)、配置透明(一个文件)、协议现代(TCP + QUIC 双通道),出了问题自己能定位能修,不依赖任何第三方。从一台年付百元级别的小 VPS 开始,跑通后再按需升级地区与带宽即可。

祝克隆顺利,docker pull 永远秒下。

本文由屑鱼不吃猫创作,转载请标注文章出处
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇