[install-boringproxy-client.sh]
#!/bin/bash
# =========================================================================== #
# Description: Installing boringproxy via Script.
# Details: Installing boringproxy via Script.
# Made for: Linux, boringproxy (Debian & Ubuntu).
# Requirements: ssh-keygen - ssh-copy-id root@127.0.0.1 (replace IP)
# Make executable: chmod +x install-boringproxy-client.sh
# =========================================================================== #
#
# Check if the user is root
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
# Create user and usergroup
groupadd -f boringproxy
useradd -m -s /bin/bash -g boringproxy boringproxy
# Set up home directory and permissions
home_dir="/home/boringproxy"
ssh_dir="${home_dir}/.ssh"
chown boringproxy:boringproxy ${home_dir}
chmod 700 ${home_dir}
# Set up SSH directory and permissions
mkdir -p ${ssh_dir}
chown boringproxy:boringproxy ${ssh_dir}
chmod 700 ${ssh_dir}
# Determine the architecture
case "$(uname -s)-$(uname -m)" in
"Linux-x86_64") arch="linux-x86_64" ;;
"Linux-armv7l") arch="linux-arm" ;;
"Linux-aarch64") arch="linux-arm64" ;;
"Darwin-x86_64") arch="darwin-x86_64" ;;
"Darwin-arm64") arch="darwin-arm64" ;;
"FreeBSD-i386") arch="freebsd-386" ;;
"FreeBSD-amd64") arch="freebsd-x86_64" ;;
"OpenBSD-i386") arch="openbsd-386" ;;
"OpenBSD-amd64") arch="openbsd-x86_64" ;;
*) echo "Unsupported platform"; exit 1 ;;
esac
# Download the executable
executable_url="https://github.com/boringproxy/boringproxy/releases/download/v0.10.0/boringproxy-${arch}"
executable_path="${home_dir}/boringproxy"
curl -L -o ${executable_path} ${executable_url}
chown boringproxy:boringproxy ${executable_path}
chmod 700 ${executable_path}
# Allow binding to privileged ports
setcap cap_net_bind_service=+ep ${executable_path}
# Get user input
read -p "Enter Server: " server
read -p "Enter User: " user
read -p "Enter Token: " token
read -p "Enter Client-name: " client_name
# Write start-boringproxy.sh
start_script="${home_dir}/start-boringproxy.sh"
cat > ${start_script} << EOL
#!/bin/bash
${executable_path} client \\
-server ${server} -user ${user} -token ${token} -client-name ${client_name}
EOL
chown boringproxy:boringproxy ${start_script}
chmod 700 ${start_script}
# Create systemd service
systemd_service="/etc/systemd/system/boringproxy.service"
cat > ${systemd_service} << EOL
[Unit]
Description=Boringproxy
After=network.target
[Service]
User=boringproxy
Group=boringproxy
WorkingDirectory=${home_dir}
ExecStart=${start_script}
Restart=always
[Install]
WantedBy=multi-user.target
EOL
# Enable and start the systemd service
systemctl enable boringproxy
systemctl start boringproxy
echo "Boringproxy setup complete!"