Просмотр исходного кода

【feat】【资料目录结构】

1.优化目录结构
2.优化资料存放位置
3.删除不再使用的资料
ChenYL 1 год назад
Родитель
Сommit
437bfca076
46 измененных файлов с 3409 добавлено и 605 удалено
  1. 0 4
      .gitignore
  2. 672 0
      vps操作指南/bbr.sh
  3. 27 0
      vps操作指南/nginx/cert/fq.zhixinghe1.top.key
  4. 61 0
      vps操作指南/nginx/cert/fq.zhixinghe1.top.pem
  5. 27 0
      vps操作指南/nginx/cert/fs.zhixinghe1.top.key
  6. 61 0
      vps操作指南/nginx/cert/fs.zhixinghe1.top.pem
  7. 27 0
      vps操作指南/nginx/cert/git.zhixinghe1.top.key
  8. 61 0
      vps操作指南/nginx/cert/git.zhixinghe1.top.pem
  9. 27 0
      vps操作指南/nginx/cert/rss.zhixinghe1.top.key
  10. 61 0
      vps操作指南/nginx/cert/rss.zhixinghe1.top.pem
  11. 27 0
      vps操作指南/nginx/cert/www.zhixinghe1.top.key
  12. 62 0
      vps操作指南/nginx/cert/www.zhixinghe1.top.pem
  13. 25 0
      vps操作指南/nginx/conf.d/fq.conf
  14. 19 0
      vps操作指南/nginx/conf.d/fs.conf
  15. 36 0
      vps操作指南/nginx/conf.d/git.conf
  16. 7 0
      vps操作指南/nginx/conf.d/rewrite443.conf
  17. 36 0
      vps操作指南/nginx/conf.d/rss.conf
  18. 36 0
      vps操作指南/nginx/conf.d/watermark.conf
  19. 16 0
      vps操作指南/nginx/conf.d/www.conf
  20. 17 0
      vps操作指南/nginx/docker-compose.yml
  21. 1383 0
      vps操作指南/shadowsocks-all.sh
  22. 69 0
      vps操作指南/ttrss/docker-compose.yml
  23. 29 0
      vps操作指南/v2ray/config.json
  24. 32 0
      vps操作指南/v2ray/config.json.bak
  25. 14 0
      vps操作指南/v2ray/docker-compose.yml
  26. 38 0
      vps操作指南/viramch-zkpk-id_rsa
  27. 463 0
      vps操作指南/vps操作指南.md
  28. 76 0
      vps操作指南/一键初始化模板-yuu_alpineinit.sh
  29. 0 168
      个人开发者开发参考.txt
  30. 0 13
      临时.txt
  31. BIN
      亲戚称呼表.jpg
  32. 0 0
      亲戚称呼表.txt
  33. 0 45
      保险.txt
  34. 0 10
      八部金刚功.txt
  35. BIN
      包饺子和云吞/资料(打印).docx
  36. BIN
      包饺子和云吞/配料表(打印).docx
  37. 0 35
      可聊话题列表.txt
  38. 0 8
      小说.txt
  39. 0 64
      开车.txt
  40. 0 32
      方向分析.txt
  41. 0 1
      水印LOGO.drawio
  42. 0 15
      穿衣搭配.txt
  43. 0 0
      聊天术/超级聊天术-学习计划表.txt
  44. 0 0
      聊天术/超级聊天术-目录表.txt
  45. 0 0
      聊天术/超级聊天术.md
  46. 0 210
      豆瓣扫榜.txt

+ 0 - 4
.gitignore

@@ -1,4 +0,0 @@
-书籍/
-优质文章保存/
-知识网络*/
-知识汇总/

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

@@ -0,0 +1,672 @@
+#!/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
+

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

@@ -0,0 +1,27 @@
+-----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-----

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

@@ -0,0 +1,61 @@
+-----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-----

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

@@ -0,0 +1,27 @@
+-----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-----

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

@@ -0,0 +1,61 @@
+-----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-----

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

@@ -0,0 +1,27 @@
+-----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-----

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

@@ -0,0 +1,61 @@
+-----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-----

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

@@ -0,0 +1,27 @@
+-----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-----

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

@@ -0,0 +1,61 @@
+-----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-----

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

@@ -0,0 +1,27 @@
+-----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-----

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

@@ -0,0 +1,62 @@
+-----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-----

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

@@ -0,0 +1,25 @@
+# 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;
+  }
+}

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

@@ -0,0 +1,19 @@
+# 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;
+  }
+}

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

@@ -0,0 +1,36 @@
+# 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;
+    
+  }
+}

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

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

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

@@ -0,0 +1,36 @@
+# 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;
+    
+  }
+}

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

@@ -0,0 +1,36 @@
+# 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;
+    
+  }
+}

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

@@ -0,0 +1,16 @@
+# 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;
+}
+	
+

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

@@ -0,0 +1,17 @@
+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

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

@@ -0,0 +1,1383 @@
+#!/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

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

@@ -0,0 +1,69 @@
+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

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

@@ -0,0 +1,29 @@
+{
+  "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": {}
+    }
+  ]
+}

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

@@ -0,0 +1,32 @@
+{
+  "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"
+    }
+  }
+}

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

@@ -0,0 +1,14 @@
+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
+    

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

@@ -0,0 +1,38 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
+NhAAAAAwEAAQAAAYEAn8zWEw3OcLatgY7IbT/gGZ7L0iNW1/pY/G6sldZrnDbUbJ06ahj1
+x5AgMJSvwgG/5aNL/FD/jxIX1td9fh+sq/s1iHA1nUexXXSSzyQqE+G4ZMeDNnwW/DpmJ8
+NDQKu8UFN1WcNEHUyekaXeUgg4DqarQ/qkjqSDFe4VZuLJCRxEFPmlHZ85d2V0iSh4Qn3K
+nHaFaFysAU/9qTcMoHJ2c5VoxJ/LZ3ZpY1Atu0R8pT7vb8CgrFGPf7MwjSku1ZZRv1Wo0o
+iUMxXU9TIarPdNPoczin2+jzCUowg1AqcfL22Oe7YMnFNUtnhmj2iEz0IPyAaBUk1UvAd7
+y6JGqNutQ+SSAmV0PH2cAd5sHhebz2II8alKM71pbK30PBXFfazmTnM5WJqmS0agxoDiY0
+Xt6E7Z18gBHU1pP+s10ZUhWfPHZ8WJDAYuCxaHKvQRkZjGk4ApL6YEslQygbEWanx7LN0x
+4fJGtfVbkJe8BA5AkmqOJkiQjkxgL9MKD8S0F77zAAAFiM1j0ezNY9HsAAAAB3NzaC1yc2
+EAAAGBAJ/M1hMNznC2rYGOyG0/4Bmey9IjVtf6WPxurJXWa5w21GydOmoY9ceQIDCUr8IB
+v+WjS/xQ/48SF9bXfX4frKv7NYhwNZ1HsV10ks8kKhPhuGTHgzZ8Fvw6ZifDQ0CrvFBTdV
+nDRB1MnpGl3lIIOA6mq0P6pI6kgxXuFWbiyQkcRBT5pR2fOXdldIkoeEJ9ypx2hWhcrAFP
+/ak3DKBydnOVaMSfy2d2aWNQLbtEfKU+72/AoKxRj3+zMI0pLtWWUb9VqNKIlDMV1PUyGq
+z3TT6HM4p9vo8wlKMINQKnHy9tjnu2DJxTVLZ4Zo9ohM9CD8gGgVJNVLwHe8uiRqjbrUPk
+kgJldDx9nAHebB4Xm89iCPGpSjO9aWyt9DwVxX2s5k5zOViapktGoMaA4mNF7ehO2dfIAR
+1NaT/rNdGVIVnzx2fFiQwGLgsWhyr0EZGYxpOAKS+mBLJUMoGxFmp8eyzdMeHyRrX1W5CX
+vAQOQJJqjiZIkI5MYC/TCg/EtBe+8wAAAAMBAAEAAAGAAgYYF/muyaKmo+NpCmkqr2hhcH
+HeIbIb+mZ0bRlgF4RiQFXlbX6Pbk2W+saHS0+2XHQq/DESa39xKdlkz3obN7pgvS+enjVQ
+O7zENzdgCQxsx2n3cXM031DmBk7kxSbnpaTI8bAVZsGXqISPQj60ZwsZVC0SdHQE7Pws7T
+amESV4f0OCIdPoaGiyhyIqE72AGWcu3Vl/HC0lK0V1NXr9oQ0dXJAhhVfskcNsMNj3MyiO
+471uy3/k71sXnFIPM8lJjqDMm/MZ3u7y7h03IOcFS5IQ7DJIV8juylg3iD07CfD3tQPGpx
+iZYjxsHFoE9CWlPdwLi8rTHI+9n3WpvcywrTtPHQICEVbkSUbugeRG8A537J4vigq9vQMn
+bAOENLlIYljyYn+WqwM0tYam29DyWvUazyGb+x48Ya9aeAa/T3GZiBSBsxUR/nnUjZ4kks
+cUiSikaP+O1WBF9HntEmywzPrV1pb8ItH2HFpIwJZDg2HenlqXSm4BrqqK0+/M2qFhAAAA
+wQCz/5kmS+b28ovhk/y0W+Y7bW7srpwmw/Z8X0gWvlsLI+oGfap9wSt+FgMCorFTCDTssg
+aJfISyiuTRcozwnZlXL4DK1dZReDF9Sfy/H9SbqpX0+LKqCowBwLGPNwtvqka2ZDqNZYAg
+grMdkt0shG7XCxAmoB/jS2bDyfqNsy0KcETDYgtDoPh0AitHwkida1Gwqa/iC7DxSB3fFH
+oKwcx5b202qa9o7h+KLbnXSoysngn80PQ+jOkc7yn5vQn2VCcAAADBAM+xeTux0pKMSAr7
+41O38vd8BdhDmeuD00rGe+us7BSL6LTX9aIO3qP3zapKGSRIeK0CQodMo90H6c+UhgdteZ
+2e434j3KIqLSAxs4XbqISgSZL/XrspcSUtGxhRClcIxEhvhatU/BX7pNpqwFdntxBypsUm
+RZdqjk4JxPv8lV8VJsPuMnksrun0RhyUD1P+M/BNBDHcFbs+SD2R8DBHHE6DoUrFH4AQOm
+hNWWSDRa370U4DasWzVmU+X2zGJM+ISQAAAMEAxPeywEIljItxceC0iVEuTCz0Px43vc6B
+adXPKAOs4iCtL0cPTmRj7O7o2Vu0aCsg0dRQHYxw5/0LwQ3/t4EtgUO5hcLNeLgZFbuXpZ
+A0k7r3yVkPy8TFJ8SR1vzMWWHJTwLb8cCtuVdoQ+D2uKakrNiR/2E8OVPldLz/haUWt1mz
+PqnCCQz7Qn+zWM0ippP/v9RHpZYrIU7fjFT0xROui81ImCf+jrGkdAsfu5r82iLc2l1Qpk
+UcFwDGP3woIeVbAAAADnprcGtAbG9jYWxob3N0AQIDBA==
+-----END OPENSSH PRIVATE KEY-----

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

