ソースを参照

【feat】【vps操作】

1.完善记录文档
2.增加certbot使用内容,免费获取SSL证书
ChenYL 1 年間 前
コミット
8bd7f084a6
33 ファイル変更610 行追加2908 行削除
  1. 0 0
      viramch-zkpk-id_rsa
  2. BIN
      vps操作指南.assets/certbot证书申请要求添加DNS记录解析.png
  3. BIN
      vps操作指南.assets/certbot证书申请要求添加文件记录-02.png
  4. BIN
      vps操作指南.assets/certbot证书申请要求添加文件记录-03.png
  5. BIN
      vps操作指南.assets/certbot证书申请要求添加文件记录.png
  6. BIN
      vps操作指南.assets/域名供应商DNS解析.png
  7. 581 0
      vps操作指南.md
  8. 0 672
      vps操作指南/bbr.sh
  9. 0 27
      vps操作指南/nginx/cert/fq.zhixinghe1.top.key
  10. 0 61
      vps操作指南/nginx/cert/fq.zhixinghe1.top.pem
  11. 0 27
      vps操作指南/nginx/cert/fs.zhixinghe1.top.key
  12. 0 61
      vps操作指南/nginx/cert/fs.zhixinghe1.top.pem
  13. 0 27
      vps操作指南/nginx/cert/git.zhixinghe1.top.key
  14. 0 61
      vps操作指南/nginx/cert/git.zhixinghe1.top.pem
  15. 0 27
      vps操作指南/nginx/cert/rss.zhixinghe1.top.key
  16. 0 61
      vps操作指南/nginx/cert/rss.zhixinghe1.top.pem
  17. 0 27
      vps操作指南/nginx/cert/www.zhixinghe1.top.key
  18. 0 62
      vps操作指南/nginx/cert/www.zhixinghe1.top.pem
  19. 0 25
      vps操作指南/nginx/conf.d/fq.conf
  20. 0 19
      vps操作指南/nginx/conf.d/fs.conf
  21. 0 36
      vps操作指南/nginx/conf.d/git.conf
  22. 0 7
      vps操作指南/nginx/conf.d/rewrite443.conf
  23. 0 36
      vps操作指南/nginx/conf.d/rss.conf
  24. 0 36
      vps操作指南/nginx/conf.d/watermark.conf
  25. 0 16
      vps操作指南/nginx/conf.d/www.conf
  26. 0 17
      vps操作指南/nginx/docker-compose.yml
  27. 0 1383
      vps操作指南/shadowsocks-all.sh
  28. 0 69
      vps操作指南/ttrss/docker-compose.yml
  29. 0 29
      vps操作指南/v2ray/config.json
  30. 0 32
      vps操作指南/v2ray/config.json.bak
  31. 0 14
      vps操作指南/v2ray/docker-compose.yml
  32. 29 0
      vps操作指南/vps操作指南.md
  33. 0 76
      vps操作指南/一键初始化模板-yuu_alpineinit.sh

+ 0 - 0
vps操作指南/viramch-zkpk-id_rsa → viramch-zkpk-id_rsa


BIN
vps操作指南.assets/certbot证书申请要求添加DNS记录解析.png


BIN
vps操作指南.assets/certbot证书申请要求添加文件记录-02.png


BIN
vps操作指南.assets/certbot证书申请要求添加文件记录-03.png


BIN
vps操作指南.assets/certbot证书申请要求添加文件记录.png


BIN
vps操作指南.assets/域名供应商DNS解析.png


+ 581 - 0
vps操作指南.md

