|
|
@@ -24,10 +24,23 @@ init_var() {
|
|
|
|
|
|
STATIC_HTML="https://github.com/trojanpanel/install-script/releases/download/v1.0.0/html.tar.gz"
|
|
|
|
|
|
+ # Caddy
|
|
|
+ CADDY_DATA="/tpdata/caddy/"
|
|
|
+ CADDY_Caddyfile="/tpdata/caddy/Caddyfile"
|
|
|
+ CADDY_SRV="/tpdata/caddy/srv/"
|
|
|
+ CADDY_ACME="/tpdata/caddy/acme/"
|
|
|
+ DOMAIN_FILE="/tpdata/caddy/domain.lock"
|
|
|
+ domain=""
|
|
|
+ caddy_remote_port=8863
|
|
|
+ your_email="[email protected]"
|
|
|
+ crt_path=""
|
|
|
+ key_path=""
|
|
|
+ ssl_option=1
|
|
|
+
|
|
|
# MariaDB
|
|
|
MARIA_DATA="/tpdata/mariadb/"
|
|
|
mariadb_ip="trojan-panel-mariadb"
|
|
|
- mariadb_port=9507
|
|
|
+ mariadb_port=3306
|
|
|
mariadb_user="root"
|
|
|
mariadb_pas=""
|
|
|
database="trojan_panel_db"
|
|
|
@@ -36,7 +49,7 @@ init_var() {
|
|
|
#Redis
|
|
|
REDIS_DATA="/tpdata/redis/"
|
|
|
redis_host="trojan-panel-redis"
|
|
|
- redis_port=6378
|
|
|
+ redis_port=6379
|
|
|
redis_pass=""
|
|
|
|
|
|
# Trojan Panel
|
|
|
@@ -44,59 +57,15 @@ init_var() {
|
|
|
TROJAN_PANEL_WEBFILE="/tpdata/trojan-panel/webfile/"
|
|
|
TROJAN_PANEL_LOGS="/tpdata/trojan-panel/logs/"
|
|
|
|
|
|
- # Trojan Panel Core
|
|
|
- TROJAN_PANEL_CORE_DATA="/tpdata/trojan-panel-core/"
|
|
|
- TROJAN_PANEL_CORE_LOGS="/tpdata/trojan-panel-core/logs/"
|
|
|
-
|
|
|
# Trojan Panel UI
|
|
|
TROJAN_PANEL_UI_DATA="/tpdata/trojan-panel-ui/"
|
|
|
# Nginx
|
|
|
NGINX_DATA="/tpdata/nginx/"
|
|
|
NGINX_CONFIG="/tpdata/nginx/default.conf"
|
|
|
|
|
|
- # Caddy
|
|
|
- CADDY_DATA="/tpdata/caddy/"
|
|
|
- CADDY_Caddyfile="/tpdata/caddy/Caddyfile"
|
|
|
- CADDY_SRV="/tpdata/caddy/srv/"
|
|
|
- CADDY_ACME="/tpdata/caddy/acme/"
|
|
|
- DOMAIN_FILE="/tpdata/caddy/domain.lock"
|
|
|
- domain=""
|
|
|
- caddy_remote_port=8863
|
|
|
- your_email="[email protected]"
|
|
|
- crt_path=""
|
|
|
- key_path=""
|
|
|
- ssl_option=1
|
|
|
-
|
|
|
- # trojanGFW
|
|
|
- TROJANGFW_DATA="/tpdata/trojanGFW/"
|
|
|
- TROJANGFW_CONFIG="/tpdata/trojanGFW/config.json"
|
|
|
- TROJANGFW_STANDALONE_CONFIG="/tpdata/trojanGFW/standalone_config.json"
|
|
|
- trojanGFW_port=443
|
|
|
- # trojanGO
|
|
|
- TROJANGO_DATA="/tpdata/trojanGO/"
|
|
|
- TROJANGO_CONFIG="/tpdata/trojanGO/config.json"
|
|
|
- TROJANGO_STANDALONE_CONFIG="/tpdata/trojanGO/standalone_config.json"
|
|
|
- trojanGO_port=443
|
|
|
- trojanGO_websocket_enable=false
|
|
|
- trojanGO_websocket_path="trojan-panel-websocket-path"
|
|
|
- trojanGO_shadowsocks_enable=false
|
|
|
- trojanGO_shadowsocks_method="AES-128-GCM"
|
|
|
- trojanGO_shadowsocks_password=""
|
|
|
- trojanGO_mux_enable=true
|
|
|
- # trojan
|
|
|
- trojan_pas=""
|
|
|
- remote_addr="trojan-panel-caddy"
|
|
|
-
|
|
|
- # hysteria
|
|
|
- HYSTERIA_DATA="/tpdata/hysteria/"
|
|
|
- HYSTERIA_CONFIG="/tpdata/hysteria/config.json"
|
|
|
- HYSTERIA_STANDALONE_CONFIG="/tpdata/hysteria/standalone_config.json"
|
|
|
- hysteria_port=443
|
|
|
- hysteria_password=""
|
|
|
- hysteria_protocol="udp"
|
|
|
- hysteria_up_mbps=100
|
|
|
- hysteria_down_mbps=100
|
|
|
- trojan_panel_url=""
|
|
|
+ # Trojan Panel Core
|
|
|
+ TROJAN_PANEL_CORE_DATA="/tpdata/trojan-panel-core/"
|
|
|
+ TROJAN_PANEL_CORE_LOGS="/tpdata/trojan-panel-core/logs/"
|
|
|
}
|
|
|
|
|
|
echo_content() {
|
|
|
@@ -129,6 +98,12 @@ mkdir_tools() {
|
|
|
# 项目目录
|
|
|
mkdir -p ${TP_DATA}
|
|
|
|
|
|
+ # Caddy
|
|
|
+ mkdir -p ${CADDY_DATA}
|
|
|
+ touch ${CADDY_Caddyfile}
|
|
|
+ mkdir -p ${CADDY_SRV}
|
|
|
+ mkdir -p ${CADDY_ACME}
|
|
|
+
|
|
|
# MariaDB
|
|
|
mkdir -p ${MARIA_DATA}
|
|
|
|
|
|
@@ -139,36 +114,15 @@ mkdir_tools() {
|
|
|
mkdir -p ${TROJAN_PANEL_DATA}
|
|
|
mkdir -p ${TROJAN_PANEL_LOGS}
|
|
|
|
|
|
- # Trojan Panel Core
|
|
|
- mkdir -p ${TROJAN_PANEL_CORE_DATA}
|
|
|
- mkdir -p ${TROJAN_PANEL_CORE_LOGS}
|
|
|
-
|
|
|
# Trojan Panel UI
|
|
|
mkdir -p ${TROJAN_PANEL_UI_DATA}
|
|
|
# # Nginx
|
|
|
mkdir -p ${NGINX_DATA}
|
|
|
touch ${NGINX_CONFIG}
|
|
|
|
|
|
- # Caddy
|
|
|
- mkdir -p ${CADDY_DATA}
|
|
|
- touch ${CADDY_Caddyfile}
|
|
|
- mkdir -p ${CADDY_SRV}
|
|
|
- mkdir -p ${CADDY_ACME}
|
|
|
-
|
|
|
- # trojanGFW
|
|
|
- mkdir -p ${TROJANGFW_DATA}
|
|
|
- touch ${TROJANGFW_CONFIG}
|
|
|
- touch ${TROJANGFW_STANDALONE_CONFIG}
|
|
|
-
|
|
|
- # trojanGO
|
|
|
- mkdir -p ${TROJANGO_DATA}
|
|
|
- touch ${TROJANGO_CONFIG}
|
|
|
- touch ${TROJANGO_STANDALONE_CONFIG}
|
|
|
-
|
|
|
- # hysteria
|
|
|
- mkdir -p ${HYSTERIA_DATA}
|
|
|
- touch ${HYSTERIA_CONFIG}
|
|
|
- touch ${HYSTERIA_STANDALONE_CONFIG}
|
|
|
+ # Trojan Panel Core
|
|
|
+ mkdir -p ${TROJAN_PANEL_CORE_DATA}
|
|
|
+ mkdir -p ${TROJAN_PANEL_CORE_LOGS}
|
|
|
}
|
|
|
|
|
|
can_connect() {
|
|
|
@@ -689,6 +643,7 @@ EOF
|
|
|
echo_content red "\n=============================================================="
|
|
|
}
|
|
|
|
|
|
+# 安装Trojan Panel Core
|
|
|
install_trojan_panel_core() {
|
|
|
if [[ -z $(docker ps -q -f "name=^trojan-panel-core$") ]]; then
|
|
|
echo_content green "---> 安装Trojan Panel Core"
|
|
|
@@ -755,712 +710,6 @@ install_trojan_panel_core() {
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-# 安装TrojanGFW 数据库版
|
|
|
-install_trojan_gfw() {
|
|
|
- if [[ -z $(docker ps -q -f "name=^trojan-panel-trojanGFW$") ]]; then
|
|
|
- echo_content green "---> 安装TrojanGFW"
|
|
|
-
|
|
|
- read -r -p "请输入TrojanGFW的端口(默认:443): " trojanGFW_port
|
|
|
- [[ -z "${trojanGFW_port}" ]] && trojanGFW_port=443
|
|
|
- read -r -p "请输入数据库的IP地址(默认:本机数据库): " mariadb_ip
|
|
|
- [[ -z "${mariadb_ip}" ]] && mariadb_ip="trojan-panel-mariadb"
|
|
|
- read -r -p "请输入数据库的端口(默认:本机数据库端口): " mariadb_port
|
|
|
- [[ -z "${mariadb_port}" ]] && mariadb_port=3306
|
|
|
- read -r -p "请输入数据库的用户名(默认:root): " mariadb_user
|
|
|
- [[ -z "${mariadb_user}" ]] && mariadb_user="root"
|
|
|
- while read -r -p "请输入数据库的密码(必填): " mariadb_pas; do
|
|
|
- if [[ -z "${mariadb_pas}" ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- cat >${TROJANGFW_CONFIG} <<EOF
|
|
|
- {
|
|
|
- "run_type": "server",
|
|
|
- "local_addr": "0.0.0.0",
|
|
|
- "local_port": ${trojanGFW_port},
|
|
|
- "remote_addr": "${remote_addr}",
|
|
|
- "remote_port": 80,
|
|
|
- "password": [],
|
|
|
- "log_level": 1,
|
|
|
- "ssl": {
|
|
|
- "cert": "${CADDY_ACME}${domain}/${domain}.crt",
|
|
|
- "key": "${CADDY_ACME}${domain}/${domain}.key",
|
|
|
- "key_password": "",
|
|
|
- "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",
|
|
|
- "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
|
|
|
- "prefer_server_cipher": true,
|
|
|
- "alpn": [
|
|
|
- "http/1.1"
|
|
|
- ],
|
|
|
- "alpn_port_override": {
|
|
|
- "h2": 81
|
|
|
- },
|
|
|
- "reuse_session": true,
|
|
|
- "session_ticket": false,
|
|
|
- "session_timeout": 600,
|
|
|
- "plain_http_response": "",
|
|
|
- "curves": "",
|
|
|
- "dhparam": ""
|
|
|
- },
|
|
|
- "tcp": {
|
|
|
- "prefer_ipv4": false,
|
|
|
- "no_delay": true,
|
|
|
- "keep_alive": true,
|
|
|
- "reuse_port": false,
|
|
|
- "fast_open": false,
|
|
|
- "fast_open_qlen": 20
|
|
|
- },
|
|
|
- "mysql": {
|
|
|
- "enabled": true,
|
|
|
- "server_addr": "${mariadb_ip}",
|
|
|
- "server_port": ${mariadb_port},
|
|
|
- "database": "trojan_panel_db",
|
|
|
- "username": "${mariadb_user}",
|
|
|
- "password": "${mariadb_pas}",
|
|
|
- "key": "",
|
|
|
- "cert": "",
|
|
|
- "ca": ""
|
|
|
- }
|
|
|
-}
|
|
|
-EOF
|
|
|
-
|
|
|
- docker pull trojangfw/trojan &&
|
|
|
- docker run -d --name trojan-panel-trojanGFW --restart always \
|
|
|
- --network=trojan-panel-network \
|
|
|
- -p ${trojanGFW_port}:${trojanGFW_port} \
|
|
|
- -v ${TROJANGFW_CONFIG}:"/config/config.json" \
|
|
|
- -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
- trojangfw/trojan
|
|
|
-
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGFW$") ]]; then
|
|
|
- echo_content skyBlue "---> TrojanGFW 数据库版 安装完成"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- echo_content skyBlue "TrojanGFW+Caddy+Web+TLS节点 数据库版 安装成功"
|
|
|
- echo_content yellow "域名: ${domain}"
|
|
|
- echo_content yellow "TrojanGFW的端口: ${trojanGFW_port}"
|
|
|
- echo_content yellow "TrojanGFW的密码: 用户名&密码"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- else
|
|
|
- echo_content red "---> TrojanGFW 数据库版 安装失败"
|
|
|
- exit 0
|
|
|
- fi
|
|
|
- else
|
|
|
- echo_content skyBlue "---> 你已经安装了TrojanGFW 数据库版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-# 安装TrojanGFW 单机版
|
|
|
-install_trojan_gfw_standalone() {
|
|
|
- if [[ -z $(docker ps -q -f "name=^trojan-panel-trojanGFW-standalone$") ]]; then
|
|
|
- echo_content green "---> 安装TrojanGFW"
|
|
|
-
|
|
|
- read -r -p "请输入TrojanGFW的端口(默认:443): " trojanGFW_port
|
|
|
- [[ -n ${trojanGFW_port} ]] && trojanGFW_port=443
|
|
|
- while read -r -p "请输入TrojanGFW的密码(必填): " trojan_pas; do
|
|
|
- if [[ -z "${trojan_pas}" ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- cat >${TROJANGFW_STANDALONE_CONFIG} <<EOF
|
|
|
- {
|
|
|
- "run_type": "server",
|
|
|
- "local_addr": "0.0.0.0",
|
|
|
- "local_port": ${trojanGFW_port},
|
|
|
- "remote_addr": "${remote_addr}",
|
|
|
- "remote_port": 80,
|
|
|
- "password": [
|
|
|
- "${trojan_pas}"
|
|
|
- ],
|
|
|
- "log_level": 1,
|
|
|
- "ssl": {
|
|
|
- "cert": "${CADDY_ACME}${domain}/${domain}.crt",
|
|
|
- "key": "${CADDY_ACME}${domain}/${domain}.key",
|
|
|
- "key_password": "",
|
|
|
- "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",
|
|
|
- "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
|
|
|
- "prefer_server_cipher": true,
|
|
|
- "alpn": [
|
|
|
- "http/1.1"
|
|
|
- ],
|
|
|
- "alpn_port_override": {
|
|
|
- "h2": 81
|
|
|
- },
|
|
|
- "reuse_session": true,
|
|
|
- "session_ticket": false,
|
|
|
- "session_timeout": 600,
|
|
|
- "plain_http_response": "",
|
|
|
- "curves": "",
|
|
|
- "dhparam": ""
|
|
|
- },
|
|
|
- "tcp": {
|
|
|
- "prefer_ipv4": false,
|
|
|
- "no_delay": true,
|
|
|
- "keep_alive": true,
|
|
|
- "reuse_port": false,
|
|
|
- "fast_open": false,
|
|
|
- "fast_open_qlen": 20
|
|
|
- },
|
|
|
- "mysql": {
|
|
|
- "enabled": false,
|
|
|
- "server_addr": "127.0.0.1",
|
|
|
- "server_port": 3306,
|
|
|
- "database": "",
|
|
|
- "username": "",
|
|
|
- "password": "",
|
|
|
- "key": "",
|
|
|
- "cert": "",
|
|
|
- "ca": ""
|
|
|
- }
|
|
|
-}
|
|
|
-EOF
|
|
|
-
|
|
|
- docker pull trojangfw/trojan &&
|
|
|
- docker run -d --name trojan-panel-trojanGFW-standalone --restart always \
|
|
|
- --network=trojan-panel-network \
|
|
|
- -p ${trojanGFW_port}:${trojanGFW_port} \
|
|
|
- -v ${TROJANGFW_STANDALONE_CONFIG}:"/config/config.json" \
|
|
|
- -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
- trojangfw/trojan
|
|
|
-
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGFW-standalone$") ]]; then
|
|
|
- echo_content skyBlue "---> TrojanGFW 单机版 安装完成"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- echo_content skyBlue "TrojanGFW+Caddy+Web+TLS节点 单机版 安装成功"
|
|
|
- echo_content yellow "域名: ${domain}"
|
|
|
- echo_content yellow "TrojanGFW的端口: ${trojanGFW_port}"
|
|
|
- echo_content yellow "TrojanGFW的密码: ${trojan_pas}"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- else
|
|
|
- echo_content red "---> TrojanGFW 单机版 安装失败"
|
|
|
- exit 0
|
|
|
- fi
|
|
|
- else
|
|
|
- echo_content skyBlue "---> 你已经安装了TrojanGFW 单机版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-# 安装TrojanGO 数据库版
|
|
|
-install_trojanGO() {
|
|
|
- if [[ -z $(docker ps -q -f "name=^trojan-panel-trojanGO$") ]]; then
|
|
|
- echo_content green "---> 安装TrojanGO 数据库版"
|
|
|
-
|
|
|
- read -r -p "请输入TrojanGO的端口(默认:443): " trojanGO_port
|
|
|
- [[ -z "${trojanGO_port}" ]] && trojanGO_port=443
|
|
|
- read -r -p "请输入数据库的IP地址(默认:本机数据库): " mariadb_ip
|
|
|
- [[ -z "${mariadb_ip}" ]] && mariadb_ip="trojan-panel-mariadb"
|
|
|
- read -r -p "请输入数据库的端口(默认:本机数据库端口): " mariadb_port
|
|
|
- [[ -z "${mariadb_port}" ]] && mariadb_port=3306
|
|
|
- read -r -p "请输入数据库的用户名(默认:root): " mariadb_user
|
|
|
- [[ -z "${mariadb_user}" ]] && mariadb_user="root"
|
|
|
- while read -r -p "请输入数据库的密码(必填): " mariadb_pas; do
|
|
|
- if [[ -z "${mariadb_pas}" ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- while read -r -p "是否开启多路复用?(false/关闭 true/开启 默认:true/开启): " trojanGO_mux_enable; do
|
|
|
- if [[ -z "${trojanGO_mux_enable}" || ${trojanGO_mux_enable} == true ]]; then
|
|
|
- trojanGO_mux_enable=true
|
|
|
- break
|
|
|
- else
|
|
|
- if [[ ${trojanGO_mux_enable} != false ]]; then
|
|
|
- echo_content red "不可以输入除false和true之外的其他字符"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- while read -r -p "是否开启Websocket?(false/关闭 true/开启 默认:false/关闭): " trojanGO_websocket_enable; do
|
|
|
- if [[ -z "${trojanGO_websocket_enable}" || ${trojanGO_websocket_enable} == false ]]; then
|
|
|
- trojanGO_websocket_enable=false
|
|
|
- break
|
|
|
- else
|
|
|
- if [[ ${trojanGO_websocket_enable} != true ]]; then
|
|
|
- echo_content red "不可以输入除false和true之外的其他字符"
|
|
|
- else
|
|
|
- read -r -p "请输入Websocket路径(默认:trojan-panel-websocket-path): " trojanGO_websocket_path
|
|
|
- [[ -z "${trojanGO_websocket_path}" ]] && trojanGO_websocket_path="trojan-panel-websocket-path"
|
|
|
- break
|
|
|
- fi
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- while read -r -p "是否启用Shadowsocks AEAD加密?(false/关闭 true/开启 默认:false/关闭): " trojanGO_shadowsocks_enable; do
|
|
|
- if [[ -z "${trojanGO_shadowsocks_enable}" || ${trojanGO_shadowsocks_enable} == false ]]; then
|
|
|
- trojanGO_shadowsocks_enable=false
|
|
|
- break
|
|
|
- else
|
|
|
- if [[ ${trojanGO_shadowsocks_enable} != true ]]; then
|
|
|
- echo_content yellow "不可以输入除false和true之外的其他字符"
|
|
|
- else
|
|
|
- echo_content skyBlue "Shadowsocks AEAD加密方式如下:"
|
|
|
- echo_content yellow "1. AES-128-GCM(默认)"
|
|
|
- echo_content yellow "2. CHACHA20-IETF-POLY1305"
|
|
|
- echo_content yellow "3. AES-256-GCM"
|
|
|
- read -r -p "请输入Shadowsocks AEAD加密方式(默认:1): " select_method_type
|
|
|
- [[ -z "${select_method_type}" ]] && select_method_type=1
|
|
|
- case ${select_method_type} in
|
|
|
- 1)
|
|
|
- trojanGO_shadowsocks_method="AES-128-GCM"
|
|
|
- ;;
|
|
|
- 2)
|
|
|
- trojanGO_shadowsocks_method="CHACHA20-IETF-POLY1305"
|
|
|
- ;;
|
|
|
- 3)
|
|
|
- trojanGO_shadowsocks_method="AES-256-GCM"
|
|
|
- ;;
|
|
|
- *)
|
|
|
- trojanGO_shadowsocks_method="AES-128-GCM"
|
|
|
- ;;
|
|
|
- esac
|
|
|
-
|
|
|
- while read -r -p "请输入Shadowsocks AEAD加密密码(必填): " trojanGO_shadowsocks_password; do
|
|
|
- if [[ -z "${trojanGO_shadowsocks_password}" ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
- break
|
|
|
- fi
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- cat >${TROJANGO_CONFIG} <<EOF
|
|
|
-{
|
|
|
- "run_type": "server",
|
|
|
- "local_addr": "0.0.0.0",
|
|
|
- "local_port": ${trojanGO_port},
|
|
|
- "remote_addr": "${remote_addr}",
|
|
|
- "remote_port": 80,
|
|
|
- "log_level": 1,
|
|
|
- "log_file": "",
|
|
|
- "password": [],
|
|
|
- "disable_http_check": false,
|
|
|
- "udp_timeout": 60,
|
|
|
- "ssl": {
|
|
|
- "verify": true,
|
|
|
- "verify_hostname": true,
|
|
|
- "cert": "${CADDY_ACME}${domain}/${domain}.crt",
|
|
|
- "key": "${CADDY_ACME}${domain}/${domain}.key",
|
|
|
- "key_password": "",
|
|
|
- "cipher": "",
|
|
|
- "curves": "",
|
|
|
- "prefer_server_cipher": false,
|
|
|
- "sni": "",
|
|
|
- "alpn": [
|
|
|
- "http/1.1"
|
|
|
- ],
|
|
|
- "session_ticket": true,
|
|
|
- "reuse_session": true,
|
|
|
- "plain_http_response": "",
|
|
|
- "fallback_addr": "",
|
|
|
- "fallback_port": 80,
|
|
|
- "fingerprint": ""
|
|
|
- },
|
|
|
- "tcp": {
|
|
|
- "no_delay": true,
|
|
|
- "keep_alive": true,
|
|
|
- "prefer_ipv4": false
|
|
|
- },
|
|
|
- "mux": {
|
|
|
- "enabled": ${trojanGO_mux_enable},
|
|
|
- "concurrency": 8,
|
|
|
- "idle_timeout": 60
|
|
|
- },
|
|
|
- "websocket": {
|
|
|
- "enabled": ${trojanGO_websocket_enable},
|
|
|
- "path": "/${trojanGO_websocket_path}",
|
|
|
- "host": "${domain}"
|
|
|
- },
|
|
|
- "shadowsocks": {
|
|
|
- "enabled": ${trojanGO_shadowsocks_enable},
|
|
|
- "method": "${trojanGO_shadowsocks_method}",
|
|
|
- "password": "${trojanGO_shadowsocks_password}"
|
|
|
- },
|
|
|
- "mysql": {
|
|
|
- "enabled": true,
|
|
|
- "server_addr": "${mariadb_ip}",
|
|
|
- "server_port": ${mariadb_port},
|
|
|
- "database": "trojan_panel_db",
|
|
|
- "username": "${mariadb_user}",
|
|
|
- "password": "${mariadb_pas}",
|
|
|
- "check_rate": 60
|
|
|
- }
|
|
|
-}
|
|
|
-EOF
|
|
|
-
|
|
|
- docker pull p4gefau1t/trojan-go &&
|
|
|
- docker run -d --name trojan-panel-trojanGO --restart=always \
|
|
|
- --network=trojan-panel-network \
|
|
|
- -p ${trojanGO_port}:${trojanGO_port} \
|
|
|
- -v ${TROJANGO_CONFIG}:"/etc/trojan-go/config.json" \
|
|
|
- -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
- p4gefau1t/trojan-go
|
|
|
-
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGO$") ]]; then
|
|
|
- echo_content skyBlue "---> TrojanGO 数据库版 安装完成"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- echo_content skyBlue "TrojanGO+Caddy+Web+TLS+Websocket节点 数据库版 安装成功"
|
|
|
- echo_content yellow "域名: ${domain}"
|
|
|
- echo_content yellow "TrojanGO的端口: ${trojanGO_port}"
|
|
|
- echo_content yellow "TrojanGO的密码: 用户名&密码"
|
|
|
- echo_content yellow "TrojanGO私钥和证书目录: ${CADDY_ACME}${domain}/"
|
|
|
- if [[ ${trojanGO_websocket_enable} == true ]]; then
|
|
|
- echo_content yellow "Websocket路径: ${trojanGO_websocket_path}"
|
|
|
- fi
|
|
|
- if [[ ${trojanGO_shadowsocks_enable} == true ]]; then
|
|
|
- echo_content yellow "Shadowsocks AEAD加密方式: ${trojanGO_shadowsocks_method}"
|
|
|
- echo_content yellow "Shadowsocks AEAD加密密码: ${trojanGO_shadowsocks_password}"
|
|
|
- fi
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- else
|
|
|
- echo_content red "---> TrojanGO 数据库版 安装失败"
|
|
|
- exit 0
|
|
|
- fi
|
|
|
- else
|
|
|
- echo_content skyBlue "---> 你已经安装了TrojanGO 数据库版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-# 安装TrojanGO 单机版
|
|
|
-install_trojanGO_standalone() {
|
|
|
- if [[ -z $(docker ps -q -f "name=^trojan-panel-trojanGO-standalone$") ]]; then
|
|
|
- echo_content green "---> 安装TrojanGO 单机版"
|
|
|
-
|
|
|
- read -r -p "请输入TrojanGO的端口(默认:443): " trojanGO_port
|
|
|
- [[ -z "${trojanGO_port}" ]] && trojanGO_port=443
|
|
|
- while read -r -p "请输入TrojanGO的密码(必填): " trojan_pas; do
|
|
|
- if [[ -z "${trojan_pas}" ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- while read -r -p "是否开启多路复用?(false/关闭 true/开启 默认:true/开启): " trojanGO_mux_enable; do
|
|
|
- if [[ -z "${trojanGO_mux_enable}" || ${trojanGO_mux_enable} == true ]]; then
|
|
|
- trojanGO_mux_enable=true
|
|
|
- break
|
|
|
- else
|
|
|
- if [[ ${trojanGO_mux_enable} != false ]]; then
|
|
|
- echo_content red "不可以输入除false和true之外的其他字符"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- while read -r -p "是否开启Websocket?(false/关闭 true/开启 默认:false/关闭): " trojanGO_websocket_enable; do
|
|
|
- if [[ -z "${trojanGO_websocket_enable}" || ${trojanGO_websocket_enable} == false ]]; then
|
|
|
- trojanGO_websocket_enable=false
|
|
|
- break
|
|
|
- else
|
|
|
- if [[ ${trojanGO_websocket_enable} != true ]]; then
|
|
|
- echo_content red "不可以输入除false和true之外的其他字符"
|
|
|
- else
|
|
|
- read -r -p "请输入Websocket路径(默认:trojan-panel-websocket-path): " trojanGO_websocket_path
|
|
|
- [[ -z "${trojanGO_websocket_path}" ]] && trojanGO_websocket_path="trojan-panel-websocket-path"
|
|
|
- break
|
|
|
- fi
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- while read -r -p "是否启用Shadowsocks AEAD加密?(false/关闭 true/开启 默认:false/关闭): " trojanGO_shadowsocks_enable; do
|
|
|
- if [[ -z "${trojanGO_shadowsocks_enable}" || ${trojanGO_shadowsocks_enable} == false ]]; then
|
|
|
- trojanGO_shadowsocks_enable=false
|
|
|
- break
|
|
|
- else
|
|
|
- if [[ ${trojanGO_shadowsocks_enable} != true ]]; then
|
|
|
- echo_content yellow "不可以输入除false和true之外的其他字符"
|
|
|
- else
|
|
|
- echo_content skyBlue "Shadowsocks AEAD加密方式如下:"
|
|
|
- echo_content yellow "1. AES-128-GCM(默认)"
|
|
|
- echo_content yellow "2. CHACHA20-IETF-POLY1305"
|
|
|
- echo_content yellow "3. AES-256-GCM"
|
|
|
- read -r -p "请输入Shadowsocks AEAD加密方式(默认:1): " select_method_type
|
|
|
- [[ -z "${select_method_type}" ]] && select_method_type=1
|
|
|
- case ${select_method_type} in
|
|
|
- 1)
|
|
|
- trojanGO_shadowsocks_method="AES-128-GCM"
|
|
|
- ;;
|
|
|
- 2)
|
|
|
- trojanGO_shadowsocks_method="CHACHA20-IETF-POLY1305"
|
|
|
- ;;
|
|
|
- 3)
|
|
|
- trojanGO_shadowsocks_method="AES-256-GCM"
|
|
|
- ;;
|
|
|
- *)
|
|
|
- trojanGO_shadowsocks_method="AES-128-GCM"
|
|
|
- ;;
|
|
|
- esac
|
|
|
-
|
|
|
- while read -r -p "请输入Shadowsocks AEAD加密密码(必填): " trojanGO_shadowsocks_password; do
|
|
|
- if [[ -z "${trojanGO_shadowsocks_password}" ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
- break
|
|
|
- fi
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- cat >${TROJANGO_STANDALONE_CONFIG} <<EOF
|
|
|
-{
|
|
|
- "run_type": "server",
|
|
|
- "local_addr": "0.0.0.0",
|
|
|
- "local_port": ${trojanGO_port},
|
|
|
- "remote_addr": "${remote_addr}",
|
|
|
- "remote_port": 80,
|
|
|
- "log_level": 1,
|
|
|
- "log_file": "",
|
|
|
- "password": [
|
|
|
- "${trojan_pas}"
|
|
|
- ],
|
|
|
- "disable_http_check": false,
|
|
|
- "udp_timeout": 60,
|
|
|
- "ssl": {
|
|
|
- "verify": true,
|
|
|
- "verify_hostname": true,
|
|
|
- "cert": "${CADDY_ACME}${domain}/${domain}.crt",
|
|
|
- "key": "${CADDY_ACME}${domain}/${domain}.key",
|
|
|
- "key_password": "",
|
|
|
- "cipher": "",
|
|
|
- "curves": "",
|
|
|
- "prefer_server_cipher": false,
|
|
|
- "sni": "",
|
|
|
- "alpn": [
|
|
|
- "http/1.1"
|
|
|
- ],
|
|
|
- "session_ticket": true,
|
|
|
- "reuse_session": true,
|
|
|
- "plain_http_response": "",
|
|
|
- "fallback_addr": "",
|
|
|
- "fallback_port": 80,
|
|
|
- "fingerprint": ""
|
|
|
- },
|
|
|
- "tcp": {
|
|
|
- "no_delay": true,
|
|
|
- "keep_alive": true,
|
|
|
- "prefer_ipv4": false
|
|
|
- },
|
|
|
- "mux": {
|
|
|
- "enabled": ${trojanGO_mux_enable},
|
|
|
- "concurrency": 8,
|
|
|
- "idle_timeout": 60
|
|
|
- },
|
|
|
- "websocket": {
|
|
|
- "enabled": ${trojanGO_websocket_enable},
|
|
|
- "path": "/${trojanGO_websocket_path}",
|
|
|
- "host": "${domain}"
|
|
|
- },
|
|
|
- "shadowsocks": {
|
|
|
- "enabled": ${trojanGO_shadowsocks_enable},
|
|
|
- "method": "${trojanGO_shadowsocks_method}",
|
|
|
- "password": "${trojanGO_shadowsocks_password}"
|
|
|
- },
|
|
|
- "mysql": {
|
|
|
- "enabled": false,
|
|
|
- "server_addr": "localhost",
|
|
|
- "server_port": 3306,
|
|
|
- "database": "",
|
|
|
- "username": "",
|
|
|
- "password": "",
|
|
|
- "check_rate": 60
|
|
|
- }
|
|
|
-}
|
|
|
-EOF
|
|
|
-
|
|
|
- docker pull p4gefau1t/trojan-go &&
|
|
|
- docker run -d --name trojan-panel-trojanGO-standalone --restart=always \
|
|
|
- --network=trojan-panel-network \
|
|
|
- -p ${trojanGO_port}:${trojanGO_port} \
|
|
|
- -v ${TROJANGO_STANDALONE_CONFIG}:"/etc/trojan-go/config.json" \
|
|
|
- -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
- p4gefau1t/trojan-go
|
|
|
-
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGO-standalone$") ]]; then
|
|
|
- echo_content skyBlue "---> TrojanGO 单机版 安装完成"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- echo_content skyBlue "TrojanGO+Caddy+Web+TLS+Websocket节点 单机版 安装成功"
|
|
|
- echo_content yellow "域名: ${domain}"
|
|
|
- echo_content yellow "TrojanGO的端口: ${trojanGO_port}"
|
|
|
- echo_content yellow "TrojanGO的密码: ${trojan_pas}"
|
|
|
- echo_content yellow "TrojanGO私钥和证书目录: ${CADDY_ACME}${domain}/"
|
|
|
- if [[ ${trojanGO_websocket_enable} == true ]]; then
|
|
|
- echo_content yellow "Websocket路径: ${trojanGO_websocket_path}"
|
|
|
- fi
|
|
|
- if [[ ${trojanGO_shadowsocks_enable} == true ]]; then
|
|
|
- echo_content yellow "Shadowsocks AEAD加密方式: ${trojanGO_shadowsocks_method}"
|
|
|
- echo_content yellow "Shadowsocks AEAD加密密码: ${trojanGO_shadowsocks_password}"
|
|
|
- fi
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- else
|
|
|
- echo_content red "---> TrojanGO 单机版 安装失败"
|
|
|
- exit 0
|
|
|
- fi
|
|
|
- else
|
|
|
- echo_content skyBlue "---> 你已经了安装了TrojanGO 单机版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-install_hysteria() {
|
|
|
- if [[ -z $(docker ps -q -f "name=^trojan-panel-hysteria$") ]]; then
|
|
|
- echo_content green "---> 安装Hysteria 数据库版"
|
|
|
-
|
|
|
- echo_content skyBlue "Hysteria的模式如下:"
|
|
|
- echo_content yellow "1. udp(默认)"
|
|
|
- echo_content yellow "2. faketcp"
|
|
|
- read -r -p "请输入Hysteria的模式(默认:1): " selectProtocolType
|
|
|
- [[ -z "${selectProtocolType}" ]] && selectProtocolType=1
|
|
|
- case ${selectProtocolType} in
|
|
|
- 1)
|
|
|
- hysteria_protocol="udp"
|
|
|
- ;;
|
|
|
- 2)
|
|
|
- hysteria_protocol="faketcp"
|
|
|
- ;;
|
|
|
- *)
|
|
|
- hysteria_protocol="udp"
|
|
|
- ;;
|
|
|
- esac
|
|
|
- read -r -p "请输入Hysteria的端口(默认:443): " hysteria_port
|
|
|
- [[ -z "${hysteria_port}" ]] && hysteria_port=443
|
|
|
- read -r -p "请输入单客户端最大上传速度/Mbps(默认:100): " hysteria_up_mbps
|
|
|
- [[ -z "${hysteria_up_mbps}" ]] && hysteria_up_mbps=100
|
|
|
- read -r -p "请输入单客户端最大下载速度/Mbps(默认:100): " hysteria_down_mbps
|
|
|
- [[ -z "${hysteria_down_mbps}" ]] && hysteria_down_mbps=100
|
|
|
- read -r -p "请输入Trojan Panel的域名(默认:本机): " trojan_panel_url
|
|
|
- [[ -z "${trojan_panel_url}" ]] && trojan_panel_url=${domain}
|
|
|
-
|
|
|
- cat >${HYSTERIA_CONFIG} <<EOF
|
|
|
-{
|
|
|
- "listen": ":${hysteria_port}",
|
|
|
- "protocol": "${hysteria_protocol}",
|
|
|
- "cert": "${CADDY_ACME}${domain}/${domain}.crt",
|
|
|
- "key": "${CADDY_ACME}${domain}/${domain}.key",
|
|
|
- "up_mbps": ${hysteria_up_mbps},
|
|
|
- "down_mbps": ${hysteria_down_mbps},
|
|
|
- "auth": {
|
|
|
- "mode": "external",
|
|
|
- "config": {
|
|
|
- "http": "https://${trojan_panel_url}:8888/api/auth/hysteria"
|
|
|
- }
|
|
|
- },
|
|
|
- "prometheus_listen": ":8801"
|
|
|
-}
|
|
|
-EOF
|
|
|
-
|
|
|
- docker pull tobyxdd/hysteria &&
|
|
|
- docker run -d --name trojan-panel-hysteria --restart=always \
|
|
|
- --network=trojan-panel-network \
|
|
|
- -p ${hysteria_port}:${hysteria_port}/udp \
|
|
|
- -p 8801:8801 \
|
|
|
- -v ${HYSTERIA_CONFIG}:/etc/hysteria.json \
|
|
|
- -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
- tobyxdd/hysteria -c /etc/hysteria.json server
|
|
|
-
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-hysteria$") ]]; then
|
|
|
- echo_content skyBlue "---> Hysteria 数据版 安装完成"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- echo_content skyBlue "Hysteria节点 数据版 安装成功"
|
|
|
- echo_content yellow "域名: ${domain}"
|
|
|
- echo_content yellow "Hysteria的端口: ${hysteria_port}"
|
|
|
- echo_content yellow "Hysteria的密码: 用户名&密码"
|
|
|
- echo_content yellow "Hysteria私钥和证书目录: ${CADDY_ACME}${domain}/"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- else
|
|
|
- echo_content red "---> Hysteria 数据版 安装失败"
|
|
|
- exit 0
|
|
|
- fi
|
|
|
- else
|
|
|
- echo_content skyBlue "---> 你已经安装了Hysteria 数据版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-install_hysteria_standalone() {
|
|
|
- if [[ -z $(docker ps -q -f "name=^trojan-panel-hysteria-standalone$") ]]; then
|
|
|
- echo_content green "---> 安装Hysteria 单机版"
|
|
|
-
|
|
|
- echo_content skyBlue "Hysteria的模式如下:"
|
|
|
- echo_content yellow "1. udp(默认)"
|
|
|
- echo_content yellow "2. faketcp"
|
|
|
- read -r -p "请输入Hysteria的模式(默认:1): " selectProtocolType
|
|
|
- [[ -z "${selectProtocolType}" ]] && selectProtocolType=1
|
|
|
- case ${selectProtocolType} in
|
|
|
- 1)
|
|
|
- hysteria_protocol="udp"
|
|
|
- ;;
|
|
|
- 2)
|
|
|
- hysteria_protocol="faketcp"
|
|
|
- ;;
|
|
|
- *)
|
|
|
- hysteria_protocol="udp"
|
|
|
- ;;
|
|
|
- esac
|
|
|
- read -r -p "请输入Hysteria的端口(默认:443): " hysteria_port
|
|
|
- [[ -z ${hysteria_port} ]] && hysteria_port=443
|
|
|
- read -r -p "请输入单客户端最大上传速度/Mbps(默认:100): " hysteria_up_mbps
|
|
|
- [[ -z "${hysteria_up_mbps}" ]] && hysteria_up_mbps=100
|
|
|
- read -r -p "请输入单客户端最大下载速度/Mbps(默认:100): " hysteria_down_mbps
|
|
|
- [[ -z "${hysteria_down_mbps}" ]] && hysteria_down_mbps=100
|
|
|
- while read -r -p "请输入Hysteria的密码(必填): " hysteria_password; do
|
|
|
- if [[ -z ${hysteria_password} ]]; then
|
|
|
- echo_content red "密码不能为空"
|
|
|
- else
|
|
|
- break
|
|
|
- fi
|
|
|
- done
|
|
|
-
|
|
|
- cat >${HYSTERIA_STANDALONE_CONFIG} <<EOF
|
|
|
-{
|
|
|
- "listen": ":${hysteria_port}",
|
|
|
- "protocol": "${hysteria_protocol}",
|
|
|
- "cert": "${CADDY_ACME}${domain}/${domain}.crt",
|
|
|
- "key": "${CADDY_ACME}${domain}/${domain}.key",
|
|
|
- "up_mbps": ${hysteria_up_mbps},
|
|
|
- "down_mbps": ${hysteria_down_mbps},
|
|
|
- "obfs": "${hysteria_password}"
|
|
|
-}
|
|
|
-EOF
|
|
|
-
|
|
|
- docker pull tobyxdd/hysteria &&
|
|
|
- docker run -d --name trojan-panel-hysteria-standalone --restart=always \
|
|
|
- --network=trojan-panel-network \
|
|
|
- -p ${hysteria_port}:${hysteria_port}/udp \
|
|
|
- -v ${HYSTERIA_STANDALONE_CONFIG}:/etc/hysteria.json \
|
|
|
- -v ${CADDY_ACME}:${CADDY_ACME} \
|
|
|
- tobyxdd/hysteria -c /etc/hysteria.json server
|
|
|
-
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-hysteria-standalone$") ]]; then
|
|
|
- echo_content skyBlue "---> Hysteria 单机版 安装完成"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- echo_content skyBlue "Hysteria节点 单机版 安装成功"
|
|
|
- echo_content yellow "域名: ${domain}"
|
|
|
- echo_content yellow "Hysteria的端口: ${hysteria_port}"
|
|
|
- echo_content yellow "Hysteria的密码: ${hysteria_password}"
|
|
|
- echo_content yellow "Hysteria私钥和证书目录: ${CADDY_ACME}${domain}/"
|
|
|
- echo_content red "\n=============================================================="
|
|
|
- else
|
|
|
- echo_content red "---> Hysteria 单机版 安装失败"
|
|
|
- exit 0
|
|
|
- fi
|
|
|
- else
|
|
|
- echo_content skyBlue "---> 你已经安装了Hysteria 单机版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
# 更新Trojan Panel
|
|
|
update_trojan_panel() {
|
|
|
# 判断Trojan Panel是否安装
|
|
|
@@ -1555,6 +804,7 @@ update_trojan_panel() {
|
|
|
echo_content red "---> Trojan Panel UI更新失败"
|
|
|
fi
|
|
|
}
|
|
|
+
|
|
|
# 更新Trojan Panel Core
|
|
|
update_trojan_panel_core() {
|
|
|
# 判断Trojan Panel Core是否安装
|
|
|
@@ -1719,94 +969,7 @@ uninstall_trojan_panel_core() {
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-# 卸载TrojanGFW+Caddy+Web+TLS节点 数据库版
|
|
|
-uninstall_trojan_gfw() {
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGFW$") ]]; then
|
|
|
- echo_content green "---> 卸载TrojanGFW+Caddy+Web+TLS节点 数据库版"
|
|
|
-
|
|
|
- docker rm -f trojan-panel-trojanGFW &&
|
|
|
- docker rmi -f trojangfw/trojan &&
|
|
|
- rm -f ${TROJANGFW_CONFIG}
|
|
|
-
|
|
|
- echo_content skyBlue "---> TrojanGFW+Caddy+Web+TLS节点 数据库版卸载完成"
|
|
|
- else
|
|
|
- echo_content red "---> 请先安装TrojanGFW+Caddy+Web+TLS节点 数据库版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-# 卸载TrojanGFW+Caddy+Web+TLS节点 单机版
|
|
|
-uninstall_trojan_gfw_standalone() {
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGFW-standalone$") ]]; then
|
|
|
- echo_content green "---> 卸载TrojanGFW+Caddy+Web+TLS节点 单机版"
|
|
|
-
|
|
|
- docker rm -f trojan-panel-trojanGFW-standalone &&
|
|
|
- docker rmi -f trojangfw/trojan &&
|
|
|
- rm -f ${TROJANGFW_STANDALONE_CONFIG}
|
|
|
-
|
|
|
- echo_content skyBlue "---> TrojanGFW+Caddy+Web+TLS节点 单机版卸载完成"
|
|
|
- else
|
|
|
- echo_content red "---> 请先安装TrojanGFW+Caddy+Web+TLS节点 单机版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-# 卸载TrojanGo+Caddy+Web+TLS+Websocket节点 数据库版
|
|
|
-uninstall_trojanGO() {
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGO$") ]]; then
|
|
|
- echo_content green "---> 卸载TrojanGo+Caddy+Web+TLS+Websocket节点 数据库版"
|
|
|
-
|
|
|
- docker rm -f trojan-panel-trojanGO &&
|
|
|
- docker rmi -f p4gefau1t/trojan-go &&
|
|
|
- rm -f ${TROJANGO_CONFIG}
|
|
|
-
|
|
|
- echo_content skyBlue "---> TrojanGo+Caddy+Web+TLS+Websocket节点 数据库版卸载完成"
|
|
|
- else
|
|
|
- echo_content red "---> 请先安装TrojanGo+Caddy+Web+TLS+Websocket节点 数据库版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-# 卸载TrojanGo+Caddy+Web+TLS+Websocket节点 单机版
|
|
|
-uninstall_trojanGO_standalone() {
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-trojanGO-standalone$") ]]; then
|
|
|
- echo_content green "---> 卸载TrojanGo+Caddy+Web+TLS+Websocket节点 单机版"
|
|
|
-
|
|
|
- docker rm -f trojan-panel-trojanGO-standalone &&
|
|
|
- docker rmi -f p4gefau1t/trojan-go &&
|
|
|
- rm -f ${TROJANGO_STANDALONE_CONFIG}
|
|
|
-
|
|
|
- echo_content skyBlue "---> TrojanGo+Caddy+Web+TLS+Websocket节点 单机版卸载完成"
|
|
|
- else
|
|
|
- echo_content red "---> 请先安装TrojanGo+Caddy+Web+TLS+Websocket节点 单机版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-uninstall_hysteria() {
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-hysteria") ]]; then
|
|
|
- echo_content green "---> 卸载Hysteria节点 数据库版"
|
|
|
-
|
|
|
- docker rm -f trojan-panel-hysteria &&
|
|
|
- docker rmi -f tobyxdd/hysteria &&
|
|
|
- rm -f ${HYSTERIA_CONFIG}
|
|
|
-
|
|
|
- echo_content skyBlue "---> Hysteria节点 数据库版卸载完成"
|
|
|
- else
|
|
|
- echo_content red "---> 请先安装Hysteria节点 数据库版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
-uninstall_hysteria_standalone() {
|
|
|
- if [[ -n $(docker ps -q -f "name=^trojan-panel-hysteria-standalone$") ]]; then
|
|
|
- echo_content green "---> 卸载Hysteria节点 单机版"
|
|
|
-
|
|
|
- docker rm -f trojan-panel-hysteria-standalone &&
|
|
|
- docker rmi -f tobyxdd/hysteria &&
|
|
|
- rm -f ${HYSTERIA_STANDALONE_CONFIG}
|
|
|
-
|
|
|
- echo_content skyBlue "---> Hysteria节点 单机版卸载完成"
|
|
|
- else
|
|
|
- echo_content red "---> 请先安装Hysteria节点 单机版"
|
|
|
- fi
|
|
|
-}
|
|
|
-
|
|
|
+# 卸载全部Trojan Panel相关的容器
|
|
|
uninstall_all() {
|
|
|
echo_content green "---> 卸载全部Trojan Panel相关的容器"
|
|
|
|
|
|
@@ -1817,6 +980,7 @@ uninstall_all() {
|
|
|
echo_content skyBlue "---> 卸载全部Trojan Panel相关的容器完成"
|
|
|
}
|
|
|
|
|
|
+# 故障检测
|
|
|
failure_testing() {
|
|
|
echo_content green "---> 故障检测开始"
|
|
|
if [[ ! $(docker -v 2>/dev/null) ]]; then
|
|
|
@@ -1838,12 +1002,12 @@ failure_testing() {
|
|
|
if [[ -n $(docker ps -a -q -f "name=^trojan-panel-redis$") && -z $(docker ps -q -f "name=^trojan-panel-redis$" -f "status=running") ]]; then
|
|
|
echo_content red "---> Redis运行异常"
|
|
|
fi
|
|
|
- if [[ -n $(docker ps -a -q -f "name=^trojan-panel-ui$") && -z $(docker ps -q -f "name=^trojan-panel-ui$" -f "status=running") ]]; then
|
|
|
- echo_content red "---> Trojan Panel前端运行异常"
|
|
|
- fi
|
|
|
if [[ -n $(docker ps -a -q -f "name=^trojan-panel$") && -z $(docker ps -q -f "name=^trojan-panel$" -f "status=running") ]]; then
|
|
|
echo_content red "---> Trojan Panel后端运行异常"
|
|
|
fi
|
|
|
+ if [[ -n $(docker ps -a -q -f "name=^trojan-panel-ui$") && -z $(docker ps -q -f "name=^trojan-panel-ui$" -f "status=running") ]]; then
|
|
|
+ echo_content red "---> Trojan Panel前端运行异常"
|
|
|
+ fi
|
|
|
if [[ -n $(docker ps -a -q -f "name=^trojan-panel-core$") && -z $(docker ps -q -f "name=^trojan-panel-core$" -f "status=running") ]]; then
|
|
|
echo_content red "---> Trojan Panel Core运行异常"
|
|
|
fi
|