说明:

  • 这里的服务器是腾讯云服务器,有公网IP的服务器

思路如下: 远程服务器上使用codex如果没有代理是无法运行的,所以这里的思路是在远程服务器上搭建一个代理,然后再运行codex

Phase 1:远程服务器上配置 clash


1. 首先下载 Clash for Linux

首先,从官方 GitHub 发布页面 https://github.com/doreamon-design/clash/releases 下载适合你系统的 Clash 二进制文件。对于大多数 64 位系统,请选择 clash_2.0.24_linux_amd64.tar.gz

下载之后,将压缩包上传到云服务器上,可以放在 ~ 目录下,然后解压

1
tar -xvf clash_2.0.24_linux_amd64.tar.gz

此命令将生成三个文件:clash(可执行文件)、README.md 和 LICENSE。只需要 clash 二进制文件。然后授予执行权限:

1
chmod +x clash

2. 创建  Configuration Directory

Clash 将其配置文件存储在 ~/.config/clash/ 中。如果此目录不存在,请手动创建它:

1
mkdir ~/.config/clash

然后,将两个必需的文件添加到此文件夹:config.yaml(你的订阅配置文件,定义节点、规则和端口) 和 Country.mmdb(来自 MaxMind 的 GeoIP 数据库,用于识别目标 IP 的国家或地区)。

⚠️ 注意:config.yaml 文件来自你的付费订阅。你需要先在本地获取它,然后将其上传到你的远程服务器。Country.mmdb 文件通常随订阅自动下载。

购买订阅后,你可以按如下方式找到配置文件(这些操作在你的本地机器上执行,而不是在远程服务器上):

360 360 360

  1. 打开您想要上传到远程服务器的订阅。右键单击并选择“打开文件”,这里可以用VScode打开,然后再在VScode中打开这个文件夹,这将自动导航到相应的.yaml配置文件。
  2. 在上传到远程服务器之前,将其重命名为config.yaml
  3. 对于Country.mmdb文件,你可以尝试在父目录中查找。如果它没有随您的订阅自动下载,您可以选择下面列出的一种方法:
    • 自动下载它:

      1
      2
      
      cd ~/.config/clash/
      wget -O Country.mmdb "<https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb>"
      
    • Manually download it from MaxMind GeoIP Releases and then upload it to ~/.config/clash/.

3. 编辑 config.yaml  File

我的修改过后的 config.yaml 文件的基础配置如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
port: 7892
socks-port: 7893
allow-lan: false
unified-delay: true
bind-address: '*'
dns:
    default-nameserver:
        - 223.5.5.5
        - 119.29.29.29
    enable: true
    ipv6: false
    nameserver:
        - 223.5.5.5
        - 223.6.6.6
external-controller: 127.0.0.1:9090
log-level: info
mode: rule
...

这里,port 指定 HTTP 代理端口(默认为 7890),socks-port 指定 SOCKS5 代理端口(默认为 7891),external-controller 定义外部程序(如 Clash Dashboard)的管理 API 端口。默认端口可能与其他正在运行的代理程序冲突,因此您可以根据需要更改它们。例如,将 HTTP 端口设置为 7892,SOCKS5 端口设置为 7893(或您想要的任何其他数字)。

4. 开始执行 Clash

完成之前的步骤后,就可以启动 Clash 以启用代理。

⚠️ 注意:这里最好将 clash 文件夹和 .config 文件夹放在同一目录下,这样clash 启动之后才可以读取到配置文件

你应该看到类似下面的输出,其中的端口 7892 和 7893 对应于你配置的端口: 一旦 Clash 运行,测试代理是否工作。打开一个新的终端并设置系统代理:

1
2
3
export https_proxy=http://127.0.0.1:7892  # https
export http_proxy=http://127.0.0.1:7892   # http
export all_proxy=socks5://127.0.0.1:7893  # socks

同时,你的云服务器上的安全区应该将 7892,7893端口号添加进来,否则是无法成功开启服务的。

然后进行测试:

1
curl -v <https://www.google.com>

没有 Clash 代理,访问 https://www.google.com 将会失败,并出现“连接被拒绝”的错误。如果代理工作正常,该命令应该会成功,如下所示:

5. (Optional) 将代理快捷键添加到 .bashrc

为了避免每次打开新终端时手动设置系统代理,您可以将以下函数添加到您的 ~/.bashrc 文件中:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Proxy Setting
function proxy_on() {
  export http_proxy="<http://127.0.0.1:7892>"  # http
  export https_proxy=$http_proxy  # https
  export all_proxy="socks5://127.0.0.1:7893"  # socks
  export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
  echo -e "Proxy On"
}

function proxy_off() {
  unset http_proxy
  unset https_proxy
  unset all_proxy
  unset no_proxy
  echo -e "Proxy Off"
}

Then reload the .bashrc file:

1
source ~/.bashrc

现在您可以轻松切换代理了:

1
2
proxy_on   # Enable proxy
proxy_off  # Disable proxy

Phase 2:远程服务器上配置 codex


前置条件:

  1. GPT plus/pro账户, 以确保能够使用codex功能
  2. 在远程服务器上配置成功的代理, 也就是上一 Phase 的流程

具体操作流程

Step 1. 查看clash配置中指定的端口号, 此处示例的port设置为7892。

Step 2. 在VSCode中按Ctrl + Shift + P,选择 Preferences: Open User Settings (JSON),打开settings.json,设置如下三行变量(注意这里变量的port要与Step 1中查看的port一致,比如这里都为7897)。

1
2
3
"http.proxy": "<http://127.0.0.1>:YOURPORT",
"https.proxy": "<http://127.0.0.1>:YOURPORT",
"http.proxyStrictSSL": false,

Step 3. 在vscode中按Ctrl+shfit+P,选择 Developer:Reload Window,重新加载一遍窗口。

Step 4. 使用时首先在终端中打开clash,如果是第一次使用的话首先需要Sign in with ChatGPT,登录成功之后的界面如下图所示,然后就可以打开新聊天进行交流啦,注意整个登录和交流的过程中都需要保持clash代理处于打开的状态


Reference