|
|
@@ -3,7 +3,7 @@ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
|
|
export PATH
|
|
|
|
|
|
# System Required: CentOS 7+/Ubuntu 18+/Debian 10+
|
|
|
-# Version: v1.0.0
|
|
|
+# Version: v1.3.1
|
|
|
# Description: One click Install Trojan Panel standalone server
|
|
|
# Author: jonssonyan <https://jonssonyan.com>
|
|
|
# Github: https://github.com/trojanpanel/install-script
|
|
|
@@ -63,6 +63,13 @@ init_var() {
|
|
|
hysteria_protocol="udp"
|
|
|
hysteria_up_mbps=100
|
|
|
hysteria_down_mbps=100
|
|
|
+
|
|
|
+ # naiveproxy
|
|
|
+ NAIVEPROXY_DATA="/tpdata/naiveproxy/"
|
|
|
+ NAIVEPROXY_STANDALONE_CONFIG="/tpdata/naiveproxy/standalone_config.json"
|
|
|
+ naiveproxy_port=443
|
|
|
+ naiveproxy_username=""
|
|
|
+ naiveproxy_pass=""
|
|
|
}
|
|
|
|
|
|
echo_content() {
|
|
|
@@ -112,6 +119,10 @@ mkdir_tools() {
|
|
|
# hysteria
|
|
|
mkdir -p ${HYSTERIA_DATA}
|
|
|
touch ${HYSTERIA_STANDALONE_CONFIG}
|
|
|
+
|
|
|
+ # naiveproxy
|
|
|
+ mkdir -p ${NAIVEPROXY_DATA}
|
|
|
+ touch ${NAIVEPROXY_STANDALONE_CONFIG}
|
|
|
}
|
|
|
|
|
|
can_connect() {
|
|
|
@@ -688,6 +699,151 @@ EOF
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
+# 安装NaiveProxy(Caddy+ForwardProxy)
|
|
|
+install_navieproxy_standalone() {
|
|
|
+ if [[ -z $(docker ps -a -q -f "name=^trojan-panel-navieproxy-standalone$") ]]; then
|
|
|
+ echo_content green "---> 安装NaiveProxy(Caddy+ForwardProxy)"
|
|
|
+
|
|
|
+ read -r -p "请输入NaiveProxy的端口(默认:443): " naiveproxy_port
|
|
|
+ [[ -z "${naiveproxy_port}" ]] && naiveproxy_port=443
|
|
|
+ while read -r -p "请输入NaiveProxy的用户名(必填): " naiveproxy_username; do
|
|
|
+ if [[ -z "${naiveproxy_username}" ]]; then
|
|
|
+ echo_content red "用户名不能为空"
|
|
|
+ else
|
|
|
+ break
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ while read -r -p "请输入NaiveProxy的密码(必填): " naiveproxy_pass; do
|
|
|
+ if [[ -z "${naiveproxy_pass}" ]]; then
|
|
|
+ echo_content red "密码不能为空"
|
|
|
+ else
|
|
|
+ break
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ domain=$(cat "${DOMAIN_FILE}")
|
|
|
+ cat >${NAIVEPROXY_STANDALONE_CONFIG} <<EOF
|
|
|
+{
|
|
|
+ "admin": {
|
|
|
+ "disabled": true
|
|
|
+ },
|
|
|
+ "logging": {
|
|
|
+ "sink": {
|
|
|
+ "writer": {
|
|
|
+ "output": "discard"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "logs": {
|
|
|
+ "default": {
|
|
|
+ "writer": {
|
|
|
+ "output": "discard"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "apps": {
|
|
|
+ "http": {
|
|
|
+ "servers": {
|
|
|
+ "srv0": {
|
|
|
+ "listen": [
|
|
|
+ ":${naiveproxy_port}"
|
|
|
+ ],
|
|
|
+ "routes": [
|
|
|
+ {
|
|
|
+ "handle": [
|
|
|
+ {
|
|
|
+ "handler": "subroute",
|
|
|
+ "routes": [
|
|
|
+ {
|
|
|
+ "handle": [
|
|
|
+ {
|
|
|
+ "auth_pass_deprecated": "${naiveproxy_pass}",
|
|
|
+ "auth_user_deprecated": "${naiveproxy_username}",
|
|
|
+ "handler": "forward_proxy",
|
|
|
+ "hide_ip": true,
|
|
|
+ "hide_via": true,
|
|
|
+ "probe_resistance": {}
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "match": [
|
|
|
+ {
|
|
|
+ "host": [
|
|
|
+ "${domain}"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "handle": [
|
|
|
+ {
|
|
|
+ "handler": "file_server",
|
|
|
+ "root": "/caddy-forwardproxy/dist/",
|
|
|
+ "index_names": [
|
|
|
+ "index.html",
|
|
|
+ "index.htm"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "terminal": true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "tls_connection_policies": [
|
|
|
+ {
|
|
|
+ "match": {
|
|
|
+ "sni": [
|
|
|
+ "${domain}"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "automatic_https": {
|
|
|
+ "disable": true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "tls": {
|
|
|
+ "certificates": {
|
|
|
+ "load_files": [
|
|
|
+ {
|
|
|
+ "certificate": "${crt_path}",
|
|
|
+ "key": "${key_path}"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+EOF
|
|
|
+ docker pull jonssonyan/caddy-forwardproxy &&
|
|
|
+ docker run -d --name trojan-panel-navieproxy-standalone --restart=always \
|
|
|
+ --network=host \
|
|
|
+ -v ${NAIVEPROXY_STANDALONE_CONFIG}:"/caddy-forwardproxy/config/config.json" \
|
|
|
+ -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
+ jonssonyan/caddy-forwardproxy
|
|
|
+
|
|
|
+ if [[ -n $(docker ps -q -f "name=^trojan-panel-navieproxy-standalone$" -f "status=running") ]]; then
|
|
|
+ echo_content skyBlue "---> NaiveProxy(Caddy+ForwardProxy) 安装完成"
|
|
|
+ echo_content red "\n=============================================================="
|
|
|
+ echo_content skyBlue "NaiveProxy(Caddy+ForwardProxy) 安装成功"
|
|
|
+ echo_content yellow "域名: ${domain}"
|
|
|
+ echo_content yellow "NaiveProxy的端口: ${naiveproxy_port}"
|
|
|
+ echo_content yellow "NaiveProxy的用户名: ${naiveproxy_username}"
|
|
|
+ echo_content yellow "NaiveProxy的密码: ${naiveproxy_pass}"
|
|
|
+ echo_content yellow "NaiveProxy私钥和证书目录: ${CADDY_ACME}${domain}/"
|
|
|
+ echo_content red "\n=============================================================="
|
|
|
+ else
|
|
|
+ echo_content red "---> NaiveProxy(Caddy+ForwardProxy) 安装失败或运行异常,请尝试修复或卸载重装"
|
|
|
+ exit 0
|
|
|
+ fi
|
|
|
+ else
|
|
|
+ echo_content skyBlue "---> 你已经了安装了NaiveProxy(Caddy+ForwardProxy)"
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
# 卸载Caddy TLS
|
|
|
uninstall_caddy_tls() {
|
|
|
# 判断Caddy TLS是否安装
|
|
|
@@ -748,6 +904,21 @@ uninstall_hysteria_standalone() {
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
+# 卸载NaiveProxy(Caddy+ForwardProxy)
|
|
|
+uninstall_navieproxy_standalone() {
|
|
|
+ if [[ -n $(docker ps -a -q -f "name=^trojan-panel-navieproxy-standalone$") ]]; then
|
|
|
+ echo_content green "---> 卸载NaiveProxy(Caddy+ForwardProxy)"
|
|
|
+
|
|
|
+ docker rm -f trojan-panel-navieproxy-standalone &&
|
|
|
+ docker rmi -f jonssonyan/caddy-forwardproxy &&
|
|
|
+ rm -f ${NAIVEPROXY_DATA}
|
|
|
+
|
|
|
+ echo_content skyBlue "---> NaiveProxy(Caddy+ForwardProxy) 卸载完成"
|
|
|
+ else
|
|
|
+ echo_content red "---> 请先安装NaiveProxy(Caddy+ForwardProxy)"
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
# 卸载全部Trojan Panel相关的容器
|
|
|
uninstall_all() {
|
|
|
echo_content green "---> 卸载全部Trojan Panel相关的容器"
|
|
|
@@ -782,6 +953,9 @@ failure_testing() {
|
|
|
if [[ -n $(docker ps -a -q -f "name=^trojan-panel-hysteria-standalone$") && -z $(docker ps -q -f "name=^trojan-panel-hysteria-standalone$" -f "status=running") ]]; then
|
|
|
echo_content red "---> Hysteria运行异常"
|
|
|
fi
|
|
|
+ if [[ -n $(docker ps -a -q -f "name=^trojan-panel-navieproxy-standalone$") && -z $(docker ps -q -f "name=^trojan-panel-navieproxy-standalone$" -f "status=running") ]]; then
|
|
|
+ echo_content red "---> NaiveProxy(Caddy+ForwardProxy)运行异常"
|
|
|
+ fi
|
|
|
fi
|
|
|
echo_content green "---> 故障检测结束"
|
|
|
}
|
|
|
@@ -820,7 +994,7 @@ main() {
|
|
|
clear
|
|
|
echo_content red "\n=============================================================="
|
|
|
echo_content skyBlue "System Required: CentOS 7+/Ubuntu 18+/Debian 10+"
|
|
|
- echo_content skyBlue "Version: v1.0.0"
|
|
|
+ echo_content skyBlue "Version: v1.3.1"
|
|
|
echo_content skyBlue "Description: One click Install Trojan Panel standalone server"
|
|
|
echo_content skyBlue "Author: jonssonyan <https://jonssonyan.com>"
|
|
|
echo_content skyBlue "Github: https://github.com/trojanpanel"
|
|
|
@@ -829,15 +1003,17 @@ main() {
|
|
|
echo_content yellow "1. 安装TrojanGFW+Caddy+Web+TLS"
|
|
|
echo_content yellow "2. 安装TrojanGO+Caddy+Web+TLS+Websocket"
|
|
|
echo_content yellow "3. 安装Hysteria"
|
|
|
- echo_content yellow "4. 安装Caddy TLS"
|
|
|
+ echo_content yellow "4. 安装NaiveProxy(Caddy+ForwardProxy)"
|
|
|
+ echo_content yellow "5. 安装Caddy TLS"
|
|
|
echo_content green "\n=============================================================="
|
|
|
- echo_content yellow "5. 卸载TrojanGFW+Caddy+Web+TLS"
|
|
|
- echo_content yellow "6. 卸载TrojanGO+Caddy+Web+TLS+Websocket"
|
|
|
- echo_content yellow "7. 卸载Hysteria"
|
|
|
- echo_content yellow "8. 卸载Caddy TLS"
|
|
|
- echo_content yellow "9. 卸载全部Trojan Panel相关的应用"
|
|
|
+ echo_content yellow "6. 卸载TrojanGFW+Caddy+Web+TLS"
|
|
|
+ echo_content yellow "7. 卸载TrojanGO+Caddy+Web+TLS+Websocket"
|
|
|
+ echo_content yellow "8. 卸载Hysteria"
|
|
|
+ echo_content yellow "9. 卸载NaiveProxy(Caddy+ForwardProxy)"
|
|
|
+ echo_content yellow "10. 卸载Caddy TLS"
|
|
|
+ echo_content yellow "11. 卸载全部Trojan Panel相关的应用"
|
|
|
echo_content green "\n=============================================================="
|
|
|
- echo_content yellow "10. 故障检测"
|
|
|
+ echo_content yellow "12. 故障检测"
|
|
|
read -r -p "请选择:" selectInstall_type
|
|
|
case ${selectInstall_type} in
|
|
|
1)
|
|
|
@@ -858,23 +1034,31 @@ main() {
|
|
|
4)
|
|
|
install_docker
|
|
|
install_caddy_tls
|
|
|
+ install_navieproxy_standalone
|
|
|
;;
|
|
|
5)
|
|
|
- uninstall_trojan_gfw_standalone
|
|
|
+ install_docker
|
|
|
+ install_caddy_tls
|
|
|
;;
|
|
|
6)
|
|
|
- uninstall_trojanGO_standalone
|
|
|
+ uninstall_trojan_gfw_standalone
|
|
|
;;
|
|
|
7)
|
|
|
- uninstall_hysteria_standalone
|
|
|
+ uninstall_trojanGO_standalone
|
|
|
;;
|
|
|
8)
|
|
|
- uninstall_caddy_tls
|
|
|
+ uninstall_hysteria_standalone
|
|
|
;;
|
|
|
9)
|
|
|
- uninstall_all
|
|
|
+ uninstall_navieproxy_standalone
|
|
|
;;
|
|
|
10)
|
|
|
+ uninstall_caddy_tls
|
|
|
+ ;;
|
|
|
+ 11)
|
|
|
+ uninstall_all
|
|
|
+ ;;
|
|
|
+ 12)
|
|
|
failure_testing
|
|
|
;;
|
|
|
*)
|