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原有的密钥。