@@ -0,0 +1,581 @@
+# VPS操作指南
+
+
+
+当前操作系统:alpine
+
+
+
+## virmach安装alpine指南
+
+参考:[[Virmach安装Alpine详细教程](https://cikeblog.com/virmach-install-alpine.html)](https://cikeblog.com/virmach-install-alpine.html)
+
+
+
+## 常用指令
+
+
+
+### 软件操作指令
+
+```shell
+# 软件(alpine)
+apk
+
+# 更新apk
+apk update
+
+# 搜索
+apk search xxxx
+
+# 安装
+apk install xxxx
+```
+
+
+
+### docker指令
+
+```shell
+# 进入docker容器
+docker exec -it names/container_id /bin/bash
+
+# 查看docker进程
+docker ps
+docker ps -a
+
+# 查看docker日志
+docker logs names
+docker logs -f names
+```
+
+
+
+
+
+## 常用系统操作
+
+
+
+### 创建新用户
+
+示例用户名:food
+
+* 添加用户
+
+  ```shell
+  adduser food
+  ```
+
+* 修改用户密码
+
+  ```
+  passwd food
+  ```
+
+
+
+### 密钥登录
+
+* 示例用户:food
+* 要先登录要配置密钥登录的用户,这样会更方便
+
+配置步骤:
+
+1. 生成密钥
+
+   ```shell
+   ssh-keygen
+   ```
+
+2. 把id_rsa.pub重命名为authorized_keys
+
+   ```shell
+   mv /home/food/.ssh/id_rsa.pub /home/food/.ssh/authorized_keys
+   ```
+
+注:使用该方法,无需设置相应文件(authorized_keys)和文件夹(.ssh)的权限
+
+说明:
+
+* id_rsa是私钥文件,要自己保管
+* id_rsa.pub是公钥文件
+* authorized_keys 是公钥文件集,即用于存放多个公钥信息
+
+
+
+### SSH安全配置
+
+安全配置文件位置: /etc/ssh/sshd_config
+
+配置步骤:
+
+1. 修改配置文件
+
+   ```shell
+   vi /etc/ssh/sshd_config
+   ```
+
+2. 修改配置项
+
+   ```shell
+   修改监听的端口号		Port 					20022
+   启用密匙验证 			 PubkeyAuthentication    yes
+   禁止ssh密码登陆 		 PasswordAuthentication  no
+   禁止root账户远程登录    PermitRootLogin 		no
+   禁止密码为空的用户登录   PermitEmptyPasswords 	  no
+   ```
+
+3. 保存修改并关闭文件
+
+   ```shell
+   :wq
+   ```
+
+4. 重启ssh服务
+
+   ```shell
+   service ssh restart
+   ```
+
+
+
+### 开启BBR算法
+
+步骤:
+
+1. 进入/etc/sysctl.d目录,该目录下可以创建系统配置文件
+
+   ```shell
+   cd /etc/sysctl.d
+   ```
+
+2. 创建配置文件(格式:以**.conf**结尾)
+
+   ```shell
+   vi bbr.conf
+   ```
+
+3. 输入配置项
+
+   ```shell
+   net.core.default_qdisc=fq
+   net.ipv4.tcp_congestion_control=bbr
+   ```
+
+4. 保存
+
+   ```shell
+   :wq
+   ```
+
+5. 让配置项生效
+
+   ```shell
+   sysctl -p
+   sysctl net.ipv4.tcp_available_congestion_control
+   ```
+
+   也可以重启生效
+
+   ```shell
+   reboot
+   ```
+
+6. 验证生效,执行如下命令,看到tcp_bbr的字眼则为配置成功
+
+   ```shell
+   lsmod | grep bbr
+   ```
+
+   
+
+### 防火墙设置
+
+注:
+
+* 只在alpine上使用过
+* 防火墙规则和docker的使用有冲突,导致docker服务失效
+
+步骤:
+
+1. 使用iptables命令查看是否已安装
+
+   ```shell
+   iptables
+   ```
+
+   安装防火墙
+
+   ```shell
+   apk add iptables
+   ```
+
+2. 添加开机自启动
+
+   ```shell
+   rc-update add iptables
+   ```
+
+3. 配置防火墙规则
+
+   | 端口     | 类型         | 用途  | 策略       |
+   | -------- | ------------ | ----- | ---------- |
+   | 10022    | TCP          | SSH   | 允许出入站 |
+   | 80       | TCP          | HTTP  | 允许出入站 |
+   | 443      | TCP          | HTTPS | 允许出入站 |
+   |          | ICMP         | ICMP  | 允许出入站 |
+   | 任意     | TCP/UDP/ICMP |       | 允许出站   |
+   | 本地任意 | TCP/UDP/ICMP |       | 允许出入站 |
+   | 任意     | TCP/UDP/ICMP |       | 禁止入站   |
+
+   具体命令
+
+   ```shell
+   iptables -A INPUT -p tcp --dport 10022 -j ACCEPT && \
+   iptables -A OUTPUT -p tcp --sport 10022 -j ACCEPT && \
+   iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT && \
+   iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT && \
+   iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT && \
+   iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT && \
+   iptables -A INPUT -p icmp --icmp 8 -j ACCEPT && \
+   iptables -A OUTPUT  -p icmp --icmp 0 -j ACCEPT && \
+   iptables -P INPUT DROP && \
+   iptables -P FORWARD DROP && \
+   iptables -P OUTPUT DROP && \
+   iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT && \
+   iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT && \
+   iptables -A OUTPUT -j ACCEPT
+   ```
+
+4. 保存防火墙规则
+
+   ```shell
+   service iptables save
+   ```
+
+5. 查看防火墙规则
+
+   ```
+   iptables -L -n
+   ```
+
+
+
+清楚防火墙操作
+
+```
+iptables -F && iptables -X && iptables -Z
+```
+
+注:全清除前最好先关闭防火墙,否则会导致ssh连接断开
+
+
+
+参考:[Alpine Linux 一键构建LNSP&防火墙规则](https://yuu.ink/article/131/)
+
+
+
+### IPV6设置
+
+配置步骤:
+
+1. 在HE.net中申请IPV6隧道
+
+2. 修改网络配置 /etc/network/interfaces,添加如下内容
+
+   ```shell
+   auto he-ipv6
+   	iface he-ipv6 inet6 v4tunnel
+   		address xxx:xxx:xxx:xxx::x
+   		netmask 64
+   		endpoint xxx.xx.xxx.x
+   		local xxx.xxx.xx.xxx
+   		ttl 255
+   		gateway xxxx:xxx:xxx:xxx::x
+   ```
+
+   注:
+
+   * 该配置内容在申请IPV6隧道时获得
+   * 通过该种配置方式,能够开机自动配置
+
+3. 测试命令
+
+   ```shell
+   ping6 ipv6.google.com
+   ```
+
+   注:能ping通即配置成功
+
+
+
+### 设置时区与开启时间同步
+
+配置步骤
+
+1. (可选)显示当前时区信息
+
+   ```shell
+   timedatectl
+   ```
+
+2. (可选)显示可选时区信息
+
+   ```shell
+   timedatectl list-timezones
+   ```
+
+   注:没有看到beijing字眼,只看到Asia/Hong_Kong
+
+3. 设置时区
+
+   ```shell
+   timedatectl set-timezone Asia/Hong_Kong
+   ```
+
+4. 启用时间同步
+
+   ```shell
+   timedatectl set-ntp true
+   ```
+
+   注:如果时间不准确,可以执行这一步
+
+5. 查看当前时间
+
+   ```shell
+   date
+   ```
+
+   如果前面配置成功,就能看到正确的时间信息了
+
+
+
+### 设置系统自动重启
+
+配置步骤:
+
+1. 编辑定时任务
+
+   ```shell
+   crontab -e
+   ```
+
+2. 添加定时重启任务:每天凌晨4点重启
+
+   ```shell
+   0 4 * * * /sbin/reboot
+   ```
+
+
+
+## 常用软件安装
+
+
+
+### 安装docker
+
+#### apk安装
+
+注:该方法只适合alpine
+
+步骤
+
+1. docker 的包是位于社区仓库里,因此先要修改源配置文件,把community这一行去掉注释
+
+   ```shell
+   vi /etc/apk/repositories
+   ```
+
+2. 更新软件源
+
+   ```shell
+   apk update
+   ```
+
+3. 安装docker
+
+   ```shell
+   apk add docker
+   ```
+
+4. 添加开机自启动
+
+   ```shell
+   rc-update add docker boot
+   ```
+
+5. 启动docker服务
+
+   ```shell
+   service docker start
+   ```
+
+6. (可选)安装docker-compose
+
+   ```shell
+   apk add docker-compose
+   ```
+
+   
+
+
+
+#### 脚本安装
+
+安装参考文档:https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script
+
+注:debian 8 只需安装docker-ce就可以了!
+
+
+
+### 安装v2ray
+
+#### docker安装
+
+使用镜像:teddysun/v2ray:latest
+
+
+
+#### 脚本安装
+
+服务端安装:使用一键安装脚本
+
+```shell
+bash <(curl -s -L https://git.io/v2ray.sh)
+```
+
+
+
+#### win客户端安装
+
+客户端安装:使用v2rayN作为图形界面,可以直接上github上下载,也可以使用scoop安装
+
+```
+scoop install v2rayN
+```
+
+
+
+#### 参考
+
+[2022年最新VPS一键安装脚本搭建V2ray详细图文教程](https://github.com/xiaoming2028/FreePAC/wiki/2022%E5%B9%B4%E6%9C%80%E6%96%B0VPS%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC%E6%90%AD%E5%BB%BAV2ray%E8%AF%A6%E7%BB%86%E5%9B%BE%E6%96%87%E6%95%99%E7%A8%8B)
+
+
+
+
+
+### 安装certbot-SSL证书免费获取
+
+
+
+PS:
+
+1. certbot是一个SSL证书(Let‘s Encrpt)申请工具,免费的SSL证书,每90天需要自己续期(可自动化),支持泛域名证书的申请
+2. 如果要申请泛证书(例:*.zhixinghe1.top),需要使用DNS的验证方式,这个国内域名商的验证方式比较麻烦,需要自己手动操作或者找插件
+3. 如果不熟悉操作,先加上--dry-run参数在测试环境中实操一下,再正式申请,否则失败次数过多,会有一段时间禁止申请
+
+
+
+#### 申请步骤
+
+1. 安装certbot,并执行证书申请命令,见下面的常用指令。
+
+2. 按交互界面往下操作
+
+3. 如果申请的是泛域名,需要进自己的域名供应商里的域名解析里,按格式把certbot提供的字符串加入到解析中
+
+   ![](vps%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97.assets/certbot%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7%E8%A6%81%E6%B1%82%E6%B7%BB%E5%8A%A0DNS%E8%AE%B0%E5%BD%95%E8%A7%A3%E6%9E%90.png)
+
+4. 在nginx需要创建一个指定访问路径的文件,并放入certbot工具提供的字符串,供certbot验证
+
+   ![](vps%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97.assets/certbot%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7%E8%A6%81%E6%B1%82%E6%B7%BB%E5%8A%A0%E6%96%87%E4%BB%B6%E8%AE%B0%E5%BD%95.png)
+
+   ![](vps%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97.assets/%E5%9F%9F%E5%90%8D%E4%BE%9B%E5%BA%94%E5%95%86DNS%E8%A7%A3%E6%9E%90.png)
+
+   在nginx中通过配置一个文件路径,并把内容放到文件中即可
+
+   ![](vps%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97.assets/certbot%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7%E8%A6%81%E6%B1%82%E6%B7%BB%E5%8A%A0%E6%96%87%E4%BB%B6%E8%AE%B0%E5%BD%95-02.png)
+
+   ![](vps%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97.assets/certbot%E8%AF%81%E4%B9%A6%E7%94%B3%E8%AF%B7%E8%A6%81%E6%B1%82%E6%B7%BB%E5%8A%A0%E6%96%87%E4%BB%B6%E8%AE%B0%E5%BD%95-03.png)
+
+5. 证书申请成功后,nginx的SSL证书配置,如果是泛域名的SSL证书,可以在http块中直接使用SSL全局指令直接配置,否则需要自己一个个配置
+
+   ```shell
+   http {
+   	ssl_certificate /path/to/your/fullchain.pem;
+   	ssl_certificate_key /path/to/your/privkey.pem;
+   }
+   ```
+
+   
+
+#### 常用命令
+
+```shell
+# 安装
+# certbot普通的,需要自己配置SSL证书配置
+apk add certbot
+# 可以直接配置nginx的SSL证书配置
+apk add certbot-nginx
+
+# 查看主机中的证书信息
+certbot certificates
+
+# 证书申请,--dry-run 即是测试环境,-a manual 交互式申请
+certbot certonly -a manual --dry-run
+```
+
+
+
+#### 参考
+
+* [Let's Encrypt 手动模式:泛域名 SSL 证书的免费解决方案](https://juejin.cn/post/6942896425738960926)
+
+* [nginx配置静态文件 通过url访问](https://www.cnblogs.com/OneSeting/p/15525402.html)
+
+* [docker部署certbot与nginx来获取ssl证书添加https及自动更新](https://www.cnblogs.com/vishun/p/15746849.html)
+
+
+
+
+
+## 常用软件配置
+
+### Shadowsocks强制谷歌走ipv6隧道
+
+Shadowsocks配置文件位置:/etc/shadowsocks-libev/config.json
+
+配置步骤:
+
+1. 修改配置文件
+
+   ```shell
+   vi /etc/shadowsocks-libev/config.json
+   ```
+
+2. 在配置文件中添加如下配置项
+
+   监听所有端口
+
+   ```shell
+   "server":["[::0]", "0.0.0.0"]
+   ```
+
+   IPV6优先
+
+   ```shell
+   "ipv6_first":true
+   ```
+
+3. 测试地址:www.google.com/sorry/index
+
+   注:如果显示IPv6则配置成功
+
+
+
+
+
+
+

+ 0 - 672
vps操作指南/bbr.sh

@@ -1,672 +0,0 @@
-#!/usr/bin/env bash
-PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
-export PATH
-
-#=================================================
-#	System Required: CentOS 6/7,Debian 8/9,Ubuntu 16+
-#	Description: BBR+BBR魔改版+BBRplus+Lotserver
-#	Version: 1.3.1
-#	Author: 千影,cx9208
-#	Blog: https://www.94ish.me/
-#=================================================
-
-sh_ver="1.3.1"
-github="raw.githubusercontent.com/cx9208/Linux-NetSpeed/master"
-
-Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
-Info="${Green_font_prefix}[信息]${Font_color_suffix}"
-Error="${Red_font_prefix}[错误]${Font_color_suffix}"
-Tip="${Green_font_prefix}[注意]${Font_color_suffix}"
-
-#安装BBR内核
-installbbr(){
-	kernel_version="4.11.8"
-	if [[ "${release}" == "centos" ]]; then
-		rpm --import http://${github}/bbr/${release}/RPM-GPG-KEY-elrepo.org
-		yum install -y http://${github}/bbr/${release}/${version}/${bit}/kernel-ml-${kernel_version}.rpm
-		yum remove -y kernel-headers
-		yum install -y http://${github}/bbr/${release}/${version}/${bit}/kernel-ml-headers-${kernel_version}.rpm
-		yum install -y http://${github}/bbr/${release}/${version}/${bit}/kernel-ml-devel-${kernel_version}.rpm
-	elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then
-		mkdir bbr && cd bbr
-		wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u10_amd64.deb
-		wget -N --no-check-certificate http://${github}/bbr/debian-ubuntu/linux-headers-${kernel_version}-all.deb
-		wget -N --no-check-certificate http://${github}/bbr/debian-ubuntu/${bit}/linux-headers-${kernel_version}.deb
-		wget -N --no-check-certificate http://${github}/bbr/debian-ubuntu/${bit}/linux-image-${kernel_version}.deb
-	
-		dpkg -i libssl1.0.0_1.0.1t-1+deb8u10_amd64.deb
-		dpkg -i linux-headers-${kernel_version}-all.deb
-		dpkg -i linux-headers-${kernel_version}.deb
-		dpkg -i linux-image-${kernel_version}.deb
-		cd .. && rm -rf bbr
-	fi
-	detele_kernel
-	BBR_grub
-	echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBR/BBR魔改版${Font_color_suffix}"
-	stty erase '^H' && read -p "需要重启VPS后,才能开启BBR/BBR魔改版,是否现在重启 ? [Y/n] :" yn
-	[ -z "${yn}" ] && yn="y"
-	if [[ $yn == [Yy] ]]; then
-		echo -e "${Info} VPS 重启中..."
-		reboot
-	fi
-}
-
-#安装BBRplus内核
-installbbrplus(){
-	kernel_version="4.14.129-bbrplus"
-	if [[ "${release}" == "centos" ]]; then
-		wget -N --no-check-certificate https://${github}/bbrplus/${release}/${version}/kernel-${kernel_version}.rpm
-		yum install -y kernel-${kernel_version}.rpm
-		rm -f kernel-${kernel_version}.rpm
-		kernel_version="4.14.129_bbrplus" #fix a bug
-	elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then
-		mkdir bbrplus && cd bbrplus
-		wget -N --no-check-certificate http://${github}/bbrplus/debian-ubuntu/${bit}/linux-headers-${kernel_version}.deb
-		wget -N --no-check-certificate http://${github}/bbrplus/debian-ubuntu/${bit}/linux-image-${kernel_version}.deb
-		dpkg -i linux-headers-${kernel_version}.deb
-		dpkg -i linux-image-${kernel_version}.deb
-		cd .. && rm -rf bbrplus
-	fi
-	detele_kernel
-	BBR_grub
-	echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}BBRplus${Font_color_suffix}"
-	stty erase '^H' && read -p "需要重启VPS后,才能开启BBRplus,是否现在重启 ? [Y/n] :" yn
-	[ -z "${yn}" ] && yn="y"
-	if [[ $yn == [Yy] ]]; then
-		echo -e "${Info} VPS 重启中..."
-		reboot
-	fi
-}
-
-#安装Lotserver内核
-installlot(){
-	if [[ "${release}" == "centos" ]]; then
-		rpm --import http://${github}/lotserver/${release}/RPM-GPG-KEY-elrepo.org
-		yum remove -y kernel-firmware
-		yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-firmware-${kernel_version}.rpm
-		yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-${kernel_version}.rpm
-		yum remove -y kernel-headers
-		yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-headers-${kernel_version}.rpm
-		yum install -y http://${github}/lotserver/${release}/${version}/${bit}/kernel-devel-${kernel_version}.rpm
-	elif [[ "${release}" == "ubuntu" ]]; then
-		bash <(wget --no-check-certificate -qO- "http://${github}/Debian_Kernel.sh")
-	elif [[ "${release}" == "debian" ]]; then
-		bash <(wget --no-check-certificate -qO- "http://${github}/Debian_Kernel.sh")
-	fi
-	detele_kernel
-	BBR_grub
-	echo -e "${Tip} 重启VPS后,请重新运行脚本开启${Red_font_prefix}Lotserver${Font_color_suffix}"
-	stty erase '^H' && read -p "需要重启VPS后,才能开启Lotserver,是否现在重启 ? [Y/n] :" yn
-	[ -z "${yn}" ] && yn="y"
-	if [[ $yn == [Yy] ]]; then
-		echo -e "${Info} VPS 重启中..."
-		reboot
-	fi
-}
-
-#启用BBR
-startbbr(){
-	remove_all
-	echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
-	echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
-	sysctl -p
-	echo -e "${Info}BBR启动成功!"
-}
-
-#启用BBRplus
-startbbrplus(){
-	remove_all
-	echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
-	echo "net.ipv4.tcp_congestion_control=bbrplus" >> /etc/sysctl.conf
-	sysctl -p
-	echo -e "${Info}BBRplus启动成功!"
-}
-
-#编译并启用BBR魔改
-startbbrmod(){
-	remove_all
-	if [[ "${release}" == "centos" ]]; then
-		yum install -y make gcc
-		mkdir bbrmod && cd bbrmod
-		wget -N --no-check-certificate http://${github}/bbr/tcp_tsunami.c
-		echo "obj-m:=tcp_tsunami.o" > Makefile
-		make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
-		chmod +x ./tcp_tsunami.ko
-		cp -rf ./tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/net/ipv4
-		insmod tcp_tsunami.ko
-		depmod -a
-	else
-		apt-get update
-		if [[ "${release}" == "ubuntu" && "${version}" = "14" ]]; then
-			apt-get -y install build-essential
-			apt-get -y install software-properties-common
-			add-apt-repository ppa:ubuntu-toolchain-r/test -y
-			apt-get update
-		fi
-		apt-get -y install make gcc
-		mkdir bbrmod && cd bbrmod
-		wget -N --no-check-certificate http://${github}/bbr/tcp_tsunami.c
-		echo "obj-m:=tcp_tsunami.o" > Makefile
-		ln -s /usr/bin/gcc /usr/bin/gcc-4.9
-		make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-4.9
-		install tcp_tsunami.ko /lib/modules/$(uname -r)/kernel
-		cp -rf ./tcp_tsunami.ko /lib/modules/$(uname -r)/kernel/net/ipv4
-		depmod -a
-	fi
-	
-
-	echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
-	echo "net.ipv4.tcp_congestion_control=tsunami" >> /etc/sysctl.conf
-	sysctl -p
-    cd .. && rm -rf bbrmod
-	echo -e "${Info}魔改版BBR启动成功!"
-}
-
-#编译并启用BBR魔改
-startbbrmod_nanqinlang(){
-	remove_all
-	if [[ "${release}" == "centos" ]]; then
-		yum install -y make gcc
-		mkdir bbrmod && cd bbrmod
-		wget -N --no-check-certificate https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/bbr/centos/tcp_nanqinlang.c
-		echo "obj-m := tcp_nanqinlang.o" > Makefile
-		make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc
-		chmod +x ./tcp_nanqinlang.ko
-		cp -rf ./tcp_nanqinlang.ko /lib/modules/$(uname -r)/kernel/net/ipv4
-		insmod tcp_nanqinlang.ko
-		depmod -a
-	else
-		apt-get update
-		if [[ "${release}" == "ubuntu" && "${version}" = "14" ]]; then
-			apt-get -y install build-essential
-			apt-get -y install software-properties-common
-			add-apt-repository ppa:ubuntu-toolchain-r/test -y
-			apt-get update
-		fi
-		apt-get -y install make gcc-4.9
-		mkdir bbrmod && cd bbrmod
-		wget -N --no-check-certificate https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/bbr/tcp_nanqinlang.c
-		echo "obj-m := tcp_nanqinlang.o" > Makefile
-		make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-4.9
-		install tcp_nanqinlang.ko /lib/modules/$(uname -r)/kernel
-		cp -rf ./tcp_nanqinlang.ko /lib/modules/$(uname -r)/kernel/net/ipv4
-		depmod -a
-	fi
-	
-
-	echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
-	echo "net.ipv4.tcp_congestion_control=nanqinlang" >> /etc/sysctl.conf
-	sysctl -p
-	echo -e "${Info}魔改版BBR启动成功!"
-}
-
-#启用Lotserver
-startlotserver(){
-	remove_all
-	if [[ "${release}" == "centos" ]]; then
-		yum install ethtool
-	else
-		apt-get update
-		apt-get install ethtool
-	fi
-	bash <(wget --no-check-certificate -qO- https://github.com/MoeClub/lotServer/raw/master/Install.sh) install
-	start_menu
-}
-
-#卸载全部加速
-remove_all(){
-	rm -rf bbrmod
-	sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
-    sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
-    sed -i '/fs.file-max/d' /etc/sysctl.conf
-	sed -i '/net.core.rmem_max/d' /etc/sysctl.conf
-	sed -i '/net.core.wmem_max/d' /etc/sysctl.conf
-	sed -i '/net.core.rmem_default/d' /etc/sysctl.conf
-	sed -i '/net.core.wmem_default/d' /etc/sysctl.conf
-	sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
-	sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_tw_recycle/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_keepalive_time/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_mtu_probing/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf
-	sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.route.gc_timeout/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf
-	sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
-	sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf
-	if [[ -e /appex/bin/lotServer.sh ]]; then
-		bash <(wget --no-check-certificate -qO- https://github.com/MoeClub/lotServer/raw/master/Install.sh) uninstall
-	fi
-	clear
-	echo -e "${Info}:清除加速完成。"
-	sleep 1s
-}
-
-#优化系统配置
-optimizing_system(){
-	sed -i '/fs.file-max/d' /etc/sysctl.conf
-	sed -i '/fs.inotify.max_user_instances/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.route.gc_timeout/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_synack_retries/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_syn_retries/d' /etc/sysctl.conf
-	sed -i '/net.core.somaxconn/d' /etc/sysctl.conf
-	sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_timestamps/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.tcp_max_orphans/d' /etc/sysctl.conf
-	sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf
-	echo "fs.file-max = 1000000
-fs.inotify.max_user_instances = 8192
-net.ipv4.tcp_syncookies = 1
-net.ipv4.tcp_fin_timeout = 30
-net.ipv4.tcp_tw_reuse = 1
-net.ipv4.ip_local_port_range = 1024 65000
-net.ipv4.tcp_max_syn_backlog = 16384
-net.ipv4.tcp_max_tw_buckets = 6000
-net.ipv4.route.gc_timeout = 100
-net.ipv4.tcp_syn_retries = 1
-net.ipv4.tcp_synack_retries = 1
-net.core.somaxconn = 32768
-net.core.netdev_max_backlog = 32768
-net.ipv4.tcp_timestamps = 0
-net.ipv4.tcp_max_orphans = 32768
-# forward ipv4
-net.ipv4.ip_forward = 1">>/etc/sysctl.conf
-	sysctl -p
-	echo "*               soft    nofile           1000000
-*               hard    nofile          1000000">/etc/security/limits.conf
-	echo "ulimit -SHn 1000000">>/etc/profile
-	read -p "需要重启VPS后,才能生效系统优化配置,是否现在重启 ? [Y/n] :" yn
-	[ -z "${yn}" ] && yn="y"
-	if [[ $yn == [Yy] ]]; then
-		echo -e "${Info} VPS 重启中..."
-		reboot
-	fi
-}
-#更新脚本
-Update_Shell(){
-	echo -e "当前版本为 [ ${sh_ver} ],开始检测最新版本..."
-	sh_new_ver=$(wget --no-check-certificate -qO- "http://${github}/tcp.sh"|grep 'sh_ver="'|awk -F "=" '{print $NF}'|sed 's/\"//g'|head -1)
-	[[ -z ${sh_new_ver} ]] && echo -e "${Error} 检测最新版本失败 !" && start_menu
-	if [[ ${sh_new_ver} != ${sh_ver} ]]; then
-		echo -e "发现新版本[ ${sh_new_ver} ],是否更新?[Y/n]"
-		read -p "(默认: y):" yn
-		[[ -z "${yn}" ]] && yn="y"
-		if [[ ${yn} == [Yy] ]]; then
-			wget -N --no-check-certificate http://${github}/tcp.sh && chmod +x tcp.sh
-			echo -e "脚本已更新为最新版本[ ${sh_new_ver} ] !"
-		else
-			echo && echo "	已取消..." && echo
-		fi
-	else
-		echo -e "当前已是最新版本[ ${sh_new_ver} ] !"
-		sleep 5s
-	fi
-}
-
-#开始菜单
-start_menu(){
-clear
-echo && echo -e " TCP加速 一键安装管理脚本 ${Red_font_prefix}[v${sh_ver}]${Font_color_suffix}
-  -- 就是爱生活 | 94ish.me --
-  
- ${Green_font_prefix}0.${Font_color_suffix} 升级脚本
-————————————内核管理————————————
- ${Green_font_prefix}1.${Font_color_suffix} 安装 BBR/BBR魔改版内核
- ${Green_font_prefix}2.${Font_color_suffix} 安装 BBRplus版内核 
- ${Green_font_prefix}3.${Font_color_suffix} 安装 Lotserver(锐速)内核
-————————————加速管理————————————
- ${Green_font_prefix}4.${Font_color_suffix} 使用BBR加速
- ${Green_font_prefix}5.${Font_color_suffix} 使用BBR魔改版加速
- ${Green_font_prefix}6.${Font_color_suffix} 使用暴力BBR魔改版加速(不支持部分系统)
- ${Green_font_prefix}7.${Font_color_suffix} 使用BBRplus版加速
- ${Green_font_prefix}8.${Font_color_suffix} 使用Lotserver(锐速)加速
-————————————杂项管理————————————
- ${Green_font_prefix}9.${Font_color_suffix} 卸载全部加速
- ${Green_font_prefix}10.${Font_color_suffix} 系统配置优化
- ${Green_font_prefix}11.${Font_color_suffix} 退出脚本
-————————————————————————————————" && echo
-
-	check_status
-	if [[ ${kernel_status} == "noinstall" ]]; then
-		echo -e " 当前状态: ${Green_font_prefix}未安装${Font_color_suffix} 加速内核 ${Red_font_prefix}请先安装内核${Font_color_suffix}"
-	else
-		echo -e " 当前状态: ${Green_font_prefix}已安装${Font_color_suffix} ${_font_prefix}${kernel_status}${Font_color_suffix} 加速内核 , ${Green_font_prefix}${run_status}${Font_color_suffix}"
-		
-	fi
-echo
-read -p " 请输入数字 [0-11]:" num
-case "$num" in
-	0)
-	Update_Shell
-	;;
-	1)
-	check_sys_bbr
-	;;
-	2)
-	check_sys_bbrplus
-	;;
-	3)
-	check_sys_Lotsever
-	;;
-	4)
-	startbbr
-	;;
-	5)
-	startbbrmod
-	;;
-	6)
-	startbbrmod_nanqinlang
-	;;
-	7)
-	startbbrplus
-	;;
-	8)
-	startlotserver
-	;;
-	9)
-	remove_all
-	;;
-	10)
-	optimizing_system
-	;;
-	11)
-	exit 1
-	;;
-	*)
-	clear
-	echo -e "${Error}:请输入正确数字 [0-11]"
-	sleep 5s
-	start_menu
-	;;
-esac
-}
-#############内核管理组件#############
-
-#删除多余内核
-detele_kernel(){
-	if [[ "${release}" == "centos" ]]; then
-		rpm_total=`rpm -qa | grep kernel | grep -v "${kernel_version}" | grep -v "noarch" | wc -l`
-		if [ "${rpm_total}" > "1" ]; then
-			echo -e "检测到 ${rpm_total} 个其余内核,开始卸载..."
-			for((integer = 1; integer <= ${rpm_total}; integer++)); do
-				rpm_del=`rpm -qa | grep kernel | grep -v "${kernel_version}" | grep -v "noarch" | head -${integer}`
-				echo -e "开始卸载 ${rpm_del} 内核..."
-				rpm --nodeps -e ${rpm_del}
-				echo -e "卸载 ${rpm_del} 内核卸载完成,继续..."
-			done
-			echo --nodeps -e "内核卸载完毕,继续..."
-		else
-			echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1
-		fi
-	elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then
-		deb_total=`dpkg -l | grep linux-image | awk '{print $2}' | grep -v "${kernel_version}" | wc -l`
-		if [ "${deb_total}" > "1" ]; then
-			echo -e "检测到 ${deb_total} 个其余内核,开始卸载..."
-			for((integer = 1; integer <= ${deb_total}; integer++)); do
-				deb_del=`dpkg -l|grep linux-image | awk '{print $2}' | grep -v "${kernel_version}" | head -${integer}`
-				echo -e "开始卸载 ${deb_del} 内核..."
-				apt-get purge -y ${deb_del}
-				echo -e "卸载 ${deb_del} 内核卸载完成,继续..."
-			done
-			echo -e "内核卸载完毕,继续..."
-		else
-			echo -e " 检测到 内核 数量不正确,请检查 !" && exit 1
-		fi
-	fi
-}
-
-#更新引导
-BBR_grub(){
-	if [[ "${release}" == "centos" ]]; then
-        if [[ ${version} = "6" ]]; then
-            if [ ! -f "/boot/grub/grub.conf" ]; then
-                echo -e "${Error} /boot/grub/grub.conf 找不到,请检查."
-                exit 1
-            fi
-            sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf
-        elif [[ ${version} = "7" ]]; then
-            if [ ! -f "/boot/grub2/grub.cfg" ]; then
-                echo -e "${Error} /boot/grub2/grub.cfg 找不到,请检查."
-                exit 1
-            fi
-            grub2-set-default 0
-        fi
-    elif [[ "${release}" == "debian" || "${release}" == "ubuntu" ]]; then
-        /usr/sbin/update-grub
-    fi
-}
-
-#############内核管理组件#############
-
-
-
-#############系统检测组件#############
-
-#检查系统
-check_sys(){
-	if [[ -f /etc/redhat-release ]]; then
-		release="centos"
-	elif cat /etc/issue | grep -q -E -i "debian"; then
-		release="debian"
-	elif cat /etc/issue | grep -q -E -i "ubuntu"; then
-		release="ubuntu"
-	elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat"; then
-		release="centos"
-	elif cat /proc/version | grep -q -E -i "debian"; then
-		release="debian"
-	elif cat /proc/version | grep -q -E -i "ubuntu"; then
-		release="ubuntu"
-	elif cat /proc/version | grep -q -E -i "centos|red hat|redhat"; then
-		release="centos"
-    fi
-}
-
-#检查Linux版本
-check_version(){
-	if [[ -s /etc/redhat-release ]]; then
-		version=`grep -oE  "[0-9.]+" /etc/redhat-release | cut -d . -f 1`
-	else
-		version=`grep -oE  "[0-9.]+" /etc/issue | cut -d . -f 1`
-	fi
-	bit=`uname -m`
-	if [[ ${bit} = "x86_64" ]]; then
-		bit="x64"
-	else
-		bit="x32"
-	fi
-}
-
-#检查安装bbr的系统要求
-check_sys_bbr(){
-	check_version
-	if [[ "${release}" == "centos" ]]; then
-		if [[ ${version} -ge "6" ]]; then
-			installbbr
-		else
-			echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	elif [[ "${release}" == "debian" ]]; then
-		if [[ ${version} -ge "8" ]]; then
-			installbbr
-		else
-			echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	elif [[ "${release}" == "ubuntu" ]]; then
-		if [[ ${version} -ge "14" ]]; then
-			installbbr
-		else
-			echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	else
-		echo -e "${Error} BBR内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-	fi
-}
-
-check_sys_bbrplus(){
-	check_version
-	if [[ "${release}" == "centos" ]]; then
-		if [[ ${version} -ge "6" ]]; then
-			installbbrplus
-		else
-			echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	elif [[ "${release}" == "debian" ]]; then
-		if [[ ${version} -ge "8" ]]; then
-			installbbrplus
-		else
-			echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	elif [[ "${release}" == "ubuntu" ]]; then
-		if [[ ${version} -ge "14" ]]; then
-			installbbrplus
-		else
-			echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	else
-		echo -e "${Error} BBRplus内核不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-	fi
-}
-
-
-#检查安装Lotsever的系统要求
-check_sys_Lotsever(){
-	check_version
-	if [[ "${release}" == "centos" ]]; then
-		if [[ ${version} == "6" ]]; then
-			kernel_version="2.6.32-504"
-			installlot
-		elif [[ ${version} == "7" ]]; then
-			yum -y install net-tools
-			kernel_version="3.10.0-327"
-			installlot
-		else
-			echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	elif [[ "${release}" == "debian" ]]; then
-		if [[ ${version} = "7" || ${version} = "8" ]]; then
-			if [[ ${bit} == "x64" ]]; then
-				kernel_version="3.16.0-4"
-				installlot
-			elif [[ ${bit} == "x32" ]]; then
-				kernel_version="3.2.0-4"
-				installlot
-			fi
-		elif [[ ${version} = "9" ]]; then
-			if [[ ${bit} == "x64" ]]; then
-				kernel_version="4.9.0-4"
-				installlot
-			fi
-		else
-			echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	elif [[ "${release}" == "ubuntu" ]]; then
-		if [[ ${version} -ge "12" ]]; then
-			if [[ ${bit} == "x64" ]]; then
-				kernel_version="4.4.0-47"
-				installlot
-			elif [[ ${bit} == "x32" ]]; then
-				kernel_version="3.13.0-29"
-				installlot
-			fi
-		else
-			echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-		fi
-	else
-		echo -e "${Error} Lotsever不支持当前系统 ${release} ${version} ${bit} !" && exit 1
-	fi
-}
-
-check_status(){
-	kernel_version=`uname -r | awk -F "-" '{print $1}'`
-	kernel_version_full=`uname -r`
-	if [[ ${kernel_version_full} = "4.14.129-bbrplus" ]]; then
-		kernel_status="BBRplus"
-	elif [[ ${kernel_version} = "3.10.0" || ${kernel_version} = "3.16.0" || ${kernel_version} = "3.2.0" || ${kernel_version} = "4.4.0" || ${kernel_version} = "3.13.0"  || ${kernel_version} = "2.6.32" || ${kernel_version} = "4.9.0" ]]; then
-		kernel_status="Lotserver"
-	elif [[ `echo ${kernel_version} | awk -F'.' '{print $1}'` == "4" ]] && [[ `echo ${kernel_version} | awk -F'.' '{print $2}'` -ge 9 ]] || [[ `echo ${kernel_version} | awk -F'.' '{print $1}'` == "5" ]]; then
-		kernel_status="BBR"
-	else 
-		kernel_status="noinstall"
-	fi
-
-	if [[ ${kernel_status} == "Lotserver" ]]; then
-		if [[ -e /appex/bin/lotServer.sh ]]; then
-			run_status=`bash /appex/bin/lotServer.sh status | grep "LotServer" | awk  '{print $3}'`
-			if [[ ${run_status} = "running!" ]]; then
-				run_status="启动成功"
-			else 
-				run_status="启动失败"
-			fi
-		else 
-			run_status="未安装加速模块"
-		fi
-	elif [[ ${kernel_status} == "BBR" ]]; then
-		run_status=`grep "net.ipv4.tcp_congestion_control" /etc/sysctl.conf | awk -F "=" '{print $2}'`
-		if [[ ${run_status} == "bbr" ]]; then
-			run_status=`lsmod | grep "bbr" | awk '{print $1}'`
-			if [[ ${run_status} == "tcp_bbr" ]]; then
-				run_status="BBR启动成功"
-			else 
-				run_status="BBR启动失败"
-			fi
-		elif [[ ${run_status} == "tsunami" ]]; then
-			run_status=`lsmod | grep "tsunami" | awk '{print $1}'`
-			if [[ ${run_status} == "tcp_tsunami" ]]; then
-				run_status="BBR魔改版启动成功"
-			else 
-				run_status="BBR魔改版启动失败"
-			fi
-		elif [[ ${run_status} == "nanqinlang" ]]; then
-			run_status=`lsmod | grep "nanqinlang" | awk '{print $1}'`
-			if [[ ${run_status} == "tcp_nanqinlang" ]]; then
-				run_status="暴力BBR魔改版启动成功"
-			else 
-				run_status="暴力BBR魔改版启动失败"
-			fi
-		else 
-			run_status="未安装加速模块"
-		fi
-	elif [[ ${kernel_status} == "BBRplus" ]]; then
-		run_status=`grep "net.ipv4.tcp_congestion_control" /etc/sysctl.conf | awk -F "=" '{print $2}'`
-		if [[ ${run_status} == "bbrplus" ]]; then
-			run_status=`lsmod | grep "bbrplus" | awk '{print $1}'`
-			if [[ ${run_status} == "tcp_bbrplus" ]]; then
-				run_status="BBRplus启动成功"
-			else 
-				run_status="BBRplus启动失败"
-			fi
-		else 
-			run_status="未安装加速模块"
-		fi
-	fi
-}
-
-#############系统检测组件#############
-check_sys
-check_version
-[[ ${release} != "debian" ]] && [[ ${release} != "ubuntu" ]] && [[ ${release} != "centos" ]] && echo -e "${Error} 本脚本不支持当前系统 ${release} !" && exit 1
-start_menu
-