@@ -0,0 +1,463 @@
+# VPS操作指南
+
+
+
+当前操作系统:alpine
+
+
+
+## virmach安装alpine指南
+
+参考:[[Virmach安装Alpine详细教程](https://cikeblog.com/virmach-install-alpine.html)](https://cikeblog.com/virmach-install-alpine.html)
+
+
+
+## 常用系统操作
+
+
+
+### 创建新用户
+
+示例用户名: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)
+
+
+
+## 常用软件配置
+
+### 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则配置成功
+
+
+
+
+
+
+

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

@@ -0,0 +1,76 @@
+#!/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

+ 0 - 168
个人开发者开发参考.txt

@@ -1,168 +0,0 @@
-参考文章
-[微信小程序] 从 0 到 1 做一款小程序,过程分享
-https://www.v2ex.com/t/933383
-
-PyCharm下安装配置PySide6开发环境(Qt Designer、PyUIC和PyRCC)
-https://blog.csdn.net/baiydn/article/details/126483010
-
-[ PyQt入门教程 ] Qt Designer工具的使用
-https://www.cnblogs.com/linyfeng/p/11223707.html
-
-Python正则表达式,这一篇就够了!
-https://zhuanlan.zhihu.com/p/127807805
-
-PySide6 信号与槽
-https://blog.csdn.net/freeking101/article/details/125053831
-
-springboot+logback 配置日志按大小和日期滚动分割失效问题解决
-https://juejin.cn/post/7122334685245472776
-
-Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI
-https://blog.csdn.net/renpeng301/article/details/124660893
-
-Spring Boot 使用枚举类型作为请求参数
-https://xkcoding.com/2019/01/30/spring-boot-request-use-enums-params.html
-
-如何高效优雅的使用java枚举
-https://mp.weixin.qq.com/s/CLr5bcxsG7C8v6qSsagEbw
-
-MapStruct使用指南
-https://zhuanlan.zhihu.com/p/368731266
-
-idea如何修改默认的${user}值
-https://www.cnblogs.com/zhenhunfan2/p/13522995.html
-
-IDEA Alibaba规范化模板(代码格式化,注释模板化,常用自定义快捷键)
-https://blog.csdn.net/qq_20340547/article/details/122045226
-
-IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)
-https://blog.csdn.net/weixin_37539378/article/details/80537011
-
-Idea配置,设置当import的类数量大于多少时,采用*代替
-https://blog.csdn.net/weixin_38106322/article/details/107724676
-
-微信官方文档-小程序
-https://developers.weixin.qq.com/miniprogram/dev/framework/
-
-
-springboot集成feign get方法怎么用对象传参
-https://blog.csdn.net/wandou9527/article/details/109751571
-
-微信接口开发 Spring boot FeignClient [text/plain]问题解决
-https://blog.csdn.net/a610786189/article/details/80508353
-
-openFeign日志配置
-https://blog.csdn.net/weixin_43472934/article/details/122253068
-
-OpenFeign中Get请求实体参数,以及实体字段序列化别名
-https://blog.csdn.net/zhang_chenhan/article/details/115482080
-
-Jackson别名@JsonAlias详细用法
-https://blog.csdn.net/hu18315778112/article/details/126625233
-
-【Jasypt】Spring Boot 配置文件加解密 Jasypt 配置文件加密
-https://blog.51cto.com/no8g/6344380
-
-H2 Database 连接字符串参数
-https://blog.csdn.net/kanpiaoxue/article/details/84925846
-
-SpringBoot + Caffeine本地缓存
-https://blog.csdn.net/qq_38531706/article/details/118080308
-
-SpringCache+caffeine本地缓存
-https://blog.csdn.net/weixin_45207751/article/details/131260529?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-131260529-blog-130288429.235%5Ev38%5Epc_relevant_anti_t3_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-131260529-blog-130288429.235%5Ev38%5Epc_relevant_anti_t3_base&utm_relevant_index=3
-
-基于Spring的上下文工具类ApplicationContextUtil是怎样的
-https://www.yisu.com/zixun/619481.html
-
-SpringBoot统一响应格式带来的String双引号问题和类型强转失败问题解决
-https://blog.csdn.net/nineya_com/article/details/114199606
-
-nvm使用教程
-https://blog.csdn.net/jj2320711457/article/details/117431854
-
-Vue3系列 =>.vue文件出现 type declarations can only be used in TypeScript files.
-https://blog.csdn.net/weixin_48200589/article/details/117756504?spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~ESQUERY~Rate-3-117756504-bbs-398362063.264^v3^pc_relevant_bbs_down_v2_default&depth_1-utm_source=distribute.pc_relevant_bbs_down_v2.none-task-blog-2~default~ESQUERY~Rate-3-117756504-bbs-398362063.264^v3^pc_relevant_bbs_down_v2_default
-
-文件上传下载 Content-type 设置整理
-https://blog.csdn.net/spe294096580/article/details/107808842
-
-taro: 如何使用编译配置中定义的常量defineConstants
-https://blog.csdn.net/qq_38969618/article/details/128551216
-
-Taro 封装request
-https://juejin.cn/post/6992789949737074724
-
-【Taro开发】-带token网络请求封装(四)
-https://juejin.cn/post/7078228369652842533
-
-taro请求工具封装
-https://blog.csdn.net/qq_20594019/article/details/127108481
-
-promise和async/await的区别
-https://www.cnblogs.com/DrcProgrammingCool/p/13763676.html
-
-理解异步函数async和await的用法
-https://blog.csdn.net/weixin_45811256/article/details/123638582
-
-display:flex(弹性盒子布局)详解
-https://blog.csdn.net/qq_44537625/article/details/100040169
-
-vue3 watch监听函数(reactive篇)
-https://blog.csdn.net/qq_42543244/article/details/122281029
-
-Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M
-https://www.cnblogs.com/niceyoo/p/14083706.html
-
-「建议收藏」小程序canvas绘制海报全流程
-https://juejin.cn/post/6930404573043490830
-
-CanvasRenderingContext2D
-https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D
-
-
-技术选型
-	后端 - Java
-	前端
-		管理界面 - angular + ng-alain
-		用户界面
-			首要支持:小程序 - taro
-			期望目标:写一套代码,所有端都能用
-				web - angular
-				小程序- taro
-				app(android、ios、windows、linux) - flutter
-
-
-产品功能:
-提供添加水印功能
-我要知道有人使用
-	有人进入小程序
-	有人使用了功能
-	有人多次使用了功能
-删除上传的文件
-获取用户反馈
-
-文字水印
-	内容 - 20个字
-	位置
-		水印位置
-			平铺
-			左上角
-			左下角
-			右上角
-			右下角
-			居中
-		交错 - 水印文字排布交错
-		水印角度
-		水印间隔
-	字体
-		水印大小
-		是否加粗
-		文字颜色:白色、灰色、黑色、红色、蓝色、自定以选择
-		透明度
-		字体
-	图片 - 第一版按原格式输出
-		导出图片格式                                                                                                                                                                                   
-		图片质量(可以向下,不能向上)			
-			
-https://www.657m.com/

