Skip to content

Instantly share code, notes, and snippets.

@wangengzheng
Forked from davidneelin/centos_install_ngrok.sh
Last active June 5, 2021 09:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wangengzheng/3ba548f721e6ed75467a0e948c6a08cb to your computer and use it in GitHub Desktop.
Save wangengzheng/3ba548f721e6ed75467a0e948c6a08cb to your computer and use it in GitHub Desktop.
a script that auto install ngrok in centos
#!/bin/bash
if [[ $# -lt 1 ]]; then
echo "usage: $0 domain"
exit 0
else
domain=$1
echo "domain is ${domain}"
fi
go version
if [[ $? -eq 0 ]]; then
yum install -y mercurial git
else
yum install -y golang mercurial git
fi
mkdir -p /data/software && cd /data/software
git clone https://github.com/inconshreveable/ngrok.git ngrok
cd ngrok
#x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
export GODEBUG=x509ignoreCN=0
export NGROK_DOMAIN=${domain}
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
cp base.pem assets/client/tls/ngrokroot.crt
make release-server release-client
if [[ $? -eq 0 ]]; then
echo "install success! start it use: bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain=\"$NGROK_DOMAIN\" -httpAddr=\":80\" -httpsAddr=\":443\" -tunnelAddr=\":4443\""
else
echo 'build fail'
fi
# compile other platform client side
# GOOS=darwin GOARCH=amd64 make release-client
GOOS=windows GOARCH=amd64 make release-client
# GOOS=windows GOARCH=386 make release-client
# GOOS=linux GOARCH=amd64 make release-client
# GOOS=linux GOARCH=386 make release-client
# Release 4443 port required by ngrok
firewall-cmd --zone=public --add-port=4443/tcp --permanent
# Release 80 and 443 ports
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
# Release custom ports, for example: TCP 7070 and 7071 ports
#firewall-cmd --zone=public --add-port=7070/tcp --permanent
# Reload firewall rules
firewall-cmd --reload
# start server side
nohup bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" > /var/log/ngrok.log 2>&1 &
# start client side
# ./ngrok -config=ngrok.cfg -subdomain=test 80
#ngrok.cfg
#server_addr: ngrok.bizhoucun.com:4443
#trust_host_root_certs: false
server {
listen 80;
server_name *.abc.me n.abc.me;
location / {
proxy_pass http://127.0.0.1:10080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
@wangengzheng
Copy link
Author

ngrok -subdomain=hda11 -config=ngrok.cfg -log=stdout 5000
-log=stdout 当失败的时候 加log 查看失败原因

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment