Skip to content
Go back

使用 Docker 部署 GOST 并开启 HTTPS 代理

| 0 Views Edit page

前言

HTTP 和 SOCKS5 协议由于没有加密,所以在使用时会有一定的风险,而 HTTPS 协议则是一种加密的协议,可以有效的保护数据的安全性。本文将介绍如何使用 Docker 部署 GOST 并开启 HTTPS 代理。


方案概述

  1. 安装 Docker 环境
  2. 使用 Docker 部署 GOST 并开启 HTTP 代理
  3. 使用 acme.sh 申请证书
  4. 将证书挂载到 GOST 容器中并开启 HTTPS 代理

操作步骤

一、安装 Docker 环境

参考:Ubuntu 20.04 从官方源安装最新的 Docker

二、使用 Docker 部署 GOST 并开启 HTTP 代理

官方仓库:gogost/gost

# 拉取镜像并检查版本
docker run --rm gogost/gost -V
# 启动容器
docker run -d \
  --name gost \
  -p 8080:8080 \
  gogost/gost \
  -L http://username:password@:8080

测试本地代理是否正常:

curl -x http://username:password@localhost:8080 ipinfo.io

如果镜像拉取有问题,可以参考:自建 Docker Registry 镜像加速服务

三、使用 acme.sh 申请证书

# 申请证书
acme.sh --issue -d proxy.example.com --webroot /var/acme/webroot/ --force
mkdir -vp /etc/nginx/ssl/proxy.example.com/
# 安装证书
acme.sh --install-cert -d proxy.example.com \
  --fullchain-file /etc/nginx/ssl/proxy.example.com/certificate.crt \
  --key-file /etc/nginx/ssl/proxy.example.com/private.key  \
  --reloadcmd "docker restart gost"

之后你的 SSL 证书目录中会多两个文件:

  • certificate.crt
  • private.key

四、将证书挂载到 GOST 容器中并开启 HTTPS 代理

官方文档:TLS

由于 GOST 会自动加载当前工作目录下的 cert.pemkey.pemca.pem 文件来初始化全局证书,因此我们需要把证书挂载到相应目录中并改名:

# 停止并删除旧容器
docker stop gost && docker rm gost
# 启动新容器
docker run -d \
  --name gost \
  --restart always \
  -p 8443:8443 \
  -v /etc/nginx/ssl/proxy.example.com/:/ssl \
  --entrypoint "/bin/sh" \
  gogost/gost \
  -c "cp -f /ssl/certificate.crt /bin/cert.pem && cp -f /ssl/private.key /bin/key.pem && /bin/gost -L http+tls://username:password@:8443"

如果需要调试的话:

docker stop gost && docker rm gost
docker run -it \
  --name gost \
  -p 8443:8443 \
  -v /etc/nginx/ssl/proxy.example.com/:/ssl \
  --entrypoint /bin/sh \
  gogost/gost

之后使用你的客户端连接即可:
测试代理

当然也可以使用 curl 测试:

curl -x https://username:password@localhost:8443 ipinfo.io

Edit page