Gost - 2024
Prerequisites Link to heading
- Cloud Virtual Machine, providered by AWS&Azure&Google Cloud, etc
- own a domain name, which can be registered from Cloudflare & Godaday, etc
Set up GOST and config Server Link to heading
Assume your server’s public ip is 1.2.3.4
.
connect to your VM
Install GOST Link to heading
more detail can be found https://latest.gost.run/
sudo snap install go --classic
git clone https://github.com/go-gost/gost.git
cd gost
sudo bash install.sh
please pick up the latest by typeing the number
Quick verify service Link to heading
gost -L http://:8080
then you will see
{"handler":"http","kind":"service","level":"info","listener":"tcp","msg":"listening on [::]:8080/tcp","service":"service-0","time":"2024-05-15T02:05:04.697Z"}
Apply and config TLS certs Link to heading
Install acme.sh Link to heading
curl https://get.acme.sh | sh -s email=[email protected] # change it with your email
Register domain from Cloudflare Link to heading
Issue a cert Link to heading
Assume your domain is xyz.com
,
Config CF_Token&CF_Account_ID&CF_Zone_ID Link to heading
Please follow the steps in https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_cf
export CF_Token="your token"
export CF_Account_ID="your account id"
export CF_Zone_ID="your zone id"
Request certs Link to heading
acme.sh --issue -d xyz.com -d '*.xyz.com' --dns dns_cf --server letsencrypt
Install certs to destination folder Link to heading
mkdir certs
mkdir certs/xyz.com
acme.sh --install-cert -d xyz.com --key-file /home/azureuser/certs/xyz.com/key.pem --fullchain-file /home/azureuser/certs/xyz.com/cert.pem --ecc
Create GOST config file Link to heading
vi gost.yaml
copy&paste the following content
services:
- name: service-0
addr: ":443"
handler:
type: http
auth:
username: a-username
password: a-strong-password
metadata:
knock: www.google.com
probeResistance: code:404
listener:
type: tls
tls:
certFile: "/home/azureuser/certs/xyz.com/cert.pem"
keyFile: "/home/azureuser/certs/xyz.com/key.pem"
test the config file
sudo gost -C gost.yaml
Run GOST as a sysytem service Link to heading
sudo vi /etc/systemd/system/gost.service
add the following content
[Unit]
Description=GO Simple Tunnel
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/gost -C /home/azureuser/gost.yaml
Restart=always
[Install]
WantedBy=multi-user.target
config sysmtem service
sudo systemctl enable gost
sudo systemctl start gost
sudo systemctl status gost