Test:修订间差异
外观
删除的内容 添加的内容
Brucekomike(留言 | 贡献) 创建页面,内容为“快速安装脚本 == 安装内容 == <pre> #!/bin/bash get_latest_release_tag() { curl -s "https://api.github.com/repos/fatedier/frp/releases/latest" | grep -Po '"tag_name": "\K[^"]*' } # Function to detect architecture detect_arch() { ARCH=$(uname -m) case "$ARCH" in x86_64) echo "amd64" ;; aarch64) echo "arm64" ;; armv7l) echo "arm" ;; *)…” |
Brucekomike(留言 | 贡献) 小 已从oss:Test导入1个版本 |
||
(未显示另一用户的1个中间版本) | |||
第1行: | 第1行: | ||
[[oto:教程:教程]] |
|||
快速安装脚本 |
|||
== 安装内容 == |
|||
<pre> |
|||
#!/bin/bash |
|||
get_latest_release_tag() { |
|||
curl -s "https://api.github.com/repos/fatedier/frp/releases/latest" | grep -Po '"tag_name": "\K[^"]*' |
|||
} |
|||
# Function to detect architecture |
|||
detect_arch() { |
|||
ARCH=$(uname -m) |
|||
case "$ARCH" in |
|||
x86_64) |
|||
echo "amd64" |
|||
;; |
|||
aarch64) |
|||
echo "arm64" |
|||
;; |
|||
armv7l) |
|||
echo "arm" |
|||
;; |
|||
*) |
|||
echo "unsupported" |
|||
;; |
|||
esac |
|||
} |
|||
# Main script |
|||
main() { |
|||
LATEST_TAG=$(get_latest_release_tag) |
|||
if [ -z "$LATEST_TAG" ]; then |
|||
echo "Error: Could not fetch the latest release tag." |
|||
exit 1 |
|||
fi |
|||
echo "Latest FRP release: $LATEST_TAG" |
|||
DETECTED_ARCH=$(detect_arch) |
|||
if [ "$DETECTED_ARCH" == "unsupported" ]; then |
|||
echo "Error: Your architecture ($ARCH) is not directly supported by this script for FRP downloads." |
|||
echo "Please manually download from https://github.com/fatedier/frp/releases" |
|||
exit 1 |
|||
fi |
|||
echo "Detected architecture: $DETECTED_ARCH" |
|||
FILENAME="frp_${LATEST_TAG#v}_linux_${DETECTED_ARCH}.tar.gz" |
|||
DOWNLOAD_URL="https://github.com/fatedier/frp/releases/download/${LATEST_TAG}/${FILENAME}" |
|||
echo "Attempting to download: $DOWNLOAD_URL" |
|||
# Use curl to download the file |
|||
curl -L -o "$FILENAME" "$DOWNLOAD_URL" |
|||
if [ $? -eq 0 ]; then |
|||
echo "Download complete: $FILENAME" |
|||
echo "You can now extract it using: tar -xzf $FILENAME" |
|||
else |
|||
echo "Error: Download failed." |
|||
echo "Please check the URL or your network connection." |
|||
fi |
|||
} |
|||
# Define variables |
|||
SERVICE_NAME="frps" |
|||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" |
|||
FRPS_DIR="$HOME/Workspace/frp" # Recommended directory for frp binaries and config |
|||
mkdir -p ~/Workspace |
|||
cd ~/Workspace |
|||
main |
|||
mv ${FILENAME%.tar.gz} frp |
|||
# Check if the frps directory exists, if not, create it |
|||
if [ ! -d "$FRPS_DIR" ]; then |
|||
echo "Creating directory: $FRPS_DIR" |
|||
sudo mkdir -p "$FRPS_DIR" |
|||
sudo chown $USER:$USER "$FRPS_DIR" # Give ownership to the current user for easy management |
|||
fi |
|||
# Get the current working directory of the script |
|||
SCRIPT_DIR=$(pwd) |
|||
# Check if frps binary exists in the current directory |
|||
if [ ! -f "$SCRIPT_DIR/frps" ]; then |
|||
echo "Error: 'frps' binary not found in the current directory ($SCRIPT_DIR)." |
|||
echo "Please ensure the frp archive has been extracted and 'frps' is present." |
|||
exit 1 |
|||
fi |
|||
# Check if frps.toml configuration file exists in the current directory |
|||
if [ ! -f "$SCRIPT_DIR/frps.toml" ]; then |
|||
echo "Error: 'frps.toml' configuration file not found in the current directory ($SCRIPT_DIR)." |
|||
echo "Please ensure 'frps.toml' is present." |
|||
exit 1 |
|||
fi |
|||
# Copy frps binary and frps.toml to the designated directory |
|||
echo "Copying frps binary and frps.toml to $FRPS_DIR..." |
|||
sudo cp "$SCRIPT_DIR/frps" "$FRPS_DIR/" |
|||
sudo cp "$SCRIPT_DIR/frps.toml" "$FRPS_DIR/" |
|||
# Create the systemd service file |
|||
echo "Creating systemd service file: $SERVICE_FILE" |
|||
sudo bash -c "cat << EOF > $SERVICE_FILE |
|||
[Unit] |
|||
Description = frp server |
|||
After = network.target syslog.target |
|||
Wants = network.target |
|||
[Service] |
|||
Type = simple |
|||
User = $USER |
|||
ExecStart = $FRPS_DIR/frps -c $FRPS_DIR/frps.toml |
|||
Restart = on-failure |
|||
RestartSec = 5s |
|||
[Install] |
|||
WantedBy = multi-user.target |
|||
EOF" |
|||
# Reload systemd daemon, enable and start the service |
|||
echo "Reloading systemd daemon..." |
|||
sudo systemctl daemon-reload |
|||
echo "Enabling $SERVICE_NAME service to start on boot..." |
|||
sudo systemctl enable "$SERVICE_NAME" |
|||
echo "Starting $SERVICE_NAME service..." |
|||
sudo systemctl start "$SERVICE_NAME" |
|||
echo "Service creation complete. You can check its status with: sudo systemctl status $SERVICE_NAME" |
|||
echo "Remember to configure your frps.toml file properly." |
|||
# Define the output file |
|||
TOML_FILE="frps.toml" |
|||
# Function to generate a random token |
|||
generate_token() { |
|||
# Generate a random string of 32 alphanumeric characters |
|||
head /dev/urandom | tr -dc A-Za-z0-9_.- | head -c 32 |
|||
} |
|||
# Generate the token |
|||
GENERATED_TOKEN=$(generate_token) |
|||
# Create the frps.toml content |
|||
cat << EOF > "$TOML_FILE" |
|||
# frps.toml - FRP Server Configuration |
|||
# Basic server settings |
|||
bindAddr = "0.0.0.0" |
|||
bindPort =12048 |
|||
kcpBindPort = 12048 |
|||
# Authentication settings |
|||
auth.method = "token" |
|||
auth.token = "$GENERATED_TOKEN" |
|||
# Logging settings |
|||
log.to = "./frps.log" |
|||
# trace, debug, info, warn, error |
|||
log.level = "info" |
|||
log.maxDays = 7 |
|||
EOF |
|||
echo "Generated '$TOML_FILE' with a new authentication token." |
|||
echo "Authentication Token: $GENERATED_TOKEN" |
|||
echo "Please keep this token secure and use it in your frpc.toml client configuration." |
|||
</pre> |