#!/bin/bash set -e update_sysctl_conf() { local config_file="/etc/sysctl.conf" local configs=( "net.core.default_qdisc=fq" "net.ipv4.tcp_congestion_control=bbr" ) for config in "${configs[@]}"; do if ! grep -q "^$config" "$config_file"; then echo "$config" >>"$config_file" fi done sysctl -p sysctl net.ipv4.tcp_available_congestion_control } update_sysctl_conf SS_PORT=36000 # set method SS_METHOD="chacha20-ietf-poly1305" # SS_PASSWORD="Ss#12345678" SS_PASSWORD=${P:="Ss123456"} # export env export SS_PASSWORD=$SS_PASSWORD # get public ip first PUBLIC_IP_V4=$(curl -s https://api.ipify.org) # PUBLIC_IP="[$(curl -6 -s https://api64.ipify.org)]" # COUNTRY=$(curl -s "https://ipapi.co/$PUBLIC_IP/country_name") # replace space with - # COUNTRY=${COUNTRY// /-} THE_DATE=$(date "+%Y%m%d") # get ss uri # SS_SERVER_URL="ss://$(printf "%s" "$SS_METHOD:$SS_PASSWORD" | base64)@$PUBLIC_IP:$SS_PORT#ss$THE_DATE" SS_SERVER_URL_V4="ss://$(printf "%s" "$SS_METHOD:$SS_PASSWORD" | base64)@$PUBLIC_IP_V4:$SS_PORT#ss$THE_DATE" sudo apt-get -y update sudo apt -y install qrencode sudo apt -y install xz-utils sudo apt -y install sudo sudo apt -y install sudo perl get_latest_release() { api_url="https://api.github.com/repos/$1/releases/latest" curl --silent "$api_url" | json_pp | grep '"tag_name" :' | sed -E 's/.*"v([^"]+)".*/\1/' } NAME="ss" REPO_NAME="shadowsocks/shadowsocks-rust" latest_version=$(get_latest_release $REPO_NAME) echo start install $REPO_NAME latest v${latest_version} cd /tmp file_name="shadowsocks-v${latest_version}.x86_64-unknown-linux-gnu" url="https://github.com/$REPO_NAME/releases/download/v${latest_version}/${file_name}.tar.xz" echo "$url" wget "$url" mkdir -p ${NAME} mkdir -p /etc/ss tar -xf ${file_name}.tar.xz --directory ${NAME} sudo mkdir -p /opt/ss/bin # try to stop sslocal service first if exists sudo systemctl stop ss || true sudo systemctl disable ss || true sudo cp -R ${NAME}/* /opt/ss/bin/ sudo ln -sf /opt/ss/bin/ssserver /usr/bin/ssserver sudo tee /etc/systemd/system/ss.service >/dev/null <" "$encoded_ss_url"