# 使用 Docker 部署 GOST 并开启 HTTPS 代理

## 前言
HTTP 和 SOCKS5 协议由于没有加密，所以在使用时会有一定的风险，而 HTTPS 协议则是一种加密的协议，可以有效的保护数据的安全性。本文将介绍如何使用 Docker 部署 GOST 并开启 HTTPS 代理。

## 方案概述
1. 安装 Docker 环境
2. 使用 Docker 部署 GOST 并开启 HTTP 代理
3. 使用 acme.sh 申请证书
4. 将证书挂载到 GOST 容器中并开启 HTTPS 代理

## 操作步骤

### 一、安装 Docker 环境
参考：https://senjianlu.com/posts/tutorials/ubuntu-install-docker/

### 二、使用 Docker 部署 GOST 并开启 HTTP 代理
官方仓库：https://hub.docker.com/r/gogost/gost

#### 拉取镜像并检查版本
```bash
docker run --rm gogost/gost -V
```

#### 启动容器
```bash
docker run -d \
 --name gost \
 -p 8080:8080 \
 gogost/gost \
 -L http://username:password@:8080
```

#### 测试本地代理是否正常
```bash
curl  ipinfo.io          //direct connection

curl -x http://username:password@localhost:8080 ipinfo.io
```
若镜像拉取有问题，可参考：https://senjianlu.com/posts/tutorials/docker-registry-mirror/

### 三、使用 acme.sh 申请证书
```bash
# 申请证书

curl https://get.acme.sh | sh -s email=xukaiming@xuvps.cn    // 这里的 email 是申请证书时需要的，申请成功后会发送到该邮箱

//acme.sh --issue -d ladd.xuvps.cn --webroot /var/acme/webroot/ --force
//mkdir -vp /etc/nginx/ssl/ladd.xuvps.cn/


拉证书脚本运行  阿里云
export Ali_Key="LTAI5t8gWUtUgtitGupf48D1"
export Ali_Secret="1r8X3rsyXSOXK9EaBf3i4ICwJlATw9"
/root/.acme.sh/acme.sh --issue -d ladd.xuvps.cn --dns dns_ali --force


# 安装证书
acme.sh --install-cert -d ladd.xuvps.cn \
 --fullchain-file /etc/nginx/ssl/ladd.xuvps.cn/certificate.crt \
 --key-file /etc/nginx/ssl/ladd.xuvps.cn/private.key \
 --reloadcmd "docker restart gost"
```
执行后 SSL 证书目录会新增两个文件：`certificate.crt`、`private.key`

### 四、将证书挂载到 GOST 容器中并开启 HTTPS 代理
官方文档：https://gost.run/concepts/tls/

GOST 会自动加载当前工作目录下的 `cert.pem`、`key.pem` 和 `ca.pem` 文件初始化全局证书，需将证书挂载到对应目录并改名：

#### 启动正式容器
```bash
# 停止并删除旧容器
docker stop gost && docker rm gost

# 启动新容器
docker run -d \
 --name gost \
 --restart always \
 -p 8443:8443 \
 -v /etc/nginx/ssl/ladd.xuvps.cn/:/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"
```

#### 调试模式（可选）
```bash
docker stop gost && docker rm gost
docker run -it \
 --name gost \
 -p 8443:8443 \
 -v /etc/nginx/ssl/ladd.xuvps.cn/:/ssl \
 --entrypoint /bin/sh \
 gogost/gost
```

#### 测试 HTTPS 代理
可使用客户端连接，或通过 curl 验证：
```bash
curl -x https://admin:Wdpbby8j@ladd.xuvps.cn:8443 ipinfo.io
```

---
*原文地址：https://senjianlu.com/posts/articles/thegreatwall/docker-gost-https-proxy/*