frpc/frpc_linux_install.sh

156 lines
4.9 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# fonts color
Green="\033[32m"
Red="\033[31m"
Yellow="\033[33m"
GreenBG="\033[42;37m"
RedBG="\033[41;37m"
Font="\033[0m"
# fonts color
# variable
2020-02-08 13:30:22 +08:00
WORK_PATH=$(dirname $(readlink -f $0))
FRP_NAME=frpc
2024-03-22 12:34:36 +08:00
FRP_VERSION=0.56.0
FRP_PATH=/usr/local/frp
2024-03-19 18:04:29 +08:00
PROXY_URL="https://mirror.ghproxy.com/"
2022-02-15 10:19:49 +08:00
# check frpc
2024-03-03 01:01:08 +08:00
if [ -f "/usr/local/frp/${FRP_NAME}" ] || [ -f "/usr/local/frp/${FRP_NAME}.toml" ] || [ -f "/lib/systemd/system/${FRP_NAME}.service" ];then
echo -e "${Green}=========================================================================${Font}"
echo -e "${RedBG}当前已退出脚本.${Font}"
echo -e "${Green}检查到服务器已安装${Font} ${Red}${FRP_NAME}${Font}"
2024-03-03 01:01:08 +08:00
echo -e "${Green}请手动确认和删除${Font} ${Red}/usr/local/frp/${Font} ${Green}目录下的${Font} ${Red}${FRP_NAME}${Font} ${Green}${Font} ${Red}/${FRP_NAME}.toml${Font} ${Green}文件以及${Font} ${Red}/lib/systemd/system/${FRP_NAME}.service${Font} ${Green}文件,再次执行本脚本.${Font}"
echo -e "${Green}参考命令如下:${Font}"
echo -e "${Red}rm -rf /usr/local/frp/${FRP_NAME}${Font}"
2024-03-03 01:01:08 +08:00
echo -e "${Red}rm -rf /usr/local/frp/${FRP_NAME}.toml${Font}"
echo -e "${Red}rm -rf /lib/systemd/system/${FRP_NAME}.service${Font}"
echo -e "${Green}=========================================================================${Font}"
2022-02-15 10:19:49 +08:00
exit 0
fi
while ! test -z "$(ps -A | grep -w ${FRP_NAME})"; do
FRPCPID=$(ps -A | grep -w ${FRP_NAME} | awk 'NR==1 {print $1}')
kill -9 $FRPCPID
done
2022-02-15 10:19:49 +08:00
# check pkg
if type apt-get >/dev/null 2>&1 ; then
if ! type wget >/dev/null 2>&1 ; then
apt-get install wget -y
fi
if ! type curl >/dev/null 2>&1 ; then
apt-get install curl -y
fi
fi
if type yum >/dev/null 2>&1 ; then
if ! type wget >/dev/null 2>&1 ; then
yum install wget -y
fi
if ! type curl >/dev/null 2>&1 ; then
yum install curl -y
fi
fi
# check network
GOOGLE_HTTP_CODE=$(curl -o /dev/null --connect-timeout 5 --max-time 8 -s --head -w "%{http_code}" "https://www.google.com")
PROXY_HTTP_CODE=$(curl -o /dev/null --connect-timeout 5 --max-time 8 -s --head -w "%{http_code}" "${PROXY_URL}")
# check arch
if [ $(uname -m) = "x86_64" ]; then
PLATFORM=amd64
elif [ $(uname -m) = "aarch64" ]; then
2022-02-15 10:19:49 +08:00
PLATFORM=arm64
elif [ $(uname -m) = "armv7" ]; then
PLATFORM=arm
elif [ $(uname -m) = "armv7l" ]; then
PLATFORM=arm
elif [ $(uname -m) = "armhf" ]; then
PLATFORM=arm
2022-02-15 10:19:49 +08:00
fi
FILE_NAME=frp_${FRP_VERSION}_linux_${PLATFORM}
# download
if [ $GOOGLE_HTTP_CODE == "200" ]; then
wget -P ${WORK_PATH} https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/${FILE_NAME}.tar.gz -O ${FILE_NAME}.tar.gz
else
if [ $PROXY_HTTP_CODE == "200" ]; then
wget -P ${WORK_PATH} ${PROXY_URL}https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/${FILE_NAME}.tar.gz -O ${FILE_NAME}.tar.gz
else
echo -e "${Red}检测 GitHub Proxy 代理失效 开始使用官方地址下载${Font}"
wget -P ${WORK_PATH} https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/${FILE_NAME}.tar.gz -O ${FILE_NAME}.tar.gz
fi
fi
tar -zxvf ${FILE_NAME}.tar.gz
mkdir -p ${FRP_PATH}
mv ${FILE_NAME}/${FRP_NAME} ${FRP_PATH}
2024-03-03 01:01:08 +08:00
# configure frpc.toml
2024-03-19 18:04:29 +08:00
RADOM_NAME=$(cat /dev/urandom | head -n 10 | md5sum | head -c 8)
2024-03-03 01:01:08 +08:00
cat >${FRP_PATH}/${FRP_NAME}.toml<<EOF
2024-03-19 18:04:29 +08:00
serverAddr = "frp.freefrp.net"
2024-03-03 01:01:08 +08:00
serverPort = 7000
auth.method = "token"
2024-03-19 18:04:29 +08:00
auth.token = "freefrp.net"
2024-03-03 01:01:08 +08:00
2024-03-19 18:04:29 +08:00
[[proxies]]
name = "web1_${RADOM_NAME}"
type = "http"
localIP = "192.168.1.2"
localPort = 5000
customDomains = ["nas.yourdomain.com"]
2024-03-03 01:01:08 +08:00
2024-03-03 01:38:50 +08:00
[[proxies]]
2024-03-19 18:04:29 +08:00
name = "web2_${RADOM_NAME}"
type = "https"
localIP = "192.168.1.2"
localPort = 5001
customDomains = ["nas.yourdomain.com"]
2024-03-03 01:38:50 +08:00
[[proxies]]
2024-03-19 18:04:29 +08:00
name = "tcp1_${RADOM_NAME}"
type = "tcp"
localIP = "192.168.1.3"
localPort = 22
remotePort = 22222
EOF
2022-02-15 10:19:49 +08:00
# configure systemd
cat >/lib/systemd/system/${FRP_NAME}.service <<EOF
[Unit]
Description=Frp Server Service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5s
2024-03-03 01:01:08 +08:00
ExecStart=/usr/local/frp/${FRP_NAME} -c /usr/local/frp/${FRP_NAME}.toml
[Install]
WantedBy=multi-user.target
EOF
2022-02-15 10:19:49 +08:00
# finish install
systemctl daemon-reload
sudo systemctl start ${FRP_NAME}
sudo systemctl enable ${FRP_NAME}
2022-02-15 10:19:49 +08:00
# clean
rm -rf ${WORK_PATH}/${FILE_NAME}.tar.gz ${WORK_PATH}/${FILE_NAME} ${FRP_NAME}_linux_install.sh
2020-02-08 13:30:22 +08:00
echo -e "${Green}====================================================================${Font}"
2024-03-03 01:01:08 +08:00
echo -e "${Green}安装成功,请先修改 ${FRP_NAME}.toml 文件,确保格式及配置正确无误!${Font}"
echo -e "${Red}vi /usr/local/frp/${FRP_NAME}.toml${Font}"
echo -e "${Green}修改完毕后执行以下命令重启服务:${Font}"
echo -e "${Red}sudo systemctl restart ${FRP_NAME}${Font}"
echo -e "${Green}====================================================================${Font}"