+ 0 - 27
vps操作指南/nginx/cert/fq.zhixinghe1.top.key

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEA1jpX6G+sxQJ5hk9QmjBh/bUHlTb9ANx95gADR/InvMwt9Lcf
-tZyUHTiykhopy328OpUb5lwxggLVw+rX0KNXSHGgK1YQcmx5ge+hUSHUl4NT6ywa
-tigGEBVxtGf5sItCyjm6kiKanAjSyXYvf71Mqi/eBNS7EGaocRTumQKfH2KKQe2E
-OtLiQG6L6RcwGaOSqXZHBOaiergbrzEunEv1wotPPafIzUlo61NKBx8eLL2jcTXZ
-qOv5fgMKr5jYzADeqnkU+HZRsUcajTn6uEup/6ybIRqv2USoXZRi/IepD4EbejIh
-nEj+P+oXU09ywSY5Xwmp9tJ+LYUQ8rxAddZoEwIDAQABAoIBAAHmT6xESh56a+vj
-SMhvttDFiwnC/DZy0LU9wq3Csz8uO77RgpBPVLiKDRjZcTLIJZO3DB9lrBvzqk1Z
-RJYk/PJVtUeL7zEAfTW+wgCzwdLUTs6T4C4SPfyKDXNAEk+2XsA/68g/7DtiKeIE
-OAD0QBDABXocXM8gu17Y+QQDYyf7cCguSZOxxjL1XRyam0qf4LDvpPF7MV8XHZCz
-7+kgzj/1peQWXlvgUMy/ji2zDwvYZKLel5TqcUOv0YIbSJVmPjot6m72V6MMy3kR
-WD7h5augojsI48+fRcDZVypL8fuCPd3dP2W+xMt5Cg99zwoEawPhTHoc4hmfLK2K
-B4lSDukCgYEA870ARcHNOB7fWtAv56L9Xv6aqkEgAu96crrFRf3G6aXKVHWQwK+h
-NXADCeFXuIi/dC7Q+lxUJLEIp51gBBA4LnNczqx6x28FM4SSWTIq/jny0w2NtSwI
-1Yj4qHinSIzJwgbhiLUFHeTZl/hphiJ3IUnR+P9EgGZu6ZUgqgA7qp0CgYEA4QFK
-f5qibb80vH8nUre2yT4GQC+8nteu2K6PR5SNkiN6ggW8K5fYdJfGK8/a6l1A+E/w
-9KkQvWF5LQBt1iuznLwhG0bX4hmKVxRvydrJZAz0SaLU0358pTJAVi7LIjTxlF4z
-O3A/FMxO8WnWQbkKkc/9y5Oh8+Vki2hE1IVqxm8CgYAIKdVfgL0x2v7aGMzx8iiQ
-TPC7MRE0Z/bu7sh6rqRB4Raku4dMnNVGZ+kCJLT+bj4TUxoWuI7s560FiCTWHgDz
-tVNvbKF0GojPD+qi6CY+e4xhezu6zK3DESJa6ieYK3b6c6aMIJv6Q1byWxSVtIPO
-7p0EvO/7aPLgCemdKALXlQKBgFz/+5rif2B9N37xz38RECv9xvegw4WkAFDvValw
-bVOJ9ojnde9Ow9jtIqvZLdLQ2JnJ8P4vIwwjzcIb+0oaphKSb9ymW3TIubVkbRAx
-riv8brxA4VbJYRumuZDlpnBtEa0Rgnt+2ZPvHnIKHNTtdsDuByitzLLSjcxRPKHa
-w1dhAoGBAKFdRKs7KDoijXNimY6bk4NSmu4uS8Sm2FYy8t5RO+h4pdtkVwD6D53/
-1k/NQXCNlL4HHY2YwRSzyn+c2kOpM3sg7CCW7p3zrrBlyj11rZIg+WBXONBA1s/i
-TNibMZZzSWshlt9rE1xtkysm+Q5N4Pm1WebUgJFyLYAb/CWrBE9b
------END RSA PRIVATE KEY-----

+ 0 - 61
vps操作指南/nginx/cert/fq.zhixinghe1.top.pem

@@ -1,61 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF+TCCBOGgAwIBAgIQBJMTXed1drJ47qQ2WL7QJzANBgkqhkiG9w0BAQsFADBu
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
-RFYgVExTIENBIC0gRzIwHhcNMjMwMzEyMDAwMDAwWhcNMjQwMzEyMjM1OTU5WjAc
-MRowGAYDVQQDExFmcS56aGl4aW5naGUxLnRvcDCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBANY6V+hvrMUCeYZPUJowYf21B5U2/QDcfeYAA0fyJ7zMLfS3
-H7WclB04spIaKct9vDqVG+ZcMYIC1cPq19CjV0hxoCtWEHJseYHvoVEh1JeDU+ss
-GrYoBhAVcbRn+bCLQso5upIimpwI0sl2L3+9TKov3gTUuxBmqHEU7pkCnx9iikHt
-hDrS4kBui+kXMBmjkql2RwTmonq4G68xLpxL9cKLTz2nyM1JaOtTSgcfHiy9o3E1
-2ajr+X4DCq+Y2MwA3qp5FPh2UbFHGo05+rhLqf+smyEar9lEqF2UYvyHqQ+BG3oy
-IZxI/j/qF1NPcsEmOV8JqfbSfi2FEPK8QHXWaBMCAwEAAaOCAuMwggLfMB8GA1Ud
-IwQYMBaAFHjfkZBf7t6s9sV169VMVVPvJEq2MB0GA1UdDgQWBBRpFf2NxBzo6WhO
-v1PbHFDbG9zT5zAcBgNVHREEFTATghFmcS56aGl4aW5naGUxLnRvcDAOBgNVHQ8B
-Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD4GA1UdIAQ3
-MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQu
-Y29tL0NQUzCBgAYIKwYBBQUHAQEEdDByMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz
-cC5kaWdpY2VydC5jb20wSgYIKwYBBQUHMAKGPmh0dHA6Ly9jYWNlcnRzLmRpZ2lj
-ZXJ0LmNvbS9FbmNyeXB0aW9uRXZlcnl3aGVyZURWVExTQ0EtRzIuY3J0MAkGA1Ud
-EwQCMAAwggGABgorBgEEAdZ5AgQCBIIBcASCAWwBagB2AHb/iD8KtvuVUcJhzPWH
-ujS0pM27KdxoQgqf5mdMWjp0AAABhtSODLkAAAQDAEcwRQIhANiUy0k8c21FqG6N
-/5lksvaEaIRsMvrOq+0+XujuHtoYAiAZ72wu86q9WmQr3eVivwZZXywzwVoDjHtX
-GM5WmC1ySwB3AHPZnokbTJZ4oCB9R53mssYc0FFecRkqjGuAEHrBd3K1AAABhtSO
-DNEAAAQDAEgwRgIhAPBuXgLEke0n0MsAheoRllxGZivEQxZeqvvKmp4xiVURAiEA
-taSIoN/j/stY5amWvPChsPQW6x8r73oerO7cXIwWj8UAdwBIsONr2qZHNA/lagL6
-nTDrHFIBy1bdLIHZu7+rOdiEcwAAAYbUjgyRAAAEAwBIMEYCIQDMuwYqc4uaw8vV
-0mm56WFpDlsg+hiwJbeee5do/kbjpAIhAM/t7zNq4cNBbN9oRCjmSUvgrq3sgCxf
-qqTgWRXJMsmMMA0GCSqGSIb3DQEBCwUAA4IBAQA3Odl/m3R3/gLCAjbNZvyZPvuN
-MtRbYij26oc9EZU+eFd9ldTnQdqOpkHbWynjGVDGkw4/m7YMyLpLtKBFg/AYK5Ba
-F1mPmNImkIdtwd8Nj/4UTf3bRJkmhIeHnsP6pPW3df1YmEHps9j/xjjT0Lvj9oZZ
-CIVpsRbz3uXwsmbpQP7N2FTiruQMMD+hQqhPV/ByuJzMrUCzdLodSa8i+KQzmVdb
-OBaanovbetnNegw5n0oinw8XNGCb7arKzuOb+vZWszHkUo+dtAOeTPyf3ciDVhbp
-RRylbhZNlteqBHQfjF49tzjAKKE68ErhPVs6RVCb9DMDNUWX78FJtH1YreiE
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
-MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
-MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
-b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
-MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
-eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
-NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
-QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
-NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
-ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
-lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
-BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
-AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
-Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
-Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
-/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
-MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
-L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
-98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
-xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
-GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
-n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
------END CERTIFICATE-----

+ 0 - 27
vps操作指南/nginx/cert/fs.zhixinghe1.top.key

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAvoqzb1S24j9S0mioChLs8Qb/j7scJwT8l1iSc5OPGfmMZw9K
-JJLGx4bt51cO95AP3N4BOivs5VyvY/pslF+jzvDIEBcw8nIPN0C8yduHZDypQq1A
-Bxu5NY5Rbm21q7cy4E5/K4lsBSn85FV8lnyO7wn1DYAhL/J3UA8Gol/PGEuzB8F3
-uF8t0+rBRiZUUC4PlI7pBuXDme0T3/+w1/FB28EOvR5OzgmMO2qrP4sz4K0+uVG8
-VUv4GlFVNz8Qth089ODjmmSs8mGQDBtZ6P4dDQ0FEzBmmva0w0f1Dg47v5RrBTpO
-NYyXLfj82TcYtmil5Mkay40BZfV+IkzQ/us7/wIDAQABAoIBADRqGyoI97YNDU9s
-Eq2SvzMeZba4Fep16LYJW2AHu1m91+2RuyeMaLoCV/dHb4qSSorLVzMVWjlN4cFy
-5eN626jVe3NRrdlDnwPn/wbYKMpeFYGN/wr1iWE+IRBrhYoS/x/M+BaV2u0gu7xj
-9729zePbrVllYbu6yy9usrh/+owH7FHFfbfeTv0p0WSD+Ic8QRpcyxOeLa6wGXnY
-yaaqdwTYOvP8sxLotJAoJefAVSLCXZkALaIuds1PmGEyWOOEm7piKZZslC4MJz3O
-7ISBBDoHplW/JFQqfWFcL3j/dHpyY0VjTJ00cclZUR5NIOjBpiYPeVSwn8SRcKf/
-z8qwFsECgYEA+4cx6kWY1o10HzPG/ib6eUa01CY5z/eGD3ptIZjHKTiUGTkVgcB1
-ROqcEr4Cjw4bpKAga0dqLU9yPTOYxYRR5UhXYZ72SWbkTI5tQchxiMx2e2YLUR5w
-rlxmFUJgvVqxtl9TiUFY2zSp8EJbHZBhqdXs2QBeEYJ8pB2UftO+/BkCgYEAwe3u
-0HQjOdwtm61ODewEJ2RuexzcyBzlVtfvxr+lRc262YKP/+Uj70M4ugUNUTmcrEiY
-iuaEkYps9SCizJ3Owt7y/JsuKtIWb7XwSmdbjMSmqfnchSqFNTUo3PBUS8H/bB3w
-9wt5q4h1d9WJAbXsauFIhwf9LF08OmN05tZB+9cCgYEAttoKrG+Z82dz4ncGk56M
-efuv24ZKguhDmh77FPB24H2UFF4OR3w9BDO18F4XiB3OdLg/uR16j6PwvZMz3Wsb
-Ch6z/3DLRIM7NnhX7vmjp7pT69M8KOWDLw5W29+caitzg8v6844A5aJ8ZAApMu3S
-QeAVxY9h00LUD469dBHFBokCgYEAkGHuEIK3C0fzKNmBqHnUqeNrIfveIJrq4JpK
-aYWbrfm6qGA9h75435UDsfM69ANZsyclcxynDJisAGC49HB1VL6a2BlM6RKbI7ao
-XSzQi2CJ2TkuxnJe1LtsXfoMOI8J9Nvh4HxJrL0fAAYaSAzDJNvvnKEFDDeqNKqB
-ia9xVucCgYB4TrAqnxj00dMkrBwVEf2p7IgxbWBXLjkuv61hwvpQki1bIe6iTef5
-/Pn/7VTStdl+IIOTQR+fMWhee+sY7XQXOp6LUZpwrTO8TIDKEnmEUIYp9s1+Nn3X
-M0iactE5cXp2HEpWBv5KslyoVpyCce+Q7y53TxVDUWEyGb0SFcit2Q==
------END RSA PRIVATE KEY-----

+ 0 - 61
vps操作指南/nginx/cert/fs.zhixinghe1.top.pem

