Setup shadowsocks server on ubuntu 16.04

install shadowsocks-libev

sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev
sudo apt-get update
sudo apt install shadowsocks-libev

install bbr

wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod a+x bbr.sh
sudo ./bbr.sh

install rng-tools

sudo apt-get install rng-tools

config

sudo vim /etc/shadowsocks-libev/config.json
{
"server":"10.128.0.3",
"server_port":8911,
"local_port":1235,
"password":"jesusislove",
"timeout":60,
"method":"chacha20-ietf-poly1305"
}

start shadowsocks server

sudo /etc/init.d/shadowsocks-libev restart

Notes:
due to GFW, you need to change your IP and port and method in config.json frequently, otherwise your connection will be rejected.