Debian 系统相对 Ubuntu 来说简洁稳定,相对 Cent OS 来说又好用不少,尤其从 Ubuntu 转而使用 Debian 的话会十分顺手,所以对于一般搭梯子的低配 VPS 来说选 Debian 再合适不过了。
所以干脆写了个 bash 脚本,其实就是之前那篇 Ubuntu 下 Shadowsocks 服务端的安装及优化 的 Debian 版本。
#!/bin/bash
echo "===== Shadowsocks Install And Configure Script ====="
# Check user
if ! [ $UID -eq 0 ] ;then
echo "This script need to be run by root!"
echo "===== Failed ====="
exit 1
fi
function install_shadowsocks() {
echo "1) Install Shadowsocks"
echo "This step takes several seconds, please wait..."
sudo apt update >> /dev/null
sudo apt -y install python3-pip >> /dev/null
pip3 install https://github.com/shadowsocks/shadowsocks/archive/master.zip >> /dev/null
echo "Done"
}
function configure_others() {
echo "2) Configure and optimize"
configure_systemd
configure_bbr
optimize_handling
echo "Done"
}
function configure_systemd() {
cat > /etc/systemd/system/shadowsocks-server.service << EOF
[Unit]
Description=Shadowsocks Server
After=network.target
[Service]
ExecStartPre=/bin/sh -c 'ulimit -n 51200'
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks/config.json
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable shadowsocks-server >> /dev/null
}
function configure_bbr() {
bbr_result=$(lsmod | grep bbr)
if ! [[ $bbr_result =~ "tcp_bbr" ]]; then
modprobe tcp_bbr >> /dev/null
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
fi
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p >> /dev/null
}
function optimize_handling() {
cat > /etc/sysctl.conf << EOF
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = bbr
EOF
sysctl --system >> /dev/null
}
function configure_shadowsocks() {
port_index=0
port_numbers=()
port_passwords=()
echo "3) Configure Shadowsocks"
sudo mkdir -p /etc/shadowsocks >> /dev/null
echo -e -n '{\n\t"server": "::",\n\t"local_address": "127.0.0.1",\n\t"local_port": 1080,\n\t"port_password":\n\t{' > /etc/shadowsocks/config.json
while true
do
read -p "Input a port number (input 0 to finish): " port
if [ $port -eq 0 ]; then
if [ $port_index -eq 0 ]; then
echo "Error: please input at least 1 port number!"
else
let port_index--
break
fi
elif [ $port -ge 1 ] && [ $port -le 65535 ]; then
read -p "Input password of port ${port}: " password
port_numbers+=($port)
port_passwords+=($password)
let port_index++
else
echo "Error: port number must be in 1 ~ 65535"
continue
fi
done
for ((i=0; i<=port_index; i++))
do
echo -e -n "\n\t\t\"${port_numbers[$i]}\": \"${port_passwords[$i]}\"" >> /etc/shadowsocks/config.json
if [ $i -ne $port_index ]; then
echo -n "," >> /etc/shadowsocks/config.json
fi
done
echo -e '\n\t},\n\t"timeout": 300,\n\t"method": "aes-256-gcm",\n\t"fast_open": true' >> /etc/shadowsocks/config.json
echo "}" >> /etc/shadowsocks/config.json
echo "Done"
}
function start_shadowsocks() {
echo "4) Start Shadowsocks"
sudo systemctl daemon-reload >> /dev/null
sudo systemctl restart shadowsocks-server >> /dev/null
echo "Done"
}
function info_display() {
echo "===== Well Done ====="
echo -e "\nPorts and passwords:"
echo " Port * Password"
echo "*************************"
for ((i=0; i<=port_index; i++))
do
printf " %-6d* %s\n" ${port_numbers[$i]} ${port_passwords[$i]}
done
echo -e "\nEncryption Method: aes-256-gcm"
echo -e "\n===== Just Fly ====="
}
function start_install() {
echo ""
install_shadowsocks
configure_others
configure_shadowsocks
start_shadowsocks
echo ""
info_display
}
# Installation begin
start_install
也发布到了 GitHub:drsanwujiang/shadowsocks-fast-install,所以可以直接下载执行:
wget https://raw.githubusercontent.com/drsanwujiang/shadowsocks-fast-install/master/shadowsocks-install.sh
bash shadowsocks-install.sh
默认使用多端口设置,根据提示输入端口号和密码即可
由于可能对内核模块进行操作,所以必须以 root 用户登录。
Comments NOTHING