@@ -1,61 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF9zCCBN+gAwIBAgIQA16EPIMk31jJ1dRvsXX9ezANBgkqhkiG9w0BAQsFADBu
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
-RFYgVExTIENBIC0gRzIwHhcNMjMwMzEyMDAwMDAwWhcNMjQwMzEyMjM1OTU5WjAc
-MRowGAYDVQQDExFmcy56aGl4aW5naGUxLnRvcDCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAL6Ks29UtuI/UtJoqAoS7PEG/4+7HCcE/JdYknOTjxn5jGcP
-SiSSxseG7edXDveQD9zeATor7OVcr2P6bJRfo87wyBAXMPJyDzdAvMnbh2Q8qUKt
-QAcbuTWOUW5ttau3MuBOfyuJbAUp/ORVfJZ8ju8J9Q2AIS/yd1APBqJfzxhLswfB
-d7hfLdPqwUYmVFAuD5SO6Qblw5ntE9//sNfxQdvBDr0eTs4JjDtqqz+LM+CtPrlR
-vFVL+BpRVTc/ELYdPPTg45pkrPJhkAwbWej+HQ0NBRMwZpr2tMNH9Q4OO7+UawU6
-TjWMly34/Nk3GLZopeTJGsuNAWX1fiJM0P7rO/8CAwEAAaOCAuEwggLdMB8GA1Ud
-IwQYMBaAFHjfkZBf7t6s9sV169VMVVPvJEq2MB0GA1UdDgQWBBT87DwR/hLQtBAm
-o7+Guo7a2QDsejAcBgNVHREEFTATghFmcy56aGl4aW5naGUxLnRvcDAOBgNVHQ8B
-Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMD4GA1UdIAQ3
-MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQu
-Y29tL0NQUzCBgAYIKwYBBQUHAQEEdDByMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz
-cC5kaWdpY2VydC5jb20wSgYIKwYBBQUHMAKGPmh0dHA6Ly9jYWNlcnRzLmRpZ2lj
-ZXJ0LmNvbS9FbmNyeXB0aW9uRXZlcnl3aGVyZURWVExTQ0EtRzIuY3J0MAkGA1Ud
-EwQCMAAwggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoBaAB3AHb/iD8KtvuVUcJhzPWH
-ujS0pM27KdxoQgqf5mdMWjp0AAABhtSOC9MAAAQDAEgwRgIhAPT3HaEOmqJJ117O
-dAP24YUeXBieu6/vlCsVqsQUUvpNAiEAo5fmYfz5BeVqoJNOZjLEsIGc+BMTeX7n
-h4aEKx8ih38AdgBz2Z6JG0yWeKAgfUed5rLGHNBRXnEZKoxrgBB6wXdytQAAAYbU
-jgvyAAAEAwBHMEUCIQCQarF5DuzVFjP/5B/S4+oZd/rgYRMjippwhgNaFjHxmgIg
-XOlRiFTGcfjZadp9oXPhD/rbB730k2dmn3qhIn31P7wAdQBIsONr2qZHNA/lagL6
-nTDrHFIBy1bdLIHZu7+rOdiEcwAAAYbUjguzAAAEAwBGMEQCIDJx53UgDg9g2uUt
-VvkAgmWEFxomfAdh/0yxtFcFRjVqAiA/JSMI6cgrZr9U3lvtCt1IAvPSD1p1OeJj
-Hb4MUzwL6jANBgkqhkiG9w0BAQsFAAOCAQEA0mFQzdLeTAqhNSmMb9tWUXME8WP9
-TXYdf7cIQtpkiEgAyn6ZmIR1dIeQLdcGiNWTDxrhSzkSBElVPiCkXaNDwry+ZfAE
-r2U4Kb6VpqePcamggt5PZM2AMRkVGM9DKAYS6ctSSbJxFDKlNzgJ5cSC3tAc89nq
-cx/3yhJ8K1b/HrYK9xLovBvrKIlm16yDTibuYQxduqlY3FiLkaAc4j+hU30PsIww
-Bic5nEnwf0SRLo3RWhPvbDeijHpQ29wh82sMjEigGKzal34H1m/Wm7AKuaj2L0+g
-KUWV5K+Fd4Ha7uuL34Gqoib7uOrmK0kNdgyXAZU6rkxGMmkZUBcrzpAmSw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
-MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
-MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
-b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
-MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
-eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
-NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
-QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
-NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
-ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
-lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
-BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
-AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
-Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
-Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
-/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
-MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
-L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
-98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
-xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
-GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
-n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
------END CERTIFICATE-----

+ 0 - 27
vps操作指南/nginx/cert/git.zhixinghe1.top.key

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAvlSLL5ThzrrceOFHOut9zCc/6pCW66yfSwY4rkTsy+WXZhKe
-lR7wU7+vrihhC9oxvT3UoC6JKbAklh5C/8r6OUXsHgyj2jOScsQMZ5bsRt3QGoRd
-PdZy9gC0IcmP9SJKsibxUvOasAVaULk0tAMEsyUWRZXVrCzqTAQFZZOheIRwhraQ
-3dCGnjOjViOJyg4HpGfXI/KOMAvhzLehiuNZqPq0uy6S9L6MO/KmQwP6uKIKTybn
-sKKiUMoBSJU+X3o4mByuHqhvMtFKLVdVGNqiyYBluaWzgNNMIpaKWClYP98LyWMr
-41FEz1shRyMcJyUbPV/xNnaGeBCQ3xoVZjV1EQIDAQABAoIBAAuqIceeP8KMODPe
-Vp+5TAHli+jDyMQT1cVi0bl4duy+GuvCC18HQOJZFpq9VclEq5S2A+B3Sae46F0c
-6K1FktVMwD5NNwOJ8pk/A6WbncpwEK93WkGOcYg7Hc8OS9jRq7NEaLjVPi84fMMC
-vsSjhLe396f3GVvOeuOCwZPqmtRIakoPhDvCsFrIkId0cbbk9k6QlcxGk1VACJQt
-z8nNf0WOxmvOrKFw+eU6/7kGc66Tmui7FNec6mWp0fuvyLyDbnt/YF7RWhTPpFm0
-FLI3turIqTDdCHp91/hDvPZ8FrNiox+UgqyUet/ZtzRb5zJB1ABQYsP0WrdknuEI
-Eyy2SBsCgYEA/pDQuBFAkoYSVQ/DfJvLW9zkRqUwKHZPrqYSoEz3NL4WOoVyptT4
-fD9q1RdxxYj46Dlsu4l0g4cDJ2y0dcQXwO7QOwh3S2NtfM9nXjKR/Bl/JvRW/cM+
-QoxK/Ho98wt2KNGwpQIvB2A0tTBfmVL09hkrBQb7gnD/Uunjs85ruQMCgYEAv2cT
-TfZIfzPD6TfwwXiph6OCZOBA2EWtrbxWi+0uZOf1JV7eyl4yhYEkbAy+PKQ/1yP5
-G7JNQVQi2J2XA0o0ausdvRrcylAXuMICS5ZMqHC9p1RyWVohvVGa7JkMXhFdWYEz
-nDGXjQ13nqjXndfZ9MGEXaXNAKpnbdi5kiRtO1sCgYEAn7j9PICWo1i75+McJPMb
-hWfzUuASd1DEbjCFP08LTGx4Rf+1EDhQMKUZwtoS6H4oroxZTNHR6TStJe9uyvVe
-cg9lV6TYNNUNvWHk2ZWhQyw8O5TTgCUgy2B7LC8G75ghazsmOmJEX7xdVdIkKW+D
-g2YHOABJjm6XxM47sHWz4UECgYBMozf+kmtqy05ZVnXG8cpnrheqzoQIVLX7B5tb
-wac+7gWhZgAs5VSzUgdEYEHXxChvu06mQVlfnBGrzEXIInEkkmnA6z2WoEUvTDdh
-Dpg5JZM6qbxzfHxf8onmzE1AaRGIogwJMW4uI0NPOunCoMf7kXSvjpCsAI8TU6DS
-HFXEWwKBgQDwyi1R8J9Uwg2ivy5CG/waBi13MW4Mdz6DbUWnRn/GcfxD5nPmCHJj
-moShLsG34Wj4pEwONPBeaJMiPYND2OCRjepQ3PI2T6v+LlfmV+kFXtgqWXLgY1EW
-OSdt/cWUluGwmSYpvUiy4xEk+r1cTYnGCNlI99ZZWDG/Bb+2gXJ92Q==
------END RSA PRIVATE KEY-----

+ 0 - 61
vps操作指南/nginx/cert/git.zhixinghe1.top.pem

@@ -1,61 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF+zCCBOOgAwIBAgIQCNFp7teChgbR2ELcM4DEJDANBgkqhkiG9w0BAQsFADBu
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
-RFYgVExTIENBIC0gRzIwHhcNMjMxMDE2MDAwMDAwWhcNMjQxMDE1MjM1OTU5WjAd
-MRswGQYDVQQDExJnaXQuemhpeGluZ2hlMS50b3AwggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQC+VIsvlOHOutx44Uc6633MJz/qkJbrrJ9LBjiuROzL5Zdm
-Ep6VHvBTv6+uKGEL2jG9PdSgLokpsCSWHkL/yvo5ReweDKPaM5JyxAxnluxG3dAa
-hF091nL2ALQhyY/1IkqyJvFS85qwBVpQuTS0AwSzJRZFldWsLOpMBAVlk6F4hHCG
-tpDd0IaeM6NWI4nKDgekZ9cj8o4wC+HMt6GK41mo+rS7LpL0vow78qZDA/q4ogpP
-JuewoqJQygFIlT5fejiYHK4eqG8y0UotV1UY2qLJgGW5pbOA00wilopYKVg/3wvJ
-YyvjUUTPWyFHIxwnJRs9X/E2doZ4EJDfGhVmNXURAgMBAAGjggLkMIIC4DAfBgNV
-HSMEGDAWgBR435GQX+7erPbFdevVTFVT7yRKtjAdBgNVHQ4EFgQUb/gxzrCffi4P
-cJfz0vZhZADvNz4wHQYDVR0RBBYwFIISZ2l0LnpoaXhpbmdoZTEudG9wMD4GA1Ud
-IAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNl
-cnQuY29tL0NQUzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
-CCsGAQUFBwMCMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
-Y3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGln
-aWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1HMi5jcnQwDAYD
-VR0TAQH/BAIwADCCAX0GCisGAQQB1nkCBAIEggFtBIIBaQFnAHYA7s3QZNXbGs7F
-XLedtM0TojKHRny87N7DUUhZRnEftZsAAAGLOKpf6gAABAMARzBFAiBMRUgsegxl
-mRQx/B4dC2YPhcdskggco+KC3xOQjPpSZAIhAMT+poPK2DSzYg0QqQUZzSSCbMFK
-hnzP+U5FORUjEuNqAHYASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMA
-AAGLOKpgCgAABAMARzBFAiAIOL9Od9miInQAk37DlKENjIfe0EBCFR/y+NEwOC0u
-5AIhAO4ytvrjzslbgcXHxqrYTLtKmurak9F0mCKRnpOQcnB4AHUA2ra/az+1tiKf
-m8K7XGvocJFxbLtRhIU0vaQ9MEjX+6sAAAGLOKpf5wAABAMARjBEAiB3FiBYwN/f
-PJEr8IM/g6ehkRnxIg19NSmhkeMEzrJpigIgUBj4arkE6X18WfYYxR8s/qb9mQA9
-dmPE2lhEF4zbmtUwDQYJKoZIhvcNAQELBQADggEBAMkSM9pZ++qtGFQBuimyl+CE
-Z3PVgI187cKNZt6LHz/z9A6WfZqFZ/w/2rROoNeKp9Hu+QOya1JATfy71N/FybBs
-88KJCkvK0E8GxRDyfk+W6EbzB5mZsAZ83LrwycfU/t+TdPjtgqjy2r1z3/xF/1pX
-pzwOuu+XkEwOwQRy2gwkeVEtpUK0roHOvRAi9WdpDfMCuZksY1nJUHm4J486sFbX
-x2O1ILx/QmEPqaybhpYgWqgMBffPr5HjrqOORTBB8aAQe9zEo2E39mOtlKpUPbc5
-GR857i9ovnBDgEZFDn3bIIH5K+x0c6Rp161AcGF+DU7ghLaBNUPw8bM6lXwVKZU=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
-MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
-MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
-b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
-MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
-eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
-NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
-QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
-NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
-ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
-lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
-BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
-AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
-Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
-Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
-/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
-MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
-L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
-98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
-xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
-GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
-n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
------END CERTIFICATE-----

+ 0 - 27
vps操作指南/nginx/cert/rss.zhixinghe1.top.key

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAhP34D8tQ3NaLYz+e9m/rwPJc28Fphwuo/c3Kje+XSH/IYi/u
-tcDdO9Y54ll1Pe/G9ApG7mDgN2ExDC3FJAdslmb8YxXDCyuFprVpTPHmuhCesVOt
-Ijt6CC0DbICoe44b16JndzM7iUcyrjw3HC9HQivmYzctebzWPbj2ILr43Cwah8rO
-NcE1cntjA2wQYzSdRlJrqFaT0ECMeEr7C5ztXfrzLj9rkAc7jRntvpGKs1Mp44Rv
-smNu6ZlxpCui+3nmlpGF5iUBxvQlWxcNv1WFdZi6Y3aTFHgjCJlZklu07lL5yx1A
-tD1dDw6TDgwqsI8RmN+E+fp9G8x8kMr6n9A8QwIDAQABAoIBAAkNtwzwNOWLz3pm
-st4o+V4twaeOL65rW0pH77Gg7WYYmN4iUDhcVFNF/rPLjkE0qREk//Yrbygl/C5N
-kV2mCbzlbuoZ6ajBgjw6nlwIHcJt7je5MBCkBuc2lUSWL6IVpwyTeEKzoKp0R913
-qPLIvyugjHMVpwliEx2pkUviHp3yY42UxxA3efkZaWTLYIcJOK0VfWIiOjmSMz7u
-sL6bcO3wO9n1xYF7S+ZJ80tqjpxQEE7JfGH0mbUO+/mz45JRW0NkVGmuwn7tCVkm
-3qsc5gle2TFHkWqoeQfft/nJHBB7l2m32UvB1POWd9NChyKTPC70v7edx4hzk96M
-jShUFHUCgYEAu9VGMcaUt9UASRgSBHHygxVlq1tGuwaaXTgrJd9cFJoeEUmeee8u
-ctGFMHDKCFmyjuijTaDwfbWpR1/z8LUrjPvTR68im7rozQvdoizLiA6rVOGX6hni
-UojYHipsGgk+ax90l5wXR07R6vxinaPXvBGL9K69KxWJqTKc0rWAhPcCgYEAtUGp
-Yhunu0tKeOZYGx/WGfGuyGnGLeS8mhWGBBesB7VsJKSzVgdH9tx332UkNGg4dEHX
-ZcBB7jXDaCsmftJf0UjUAE0l6A8cvnaht+N4KjNDbxUXZb7UmxZVc+Vrso8HxID0
-BzDt9J5jMSo6swAg9JpouhL6lEGV3VDmw3qUTBUCgYEAtYcbrLVXOwaunPWXTBZ3
-onnGZUH0bIGoI5lKEfL4gaykjF6SuxMN18dnqfYHOuS9LWHlmPuGEGfFboZsMeBV
-c45YlXnLv6d2n9vs2XPjS92pdYIEmCll0hAQla64BL2URmEDBBbFZJPnSeuavvD+
-aPKoSNOrXH0XKp8Qco8Y4ucCgYEAlSvk6wk3kbz1HWr1N92Lpu5wmh/zKfIGBgmQ
-se2Jdw6oYb/ql/KGF3R6czAaC8d6LrPBQcxodlNo7mIU3Grm0KbPUzAq8kD9twKL
-NXvPeWuXI+SHzQSwlLJcwXUenWV5Tw+RxhlOvPNdTykiBg8lECnD5t+Xukv/upTK
-VjabtcECgYBPdKjYp1JeW3S6se8Cm/DL4Aa+XKTUsrIPwmwk1TwXY7qMw7hAVI6e
-FnppOZaOum+HTJaKqUtBysRK7wE4nSjegQITMIYd2u4btnHB2UhIoE/qi0Z3grjs
-SDKnpG9rovSWo00u8Inu+uidS+FL1qDqNNpdNgcqFvdzEvJBRQA4aw==
------END RSA PRIVATE KEY-----

+ 0 - 61
vps操作指南/nginx/cert/rss.zhixinghe1.top.pem

@@ -1,61 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF+jCCBOKgAwIBAgIQDArSFfA9DdSfRLDlv75TuDANBgkqhkiG9w0BAQsFADBu
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
-RFYgVExTIENBIC0gRzIwHhcNMjMwMzEyMDAwMDAwWhcNMjQwMzEyMjM1OTU5WjAd
-MRswGQYDVQQDExJyc3MuemhpeGluZ2hlMS50b3AwggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQCE/fgPy1Dc1otjP572b+vA8lzbwWmHC6j9zcqN75dIf8hi
-L+61wN071jniWXU978b0CkbuYOA3YTEMLcUkB2yWZvxjFcMLK4WmtWlM8ea6EJ6x
-U60iO3oILQNsgKh7jhvXomd3MzuJRzKuPDccL0dCK+ZjNy15vNY9uPYguvjcLBqH
-ys41wTVye2MDbBBjNJ1GUmuoVpPQQIx4SvsLnO1d+vMuP2uQBzuNGe2+kYqzUynj
-hG+yY27pmXGkK6L7eeaWkYXmJQHG9CVbFw2/VYV1mLpjdpMUeCMImVmSW7TuUvnL
-HUC0PV0PDpMODCqwjxGY34T5+n0bzHyQyvqf0DxDAgMBAAGjggLjMIIC3zAfBgNV
-HSMEGDAWgBR435GQX+7erPbFdevVTFVT7yRKtjAdBgNVHQ4EFgQUHdQ44nAWyMDn
-MMku39KQAzK8nzYwHQYDVR0RBBYwFIIScnNzLnpoaXhpbmdoZTEudG9wMA4GA1Ud
-DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0g
-BDcwNTAzBgZngQwBAgEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2Vy
-dC5jb20vQ1BTMIGABggrBgEFBQcBAQR0MHIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
-Y3NwLmRpZ2ljZXJ0LmNvbTBKBggrBgEFBQcwAoY+aHR0cDovL2NhY2VydHMuZGln
-aWNlcnQuY29tL0VuY3J5cHRpb25FdmVyeXdoZXJlRFZUTFNDQS1HMi5jcnQwCQYD
-VR0TBAIwADCCAX8GCisGAQQB1nkCBAIEggFvBIIBawFpAHcA7s3QZNXbGs7FXLed
-tM0TojKHRny87N7DUUhZRnEftZsAAAGG1Iw8FwAABAMASDBGAiEAv4q1u/TwLl+2
-3Ow2uCTZer8Ao6KfHUEerMROmFmnEloCIQDaIs+UJPtA7TNJs7YVckyd72iJp8fb
-Iiart/kNM9SoLAB2AHPZnokbTJZ4oCB9R53mssYc0FFecRkqjGuAEHrBd3K1AAAB
-htSMPHYAAAQDAEcwRQIgebcIysGsINQBFwcBcA/Q/O2LI85bGqSR8J8i2GyzbAkC
-IQC1Z6O2tfZy6oUc31HmEs0V67V5YiFdbQDEi4eBTZQg9gB2AEiw42vapkc0D+Vq
-AvqdMOscUgHLVt0sgdm7v6s52IRzAAABhtSMPDsAAAQDAEcwRQIhAKhnjEYKuCNm
-VgkJuY/mwkVl85Hx6l96OrEdtp2tQFt3AiALe2+ZlDPbMGEvsJkXSBX30g9Jw6hR
-6XlxEhKOe3QDYzANBgkqhkiG9w0BAQsFAAOCAQEA06cuowxo9BXw2Ym4QW/v8yws
-/qvE1mC1PfuwlaIdvbmzEw6ZOgcZh0Lz0ZlfTYpehtZVVRn0hUD2GW5bKtDuQ6+s
-9yPWU/zbf5b596O7w+qxdHsKt98jHaf9ldUzS/sNUYqrysaCz/hq/s2MusIOiTIl
-mgv+UFmw6izvWnd1FJULRjpjwDAXie9Za9AIvoYeSaRWMVBaZd4zwyGu4A5Ll8NE
-RbAp8pB8effw7zR4i2kVhLawgdYWRIpynU2BUT+1cYlLxaK+hOobcbf9q7GrfFcp
-chVAocs1Z6utWPGuJyLmSBxivPth+67HDnuHEjrbcdeddekoargsPdGZGJbejg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
-MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
-MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
-b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
-MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
-eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
-NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
-QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
-NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
-ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
-lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
-BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
-AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
-Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
-Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
-/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
-MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
-L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
-98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
-xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
-GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
-n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
------END CERTIFICATE-----

