Skip to content

Commit fcb0db2

Browse files
committed
update vps.sh
1 parent dc50998 commit fcb0db2

1 file changed

Lines changed: 80 additions & 90 deletions

File tree

vps.sh

Lines changed: 80 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,105 @@
11
#!/bin/bash
22

3+
# bash <(curl -fsSL https://raw.githubusercontent.com/liuyunbin/note/master/vps.sh)
4+
35
set -ueo pipefail
46

57
function log_info() { echo -e "$(date +'%Y-%m-%d %H:%M:%S %z') $@" > /dev/tty; }
68
function log_erro() { echo -e "$(date +'%Y-%m-%d %H:%M:%S %z') $@" > /dev/tty; exit -1; }
79

8-
DOMAIN=yunbinliu.com
9-
USER=yunbinliu
10-
PASS=lyb2636196546
11-
PORT=443
12-
SERVICE=https
13-
14-
function update_os() {
15-
apt -y -qq update &> /dev/null # 更新软件源
16-
apt -y -qq upgrade &> /dev/null # 更新软件
17-
apt -y -qq autoremove &> /dev/null # 卸载没用的软件
18-
}
19-
20-
function handle_cerbot() {
21-
apt -y -qq install certbot
22-
certbot certificates | grep "$DOMAIN" || certbot certonly --standalone -d "$DOMAIN" # 申请证书
23-
}
24-
25-
function handle_gost() {
26-
which docker || bash <(curl -fsSL https://get.docker.com) # 安装 docker
27-
systemctl enable docker # 开机自动启动
28-
29-
if ! docker ps -a --format "{{.Names}}" | grep gost; then
30-
BIND_IP=0.0.0.0
31-
CERT_DIR=/etc/letsencrypt
32-
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem
33-
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem
34-
35-
docker run -d \
36-
--name gost \
37-
-v ${CERT_DIR}:${CERT_DIR}:ro \
38-
--net=host \
39-
ginuerzh/gost -L "http2://${USER}:${PASS}@${BIND_IP}:${PORT}?cert=${CERT}&key=${KEY}&probe_resist=code:400&knock=www.google.com"
40-
fi
41-
42-
docker ps --format "{{.Names}}" | grep gost || docker start gost # 启动 gost
43-
}
44-
45-
function handle_firewall() {
46-
apt -y -qq install firewalld
47-
systemctl enable firewalld
48-
firewall-cmd --add-service=${SERVICE} --permanent --zone=public
49-
firewall-cmd --reload
50-
}
51-
52-
function handle_cron() {
53-
apt -y -qq install cron
54-
55-
cmd="certbot renew --force-renewal"
56-
crontab -l | grep "$cmd" || echo "0 0 1 * * $cmd" >> /var/spool/cron/crontabs/root
57-
58-
cmd="docker restart gost"
59-
crontab -l | grep "$cmd" || echo "5 0 1 * * $cmd" >> /var/spool/cron/crontabs/root
60-
}
61-
62-
function handle_user() {
63-
sudo useradd -m -s /bin/bash lyb || true # 添加用户
64-
echo "lyb:654321" | sudo chpasswd # 设置密码
65-
66-
chmod +w /etc/sudoers
67-
grep -q lyb /etc/sudoers || echo "lyb ALL=(ALL:ALL) ALL" >> /etc/sudoers # 赋予 sudo 权限
68-
chmod -w /etc/sudoers
69-
70-
grep -q lyb /etc/ssh/sshd_config || echo "DenyUsers lyb" >> /etc/ssh/sshd_config # 禁止用户使用 ssh 登录
71-
systemctl restart ssh
72-
73-
echo "123"
74-
whoami
75-
su - lyb -c "pwd" || true
76-
whoami
77-
echo "123456"
78-
}
79-
80-
function handle_vim() {
81-
apt -y -qq install vim
82-
cp ~/github/note/vimrc ~/.vimrc
83-
}
84-
85-
function handle_other_soft() {
86-
apt -y -qq install lrzsz man-db
87-
unminimize
88-
}
10+
DOMAIN=yunbinliu.com # 域名
11+
USER=yunbinliu # 用户名
12+
PASS=lyb2636196546 # 密码
13+
PORT=442 # gost 端口号
14+
SERVICE=https # 更新域名使用的服务
15+
mail=yunbinliu@outlook.com # 邮箱
8916

9017
log_info "1. 更新系统..."
91-
update_os
18+
apt -y update # 更新软件源
19+
apt -y upgrade # 更新软件
20+
apt -y autoremove # 卸载没用的软件
21+
22+
log_info "2. 安装软件..."
23+
apt -y install certbot firewalld cron man-db g++ vim lrzsz man-db
24+
which -s docker || bash <(curl -fsSL https://get.docker.com) # 安装 docker
25+
yes | unminimize # 解压 man-db
26+
27+
exit 0
28+
29+
30+
31+
32+
33+
34+
35+
36+
37+
38+
39+
40+
41+
42+
43+
9244

9345
log_info "2. 申请证书..."
94-
handle_cerbot
46+
certbot certificates | grep $DOMAIN || certbot certonly --standalone --agree-tos -n -m $mail -d $DOMAIN # 申请证书
9547

9648
log_info "3. 处理 gost..."
97-
handle_gost
49+
systemctl enable docker # 开机自动启动
50+
51+
if ! docker ps -a --format "{{.Names}}" | grep gost; then
52+
BIND_IP=0.0.0.0 # 绑定的IP
53+
CERT_DIR=/etc/letsencrypt # 证书的目录
54+
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem # 证书的公钥
55+
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem # 证书的私钥
56+
57+
docker run -d \
58+
--name gost \
59+
-v ${CERT_DIR}:${CERT_DIR}:ro \
60+
--net=host \
61+
ginuerzh/gost -L "http2://${USER}:${PASS}@${BIND_IP}:${PORT}?cert=${CERT}&key=${KEY}&probe_resist=code:400&knock=www.google.com"
62+
# 配置代理
63+
fi
64+
65+
docker ps --format "{{.Names}}" | grep gost || docker start gost # 启动 gost
9866

9967
log_info "4. 处理防火墙..."
100-
handle_firewall
68+
systemctl enable firewalld # 开机自动启动
69+
firewall-cmd --permanent --zone=public --add-port=442/tcp # 代理的端口号
70+
firewall-cmd --permanent --zone=public --add-service=${SERVICE} # 更新证书的端口号
71+
firewall-cmd --reload # 重新加载防火墙
10172

10273
log_info "5. 添加定时任务..."
103-
handle_cron
10474

105-
log_info "6. 处理用户..."
106-
handle_user
75+
cmd="certbot renew --force-renewal"
76+
crontab -l | grep "$cmd" || echo "0 0 1 * * $cmd" >> /var/spool/cron/crontabs/root # 更新更新证书
77+
78+
cmd="docker restart gost"
79+
crontab -l | grep "$cmd" || echo "5 0 1 * * $cmd" >> /var/spool/cron/crontabs/root # 重启 gost
80+
10781

10882
log_info "8. 处理 vim..."
109-
handle_vim
83+
cp ~/github/note/vimrc ~/.vimrc
11084

11185
log_info "9. 安装其他常用软件..."
112-
handle_other_soft
86+
unminimize
11387

11488
log_info "完成"
11589

90+
91+
#
92+
#### 7. 初始化 note
93+
#```
94+
#mkdir -p ~/github
95+
#cd ~/github
96+
#git clone git@github.com:liuyunbin/note
97+
#```
98+
#
99+
#### 8. 配置 vim bashrc
100+
#```
101+
#cp ~/github/note/vimrc ~/.vimrc # 配置 vimrc
102+
#echo ". ~/github/note/bashrc" >> ~/.bashrc # 配置 bashrc
103+
#. ~/.bashrc # 使 bashrc 生效
104+
#```
105+
#

0 commit comments

Comments
 (0)