+ 0 - 13
临时.txt

@@ -1,13 +0,0 @@
-商机
-能
-接
-承接
-下沉
-精细
-某个功能的需求和模块的设计本身就有可能是一家公司的命脉,属于商业机密
-
-
-走教小学生写作文的路线
-1 、一步一步利用关键字写出 70 分的作文,把套路教给小学生
-2 、小学生学会套路写作文,就不错了,家长也可以付费。
-3 、写得案例好的 ,直接就可以当样板,吸引其他小学生和家长来付费。

BIN
亲戚称呼表.jpg


+ 0 - 0
亲戚关系.txt → 亲戚称呼表.txt


+ 0 - 45
保险.txt

@@ -1,45 +0,0 @@
-国寿鑫瑞稳赢年金保险(2023版)
-国寿鑫尊宝终身寿险(万能型)(C款,2023版)
-
-常见术语
-年金保障和身故保障
-基本保额
-保单
-保险费
-退保金
-续期保费
-保险条款
-缴费方式:趸交
-保险金额
-标准保费
-加费
-险种性质
-年金保险
-万能型
-寿险
-保险期间
-现金价值
-合同效力
-保险条款
-投保单
-保险单
-身故保险责任
-身故保险金
-保险金
-投保人、被保险人、受益人
-分红型保险
-生效对应日
-保单年度
-年生效对应日
-至本合同保险期间届满前
-年金
-本合同基本条款中“投保人解除合同的处理”事项不适用于本合同???
-基本保险金额
-保险金额
-风险保障费
-年生效对应日
-累计所交保险费
-生存类保险金
-分红型保险
-风险保障费
-风险保障费率

+ 0 - 10
八部金刚功.txt

@@ -1,10 +0,0 @@
-起势
-双手插顶利三焦
-手足前后固肾腰 
-调理脾肤需单举
-左肝右肺如射雕
-回头望足去心疾
-五劳七伤向后瞧
-凤凰展翅周身力(一侧点3次)
-两足顿顿饮嗜消(1,1,123)
-收势

BIN
包饺子和云吞/资料(打印).docx


BIN
包饺子和云吞/配料表(打印).docx


+ 0 - 35
可聊话题列表.txt

@@ -1,35 +0,0 @@
-爸爸
-
-妈妈
-
-家姐
-
-叶南兴
-	股票
-	比特币之类
-	手机
-	工作
-	
-许少海
-	健身、撸铁
-	家里事(地皮)
-	美食
-	摸鱼
-	
-曾智玲
-	搞卫生
-	煮饭(工作地特色,早餐牛奶煮麦片减脂餐、过年才能吃油炸食品、不喜欢吃年角、会吃松糕(东川))
-	税务(电脑坏了、周二歌唱比赛、工作内容)
-	天气(开暖气、门口有缝、浴室没有热水器)
-	不是在办公室蹲着就是在宿舍宅着
-	饭点较晚
-	车子停在村里(住的地方只有两个车位)
-	做健身操
-	不喜欢人多的地方
-	小学 初中 高中在哪里读
-	自律
-	生活习惯
-	脚上冻疮
-	09年入住
-	烟花(会烧烟花,小区内只能烧小型炮仗)
-	歌唱比赛(三等奖第一,第一靠实力,二等奖的靠关系和全家捧场)

