├── README.md ├── lasyman_setup_ss.sh └── shadowsocks_setup_centos.sh /README.md: -------------------------------------------------------------------------------- 1 | # lasy_setup_ss 2 | use the shell script to setup shadowsocks on Ubuntu 1404 or CentOs 6.5 3 | 4 | *1. First you must git clone this script to your VPS* 5 | 6 | *2. run it by command # bash lasyman_setup_ss.sh* 7 | 8 | *3. After the script done, you can visit your VPS IP to see the result* 9 | 10 | *4. Goodluck man! Free Network!* 11 | -------------------------------------------------------------------------------- /lasyman_setup_ss.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ########################################## 3 | # File Name: lasy_setup_ss.sh 4 | # Author: Allan Xing 5 | # Email: xingpeng2012@gmail.com 6 | # Date: 20150301 7 | # Version: v2.0 8 | # History: 9 | # add centos support@0319 10 | #---------------------------------------- 11 | # fix bugs and code optimization@0319 12 | #---------------------------------------- 13 | # modify for new ss-panel version and add start-up for service@0609 14 | ########################################## 15 | 16 | #---------------------------------------- 17 | #mysql data 18 | HOST="localhost" 19 | USER="root" 20 | PORT="3306" 21 | ROOT_PASSWD="" 22 | DB_NAME="shadowsocks" 23 | SQL_FILES="invite_code.sql ss_user_admin.sql ss_node.sql ss_reset_pwd.sql user.sql" 24 | CREATED=0 25 | RESET=1 26 | #---------------------------------------- 27 | 28 | #check OS version 29 | CHECK_OS_VERSION=`cat /etc/issue |sed -n 1"$1"p|awk '{printf $1}' |tr 'a-z' 'A-Z'` 30 | 31 | #list the software need to be installed to the variable FILELIST 32 | UBUNTU_TOOLS_LIBS="python-pip mysql-server libapache2-mod-php5 python-m2crypto php5-cli git \ 33 | apache2 php5-gd php5-mysql php5-dev libmysqlclient15-dev php5-curl php-pear language-pack-zh*" 34 | 35 | CENTOS_TOOLS_LIBS="php55w php55w-opcache mysql55w mysql55w-server php55w-mysql php55w-gd libjpeg* \ 36 | php55w-imap php55w-ldap php55w-odbc php55w-pear php55w-xml php55w-xmlrpc php55w-mbstring \ 37 | php55w-mcrypt php55w-bcmath php55w-mhash libmcrypt m2crypto python-setuptools httpd" 38 | 39 | ## check whether system is Ubuntu or not 40 | function check_OS_distributor(){ 41 | echo "checking distributor and release ID ..." 42 | if [[ "${CHECK_OS_VERSION}" == "UBUNTU" ]] ;then 43 | echo -e "\tCurrent OS: ${CHECK_OS_VERSION}" 44 | UBUNTU=1 45 | elif [[ "${CHECK_OS_VERSION}" == "CENTOS" ]] ;then 46 | echo -e "\tCurrent OS: ${CHECK_OS_VERSION}!!!" 47 | CENTOS=1 48 | else 49 | echo "not support ${CHECK_OS_VERSION} now" 50 | exit 1 51 | fi 52 | } 53 | 54 | ## update system 55 | function update_system() 56 | { 57 | if [[ ${UNUNTU} -eq 1 ]];then 58 | { 59 | echo "apt-get update" 60 | apt-get update 61 | } 62 | elif [[ ${CENTOS} -eq 1 ]];then 63 | { 64 | ##Webtatic EL6 for CentOS/RHEL 6.x 65 | rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 66 | yum install mysql.`uname -i` yum-plugin-replace -y 67 | yum replace mysql --replace-with mysql55w -y 68 | yum replace php-common --replace-with=php55w-common -y 69 | } 70 | fi 71 | } 72 | 73 | ## reset mysql root password 74 | function reset_mysql_root_pwd() 75 | { 76 | if [[ ${CENTOS} -eq 1 ]];then 77 | echo "=========================================================================" 78 | echo "Reset MySQL root Password for CentOs" 79 | echo "=========================================================================" 80 | echo "" 81 | if [ -s /usr/bin/mysql ]; then 82 | M_Name="mysqld" 83 | else 84 | M_Name="mariadb" 85 | fi 86 | echo "Stoping MySQL..." 87 | /etc/init.d/$M_Name stop 88 | echo "Starting MySQL with skip grant tables" 89 | /usr/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 & 90 | if [[ $RESET -eq 1 ]];then 91 | /usr/bin/mysql -u root mysql << EOF 92 | EOF 93 | /etc/init.d/$M_Name restart 94 | sleep 5 95 | fi 96 | echo "using mysql to flush privileges and reset password" 97 | echo "set password for root@localhost = pssword('$ROOT_PASSWD');" 98 | /usr/bin/mysql -u root mysql << EOF 99 | update user set password = Password('$ROOT_PASSWD') where User = 'root'; 100 | EOF 101 | reset_status=`echo $?` 102 | if [ $reset_status = "0" ]; then 103 | echo "Password reset succesfully. Now killing mysqld softly" 104 | killall mysqld 105 | sleep 5 106 | echo "Restarting the actual mysql service" 107 | /etc/init.d/$M_Name start 108 | echo "Password successfully reset to '$ROOT_PASSWD'" 109 | RESET=1 110 | else 111 | echo "Reset MySQL root password failed!" 112 | RESET=0 113 | fi 114 | elif [[ ${UBUNTU} -eq 1 ]];then 115 | echo "=========================================================================" 116 | echo "Reset MySQL root Password for Ubuntu" 117 | echo "=========================================================================" 118 | echo "" 119 | echo "Stoping MySQL..." 120 | service mysql stop 121 | nohup mysqld --user=mysql --skip-grant-tables --skip-networking > /var/log/reset_mysql.log 2>&1 & 122 | sleep 2 123 | echo "update user set Password=PASSWORD('$ROOT_PASSWD') where user='root';" 124 | mysql -u root mysql << EOF 125 | update user set Password=PASSWORD('$ROOT_PASSWD') where user='root'; 126 | EOF 127 | killall mysqld 128 | echo "Restart MYSQL..." 129 | service mysql start 130 | rm -rf /var/log/reset_mysql.log 131 | fi 132 | } 133 | 134 | #install one software every cycle 135 | function install_soft_for_each(){ 136 | echo "check OS version..." 137 | check_OS_distributor 138 | if [[ ${UBUNTU} -eq 1 ]];then 139 | echo "Will install below software on your Ubuntu system:" 140 | update_system 141 | for file in ${UBUNTU_TOOLS_LIBS} 142 | do 143 | trap 'echo -e "\ninterrupted by user, exit";exit' INT 144 | echo "=========================" 145 | echo "installing $file ..." 146 | echo "-------------------------" 147 | apt-get install $file -y 148 | sleep 1 149 | echo "$file installed ." 150 | done 151 | pip install cymysql shadowsocks 152 | echo "=======ready to reset mysql root password========" 153 | reset_mysql_root_pwd 154 | elif [[ ${CENTOS} -eq 1 ]];then 155 | echo "Will install softwears on your CentOs system:" 156 | update_system 157 | for file in ${CENTOS_TOOLS_LIBS} 158 | do 159 | trap 'echo -e "\ninterrupted by user, exit";exit' INT 160 | echo "=========================" 161 | echo "installing $file ..." 162 | echo "-------------------------" 163 | yum install $file -y 164 | sleep 3 165 | echo "$file installed ." 166 | done 167 | easy_install pip 168 | pip install cymysql shadowsocks 169 | echo "=======ready to reset mysql root password========" 170 | reset_mysql_root_pwd 171 | if [ $RESET -eq 0 ];then 172 | reset_mysql_root_pwd 173 | fi 174 | else 175 | echo "Other OS not support yet, please try Ubuntu or CentOs" 176 | exit 1 177 | fi 178 | } 179 | 180 | 181 | #mysql operation 182 | function mysql_op() 183 | { 184 | if [[ ${CREATED} -eq 0 ]];then 185 | mysql -h${HOST} -P${PORT} -u${USER} -p${ROOT_PASSWD} -e "$1" 186 | else 187 | mysql -h${HOST} -P${PORT} -u${USER} -p${ROOT_PASSWD} ${DB_NAME} -e "$1" 188 | fi 189 | } 190 | 191 | ## configure firewall 192 | function setup_firewall() 193 | { 194 | for port in 443 80 `seq 50000 60000` 195 | do 196 | iptables -I INPUT -p tcp --dport $port -j ACCEPT 197 | done 198 | /etc/init.d/iptables save 199 | /etc/init.d/iptables restart 200 | } 201 | 202 | #setup manyuser ss 203 | function setup_manyuser_ss() 204 | { 205 | SS_ROOT=/root/shadowsocks/shadowsocks 206 | echo -e "download manyuser shadowsocks\n" 207 | cd /root 208 | git clone -b manyuser https://github.com/mengskysama/shadowsocks.git 209 | cd ${SS_ROOT} 210 | #modify Config.py 211 | echo -e "modify Config.py...\n" 212 | sed -i "/^MYSQL_HOST/ s#'.*'#'localhost'#" ${SS_ROOT}/Config.py 213 | sed -i "/^MYSQL_USER/ s#'.*'#'${USER}'#" ${SS_ROOT}/Config.py 214 | sed -i "/^MYSQL_PASS/ s#'.*'#'${ROOT_PASSWD}'#" ${SS_ROOT}/Config.py 215 | sed -i "/rc4-md5/ s#"rc4-md5"#aes-256-cfb#" ${SS_ROOT}/config.json 216 | #create database shadowsocks 217 | echo -e "create database shadowsocks...\n" 218 | create_db_sql="create database IF NOT EXISTS ${DB_NAME}" 219 | mysql_op "${create_db_sql}" 220 | if [ $? -eq 0 ];then 221 | CREATED=1 222 | fi 223 | #import shadowsocks sql 224 | echo -e "import shadowsocks sql..." 225 | import_db_sql="source ${SS_ROOT}/shadowsocks.sql" 226 | mysql_op "${import_db_sql}" 227 | } 228 | 229 | #setup ss-panel 230 | function setup_sspanel() 231 | { 232 | PANEL_ROOT=/root/ss-panel 233 | echo -e "download ss-panel ...\n" 234 | cd /root 235 | git clone -b v2 https://github.com/orvice/ss-panel.git 236 | #import pannel sql 237 | for mysql in ${SQL_FILES} 238 | do 239 | import_panel_sql="source ${PANEL_ROOT}/sql/${mysql}" 240 | mysql_op "${import_panel_sql}" 241 | done 242 | #modify config 243 | echo -e "modify lib/config-simple.php...\n" 244 | if [ -f "${PANEL_ROOT}/lib/config-simple.php" ];then 245 | mv ${PANEL_ROOT}/lib/config-simple.php ${PANEL_ROOT}/lib/config.php 246 | fi 247 | sed -i "/DB_PWD/ s#'password'#'${ROOT_PASSWD}'#" ${PANEL_ROOT}/lib/config.php 248 | sed -i "/DB_DBNAME/ s#'db'#'${DB_NAME}'#" ${PANEL_ROOT}/lib/config.php 249 | cp -rd ${PANEL_ROOT}/* /var/www/html/ 250 | rm -rf /var/www/html/index.html 251 | } 252 | 253 | #start shadowsocks server 254 | function start_ss() 255 | { 256 | if [[ $UBUNTU -eq 1 ]];then 257 | service apache2 restart 258 | elif [[ $CENTOS -eq 1 ]];then 259 | /etc/init.d/httpd start 260 | fi 261 | if [[ $? != 0 ]];then 262 | echo "Web server restart failed, please check!" 263 | echo "ERROR!!!" 264 | exit 1 265 | fi 266 | cd /root/shadowsocks/shadowsocks 267 | nohup python server.py > /dev/null 2>&1 & 268 | echo "setup firewall..." 269 | setup_firewall 270 | #add start-up 271 | echo "cd /root/shadowsocks/shadowsocks;python server.py > /dev/null 2>&1 &" >> /etc/rc.d/rc.local 272 | echo "/etc/init.d/httpd start" >> /etc/rc.d/rc.local 273 | echo "/etc/init.d/mysqld start" >> /etc/rc.d/rc.local 274 | #### 275 | echo "" 276 | echo "========================================================================e" 277 | echo "congratulations, shadowsocks server starting..." 278 | echo "========================================================================" 279 | echo "The log file is in /var/log/shadowsocks.log..." 280 | echo "type your ip into your web browser, you can see the web, also you can configure that at '/var/www/html'" 281 | echo "========================================================================" 282 | } 283 | 284 | #==================== 285 | # main 286 | # 287 | #judge whether root or not 288 | if [ "$UID" -eq 0 ];then 289 | read -p "(Please input New MySQL root password):" ROOT_PASSWD 290 | if [ "$ROOT_PASSWD" = "" ]; then 291 | echo "Error: Password can't be NULL!!" 292 | exit 1 293 | fi 294 | install_soft_for_each 295 | setup_manyuser_ss 296 | setup_sspanel 297 | start_ss 298 | else 299 | echo -e "please run it as root user again !!!\n" 300 | exit 1 301 | fi 302 | -------------------------------------------------------------------------------- /shadowsocks_setup_centos.sh: -------------------------------------------------------------------------------- 1 | yum -y install openssl openssl-devel 2 | yum -y install automake autoconf libtool make 3 | yum -y install gcc gcc-c++ 4 | yum -y install git 5 | git clone https://github.com/madeye/shadowsocks-libev.git 6 | cd shadowsocks-libev 7 | ./configure 8 | make && make install 9 | cd /usr/local/bin/ 10 | iptables -F 11 | echo "Input VPS ip address:" 12 | read ip 13 | 14 | echo "Input Password:" 15 | read password 16 | command="nohup ss-server -s ${ip} -p 443 -l 1080 -k ${password} -m aes-256-cfb &" 17 | nohup ss-server -s ${ip} -p 443 -k ${password} -m aes-256-cfb & 18 | echo -e "\n\n" 19 | echo "Information:" 20 | echo "Server Ip:${ip}" 21 | echo "Server Port: 443" 22 | echo "Password:${password}" 23 | echo "encrypt_method: aes-256-cfb " 24 | --------------------------------------------------------------------------------