+ 0 - 27
vps操作指南/nginx/cert/www.zhixinghe1.top.key

@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAuxSUXP8oROxmr5hwQpx2r17k2uMUQbc7ug6VxHqY7P1ErFXC
-iRXmWd++us4/btGTDrQDS2cKL+C4coq1qoNua6N21KVbr7DENbxUYSnRh6llrvzB
-0mvTbSPd2sCrF60u5lDbVrDreBhPmPX6HhT/uq3NvgSeW6QIkbmFku4zujAnZR3A
-7Id+OU2gAZaP1jlcsdLccCjsgpfSFewfmIY4VCrl53ln5kpd2gqX8sLN4CFzfpTi
-euQUVZXcfPVwwtdBdvVknceIBi53SZo6XX4xc73TdgoBvf1pAxHDod8eykVDM8Hl
-KwbWGDnKyivtMmP/SS6gO+4UwHPunGgSY5ErtwIDAQABAoIBAAka4JT54XgEY2c9
-ouNIYdRdTFkaMLokDY/Ui1XOEQUwLGMQzpBhjaT8sFtqIfrCeobwKnkauG8Jill0
-xnOtqDaBral+Voz21vFgkn0xOJBYM77+U+E/dPpKyflVY8Hg9dPh4ovV9pfYVNUv
-W/11l56lH9kG1UvFRbabQ9TScrQnnnc6MkFJfrOHZ+H4st1WfYcsjx86OL/jJ0LI
-25PNSWGBNy9nUJLK+k1i/pNi2IDizOEt+bGO6PcmEwwaHshmPiG8dR3q/oKSqVAH
-/mEk09WZr+mEg4Sv6n2wzvWG45t14leUYNvt4Ehp1kMV8fyWpcURMhKCNYHO7vd0
-2nBxQz0CgYEA9yrJlXfAn2W4wgn9tLNF0sSfpVR0prns4UShtWTvBVjzG/94QdAr
-1cOrX1B0Fm1NiQo350PAwcQq/1RekKzDKmJS/tHHtR/bgk0Qq4K8KDxeIKV7Zc8B
-EusZGAgnCov0F4wiO5D5SuOvxCUXCKQRY4vVUC7nkFE7M/vE3rvceo0CgYEAwcQW
-ZtiJ2wDXAkSncgO5SOpqSA5N5u8SQDs/VisMoMNoI61UXhGEnGZVDtLJZjcVyLO+
-ugA/0CmFehJW2r9RuAbrpIs7xnwyaDmmJZl+dDIw2iFgYW8offhZ9x78b9rn+B8Z
-wK7m2sKmEmVWjI5zPJrO8zshYrFCLqF0XoNHMFMCgYB/1QJTKo9WIT8QJCiyF3IK
-UyUaVfbK8CgCTgOwlFZGlr2NgnBI4Yh6U2vDrRGNM9TBBqbpFhKQZIu0aIdMHf4G
-Yrn4DrlSBPr7hi4T9laoHKi2C8ApZIlypmLhGf5PJxkEQLbHxfAY+m9Ca8hg8LIJ
-oR2fDdM3wbtz5EfqxpB+VQKBgEvT3+xpizFQV9QEZ/7fZDAbxHHkXyojnuHSDcw7
-1ppHPkbP+vdBJcNK7Lh7VuOQZQ8BAH+rv01IInsOGD1Mp787vhXLgx3+1n8hKFsI
-gYsZZTLH4v7eUFtTyGlEEAf6A9N+4EYebCtqBzGlxMQGryQldR2Mo1kLA1paRr8B
-4ucPAoGBAL9TV5NN8Dn9kVRIX7x4PeRGtZCMJo0+vFjRiOswLUqDYPA09/gG/uWD
-JZssz2nZlkyHLJPTyVxXo3R8s1CFr54my1twLU+C3NVH17hcWU2+JklpsyeL95OE
-nj+giGALoXPz4rfY6kdfTra3WJEx0F+wmyCjlNYUktPMU41cX6Pr
------END RSA PRIVATE KEY-----

+ 0 - 62
vps操作指南/nginx/cert/www.zhixinghe1.top.pem

@@ -1,62 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGCzCCBPOgAwIBAgIQCXtg0xmXlG1cjtMUJYu3bDANBgkqhkiG9w0BAQsFADBu
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
-RFYgVExTIENBIC0gRzIwHhcNMjMwMzEyMDAwMDAwWhcNMjQwMzEyMjM1OTU5WjAd
-MRswGQYDVQQDExJ3d3cuemhpeGluZ2hlMS50b3AwggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQC7FJRc/yhE7GavmHBCnHavXuTa4xRBtzu6DpXEepjs/USs
-VcKJFeZZ3766zj9u0ZMOtANLZwov4LhyirWqg25ro3bUpVuvsMQ1vFRhKdGHqWWu
-/MHSa9NtI93awKsXrS7mUNtWsOt4GE+Y9foeFP+6rc2+BJ5bpAiRuYWS7jO6MCdl
-HcDsh345TaABlo/WOVyx0txwKOyCl9IV7B+YhjhUKuXneWfmSl3aCpfyws3gIXN+
-lOJ65BRVldx89XDC10F29WSdx4gGLndJmjpdfjFzvdN2CgG9/WkDEcOh3x7KRUMz
-weUrBtYYOcrKK+0yY/9JLqA77hTAc+6caBJjkSu3AgMBAAGjggL0MIIC8DAfBgNV
-HSMEGDAWgBR435GQX+7erPbFdevVTFVT7yRKtjAdBgNVHQ4EFgQUeWqxDzsrw+i0
-Cn0bvgf3TVEGSNgwLQYDVR0RBCYwJIISd3d3LnpoaXhpbmdoZTEudG9wgg56aGl4
-aW5naGUxLnRvcDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEG
-CCsGAQUFBwMCMD4GA1UdIAQ3MDUwMwYGZ4EMAQIBMCkwJwYIKwYBBQUHAgEWG2h0
-dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBgAYIKwYBBQUHAQEEdDByMCQGCCsG
-AQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wSgYIKwYBBQUHMAKGPmh0
-dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9FbmNyeXB0aW9uRXZlcnl3aGVyZURW
-VExTQ0EtRzIuY3J0MAkGA1UdEwQCMAAwggGABgorBgEEAdZ5AgQCBIIBcASCAWwB
-agB2AO7N0GTV2xrOxVy3nbTNE6Iyh0Z8vOzew1FIWUZxH7WbAAABhtSMQykAAAQD
-AEcwRQIgdrb8FkKjHMhges1KMn32Eda7htUSl5WIe8JiKCJQtMUCIQCDUuhbszub
-gJZlsDmQoQ9A01/7hJPXvFtgZohS6ZRcQgB3AHPZnokbTJZ4oCB9R53mssYc0FFe
-cRkqjGuAEHrBd3K1AAABhtSMQ4IAAAQDAEgwRgIhAJrCJ+rQokxc8eVEQYKyH+pi
-WUyCQ658fasFEvGXbMH3AiEA21P6yXzG54TKXVczBTjbjJjuiZIO5IBtPoNfkMwq
-aJcAdwBIsONr2qZHNA/lagL6nTDrHFIBy1bdLIHZu7+rOdiEcwAAAYbUjENBAAAE
-AwBIMEYCIQD7VlBI2tCoAmpW/jYjZA8Q2qw/NYe4gbjmdIK5T5fJvgIhALsGDNot
-6A/ntlUDHpLgIHC+6U8p3DVGUhqTFnArAQXIMA0GCSqGSIb3DQEBCwUAA4IBAQDb
-ooawUNj+CPCeYbwngTxE3xkmr2bHlhSSvJcFwtIYp+2r3N/eEIwsqEqXbC/VGxqC
-9hu1+RIKqSday5udcau2AfJgJ6dM0Xw8arXLbDQgHzXOGGuTgBagMpCiVo9A8+Rx
-YWNnW7G42DHAF9hH+uTwKStE1fWBT/LaN6dr9Slvn3B9O0htdWqDkGvx7yInTX1K
-6ixrDCiJzkeLqc2psfXiDNr8t3GfPiBuyp39ymP9xahkYdcBOZFCE3LDiLO54J2H
-16+xMJwvzooSrDwtZTwYSh6CrfWQR2ozlzzfn3fmTz1OfctUEH4zrCzi/p3WITsw
-NAq+wExGDsiySXWLDuLc
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIQDeD/te5iy2EQn2CMnO1e0zANBgkqhkiG9w0BAQsFADBh
-MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
-MjAeFw0xNzExMjcxMjQ2NDBaFw0yNzExMjcxMjQ2NDBaMG4xCzAJBgNVBAYTAlVT
-MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
-b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
-MjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO8Uf46i/nr7pkgTDqnE
-eSIfCFqvPnUq3aF1tMJ5hh9MnO6Lmt5UdHfBGwC9Si+XjK12cjZgxObsL6Rg1njv
-NhAMJ4JunN0JGGRJGSevbJsA3sc68nbPQzuKp5Jc8vpryp2mts38pSCXorPR+sch
-QisKA7OSQ1MjcFN0d7tbrceWFNbzgL2csJVQeogOBGSe/KZEIZw6gXLKeFe7mupn
-NYJROi2iC11+HuF79iAttMc32Cv6UOxixY/3ZV+LzpLnklFq98XORgwkIJL1HuvP
-ha8yvb+W6JislZJL+HLFtidoxmI7Qm3ZyIV66W533DsGFimFJkz3y0GeHWuSVMbI
-lfsCAwEAAaOCAU8wggFLMB0GA1UdDgQWBBR435GQX+7erPbFdevVTFVT7yRKtjAf
-BgNVHSMEGDAWgBROIlQgGJXm427mD/r6uRLtBhePOTAOBgNVHQ8BAf8EBAMCAYYw
-HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
-AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
-Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
-Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdEcyLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
-/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
-MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAoBs1eCLKakLtVRPFRjBIJ9LJ
-L0s8ZWum8U8/1TMVkQMBn+CPb5xnCD0GSA6L/V0ZFrMNqBirrr5B241OesECvxIi
-98bZ90h9+q/X5eMyOD35f8YTaEMpdnQCnawIwiHx06/0BfiTj+b/XQih+mqt3ZXe
-xNCJqKexdiB2IWGSKcgahPacWkk/BAQFisKIFYEqHzV974S3FAz/8LIfD58xnsEN
-GfzyIDkH3JrwYZ8caPTf6ZX9M1GrISN8HnWTtdNCH2xEajRa/h9ZBXjUyFKQrGk2
-n2hcLrfZSbynEC/pSw/ET7H5nWwckjmAJ1l9fcnbqkU/pf6uMQmnfl0JQjJNSg==
------END CERTIFICATE-----

+ 0 - 25
vps操作指南/nginx/conf.d/fq.conf

@@ -1,25 +0,0 @@
-# fanqiang service
-server {
-  listen 443 ssl;
-  server_name fq.zhixinghe1.top;
-  
-  ssl_session_timeout 5m;
-  ssl_prefer_server_ciphers on;
-  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-  ssl_certificate cert/fq.zhixinghe1.top.pem;
-  ssl_certificate_key cert/fq.zhixinghe1.top.key;
-  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
-  
-  location / {
-    add_header Access-Control-Allow-Origin *;
-    proxy_redirect off;
-    proxy_pass http://localhost.com:19090;
-    proxy_http_version 1.1;
-    proxy_set_header Upgrade $http_upgrade;
-    proxy_set_header Connection "upgrade";
-    #proxy_set_header Host $http_host;
-    proxy_set_header Host $host:$server_port;
-    proxy_set_header X-Real-IP $remote_addr;
-    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-  }
-}

+ 0 - 19
vps操作指南/nginx/conf.d/fs.conf

@@ -1,19 +0,0 @@
-# file service
-server {
-  listen 443 ssl;
-  server_name fs.zhixinghe1.top;
-  
-  ssl_session_timeout 5m;
-  ssl_prefer_server_ciphers on;
-  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-  ssl_certificate cert/fs.zhixinghe1.top.pem;
-  ssl_certificate_key cert/fs.zhixinghe1.top.key;
-  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
-  
-  location / {
-    root /fs;
-    autoindex on;
-    autoindex_exact_size off;
-    autoindex_localtime on;
-  }
-}

+ 0 - 36
vps操作指南/nginx/conf.d/git.conf

@@ -1,36 +0,0 @@
-# git service
-
-server {
-  listen 443 ssl;
-  server_name git.zhixinghe1.top;
-  
-  ssl_session_timeout 5m;
-  ssl_prefer_server_ciphers on;
-  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-  ssl_certificate cert/git.zhixinghe1.top.pem;
-  ssl_certificate_key cert/git.zhixinghe1.top.key;
-  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
-  
-  gzip on;
-  
-  location / {
-    proxy_redirect off;
-    proxy_pass http://localhost.com:10880;
-
-    proxy_set_header  Host                $http_host;
-    proxy_set_header  X-Real-IP           $remote_addr;
-    proxy_set_header  X-Forwarded-Ssl     on;
-    proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
-    proxy_set_header  X-Forwarded-Proto   $scheme;
-    proxy_set_header  X-Frame-Options     SAMEORIGIN;
-
-    client_max_body_size        100m;
-    client_body_buffer_size     128k;
-
-    proxy_buffer_size           4k;
-    proxy_buffers               4 32k;
-    proxy_busy_buffers_size     64k;
-    proxy_temp_file_write_size  64k;
-    
-  }
-}

+ 0 - 7
vps操作指南/nginx/conf.d/rewrite443.conf

@@ -1,7 +0,0 @@
-# 将所有HTTP请求通过rewrite指令重定向到HTTPS。
-server {
-  listen       80 default_server;
-  listen       [::]:80 default_server;
-  server_name  _;
-  rewrite ^(.*)$ https://$host$1; 
-}

+ 0 - 36
vps操作指南/nginx/conf.d/rss.conf

@@ -1,36 +0,0 @@
-# rss service
-
-server {
-  listen 443 ssl;
-  server_name rss.zhixinghe1.top;
-  
-  ssl_session_timeout 5m;
-  ssl_prefer_server_ciphers on;
-  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-  ssl_certificate cert/rss.zhixinghe1.top.pem;
-  ssl_certificate_key cert/rss.zhixinghe1.top.key;
-  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
-  
-  gzip on;
-  
-  location / {
-    proxy_redirect off;
-    proxy_pass http://localhost.com:181;
-
-    proxy_set_header  Host                $http_host;
-    proxy_set_header  X-Real-IP           $remote_addr;
-    proxy_set_header  X-Forwarded-Ssl     on;
-    proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
-    proxy_set_header  X-Forwarded-Proto   $scheme;
-    proxy_set_header  X-Frame-Options     SAMEORIGIN;
-
-    client_max_body_size        100m;
-    client_body_buffer_size     128k;
-
-    proxy_buffer_size           4k;
-    proxy_buffers               4 32k;
-    proxy_busy_buffers_size     64k;
-    proxy_temp_file_write_size  64k;
-    
-  }
-}

+ 0 - 36
vps操作指南/nginx/conf.d/watermark.conf

@@ -1,36 +0,0 @@
-# rss service
-
-server {
-  listen 443 ssl;
-  server_name rss.zhixinghe1.top;
-  
-  ssl_session_timeout 5m;
-  ssl_prefer_server_ciphers on;
-  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-  ssl_certificate cert/rss.zhixinghe1.top.pem;
-  ssl_certificate_key cert/rss.zhixinghe1.top.key;
-  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
-  
-  gzip on;
-  
-  location / {
-    proxy_redirect off;
-    proxy_pass http://localhost.com:18080;
-
-    proxy_set_header  Host                $http_host;
-    proxy_set_header  X-Real-IP           $remote_addr;
-    proxy_set_header  X-Forwarded-Ssl     on;
-    proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
-    proxy_set_header  X-Forwarded-Proto   $scheme;
-    proxy_set_header  X-Frame-Options     SAMEORIGIN;
-
-    client_max_body_size        100m;
-    client_body_buffer_size     128k;
-
-    proxy_buffer_size           4k;
-    proxy_buffers               4 32k;
-    proxy_busy_buffers_size     64k;
-    proxy_temp_file_write_size  64k;
-    
-  }
-}

+ 0 - 16
vps操作指南/nginx/conf.d/www.conf

@@ -1,16 +0,0 @@
-# default service
-server {
-  listen 443 ssl;
-  server_name www.zhixinghe1.top;
-  
-  root /usr/share/nginx/html;
-  
-  ssl_session_timeout 5m;
-  ssl_prefer_server_ciphers on;
-  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-  ssl_certificate cert/www.zhixinghe1.top.pem;
-  ssl_certificate_key cert/www.zhixinghe1.top.key;
-  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
-}
-	
-

+ 0 - 17
vps操作指南/nginx/docker-compose.yml

@@ -1,17 +0,0 @@
-version: "3"
-services:
-  service.nginx:
-    image: nginx:1.22.1
-    container_name: nginx
-    ports:
-      - 80:80
-      - 443:443
-    volumes:
-      - /home/zkpk/nginx/conf.d:/etc/nginx/conf.d
-      - /home/zkpk/nginx/cert:/etc/nginx/cert
-      - /home/zkpk/nginx/fs:/fs
-    extra_hosts:
-      localhost.com: 172.17.0.1
-    stdin_open: true
-    tty: true
-    restart: always

+ 0 - 1383
vps操作指南/shadowsocks-all.sh

