quicktool/naiveproxy/deploy_naive.sh

111 lines
2.7 KiB
Bash

#!/bin/bash
# Function to check if command succeeded
check_error() {
if [ $? -ne 0 ]; then
echo "Error: $1"
exit 1
fi
}
# Collect user input
read -p "Enter your domain (e.g., usnode1.xorbit.link): " DOMAIN
check_error "Domain cannot be empty"
# Generate email automatically
EMAIL="example@${DOMAIN}"
read -p "Enter desired username for proxy: " PROXY_USER
check_error "Username cannot be empty"
read -p "Enter desired password for proxy: " PROXY_PASS
check_error "Password cannot be empty"
# Install Go 1.22
echo "Installing Go 1.22..."
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
check_error "Failed to download Go"
rm -rf /usr/local/go
tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
check_error "Failed to extract Go"
# Add Go to PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
source /etc/profile
# Install xcaddy and build caddy with forwardproxy
echo "Building Caddy with forwardproxy..."
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
check_error "Failed to install xcaddy"
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive
check_error "Failed to build Caddy"
# Copy caddy to /usr/bin
cp caddy /usr/bin/
chmod +x /usr/bin/caddy
check_error "Failed to install Caddy"
# Create service file
echo "Creating service file..."
cat > /etc/systemd/system/naive.service << EOL
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=root
Group=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
EOL
# Create Caddyfile directory
mkdir -p /etc/caddy
check_error "Failed to create /etc/caddy directory"
# Create Caddyfile with user input
cat > /etc/caddy/Caddyfile << EOL
{
https_port 8443
}
:8443, ${DOMAIN}
tls ${EMAIL}
route {
forward_proxy {
basic_auth ${PROXY_USER} ${PROXY_PASS}
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/html
}
}
EOL
# Start and enable service
echo "Starting naive proxy service..."
systemctl daemon-reload
systemctl enable naive
systemctl start naive
check_error "Failed to start naive service"
echo "NaiveProxy deployment completed successfully!"
echo "Your proxy is available at: ${DOMAIN}:8443"
echo "Username: ${PROXY_USER}"
echo "Password: ${PROXY_PASS}"