+ 0 - 8
小说.txt

@@ -1,8 +0,0 @@
-主角:以符入道
-
-力量体系(练的就是一口先天之气)
-后天
-先天(感应)
-练气(气海、天地桥、识海)
-筑基(旋光、心动、神意、灵柩)
-金丹

+ 0 - 64
开车.txt

@@ -1,64 +0,0 @@
-注:要逆反应,让速不让道(即先让速,视当时情况再决定是否让道)
-
-位置
-	座椅
-		1.先调高低再调前后,踩尽刹车才调前后
-		2.视线在前挡风玻璃的二分之一
-		3.头顶离车顶至少一个拳头的位置
-		4.膝盖和仪表台最少一个拳头的位置
-		5.座椅不要太直,容易累,在110°-120°左右
-		6.后脑勺对准头枕,这样才有保护
-		7.脚(刹车前和踩尽刹车后)要有一定角度,这样踩刹车才更有力度
-	方向盘
-		1.上下方向,只要不遮住仪表盘即可
-		2.伸直手,手腕位置刚好能搭到方向盘上方
-	脚
-		1.正踩刹车,斜踩油门
-		2.能够一脚踩刹车到头
-		3.要用脚掌踩,不要用脚趾踩
-	内后视镜
-		能看到后窗全貌
-		如果不能看到后窗全貌,则天空和地面各占一半
-	外后视镜
-		左侧
-			车身占四分之一(能看到前后门把手)
-			天空和地面各占二分之一
-		右侧
-			车身占四分之一(能看到前后门把手)
-			天空占三分之一
-			地面占三分之二
-		注意:左右侧都是一样,能看到车身即可(尽量少),横向距离越大看到旁边的距离越多
-操作
-	脚
-		1.只要不加油,脚一定在刹车上
-		2.正踩刹车,斜踩油门
-	方向盘
-		注意点:
-		1.三九点握法
-		2.大拇指不要环绕着握方向盘
-		3.方向盘最多一圈半就尽了,即打方向盘时共计出力3次就打尽了,每只手打半圈
-		打法:
-		1.修正法:高速行驶时使用,
-			不能急打方向,要慢打修正,少打少回,随时修正方向,保持直线行驶;
-			变道的时候,缓打缓回慢慢变道
-		2.(这个)传递法:慢转弯时使用,要连续转动方向盘,但又不用那么急
-			两手在转动方向盘的时候要接应配合,一传一递协调进行,整打整回用力均匀,
-			这样在转弯的时候才能让车身更稳
-		3.交叉法:
-			快速转向时使用(急转弯、掉头等),
-			双手相互交叉传递转向,快打快回,要做到转向速度均匀
-	变道
-		1.变道不能临时起意
-		1.要加速变道,不能踩刹车
-		2.变道时前后都要留有充足的空间
-	后视镜(看,特别是夜间)
-	转弯
-	倒车入库
-	侧方入库
-
-
-
-
-
-
-

+ 0 - 32
方向分析.txt

@@ -1,32 +0,0 @@
-小众领域:葬爱家族、洛奇
-
-3个方向
-1.抖音图文
-2.以jiangyongkang为关键词,找到是做啥的,然后复制
-	姜咏康
-	梦里醉江南
-	vincent
-	Vincent.Y.K.JIANG
-	https://blog.jiangyongkang.com
-	vincent4502237@gmail.com
-	vincent4502237@gmail.com
-	jiangyongkang.gitee.io
-	
-	疑似产品 社交类型/数字货币交易所/葬爱家族/杀马特/非主流文化/杀马特风格/葬爱家族 
-	
-	自动化
-	图片加水印,图片背景色?
-	做小程序
-
-	在广州 -> 能在广州就找到业务、通过网络跨地域找
-	IT 沾边 -> 开发即是生产力???
-	主要是资源积累,18 年就有意识无意识的开始积累了
-		-> 以前就有的
-	没啥壁垒,说出来了就会多很多竞争。经验就是可以多用爱发电,发着发着一不小心就赚钱了
-		-> 某个行业
-		-> 显而易见(信息差)
-	周末都在忙副业
-
-3.用君言说的方法,找到商机
-4.图片加水印、图片背景色(微信端+web端)
-5.羽毛球馆抢定场地

+ 0 - 1
水印LOGO.drawio

