基于debain linux vps的gemini api个个中转方案

Gemini不支持中国地区,为了解决这个问题,我打算用一个在支持地区的vps,比如sinpore或者japan的vps,做中转实现免vpn在中国地区使用原生gemini的功能

系统软件配置

使用caddy实现网络中转。

为了避免安全问题导致的高频访问,需要配置端口的访问速率限制。

因此需要安装带速率限制插件的版本。

我们先安装caddy的正常版本,让其在安装过程中配置好系统服务等功能。然后将caddy的可执行文件用带插件的版本替换掉。

安装标准版 Caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

替换插件版

下载带rate limit插件的二进制文件,由于需要在网页上点选相关功能,只能图形操作,所以在终端机上,打开浏览器,进官网https://caddyserver.com/download 。 选择Linux amd64版本,并且在下面勾上caddy-ratelimit插件。然后点击下载。

下载完成后,将下载的二进制文件发送到vps。

scp <下载文件的带路径名称,比如caddy_linux_amd64_custom>  <用户名@ip>:~/
# 赋执行权限
chmod +x caddy_linux_amd64_custom

暂时停止caddy服务
sudo systemctl stop caddy

# 用下载的文件替换系统中安装的caddy文件
sudo mv caddy_linux_amd64_custom /usr/bin/caddy

vps的防火墙配置

默认一般是开放22端口的,没有的话:

sudo ufw enable 22/tcp

另外,我们需要开放80以及443端口:

sudo ufw enable 80/tcp
sudo ufw enable 443/tcp

然后重启并确认ufw的状态

sudo ufw reload
sudo ufw status

测试与确认、重启

caddy list-modules | grep rate_limit
#如果输出 rate_limit,说明安装带插件的版本是成功的

sudo systemctl restart caddy

资源配置

需要找一个域名来支持https签名,为了这一点,注册登录duckDNS然后获得一个二级域名:比如 tempary.duckdns.org 。

在duckDNS中将tempary.duckdns.org的ip指向服务器的IP,比如x.x.x.x

可以在生效后确认是否生效,终端机的命令是

nslookup brighth-gemini.duckdns.org

中转代理配置

编辑caddy的配置文件,先备份下:

sudo cp /etc/caddy/Caddyfile  /etc/caddy/Caddyfile.bak
sudo nano /etc/caddy/Caddyfile

在上面的Caddyfile中追加下面的配置块:

{
    # 启用限流插件的执行顺序(必需)
    order rate_limit before reverse_proxy
}

tempary.duckdns.org {
    # 基础限流:每分钟最多 45 次请求
    rate_limit {
        events 45
        window 1m
    }

    # 直接原样透传给 Google Gemini
    reverse_proxy https://generativelanguage.googleapis.com {
        # 必须带上这行:将请求头中的 Host 替换为 Google 的域名,否则 Google 会拒绝连接
        header_up Host {upstream_hostport}

        # 必须带上这行:实时流式输出(打字机效果不卡顿)
        flush_interval -1
    }
}

以上完成后就可以测试下了。

在终端机上输入下面的命令,有http响应,比如404就是对的。

curl -I https://brighth-gemini.duckdns.org

终端设置

直接将聊天客户端中原来的gemini的api地址https://generativelanguage.googleapis.com换成我们的https://tempary.duckdns.org地址就行。

api的密钥就是gemini原有的密钥。

内容声明与版权协议

  • 版权协议:本文采用 CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享) 协议进行许可。转载、演绎请务必保留作者署名及原文链接,且不得用于商业目的。
  • AI 辅助说明:本博客部分内容(如排版设计、个别局部、特定对话片段等)可能由 AI(LLM大语言模型)辅助生成。作者在此明确声明:本人对文章的核心框架、思想立论与最终呈现拥有绝对主导权与最终解释权。
  • 观点免责:文中明示的由 AI 生成的特定文本、对话输出,仅作为理性探讨以及观点展示,不代表本人真实立场、价值观或事实背书。对于因 AI 幻觉造成的客观事实偏差,请读者审慎甄别。
  • 认知时效性:文章仅代表作者在撰写当下的认知状态与情绪切片。随着个人心智迭代与客观事物发展,作者观点可能发生演变。欢迎基于理性的交流与批评。