@@ -1,1383 +0,0 @@
-#!/usr/bin/env bash
-PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
-export PATH
-#
-# Auto install Shadowsocks Server (all version)
-#
-# Copyright (C) 2016-2019 Teddysun <i@teddysun.com>
-#
-# System Required:  CentOS 6+, Debian7+, Ubuntu12+
-#
-# Reference URL:
-# https://github.com/shadowsocks/shadowsocks
-# https://github.com/shadowsocks/shadowsocks-go
-# https://github.com/shadowsocks/shadowsocks-libev
-# https://github.com/shadowsocks/shadowsocks-windows
-# https://github.com/shadowsocksr-rm/shadowsocksr
-# https://github.com/shadowsocksrr/shadowsocksr
-# https://github.com/shadowsocksrr/shadowsocksr-csharp
-#
-# Thanks:
-# @clowwindy  <https://twitter.com/clowwindy>
-# @breakwa11  <https://twitter.com/breakwa11>
-# @cyfdecyf   <https://twitter.com/cyfdecyf>
-# @madeye     <https://github.com/madeye>
-# @linusyang  <https://github.com/linusyang>
-# @Akkariiin  <https://github.com/Akkariiin>
-# 
-# Intro:  https://teddysun.com/486.html
-
-red='\033[0;31m'
-green='\033[0;32m'
-yellow='\033[0;33m'
-plain='\033[0m'
-
-[[ $EUID -ne 0 ]] && echo -e "[${red}Error${plain}] This script must be run as root!" && exit 1
-
-cur_dir=$( pwd )
-software=(Shadowsocks-Python ShadowsocksR Shadowsocks-Go Shadowsocks-libev)
-
-libsodium_file="libsodium-stable"
-libsodium_url="https://download.libsodium.org/libsodium/releases/LATEST.tar.gz"
-
-mbedtls_file="mbedtls-2.16.3"
-mbedtls_url="https://tls.mbed.org/download/mbedtls-2.16.3-gpl.tgz"
-
-shadowsocks_python_file="shadowsocks-master"
-shadowsocks_python_url="https://github.com/shadowsocks/shadowsocks/archive/master.zip"
-shadowsocks_python_init="/etc/init.d/shadowsocks-python"
-shadowsocks_python_config="/etc/shadowsocks-python/config.json"
-shadowsocks_python_centos="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks"
-shadowsocks_python_debian="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-debian"
-
-shadowsocks_r_file="shadowsocksr-3.2.2"
-shadowsocks_r_url="https://github.com/shadowsocksrr/shadowsocksr/archive/3.2.2.tar.gz"
-shadowsocks_r_init="/etc/init.d/shadowsocks-r"
-shadowsocks_r_config="/etc/shadowsocks-r/config.json"
-shadowsocks_r_centos="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR"
-shadowsocks_r_debian="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR-debian"
-
-shadowsocks_go_file_64="shadowsocks-server-linux64-1.2.2"
-shadowsocks_go_url_64="https://dl.lamp.sh/shadowsocks/shadowsocks-server-linux64-1.2.2.gz"
-shadowsocks_go_file_32="shadowsocks-server-linux32-1.2.2"
-shadowsocks_go_url_32="https://dl.lamp.sh/shadowsocks/shadowsocks-server-linux32-1.2.2.gz"
-shadowsocks_go_init="/etc/init.d/shadowsocks-go"
-shadowsocks_go_config="/etc/shadowsocks-go/config.json"
-shadowsocks_go_centos="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go"
-shadowsocks_go_debian="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go-debian"
-
-shadowsocks_libev_init="/etc/init.d/shadowsocks-libev"
-shadowsocks_libev_config="/etc/shadowsocks-libev/config.json"
-shadowsocks_libev_centos="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev"
-shadowsocks_libev_debian="https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev-debian"
-
-# Stream Ciphers
-common_ciphers=(
-aes-256-gcm
-aes-192-gcm
-aes-128-gcm
-aes-256-ctr
-aes-192-ctr
-aes-128-ctr
-aes-256-cfb
-aes-192-cfb
-aes-128-cfb
-camellia-128-cfb
-camellia-192-cfb
-camellia-256-cfb
-xchacha20-ietf-poly1305
-chacha20-ietf-poly1305
-chacha20-ietf
-chacha20
-salsa20
-rc4-md5
-)
-go_ciphers=(
-aes-256-cfb
-aes-192-cfb
-aes-128-cfb
-aes-256-ctr
-aes-192-ctr
-aes-128-ctr
-chacha20-ietf
-chacha20
-salsa20
-rc4-md5
-)
-r_ciphers=(
-none
-aes-256-cfb
-aes-192-cfb
-aes-128-cfb
-aes-256-cfb8
-aes-192-cfb8
-aes-128-cfb8
-aes-256-ctr
-aes-192-ctr
-aes-128-ctr
-chacha20-ietf
-chacha20
-salsa20
-xchacha20
-xsalsa20
-rc4-md5
-)
-# Reference URL:
-# https://github.com/shadowsocksr-rm/shadowsocks-rss/blob/master/ssr.md
-# https://github.com/shadowsocksrr/shadowsocksr/commit/a3cf0254508992b7126ab1151df0c2f10bf82680
-# Protocol
-protocols=(
-origin
-verify_deflate
-auth_sha1_v4
-auth_sha1_v4_compatible
-auth_aes128_md5
-auth_aes128_sha1
-auth_chain_a
-auth_chain_b
-auth_chain_c
-auth_chain_d
-auth_chain_e
-auth_chain_f
-)
-# obfs
-obfs=(
-plain
-http_simple
-http_simple_compatible
-http_post
-http_post_compatible
-tls1.2_ticket_auth
-tls1.2_ticket_auth_compatible
-tls1.2_ticket_fastauth
-tls1.2_ticket_fastauth_compatible
-)
-# libev obfuscating
-obfs_libev=(http tls)
-# initialization parameter
-libev_obfs=""
-
-disable_selinux(){
-    if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then
-        sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
-        setenforce 0
-    fi
-}
-
-check_sys(){
-    local checkType=$1
-    local value=$2
-
-    local release=''
-    local systemPackage=''
-
-    if [[ -f /etc/redhat-release ]]; then
-        release="centos"
-        systemPackage="yum"
-    elif grep -Eqi "debian|raspbian" /etc/issue; then
-        release="debian"
-        systemPackage="apt"
-    elif grep -Eqi "ubuntu" /etc/issue; then
-        release="ubuntu"
-        systemPackage="apt"
-    elif grep -Eqi "centos|red hat|redhat" /etc/issue; then
-        release="centos"
-        systemPackage="yum"
-    elif grep -Eqi "debian|raspbian" /proc/version; then
-        release="debian"
-        systemPackage="apt"
-    elif grep -Eqi "ubuntu" /proc/version; then
-        release="ubuntu"
-        systemPackage="apt"
-    elif grep -Eqi "centos|red hat|redhat" /proc/version; then
-        release="centos"
-        systemPackage="yum"
-    fi
-
-    if [[ "${checkType}" == "sysRelease" ]]; then
-        if [ "${value}" == "${release}" ]; then
-            return 0
-        else
-            return 1
-        fi
-    elif [[ "${checkType}" == "packageManager" ]]; then
-        if [ "${value}" == "${systemPackage}" ]; then
-            return 0
-        else
-            return 1
-        fi
-    fi
-}
-
-version_ge(){
-    test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"
-}
-
-version_gt(){
-    test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"
-}
-
-check_kernel_version(){
-    local kernel_version=$(uname -r | cut -d- -f1)
-    if version_gt ${kernel_version} 3.7.0; then
-        return 0
-    else
-        return 1
-    fi
-}
-
-check_kernel_headers(){
-    if check_sys packageManager yum; then
-        if rpm -qa | grep -q headers-$(uname -r); then
-            return 0
-        else
-            return 1
-        fi
-    elif check_sys packageManager apt; then
-        if dpkg -s linux-headers-$(uname -r) > /dev/null 2>&1; then
-            return 0
-        else
-            return 1
-        fi
-    fi
-    return 1
-}
-
-getversion(){
-    if [[ -s /etc/redhat-release ]]; then
-        grep -oE  "[0-9.]+" /etc/redhat-release
-    else
-        grep -oE  "[0-9.]+" /etc/issue
-    fi
-}
-
-centosversion(){
-    if check_sys sysRelease centos; then
-        local code=$1
-        local version="$(getversion)"
-        local main_ver=${version%%.*}
-        if [ "$main_ver" == "$code" ]; then
-            return 0
-        else
-            return 1
-        fi
-    else
-        return 1
-    fi
-}
-
-autoconf_version(){
-    if [ ! "$(command -v autoconf)" ]; then
-        echo -e "[${green}Info${plain}] Starting install package autoconf"
-        if check_sys packageManager yum; then
-            yum install -y autoconf > /dev/null 2>&1 || echo -e "[${red}Error:${plain}] Failed to install autoconf"
-        elif check_sys packageManager apt; then
-            apt-get -y update > /dev/null 2>&1
-            apt-get -y install autoconf > /dev/null 2>&1 || echo -e "[${red}Error:${plain}] Failed to install autoconf"
-        fi
-    fi
-    local autoconf_ver=$(autoconf --version | grep autoconf | grep -oE "[0-9.]+")
-    if version_ge ${autoconf_ver} 2.67; then
-        return 0
-    else
-        return 1
-    fi
-}
-
-get_ip(){
-    local IP=$( ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1 )
-    [ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipv4.icanhazip.com )
-    [ -z ${IP} ] && IP=$( wget -qO- -t1 -T2 ipinfo.io/ip )
-    echo ${IP}
-}
-
-get_ipv6(){
-    local ipv6=$(wget -qO- -t1 -T2 ipv6.icanhazip.com)
-    [ -z ${ipv6} ] && return 1 || return 0
-}
-
-get_libev_ver(){
-    libev_ver=$(wget --no-check-certificate -qO- https://api.github.com/repos/shadowsocks/shadowsocks-libev/releases/latest | grep 'tag_name' | cut -d\" -f4)
-    [ -z ${libev_ver} ] && echo -e "[${red}Error${plain}] Get shadowsocks-libev latest version failed" && exit 1
-}
-
-get_opsy(){
-    [ -f /etc/redhat-release ] && awk '{print ($1,$3~/^[0-9]/?$3:$4)}' /etc/redhat-release && return
-    [ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release && return
-    [ -f /etc/lsb-release ] && awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release && return
-}
-
-is_64bit(){
-    if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then
-        return 0
-    else
-        return 1
-    fi
-}
-
-debianversion(){
-    if check_sys sysRelease debian;then
-        local version=$( get_opsy )
-        local code=${1}
-        local main_ver=$( echo ${version} | sed 's/[^0-9]//g')
-        if [ "${main_ver}" == "${code}" ];then
-            return 0
-        else
-            return 1
-        fi
-    else
-        return 1
-    fi
-}
-
-download(){
-    local filename=$(basename $1)
-    if [ -f ${1} ]; then
-        echo "${filename} [found]"
-    else
-        echo "${filename} not found, download now..."
-        wget --no-check-certificate -c -t3 -T60 -O ${1} ${2}
-        if [ $? -ne 0 ]; then
-            echo -e "[${red}Error${plain}] Download ${filename} failed."
-            exit 1
-        fi
-    fi
-}
-
-download_files(){
-    cd ${cur_dir}
-
-    if   [ "${selected}" == "1" ]; then
-        download "${shadowsocks_python_file}.zip" "${shadowsocks_python_url}"
-        if check_sys packageManager yum; then
-            download "${shadowsocks_python_init}" "${shadowsocks_python_centos}"
-        elif check_sys packageManager apt; then
-            download "${shadowsocks_python_init}" "${shadowsocks_python_debian}"
-        fi
-    elif [ "${selected}" == "2" ]; then
-        download "${shadowsocks_r_file}.tar.gz" "${shadowsocks_r_url}"
-        if check_sys packageManager yum; then
-            download "${shadowsocks_r_init}" "${shadowsocks_r_centos}"
-        elif check_sys packageManager apt; then
-            download "${shadowsocks_r_init}" "${shadowsocks_r_debian}"
-        fi
-    elif [ "${selected}" == "3" ]; then
-        if is_64bit; then
-            download "${shadowsocks_go_file_64}.gz" "${shadowsocks_go_url_64}"
-        else
-            download "${shadowsocks_go_file_32}.gz" "${shadowsocks_go_url_32}"
-        fi
-        if check_sys packageManager yum; then
-            download "${shadowsocks_go_init}" "${shadowsocks_go_centos}"
-        elif check_sys packageManager apt; then
-            download "${shadowsocks_go_init}" "${shadowsocks_go_debian}"
-        fi
-    elif [ "${selected}" == "4" ]; then
-        get_libev_ver
-        shadowsocks_libev_file="shadowsocks-libev-$(echo ${libev_ver} | sed -e 's/^[a-zA-Z]//g')"
-        shadowsocks_libev_url="https://github.com/shadowsocks/shadowsocks-libev/releases/download/${libev_ver}/${shadowsocks_libev_file}.tar.gz"
-
-        download "${shadowsocks_libev_file}.tar.gz" "${shadowsocks_libev_url}"
-        if check_sys packageManager yum; then
-            download "${shadowsocks_libev_init}" "${shadowsocks_libev_centos}"
-        elif check_sys packageManager apt; then
-            download "${shadowsocks_libev_init}" "${shadowsocks_libev_debian}"
-        fi
-    fi
-
-}
-
-get_char(){
-    SAVEDSTTY=$(stty -g)
-    stty -echo
-    stty cbreak
-    dd if=/dev/tty bs=1 count=1 2> /dev/null
-    stty -raw
-    stty echo
-    stty $SAVEDSTTY
-}
-
-error_detect_depends(){
-    local command=$1
-    local depend=`echo "${command}" | awk '{print $4}'`
-    echo -e "[${green}Info${plain}] Starting to install package ${depend}"
-    ${command} > /dev/null 2>&1
-    if [ $? -ne 0 ]; then
-        echo -e "[${red}Error${plain}] Failed to install ${red}${depend}${plain}"
-        echo "Please visit: https://teddysun.com/486.html and contact."
-        exit 1
-    fi
-}
-
-config_firewall(){
-    if centosversion 6; then
-        /etc/init.d/iptables status > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-            iptables -L -n | grep -i ${shadowsocksport} > /dev/null 2>&1
-            if [ $? -ne 0 ]; then
-                iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport ${shadowsocksport} -j ACCEPT
-                iptables -I INPUT -m state --state NEW -m udp -p udp --dport ${shadowsocksport} -j ACCEPT
-                /etc/init.d/iptables save
-                /etc/init.d/iptables restart
-            else
-                echo -e "[${green}Info${plain}] port ${green}${shadowsocksport}${plain} already be enabled."
-            fi
-        else
-            echo -e "[${yellow}Warning${plain}] iptables looks like not running or not installed, please enable port ${shadowsocksport} manually if necessary."
-        fi
-    elif centosversion 7; then
-        systemctl status firewalld > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-            default_zone=$(firewall-cmd --get-default-zone)
-            firewall-cmd --permanent --zone=${default_zone} --add-port=${shadowsocksport}/tcp
-            firewall-cmd --permanent --zone=${default_zone} --add-port=${shadowsocksport}/udp
-            firewall-cmd --reload
-        else
-            echo -e "[${yellow}Warning${plain}] firewalld looks like not running or not installed, please enable port ${shadowsocksport} manually if necessary."
-        fi
-    fi
-}
-
-config_shadowsocks(){
-
-if check_kernel_version && check_kernel_headers; then
-    fast_open="true"
-else
-    fast_open="false"
-fi
-
-if   [ "${selected}" == "1" ]; then
-    if [ ! -d "$(dirname ${shadowsocks_python_config})" ]; then
-        mkdir -p $(dirname ${shadowsocks_python_config})
-    fi
-    cat > ${shadowsocks_python_config}<<-EOF
-{
-    "server":"0.0.0.0",
-    "server_port":${shadowsocksport},
-    "local_address":"127.0.0.1",
-    "local_port":1080,
-    "password":"${shadowsockspwd}",
-    "timeout":300,
-    "method":"${shadowsockscipher}",
-    "fast_open":${fast_open}
-}
-EOF
-elif [ "${selected}" == "2" ]; then
-    if [ ! -d "$(dirname ${shadowsocks_r_config})" ]; then
-        mkdir -p $(dirname ${shadowsocks_r_config})
-    fi
-    cat > ${shadowsocks_r_config}<<-EOF
-{
-    "server":"0.0.0.0",
-    "server_ipv6":"::",
-    "server_port":${shadowsocksport},
-    "local_address":"127.0.0.1",
-    "local_port":1080,
-    "password":"${shadowsockspwd}",
-    "timeout":120,
-    "method":"${shadowsockscipher}",
-    "protocol":"${shadowsockprotocol}",
-    "protocol_param":"",
-    "obfs":"${shadowsockobfs}",
-    "obfs_param":"",
-    "redirect":"",
-    "dns_ipv6":false,
-    "fast_open":${fast_open},
-    "workers":1
-}
-EOF
-elif [ "${selected}" == "3" ]; then
-    if [ ! -d "$(dirname ${shadowsocks_go_config})" ]; then
-        mkdir -p $(dirname ${shadowsocks_go_config})
-    fi
-    cat > ${shadowsocks_go_config}<<-EOF
-{
-    "server":"0.0.0.0",
-    "server_port":${shadowsocksport},
-    "local_port":1080,
-    "password":"${shadowsockspwd}",
-    "method":"${shadowsockscipher}",
-    "timeout":300
-}
-EOF
-elif [ "${selected}" == "4" ]; then
-    local server_value="\"0.0.0.0\""
-    if get_ipv6; then
-        server_value="[\"[::0]\",\"0.0.0.0\"]"
-    fi
-
-    if [ ! -d "$(dirname ${shadowsocks_libev_config})" ]; then
-        mkdir -p $(dirname ${shadowsocks_libev_config})
-    fi
-
-    if [ "${libev_obfs}" == "y" ] || [ "${libev_obfs}" == "Y" ]; then
-        cat > ${shadowsocks_libev_config}<<-EOF
-{
-    "server":${server_value},
-    "server_port":${shadowsocksport},
-    "password":"${shadowsockspwd}",
-    "timeout":300,
-    "user":"nobody",
-    "method":"${shadowsockscipher}",
-    "fast_open":${fast_open},
-    "nameserver":"8.8.8.8",
-    "mode":"tcp_and_udp",
-    "plugin":"obfs-server",
-    "plugin_opts":"obfs=${shadowsocklibev_obfs}"
-}
-EOF
-    else
-        cat > ${shadowsocks_libev_config}<<-EOF
-{
-    "server":${server_value},
-    "server_port":${shadowsocksport},
-    "password":"${shadowsockspwd}",
-    "timeout":300,
-    "user":"nobody",
-    "method":"${shadowsockscipher}",
-    "fast_open":${fast_open},
-    "nameserver":"8.8.8.8",
-    "mode":"tcp_and_udp"
-}
-EOF
-    fi
-
-fi
-}
-
-install_dependencies(){
-    if check_sys packageManager yum; then
-        echo -e "[${green}Info${plain}] Checking the EPEL repository..."
-        if [ ! -f /etc/yum.repos.d/epel.repo ]; then
-            yum install -y epel-release > /dev/null 2>&1
-        fi
-        [ ! -f /etc/yum.repos.d/epel.repo ] && echo -e "[${red}Error${plain}] Install EPEL repository failed, please check it." && exit 1
-        [ ! "$(command -v yum-config-manager)" ] && yum install -y yum-utils > /dev/null 2>&1
-        [ x"$(yum-config-manager epel | grep -w enabled | awk '{print $3}')" != x"True" ] && yum-config-manager --enable epel > /dev/null 2>&1
-        echo -e "[${green}Info${plain}] Checking the EPEL repository complete..."
-
-        yum_depends=(
-            unzip gzip openssl openssl-devel gcc python python-devel python-setuptools pcre pcre-devel libtool libevent
-            autoconf automake make curl curl-devel zlib-devel perl perl-devel cpio expat-devel gettext-devel
-            libev-devel c-ares-devel git qrencode
-        )
-        for depend in ${yum_depends[@]}; do
-            error_detect_depends "yum -y install ${depend}"
-        done
-    elif check_sys packageManager apt; then
-        apt_depends=(
-            gettext build-essential unzip gzip python python-dev python-setuptools curl openssl libssl-dev
-            autoconf automake libtool gcc make perl cpio libpcre3 libpcre3-dev zlib1g-dev libev-dev libc-ares-dev git qrencode
-        )
-
-        apt-get -y update
-        for depend in ${apt_depends[@]}; do
-            error_detect_depends "apt-get -y install ${depend}"
-        done
-    fi
-}
-
-install_check(){
-    if check_sys packageManager yum || check_sys packageManager apt; then
-        if centosversion 5; then
-            return 1
-        fi
-        return 0
-    else
-        return 1
-    fi
-}
-
-install_select(){
-    if ! install_check; then
-        echo -e "[${red}Error${plain}] Your OS is not supported to run it!"
-        echo "Please change to CentOS 6+/Debian 7+/Ubuntu 12+ and try again."
-        exit 1
-    fi
-
-    clear
-    while true
-    do
-    echo  "Which Shadowsocks server you'd select:"
-    for ((i=1;i<=${#software[@]};i++ )); do
-        hint="${software[$i-1]}"
-        echo -e "${green}${i}${plain}) ${hint}"
-    done
-    read -p "Please enter a number (Default ${software[0]}):" selected
-    [ -z "${selected}" ] && selected="1"
-    case "${selected}" in
-        1|2|3|4)
-        echo
-        echo "You choose = ${software[${selected}-1]}"
-        echo
-        break
-        ;;
-        *)
-        echo -e "[${red}Error${plain}] Please only enter a number [1-4]"
-        ;;
-    esac
-    done
-}
-
-install_prepare_password(){
-    echo "Please enter password for ${software[${selected}-1]}"
-    read -p "(Default password: teddysun.com):" shadowsockspwd
-    [ -z "${shadowsockspwd}" ] && shadowsockspwd="teddysun.com"
-    echo
-    echo "password = ${shadowsockspwd}"
-    echo
-}
-
-install_prepare_port() {
-    while true
-    do
-    dport=$(shuf -i 9000-19999 -n 1)
-    echo -e "Please enter a port for ${software[${selected}-1]} [1-65535]"
-    read -p "(Default port: ${dport}):" shadowsocksport
-    [ -z "${shadowsocksport}" ] && shadowsocksport=${dport}
-    expr ${shadowsocksport} + 1 &>/dev/null
-    if [ $? -eq 0 ]; then
-        if [ ${shadowsocksport} -ge 1 ] && [ ${shadowsocksport} -le 65535 ] && [ ${shadowsocksport:0:1} != 0 ]; then
-            echo
-            echo "port = ${shadowsocksport}"
-            echo
-            break
-        fi
-    fi
-    echo -e "[${red}Error${plain}] Please enter a correct number [1-65535]"
-    done
-}
-
-install_prepare_cipher(){
-    while true
-    do
-    echo -e "Please select stream cipher for ${software[${selected}-1]}:"
-
-    if   [[ "${selected}" == "1" || "${selected}" == "4" ]]; then
-        for ((i=1;i<=${#common_ciphers[@]};i++ )); do
-            hint="${common_ciphers[$i-1]}"
-            echo -e "${green}${i}${plain}) ${hint}"
-        done
-        read -p "Which cipher you'd select(Default: ${common_ciphers[0]}):" pick
-        [ -z "$pick" ] && pick=1
-        expr ${pick} + 1 &>/dev/null
-        if [ $? -ne 0 ]; then
-            echo -e "[${red}Error${plain}] Please enter a number"
-            continue
-        fi
-        if [[ "$pick" -lt 1 || "$pick" -gt ${#common_ciphers[@]} ]]; then
-            echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#common_ciphers[@]}"
-            continue
-        fi
-        shadowsockscipher=${common_ciphers[$pick-1]}
-    elif [ "${selected}" == "2" ]; then
-        for ((i=1;i<=${#r_ciphers[@]};i++ )); do
-            hint="${r_ciphers[$i-1]}"
-            echo -e "${green}${i}${plain}) ${hint}"
-        done
-        read -p "Which cipher you'd select(Default: ${r_ciphers[1]}):" pick
-        [ -z "$pick" ] && pick=2
-        expr ${pick} + 1 &>/dev/null
-        if [ $? -ne 0 ]; then
-            echo -e "[${red}Error${plain}] Please enter a number"
-            continue
-        fi
-        if [[ "$pick" -lt 1 || "$pick" -gt ${#r_ciphers[@]} ]]; then
-            echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#r_ciphers[@]}"
-            continue
-        fi
-        shadowsockscipher=${r_ciphers[$pick-1]}
-    elif [ "${selected}" == "3" ]; then
-        for ((i=1;i<=${#go_ciphers[@]};i++ )); do
-            hint="${go_ciphers[$i-1]}"
-            echo -e "${green}${i}${plain}) ${hint}"
-        done
-        read -p "Which cipher you'd select(Default: ${go_ciphers[0]}):" pick
-        [ -z "$pick" ] && pick=1
-        expr ${pick} + 1 &>/dev/null
-        if [ $? -ne 0 ]; then
-            echo -e "[${red}Error${plain}] Please enter a number"
-            continue
-        fi
-        if [[ "$pick" -lt 1 || "$pick" -gt ${#go_ciphers[@]} ]]; then
-            echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#go_ciphers[@]}"
-            continue
-        fi
-        shadowsockscipher=${go_ciphers[$pick-1]}
-    fi
-
-    echo
-    echo "cipher = ${shadowsockscipher}"
-    echo
-    break
-    done
-}
-
-install_prepare_protocol(){
-    while true
-    do
-    echo -e "Please select protocol for ${software[${selected}-1]}:"
-    for ((i=1;i<=${#protocols[@]};i++ )); do
-        hint="${protocols[$i-1]}"
-        echo -e "${green}${i}${plain}) ${hint}"
-    done
-    read -p "Which protocol you'd select(Default: ${protocols[0]}):" protocol
-    [ -z "$protocol" ] && protocol=1
-    expr ${protocol} + 1 &>/dev/null
-    if [ $? -ne 0 ]; then
-        echo -e "[${red}Error${plain}] Please enter a number"
-        continue
-    fi
-    if [[ "$protocol" -lt 1 || "$protocol" -gt ${#protocols[@]} ]]; then
-        echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#protocols[@]}"
-        continue
-    fi
-    shadowsockprotocol=${protocols[$protocol-1]}
-    echo
-    echo "protocol = ${shadowsockprotocol}"
-    echo
-    break
-    done
-}
-
-install_prepare_obfs(){
-    while true
-    do
-    echo -e "Please select obfs for ${software[${selected}-1]}:"
-    for ((i=1;i<=${#obfs[@]};i++ )); do
-        hint="${obfs[$i-1]}"
-        echo -e "${green}${i}${plain}) ${hint}"
-    done
-    read -p "Which obfs you'd select(Default: ${obfs[0]}):" r_obfs
-    [ -z "$r_obfs" ] && r_obfs=1
-    expr ${r_obfs} + 1 &>/dev/null
-    if [ $? -ne 0 ]; then
-        echo -e "[${red}Error${plain}] Please enter a number"
-        continue
-    fi
-    if [[ "$r_obfs" -lt 1 || "$r_obfs" -gt ${#obfs[@]} ]]; then
-        echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#obfs[@]}"
-        continue
-    fi
-    shadowsockobfs=${obfs[$r_obfs-1]}
-    echo
-    echo "obfs = ${shadowsockobfs}"
-    echo
-    break
-    done
-}
-
-install_prepare_libev_obfs(){
-    if autoconf_version || centosversion 6; then
-        while true
-        do
-        echo -e "Do you want install simple-obfs for ${software[${selected}-1]}? [y/n]"
-        read -p "(default: n):" libev_obfs
-        [ -z "$libev_obfs" ] && libev_obfs=n
-        case "${libev_obfs}" in
-            y|Y|n|N)
-            echo
-            echo "You choose = ${libev_obfs}"
-            echo
-            break
-            ;;
-            *)
-            echo -e "[${red}Error${plain}] Please only enter [y/n]"
-            ;;
-        esac
-        done
-
-        if [ "${libev_obfs}" == "y" ] || [ "${libev_obfs}" == "Y" ]; then
-            while true
-            do
-            echo -e "Please select obfs for simple-obfs:"
-            for ((i=1;i<=${#obfs_libev[@]};i++ )); do
-                hint="${obfs_libev[$i-1]}"
-                echo -e "${green}${i}${plain}) ${hint}"
-            done
-            read -p "Which obfs you'd select(Default: ${obfs_libev[0]}):" r_libev_obfs
-            [ -z "$r_libev_obfs" ] && r_libev_obfs=1
-            expr ${r_libev_obfs} + 1 &>/dev/null
-            if [ $? -ne 0 ]; then
-                echo -e "[${red}Error${plain}] Please enter a number"
-                continue
-            fi
-            if [[ "$r_libev_obfs" -lt 1 || "$r_libev_obfs" -gt ${#obfs_libev[@]} ]]; then
-                echo -e "[${red}Error${plain}] Please enter a number between 1 and ${#obfs_libev[@]}"
-                continue
-            fi
-            shadowsocklibev_obfs=${obfs_libev[$r_libev_obfs-1]}
-            echo
-            echo "obfs = ${shadowsocklibev_obfs}"
-            echo
-            break
-            done
-        fi
-    else
-        echo -e "[${green}Info${plain}] autoconf version is less than 2.67, simple-obfs for ${software[${selected}-1]} installation has been skipped"
-    fi
-}
-
-install_prepare(){
-
-    if  [[ "${selected}" == "1" || "${selected}" == "3" || "${selected}" == "4" ]]; then
-        install_prepare_password
-        install_prepare_port
-        install_prepare_cipher
-        if [ "${selected}" == "4" ]; then
-            install_prepare_libev_obfs
-        fi
-    elif [ "${selected}" == "2" ]; then
-        install_prepare_password
-        install_prepare_port
-        install_prepare_cipher
-        install_prepare_protocol
-        install_prepare_obfs
-    fi
-
-    echo
-    echo "Press any key to start...or Press Ctrl+C to cancel"
-    char=`get_char`
-
-}
-
-install_libsodium(){
-    if [ ! -f /usr/lib/libsodium.a ]; then
-        cd ${cur_dir}
-        download "${libsodium_file}.tar.gz" "${libsodium_url}"
-        tar zxf ${libsodium_file}.tar.gz
-        cd ${libsodium_file}
-        ./configure --prefix=/usr && make && make install
-        if [ $? -ne 0 ]; then
-            echo -e "[${red}Error${plain}] ${libsodium_file} install failed."
-            install_cleanup
-            exit 1
-        fi
-    else
-        echo -e "[${green}Info${plain}] ${libsodium_file} already installed."
-    fi
-}
-
-install_mbedtls(){
-    if [ ! -f /usr/lib/libmbedtls.a ]; then
-        cd ${cur_dir}
-        download "${mbedtls_file}-gpl.tgz" "${mbedtls_url}"
-        tar xf ${mbedtls_file}-gpl.tgz
-        cd ${mbedtls_file}
-        make SHARED=1 CFLAGS=-fPIC
-        make DESTDIR=/usr install
-        if [ $? -ne 0 ]; then
-            echo -e "[${red}Error${plain}] ${mbedtls_file} install failed."
-            install_cleanup
-            exit 1
-        fi
-    else
-        echo -e "[${green}Info${plain}] ${mbedtls_file} already installed."
-    fi
-}
-
-install_shadowsocks_python(){
-    cd ${cur_dir}
-    unzip -q ${shadowsocks_python_file}.zip
-    if [ $? -ne 0 ];then
-        echo -e "[${red}Error${plain}] unzip ${shadowsocks_python_file}.zip failed, please check unzip command."
-        install_cleanup
-        exit 1
-    fi
-
-    cd ${shadowsocks_python_file}
-    python setup.py install --record /usr/local/shadowsocks_python.log
-
-    if [ -f /usr/bin/ssserver ] || [ -f /usr/local/bin/ssserver ]; then
-        chmod +x ${shadowsocks_python_init}
-        local service_name=$(basename ${shadowsocks_python_init})
-        if check_sys packageManager yum; then
-            chkconfig --add ${service_name}
-            chkconfig ${service_name} on
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} defaults
-        fi
-    else
-        echo
-        echo -e "[${red}Error${plain}] ${software[0]} install failed."
-        echo "Please visit: https://teddysun.com/486.html and contact."
-        install_cleanup
-        exit 1
-    fi
-}
-
-install_shadowsocks_r(){
-    cd ${cur_dir}
-    tar zxf ${shadowsocks_r_file}.tar.gz
-    mv ${shadowsocks_r_file}/shadowsocks /usr/local/
-    if [ -f /usr/local/shadowsocks/server.py ]; then
-        chmod +x ${shadowsocks_r_init}
-        local service_name=$(basename ${shadowsocks_r_init})
-        if check_sys packageManager yum; then
-            chkconfig --add ${service_name}
-            chkconfig ${service_name} on
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} defaults
-        fi
-    else
-        echo
-        echo -e "[${red}Error${plain}] ${software[1]} install failed."
-        echo "Please visit; https://teddysun.com/486.html and contact."
-        install_cleanup
-        exit 1
-    fi
-}
-
-install_shadowsocks_go(){
-    cd ${cur_dir}
-    if is_64bit; then
-        gzip -d ${shadowsocks_go_file_64}.gz
-        if [ $? -ne 0 ];then
-            echo -e "[${red}Error${plain}] Decompress ${shadowsocks_go_file_64}.gz failed."
-            install_cleanup
-            exit 1
-        fi
-        mv -f ${shadowsocks_go_file_64} /usr/bin/shadowsocks-server
-    else
-        gzip -d ${shadowsocks_go_file_32}.gz
-        if [ $? -ne 0 ];then
-            echo -e "[${red}Error${plain}] Decompress ${shadowsocks_go_file_32}.gz failed."
-            install_cleanup
-            exit 1
-        fi
-        mv -f ${shadowsocks_go_file_32} /usr/bin/shadowsocks-server
-    fi
-
-    if [ -f /usr/bin/shadowsocks-server ]; then
-        chmod +x /usr/bin/shadowsocks-server
-        chmod +x ${shadowsocks_go_init}
-
-        local service_name=$(basename ${shadowsocks_go_init})
-        if check_sys packageManager yum; then
-            chkconfig --add ${service_name}
-            chkconfig ${service_name} on
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} defaults
-        fi
-    else
-        echo
-        echo -e "[${red}Error${plain}] ${software[2]} install failed."
-        echo "Please visit: https://teddysun.com/486.html and contact."
-        install_cleanup
-        exit 1
-    fi
-}
-
-install_shadowsocks_libev(){
-    cd ${cur_dir}
-    tar zxf ${shadowsocks_libev_file}.tar.gz
-    cd ${shadowsocks_libev_file}
-    ./configure --disable-documentation && make && make install
-    if [ $? -eq 0 ]; then
-        chmod +x ${shadowsocks_libev_init}
-        local service_name=$(basename ${shadowsocks_libev_init})
-        if check_sys packageManager yum; then
-            chkconfig --add ${service_name}
-            chkconfig ${service_name} on
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} defaults
-        fi
-    else
-        echo
-        echo -e "[${red}Error${plain}] ${software[3]} install failed."
-        echo "Please visit: https://teddysun.com/486.html and contact."
-        install_cleanup
-        exit 1
-    fi
-}
-
-install_shadowsocks_libev_obfs(){
-    if [ "${libev_obfs}" == "y" ] || [ "${libev_obfs}" == "Y" ]; then
-        cd ${cur_dir}
-        git clone https://github.com/shadowsocks/simple-obfs.git
-        [ -d simple-obfs ] && cd simple-obfs || echo -e "[${red}Error:${plain}] Failed to git clone simple-obfs."
-        git submodule update --init --recursive
-        if centosversion 6; then
-            if [ ! "$(command -v autoconf268)" ]; then
-                echo -e "[${green}Info${plain}] Starting install autoconf268..."
-                yum install -y autoconf268 > /dev/null 2>&1 || echo -e "[${red}Error:${plain}] Failed to install autoconf268."
-            fi
-            # replace command autoreconf to autoreconf268
-            sed -i 's/autoreconf/autoreconf268/' autogen.sh
-            # replace #include <ev.h> to #include <libev/ev.h>
-            sed -i 's@^#include <ev.h>@#include <libev/ev.h>@' src/local.h
-            sed -i 's@^#include <ev.h>@#include <libev/ev.h>@' src/server.h
-        fi
-        ./autogen.sh
-        ./configure --disable-documentation
-        make
-        make install
-        if [ ! "$(command -v obfs-server)" ]; then
-            echo -e "[${red}Error${plain}] simple-obfs for ${software[${selected}-1]} install failed."
-            echo "Please visit: https://teddysun.com/486.html and contact."
-            install_cleanup
-            exit 1
-        fi
-        [ -f /usr/local/bin/obfs-server ] && ln -s /usr/local/bin/obfs-server /usr/bin
-    fi
-}
-
-install_completed_python(){
-    clear
-    ${shadowsocks_python_init} start
-    echo
-    echo -e "Congratulations, ${green}${software[0]}${plain} server install completed!"
-    echo -e "Your Server IP        : ${red} $(get_ip) ${plain}"
-    echo -e "Your Server Port      : ${red} ${shadowsocksport} ${plain}"
-    echo -e "Your Password         : ${red} ${shadowsockspwd} ${plain}"
-    echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}"
-}
-
-install_completed_r(){
-    clear
-    ${shadowsocks_r_init} start
-    echo
-    echo -e "Congratulations, ${green}${software[1]}${plain} server install completed!"
-    echo -e "Your Server IP        : ${red} $(get_ip) ${plain}"
-    echo -e "Your Server Port      : ${red} ${shadowsocksport} ${plain}"
-    echo -e "Your Password         : ${red} ${shadowsockspwd} ${plain}"
-    echo -e "Your Protocol         : ${red} ${shadowsockprotocol} ${plain}"
-    echo -e "Your obfs             : ${red} ${shadowsockobfs} ${plain}"
-    echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}"
-}
-
-install_completed_go(){
-    clear
-    ${shadowsocks_go_init} start
-    echo
-    echo -e "Congratulations, ${green}${software[2]}${plain} server install completed!"
-    echo -e "Your Server IP        : ${red} $(get_ip) ${plain}"
-    echo -e "Your Server Port      : ${red} ${shadowsocksport} ${plain}"
-    echo -e "Your Password         : ${red} ${shadowsockspwd} ${plain}"
-    echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}"
-}
-
-install_completed_libev(){
-    clear
-    ldconfig
-    ${shadowsocks_libev_init} start
-    echo
-    echo -e "Congratulations, ${green}${software[3]}${plain} server install completed!"
-    echo -e "Your Server IP        : ${red} $(get_ip) ${plain}"
-    echo -e "Your Server Port      : ${red} ${shadowsocksport} ${plain}"
-    echo -e "Your Password         : ${red} ${shadowsockspwd} ${plain}"
-    if [ "$(command -v obfs-server)" ]; then
-    echo -e "Your obfs             : ${red} ${shadowsocklibev_obfs} ${plain}"
-    fi
-    echo -e "Your Encryption Method: ${red} ${shadowsockscipher} ${plain}"
-}
-
-qr_generate_python(){
-    if [ "$(command -v qrencode)" ]; then
-        local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0)
-        local qr_code="ss://${tmp}"
-        echo
-        echo "Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)"
-        echo -e "${green} ${qr_code} ${plain}"
-        echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_python_qr.png
-        echo "Your QR Code has been saved as a PNG file path:"
-        echo -e "${green} ${cur_dir}/shadowsocks_python_qr.png ${plain}"
-    fi
-}
-
-qr_generate_r(){
-    if [ "$(command -v qrencode)" ]; then
-        local tmp1=$(echo -n "${shadowsockspwd}" | base64 -w0 | sed 's/=//g;s/\//_/g;s/+/-/g')
-        local tmp2=$(echo -n "$(get_ip):${shadowsocksport}:${shadowsockprotocol}:${shadowsockscipher}:${shadowsockobfs}:${tmp1}/?obfsparam=" | base64 -w0)
-        local qr_code="ssr://${tmp2}"
-        echo
-        echo "Your QR Code: (For ShadowsocksR Windows, Android clients only)"
-        echo -e "${green} ${qr_code} ${plain}"
-        echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_r_qr.png
-        echo "Your QR Code has been saved as a PNG file path:"
-        echo -e "${green} ${cur_dir}/shadowsocks_r_qr.png ${plain}"
-    fi
-}
-
-qr_generate_go(){
-    if [ "$(command -v qrencode)" ]; then
-        local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0)
-        local qr_code="ss://${tmp}"
-        echo
-        echo "Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)"
-        echo -e "${green} ${qr_code} ${plain}"
-        echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_go_qr.png
-        echo "Your QR Code has been saved as a PNG file path:"
-        echo -e "${green} ${cur_dir}/shadowsocks_go_qr.png ${plain}"
-    fi
-}
-
-qr_generate_libev(){
-    if [ "$(command -v qrencode)" ]; then
-        local tmp=$(echo -n "${shadowsockscipher}:${shadowsockspwd}@$(get_ip):${shadowsocksport}" | base64 -w0)
-        local qr_code="ss://${tmp}"
-        echo
-        echo "Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)"
-        echo -e "${green} ${qr_code} ${plain}"
-        echo -n "${qr_code}" | qrencode -s8 -o ${cur_dir}/shadowsocks_libev_qr.png
-        echo "Your QR Code has been saved as a PNG file path:"
-        echo -e "${green} ${cur_dir}/shadowsocks_libev_qr.png ${plain}"
-    fi
-}
-
-install_main(){
-    install_libsodium
-    if ! ldconfig -p | grep -wq "/usr/lib"; then
-        echo "/usr/lib" > /etc/ld.so.conf.d/lib.conf
-    fi
-    ldconfig
-
-    if   [ "${selected}" == "1" ]; then
-        install_shadowsocks_python
-        install_completed_python
-        qr_generate_python
-    elif [ "${selected}" == "2" ]; then
-        install_shadowsocks_r
-        install_completed_r
-        qr_generate_r
-    elif [ "${selected}" == "3" ]; then
-        install_shadowsocks_go
-        install_completed_go
-        qr_generate_go
-    elif [ "${selected}" == "4" ]; then
-        install_mbedtls
-        install_shadowsocks_libev
-        install_shadowsocks_libev_obfs
-        install_completed_libev
-        qr_generate_libev
-    fi
-
-    echo
-    echo "Welcome to visit: https://teddysun.com/486.html"
-    echo "Enjoy it!"
-    echo
-}
-
-install_cleanup(){
-    cd ${cur_dir}
-    rm -rf simple-obfs
-    rm -rf ${libsodium_file} ${libsodium_file}.tar.gz
-    rm -rf ${mbedtls_file} ${mbedtls_file}-gpl.tgz
-    rm -rf ${shadowsocks_python_file} ${shadowsocks_python_file}.zip
-    rm -rf ${shadowsocks_r_file} ${shadowsocks_r_file}.tar.gz
-    rm -rf ${shadowsocks_go_file_64}.gz ${shadowsocks_go_file_32}.gz
-    rm -rf ${shadowsocks_libev_file} ${shadowsocks_libev_file}.tar.gz
-}
-
-install_shadowsocks(){
-    disable_selinux
-    install_select
-    install_prepare
-    install_dependencies
-    download_files
-    config_shadowsocks
-    if check_sys packageManager yum; then
-        config_firewall
-    fi
-    install_main
-    install_cleanup
-}
-
-uninstall_shadowsocks_python(){
-    printf "Are you sure uninstall ${red}${software[0]}${plain}? [y/n]\n"
-    read -p "(default: n):" answer
-    [ -z ${answer} ] && answer="n"
-    if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then
-        ${shadowsocks_python_init} status > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-            ${shadowsocks_python_init} stop
-        fi
-        local service_name=$(basename ${shadowsocks_python_init})
-        if check_sys packageManager yum; then
-            chkconfig --del ${service_name}
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} remove
-        fi
-
-        rm -fr $(dirname ${shadowsocks_python_config})
-        rm -f ${shadowsocks_python_init}
-        rm -f /var/log/shadowsocks.log
-        if [ -f /usr/local/shadowsocks_python.log ]; then
-            cat /usr/local/shadowsocks_python.log | xargs rm -rf
-            rm -f /usr/local/shadowsocks_python.log
-        fi
-        echo -e "[${green}Info${plain}] ${software[0]} uninstall success"
-    else
-        echo
-        echo -e "[${green}Info${plain}] ${software[0]} uninstall cancelled, nothing to do..."
-        echo
-    fi
-}
-
-uninstall_shadowsocks_r(){
-    printf "Are you sure uninstall ${red}${software[1]}${plain}? [y/n]\n"
-    read -p "(default: n):" answer
-    [ -z ${answer} ] && answer="n"
-    if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then
-        ${shadowsocks_r_init} status > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-            ${shadowsocks_r_init} stop
-        fi
-        local service_name=$(basename ${shadowsocks_r_init})
-        if check_sys packageManager yum; then
-            chkconfig --del ${service_name}
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} remove
-        fi
-        rm -fr $(dirname ${shadowsocks_r_config})
-        rm -f ${shadowsocks_r_init}
-        rm -f /var/log/shadowsocks.log
-        rm -fr /usr/local/shadowsocks
-        echo -e "[${green}Info${plain}] ${software[1]} uninstall success"
-    else
-        echo
-        echo -e "[${green}Info${plain}] ${software[1]} uninstall cancelled, nothing to do..."
-        echo
-    fi
-}
-
-uninstall_shadowsocks_go(){
-    printf "Are you sure uninstall ${red}${software[2]}${plain}? [y/n]\n"
-    read -p "(default: n):" answer
-    [ -z ${answer} ] && answer="n"
-    if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then
-        ${shadowsocks_go_init} status > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-            ${shadowsocks_go_init} stop
-        fi
-        local service_name=$(basename ${shadowsocks_go_init})
-        if check_sys packageManager yum; then
-            chkconfig --del ${service_name}
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} remove
-        fi
-        rm -fr $(dirname ${shadowsocks_go_config})
-        rm -f ${shadowsocks_go_init}
-        rm -f /usr/bin/shadowsocks-server
-        echo -e "[${green}Info${plain}] ${software[2]} uninstall success"
-    else
-        echo
-        echo -e "[${green}Info${plain}] ${software[2]} uninstall cancelled, nothing to do..."
-        echo
-    fi
-}
-
-uninstall_shadowsocks_libev(){
-    printf "Are you sure uninstall ${red}${software[3]}${plain}? [y/n]\n"
-    read -p "(default: n):" answer
-    [ -z ${answer} ] && answer="n"
-    if [ "${answer}" == "y" ] || [ "${answer}" == "Y" ]; then
-        ${shadowsocks_libev_init} status > /dev/null 2>&1
-        if [ $? -eq 0 ]; then
-            ${shadowsocks_libev_init} stop
-        fi
-        local service_name=$(basename ${shadowsocks_libev_init})
-        if check_sys packageManager yum; then
-            chkconfig --del ${service_name}
-        elif check_sys packageManager apt; then
-            update-rc.d -f ${service_name} remove
-        fi
-        rm -fr $(dirname ${shadowsocks_libev_config})
-        rm -f /usr/local/bin/ss-local
-        rm -f /usr/local/bin/ss-tunnel
-        rm -f /usr/local/bin/ss-server
-        rm -f /usr/local/bin/ss-manager
-        rm -f /usr/local/bin/ss-redir
-        rm -f /usr/local/bin/ss-nat
-        rm -f /usr/local/bin/obfs-local
-        rm -f /usr/local/bin/obfs-server
-        rm -f /usr/local/lib/libshadowsocks-libev.a
-        rm -f /usr/local/lib/libshadowsocks-libev.la
-        rm -f /usr/local/include/shadowsocks.h
-        rm -f /usr/local/lib/pkgconfig/shadowsocks-libev.pc
-        rm -f /usr/local/share/man/man1/ss-local.1
-        rm -f /usr/local/share/man/man1/ss-tunnel.1
-        rm -f /usr/local/share/man/man1/ss-server.1
-        rm -f /usr/local/share/man/man1/ss-manager.1
-        rm -f /usr/local/share/man/man1/ss-redir.1
-        rm -f /usr/local/share/man/man1/ss-nat.1
-        rm -f /usr/local/share/man/man8/shadowsocks-libev.8
-        rm -fr /usr/local/share/doc/shadowsocks-libev
-        rm -f ${shadowsocks_libev_init}
-        echo -e "[${green}Info${plain}] ${software[3]} uninstall success"
-    else
-        echo
-        echo -e "[${green}Info${plain}] ${software[3]} uninstall cancelled, nothing to do..."
-        echo
-    fi
-}
-
-uninstall_shadowsocks(){
-    while true
-    do
-    echo  "Which Shadowsocks server you want to uninstall?"
-    for ((i=1;i<=${#software[@]};i++ )); do
-        hint="${software[$i-1]}"
-        echo -e "${green}${i}${plain}) ${hint}"
-    done
-    read -p "Please enter a number [1-4]:" un_select
-    case "${un_select}" in
-        1|2|3|4)
-        echo
-        echo "You choose = ${software[${un_select}-1]}"
-        echo
-        break
-        ;;
-        *)
-        echo -e "[${red}Error${plain}] Please only enter a number [1-4]"
-        ;;
-    esac
-    done
-
-    if   [ "${un_select}" == "1" ]; then
-        if [ -f ${shadowsocks_python_init} ]; then
-            uninstall_shadowsocks_python
-        else
-            echo -e "[${red}Error${plain}] ${software[${un_select}-1]} not installed, please check it and try again."
-            echo
-            exit 1
-        fi
-    elif [ "${un_select}" == "2" ]; then
-        if [ -f ${shadowsocks_r_init} ]; then
-            uninstall_shadowsocks_r
-        else
-            echo -e "[${red}Error${plain}] ${software[${un_select}-1]} not installed, please check it and try again."
-            echo
-            exit 1
-        fi
-    elif [ "${un_select}" == "3" ]; then
-        if [ -f ${shadowsocks_go_init} ]; then
-            uninstall_shadowsocks_go
-        else
-            echo -e "[${red}Error${plain}] ${software[${un_select}-1]} not installed, please check it and try again."
-            echo
-            exit 1
-        fi
-    elif [ "${un_select}" == "4" ]; then
-        if [ -f ${shadowsocks_libev_init} ]; then
-            uninstall_shadowsocks_libev
-        else
-            echo -e "[${red}Error${plain}] ${software[${un_select}-1]} not installed, please check it and try again."
-            echo
-            exit 1
-        fi
-    fi
-}
-
-# Initialization step
-action=$1
-[ -z $1 ] && action=install
-case "${action}" in
-    install|uninstall)
-        ${action}_shadowsocks
-        ;;
-    *)
-        echo "Arguments error! [${action}]"
-        echo "Usage: $(basename $0) [install|uninstall]"
-        ;;
-esac

+ 0 - 69
vps操作指南/ttrss/docker-compose.yml

@@ -1,69 +0,0 @@
-version: "3"
-services:
-  service.rss:
-    image: wangqiru/ttrss:latest
-    container_name: ttrss
-    ports:
-      - 181:80
-    environment:
-      - SELF_URL_PATH=https://rss.zhixinghe1.top # please change to your own domain
-      - DB_PASS=ttrss # use the same password defined in `database.postgres`
-      - PUID=1000
-      - PGID=1000
-    volumes:
-      - feed-icons:/var/www/feed-icons/
-    networks:
-      - public_access
-      - service_only
-      - database_only
-    stdin_open: true
-    tty: true
-    restart: always
-
-  service.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting page
-    image: wangqiru/mercury-parser-api:latest
-    container_name: mercury
-    networks:
-      - public_access
-      - service_only
-    restart: always
-
-  service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
-    image: wangqiru/opencc-api-server:latest
-    container_name: opencc
-    environment:
-      - NODE_ENV=production
-    networks:
-      - service_only
-    restart: always
-
-  database.postgres:
-    image: postgres:13-alpine
-    container_name: postgres
-    environment:
-      - POSTGRES_PASSWORD=ttrss # feel free to change the password
-    volumes:
-      - /home/zkpk/ttrss/postgres/data/:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
-    networks:
-      - database_only
-    restart: always
-
-  # utility.watchtower:
-  #   container_name: watchtower
-  #   image: containrrr/watchtower:latest
-  #   volumes:
-  #     - /var/run/docker.sock:/var/run/docker.sock
-  #   environment:
-  #     - WATCHTOWER_CLEANUP=true
-  #     - WATCHTOWER_POLL_INTERVAL=86400
-  #   restart: always
-
-volumes:
-  feed-icons:
-
-networks:
-  public_access: # Provide the access for ttrss UI
-  service_only: # Provide the communication network between services only
-    internal: true
-  database_only: # Provide the communication between ttrss and database only
-    internal: true

+ 0 - 29
vps操作指南/v2ray/config.json

@@ -1,29 +0,0 @@
-{
-  "inbounds": [
-    {
-      "listen": "0.0.0.0",
-      "port": 19090,
-      "protocol": "vmess",
-      "settings": {
-        "clients": [
-          {
-            "id": "f39bdcd6-6fd8-4675-8716-d89dda4ca8f8",
-            "alterId": 0
-          }
-        ]
-      },
-      "streamSettings": {
-        "network": "ws",
-        "wsSettings": {
-          "path": "/"
-        }
-      }
-    }
-  ],
-  "outbounds": [
-    {
-      "protocol": "freedom",
-      "settings": {}
-    }
-  ]
-}

+ 0 - 32
vps操作指南/v2ray/config.json.bak

@@ -1,32 +0,0 @@
-{
-  "log" : {
-   "access": "/var/log/v2ray/access.log",
-   "error": "/var/log/v2ray/error.log",
-   "loglevel": "warning"
-  },
-  "inbound": {
-    "port": 19090,
-    "listen":"127.0.0.1",//只监听 127.0.0.1,避免除本机外的机器探测到开放了 10000 端口
-    "protocol": "vmess",
-    "settings": {
-      "clients": [
-        {
-          "id": "f39bdcd6-6fd8-4675-8716-d89dda4ca8f8",
-          "alterId": 64
-        }
-      ]
-    },
-    "streamSettings": {
-      "network": "ws",
-      "wsSettings": {
-      "path": "/"
-      }
-    }
-  },
-  "outbound": {
-    "protocol": "freedom",
-    "settings": {
-      "domainStrategy": "UseIP"
-    }
-  }
-}

+ 0 - 14
vps操作指南/v2ray/docker-compose.yml

@@ -1,14 +0,0 @@
-version: "3"
-services:
-  service.rss:
-    image: teddysun/v2ray:latest
-    container_name: v2ray
-    ports:
-      - 19090:19090
-    volumes:
-      - /home/zkpk/v2ray/config.json:/etc/v2ray/config.json
-      - /home/zkpk/v2ray/log:/var/log/v2ray
-    stdin_open: true
-    tty: true
-    restart: always
-    

+ 29 - 0
vps操作指南/vps操作指南.md

@@ -12,6 +12,31 @@
 
 
 
+## 常用指令
+
+```shell
+# 进入docker容器
+docker exec -it names/container_id /bin/bash
+
+# 查看docker进程
+docker ps
+docker ps -a
+
+# 查看docker日志
+docker logs names
+docker logs -f names
+
+# 软件安装(alpine)
+apk
+apk update
+apk search xxxx
+apk install xxxx
+```
+
+
+
+
+
 ## 常用系统操作
 
 
@@ -423,6 +448,10 @@ scoop install v2rayN
 
 
 
+
+
+
+
 ## 常用软件配置
 
 ### Shadowsocks强制谷歌走ipv6隧道

+ 0 - 76
vps操作指南/一键初始化模板-yuu_alpineinit.sh

@@ -1,76 +0,0 @@
-#!/bin/sh
-
-echo "======================================================="
-echo "Alpine Linux One-Key Initialize for Web Application"
-echo "1.4/JAN.07-2023"
-echo "(C)Yuu 2023"
-echo "======================================================="
-echo "[UPDATE]Database"
-echo "Progress: 1/10"
-apk update
-sleep 2s
-echo "[UPDATE]Packages"
-echo "Progress: 2/10"
-apk upgrade
-sleep 2s
-echo "[INSTALL]Nginx"
-echo "Progress: 3/10"
-apk add nginx
-echo "[INIT]Nginx"
-echo "Progress: 4/10"
-service nginx restart
-rc-update add nginx
-sleep 2s
-echo "[INSTALL]PHP"
-echo "Progress: 5/10"
-apk add php81 php81-mysqli php81-pdo_mysql php81-mbstring php81-json php81-zlib php81-gd php81-intl php81-session php81-fpm php81-opcache
-echo "[INSTALL]SQLite Support for PHP"
-echo "Progress: 6/10"
-apk add php81-pdo_sqlite php81-tokenizer php81-ctype
-echo "[INIT]PHP"
-echo "Progress: 7/10"
-rc-update add php-fpm81
-service php-fpm81 restart
-sleep 2s
-echo "[INIT]BBR TCP Congestion Control"
-echo "Progress: 8/10"
-echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
-echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
-sysctl -p
-sysctl net.ipv4.tcp_available_congestion_control
-lsmod | grep bbr
-sleep 5s
-echo "[INIT]IPTables"
-echo "Progress: 9/10"
-apk add iptables
-rc-update add iptables
-iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
-iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-iptables -A OUTPUT -p tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-iptables -A OUTPUT -p tcp --sport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-iptables  -A INPUT -p icmp --icmp 8 -j ACCEPT
-iptables -A OUTPUT  -p icmp --icmp 0 -j ACCEPT
-iptables -P INPUT DROP
-iptables -P FORWARD DROP
-iptables -P OUTPUT DROP
-iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
-iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-iptables -A OUTPUT -j ACCEPT
-service iptables save
-iptables -L -n
-sleep 5s
-echo "[INIT]Timezone Data and NTP"
-echo "Progress: 10/10"
-apk add -u tzdata
-cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
-apk add chrony
-chronyd
-echo "======================================================="
-echo "ALL DONE!"
-echo "THANK YOU FOR USING THIS SCRIPT!"
-echo "YOUR SERVER WILL REBOOT IN 5 SECOND"
-echo "======================================================="
-sleep 5s
-reboot