@@ -1 +0,0 @@
-<mxfile host="Electron" modified="2023-08-30T14:41:36.853Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/16.5.1 Chrome/96.0.4664.110 Electron/16.0.7 Safari/537.36" etag="IE_8xSeUU1NAqP4qUSsB" version="16.5.1" type="device"><diagram id="BiwODpPpanPc41OXk4vt" name="第 1 页">xVbbbqMwEP0aHlMZCCR9LDTd7lWrjbR9dsAFq4ZhjdMk+/U7AybhkrZbaaNNImKOx3M5cxjh+HGx/6B5lX+FVCjHY+ne8W8dzwuur/FKwKEF/KXbApmWaQv1gLX8LSzILLqVqagHhgZAGVkNwQTKUiRmgHGtYTc0ewQ1jFrxTEyAdcLVFH2QqclbdOktTvi9kFneRXZDW3DBO2NbSZ3zFHY9yF85fqwBTLsq9rFQxF3HS3vu7oXdY2JalOZvDnz6MQs/5/XDt4/R/UxB4fP1z5kXtm6eudraim225tBRkGnYVtZMaCP254jnm86cTRNzj+WiTAQUwugDmlhHfmiPWIm4C3u/OxF+xPI+2b4FuW1ydvR94gEXlop30OKeYSVUGDZ6BCwK6emEGv7aUgMj97TEVWb/myObAZ2dFTmatW5u0GDOqv0ZF6vQiZgTzZ1V4CxvaW2dYlmbcSDE2vQ6eNRIbB3huSmQjFsXl7XR8CRiUKARKaEUlJlUagRxJbMSbxNsqUA8IiFIfEpu7EYh05TCRLtcGrGueEIxdzgSEEP9lKkgvpkt/I4XUlG774V6FuTJbnRxHc8PYvpSkk/CJLnNWPGNUBHoVOhRju0OT56yJt5ot8aUZJkh4BEFoOVvDMc7Il6Ud1/GrzxBU3G/KV73YuJdvv1Md/37QqR9h1oaCdTHDRgDxZkGG6hG0sl5Rc6KfUaD/2rDa5ngFaeBnvR80ELqsx30c/Za3wfixB3GwjBYjhSKuOfG7CZoghpuC2EXaWrn5mq5uO59gmA4wNwzAywMr7xgKgPvUirw5v9PBRWoQ0aeIlrFgI9rU14Q4Y81PMTMCTCFuAEWQ8ClO7IaAotgfMTtAd4ImBzpOcVfm5qSNBxaVU6n3lDDr8+Xl+fSP9b+xUTtD0UcTCXMzo0x9n4B4+3ptafZ6707+qs/</diagram></mxfile>

+ 0 - 15
穿衣搭配.txt

@@ -1,15 +0,0 @@
-简单+简单 -> 全身没有亮点,没地方给人看就会关注到外表(脸),除非做了 颜色搭配+风格统一
-简单+复杂(平衡) -> 兼顾上学、上班
-	-> 上半身简单 + 下半身复杂 / 上半身复杂 + 下半身简单 / 上下都简单 + 复杂的配饰
-	-> 颜色
-		-> 简单:黑、白、灰、藏蓝
-		-> 复杂:红、绿、紫蓝 ,因为都有明显的风格倾向,包括拼接设计和大印花
-复杂+复杂 -> 极度风格化,很有个性化,但不太兼顾上学、上班
-
-颜色搭配
-
-风格统一
-
-插肩袖比较特别,属于简单和复杂的搭配
-
-条纹划分到复杂

+ 0 - 0
超级聊天术-学习计划表.txt → 聊天术/超级聊天术-学习计划表.txt


+ 0 - 0
超级聊天术-目录表.txt → 聊天术/超级聊天术-目录表.txt


+ 0 - 0
超级聊天术.md → 聊天术/超级聊天术.md


+ 0 - 210
豆瓣扫榜.txt

@@ -1,210 +0,0 @@
-均电脑店
-服务(维修技术)+ 门面 + 人 + 客流(路过的、熟客)
-
-二哥开厂
-产品(加工成品)+ 厂 + 人 + 客流(销售、熟客)
-
-我
-产品/服务(???)+ 电脑 + 人 + 客流(平台流量、熟客、销售)
-
-期望:
-1.IT为基石
-2.工作地点能在禅城
-3.客户资源也能在禅城找到
-
-想法有问题
-1.要先找到需求所在,再想办法满足 -> 帮别人赚钱自己才能赚钱
-特征:有人以此收费即为有需求
-
-限定:经济下行、大环境差的情况下也有客源、需求
-
-原则:
-1.先复制,后创新
-2.尽量只对接一端的客户
-3.尽可能形成复利
-4.要进入市场,不能置身事外
-
-注:
-1.重资产:不单指资金,还有各方面的投入
-
-总结:
-限制:我的期望、我的能力、环境 -> 我(能力、资源、产品)帮人做什么才能帮她们(toB、toC、toG)赚钱
-
-
-planA:IT???
-planB:成人用品
-
-注意:必须是满足现有需求,而不是满足自身公司需求
-
-IT + 兼职 ????
-IT + 租房(本地房东)
-为按摩馆提供物资(怎么提供物美价廉的东西)
-提供一次性消毒碗筷供应链
-
-按摩平台
-按摩类(美容、推拿)
-	->所有按摩馆位置信息、点评
-	->按摩物资供应链
-	->按摩技师、房间管理
-
-熟练度最高:
-	敲代码
-		报名器(提供简单的描述+微信登陆+报名)
-		自媒体热点捕捉工具,给自媒体相关人士提供铲子
-		家政小程序(经济下行家政数量会不会减少?提供发布工具,解决微信人数限制,可以即时通知雇员)
-		诗词小程序,随机抽取进行问答
-		基于美团、饿了么开放平台接口二次开发
-			需求:
-			1、建立一个本地的商品库,实现对商品的增删除改操作
-			2、调用美团、饿了么开放平台接口将本地商品库的商品同步到平台的各门店里。
-			3、可以分别读取平台上各门店的商品,可以对其中的商品进行增删除改。
-			技术要求:
-			1、Bootstrap+JQuery+Asp.net+SQL Server
-			2、有做过相关开发者优先
-			PS: 美团、饿了么开放平台接口成熟稳定、且有沙箱测试账号调试方便
-			网站:https://task.epwk.com/1031039/
-			
-			类似:
-			https://task.epwk.com/1080465/
-			可以通过管理系统对多平台多门店进行批量管理,例如推送商品 推送价格  推送折扣,并且也可以看到所有的订单信息。同时可以分出子账号,便于分配给不同的员工,不同的员工可以用不同的子账号,管理自己对应的门店。同时也能看到各个店铺的业绩情况和产出
-			
-		定时发布朋友圈,一台手机管理数十个微信号不是难事
-			支持发布文字朋友圈
-			支持发布链接朋友圈
-			支持发布图文朋友圈
-			支持全表情编辑发布!
-			支持设置发布时间,日期,发送天数间隔!
-			可设定任意时间发布文字,表情,图片,链接,,可设置发送天数间隔,可设置一个月甚至一年需要发布到内容,可以设置到期时间,时间可以精确到一个月的任意一天任意一分钟。到期自动停发
-		
-		做一个 体彩,福彩的APP,安卓+苹果,有参考的,功能全仿
-		房屋面积计算器+广告联盟
-		抖音剧本编写器(带版本控制+网络上的剧本收集)
-		
-		自媒体-批量发布工具
-		宝宝起名网站???
-		一套可直接对接淘宝、短视频平台、京东的开店系统。限php开发的。能做到商品同步,订单同步,物流同步
-		批量自动申请一些网站的发布和操作等问题的工具
-		小游戏app-看广告得收益,对接穿山甲,或者广告联盟,最好是成品
-		核销小程序:要商家入驻,小程序发放饭票给员工,员工在到商家处下单核销
-		做个游戏,游戏要求不高,打地鼠,贪吃蛇这种都可以,不用多麻烦,用开放的源码更改一些和更改原画就可以了,需要软著和备案上架应用,植入CDK,对接好广告,3K不是上限,价格合适就马上做
-		特别的小程序
-			“衣快记小程序”
-			“我有一座单词矿”
-		
-		(涉嫌违规,不稳定)今日头条的点赞功能开发,通过协议实现点赞
-		(不知道要做啥)交易所系统?
-		(不知道要做啥)开发报税Api
-		(不知道要做啥)信息查询系统??
-		(不知道要做啥)建香港站
-		(不会做)签证产品网站开发,要求可以下单,可以在线咨询
-		(不会做)招投标系统:在官网集成招投标系统招投标整个流程
-		(不会做)网站价位对比提示,用来对比拼多多,淘宝,咸鱼价位的程序
-		(不会做)一套成熟运行中的第三方微信验房小程序,网页"数据互联”,角色有平台,用户,验房师等,有已经开发好在运行的再联系,没开发过的试勿扰
-		(不会做,怎么拿到游戏道具做成盲盒?)csgo盲盒网站
-		(不会做)物流加商城小程序
-		(不会做)自动化脚本,监听特定关键词并提取信息(https://iz4fkcxtig.feishu.cn/wiki/GfgkwUBocit7mUkJJMhcjzH0nZc?f+rom=from_copylink)
-		(不会做)群发不进垃圾箱的技术,外贸邮件营销。
-		(不会做)分销商城开发,对接自助售货机。嵌入会员管理、促销优惠,会员裂变功能需要一个软件 模具自动报价 输入具体规格参数能否自动报价的,需要买成品
-		(不会做)微信机器人开发,植入微信群,通过关键词实现自动回复等功能
-		(涉及多端获客,难度太大)搭建一个家庭维修服务类的网站,集中资源,解决家庭维修痛点的网站.
-		(涉及多端获客,难度太大)招商网站平台软件
-		(涉及多端获客,难度太大)汽车维修上门和到店服务app
-		(涉及多端获客,难度太大)跑腿代办网站,https://www.zbj.com/xq/8nquNvMxxkgGQeYx.html
-		(涉及多端获客,难度太大)家政系统服务,https://www.zbj.com/xq/N2rFkPPRxZ1CpXZZ.html;需求模块功能:小程序端:;家政系统:系统派单,后台派单,师傅管理,订单核销,地图定位,在线预约,评价管理,下单支付,联系客服,更新通告。;用户界面:选择商品,在线预约,下单支付,订单核销,评价管理,地图定位,联系客服,更新通告。;师傅页面:预约订单,服务时间,地图定位,接单管理,收益明细。;PC后台管理: 参考效果:https://java-smjz-admin-demo.likeshop.cn/;账号:admin 密码:123456
-		(涉及多端获客,难度太大)需要一个软件 模具自动报价 输入具体规格参数能否自动报价的,需要买成品
-		(涉及多端获客)校园兼职信息系统
-		(涉及多端获客)独立站+物流转运功能,对接1688,每天2k-10k单量,1,能够独立搭建平台,对接1688接口;2,参考此网站 https://sabomall.com/;3,物流转运对接集运网站https://www.zbj.com/xq/w3vTBOiA5mXXlnTx.html
-		(涉及多端获客,难度太大)盲盒脱单
-		(涉及多端获客,难度太大)报价系统?
-		(涉及多端获客,难度太大)家政系统,带商城,社区,家政类,派单、商城
-		(涉及多端获客,难度太大)汽车租赁后台管理系统,车务管理、资产管理、合同管理、角色权限、车型配置、用户管理等功能
-		(涉及多端获客,难度太大)报价比较软件,https://www.zbj.com/xq/OSVbJY0CCo877Nif.html,1:登陆页面(管理员登陆,供应商登陆等权限不一样);2:管理员登陆页面后新建物品需求列表(类似execl表格,管理员可编写);3:不同供应商登陆页面后根据需求填写报价和备注(不同供应商看不了其它供应商的价格);4:管理员登陆后查看所有供应商的报价(并有简单的按键可以查看最高和最低价)
-		(做了不知道给谁用)solana管理后台,https://www.zbj.com/xq/4Wfvn6LEXNp5mSUO.html
-		(做了不知道给谁用)在网络上传一些图片,然后生成一个网址二维码,通过微信扫码能直接显示图片。
-		(做了不知道给谁用)企业官网/简单网站建设
-		(做了不知道给谁用)花店网站,https://blueforestflora.com/?gad_source=1&gclid=Cj0KCQjwlZixBhCoARIsAIC745BJvHmOZu4toB6q7Po2B5Eg-_Et5LVgnL7RJm1tpkPT2OKFjmpAGaUaAhR-EALw_wcB
-		(做了不知道给谁用)制作一个卖儿童玩具的独立站
-		(做了不知道给谁用)保司产品对接,或者有现成的接口服务商,开发一套h5分销商商城,对接各大保司产品
-		(做了不知道给谁用)独立站支付接口的来
-		(做了不知道给谁用)需要一个数据看板类网站,网站将存储在华为云obs里的数据做成表格和流程图样子展现出来
-		(做了不知道给谁用)房源信息可以自动转传其它网站;我的房东客户可以自己登录上传房源信息;页面为中英法三种语言(翻译需求不包括在内);页面美观实用• 应用场景:租房网站;• 参考效果:studapart.com
-		(做了不知道给谁用)搭建一个留言板网站,(https://www.zbj.com/xq/YJv7rDMfKIYWUiIO.html
-		(做了不知道给谁用)二手车交易监管系统,应用场景:对接银行,车管所,税务局,商务局相关信息业务平台
-		
-		(范用性不大)创建跨境电商独立网站,需求描述:只是建立一个简单的独立网站,连接yupoo网站上的图片,让国外客户能看到我们的产品图片,不需要在线交易,不需要投放广告等功能;
-	
-	卖成人用品
-	
-暂存:
-	(不是很懂)成人外卖
-	(不是很懂)rpa+ai
-	(不是很懂)家政、高端家政、新家政
-	(???)小餐椅
-	(???)女性私密护理产品
-	
-	(重资产)翻糖手工插件
-	(重资产)深圳宠物行业
-	(重资产)文旅工作室
-	
-	(不是很懂)数字化采购业务?
-	(不是很懂)线上调度
-	(不是很懂)线上物流
-	
-	(纯体力)除甲醛
-	(纯体力)四害消杀行业
-	(纯体力)上门洗车
-	(纯体力)洗空调,洗床垫,洗沙发,擦玻璃
-
-劳动力+能力积累+复利(能持续产生影响) -> 产品,一个可以重复使用的产品
-	理财(这个比较特别,容易接触,也能产生复利)
-	水印小程序(数字/图片/文字)--自动化
-
-	(???)购物返利的小程序 --自动化
-	(???)ai写文章发布到头条上
-	
-	(重资产)写小说(长篇小说、短篇小说)
-	(重资产)小红书
-	(重资产)抖音/美区抖音
-	(重资产)公众号
-
-劳动力+能力积累(行业技能包) -> 能力做到极致依然能脱颖而出,成为产业中的一环
-	(???)卖成人用品
-	(???)卖货(找特别小众的标品)
-	(重资产)会手工可以做娃衣
-	(重资产)玄学
-	(重资产)blender
-	(重资产)修电脑
-	
-	(重资产)做PPT
-	(重资产)PS(代P病历、离职证明)
-	(???)推文(推荐文章、小说、书籍、电影)
-	(???)招投标(代写标书之类)
-	(???)做社群(优惠券群)
-	(???)运营公众号
-	(???)家教
-	(???)小说枪手
-	(???)日漫翻译
-	(???)代写文章
-	(???)结构化面试
-	(重资产)财会咨询
-	(???)兼职猎头
-	(???)虚拟主播
-	
-
-不考虑:
-	(重资产)剪营销号视频(阿里旗下、BOSS里找得剪辑)
-	(重资产)养生赛道社区理疗馆
-	(太广泛不知道怎么做)同城信息服务,利用同城有点,专攻需求数据解决问题
-	(太广泛不知道怎么做)新媒体大健康->记得做裂变
-	(太广泛不知道怎么做)中老年赛道老龄化社会
-	(纯体力)IT外包
-	(纯体力)在各种app上攒金币提现
-	(纯体力)indesign,简称id,用来排版文字,杂志的
-	(纯体力)线上云客服(阿里、京东)
-	(纯体力)上门喂养
-	(纯体力)游戏陪玩
-	(纯体力)游戏代练、代肝
-	(纯体力)游戏搬砖(黎明觉醒、鸿图之下帮人配将)
-	(纯体力)送外卖
-	(纯体力)学校代取快递
-	(纯体力)智联招聘-问卷调查(我的-发现更多-智联赚赚)