Skip to content

Instantly share code, notes, and snippets.

@xuyuji9000
Forked from zhiguangwang/README.md
Created December 21, 2024 22:46
Show Gist options
  • Save xuyuji9000/fdb7166ccd2c296ccddcc524e64775d1 to your computer and use it in GitHub Desktop.
Save xuyuji9000/fdb7166ccd2c296ccddcc524e64775d1 to your computer and use it in GitHub Desktop.
Installing and running shadowsocks on Ubuntu Server

Installing and running shadowsocks on Ubuntu Server

On Ubuntu Server 16.04 (with Systemd)

  1. Run install.sh to install Shadowsocks.

  2. Put ss.json under /etc/shadowsocks/.

  3. Replace server_port and password in ss.json with your own choices.

  4. Put ssserver.service under /usr/lib/systemd/system/

  5. Run the following commands:

sudo systemctl enable ssserver
sudo systemctl start ssserver
sudo systemctl status ssserver

On Ubuntu Server 14.04 (without Systemd)

  1. Run install.sh to install Shadowsocks.

  2. Put ss.json, start.sh, stop.sh under /etc/shadowsocks/.

  3. Replace server_port and password in ss.json with your own choices.

  4. Put the following in /etc/rc.local to start ssserver upon server start.

# Start shadowsocks server
/etc/shadowsocks/start.sh

Use TCP BBR

This will install linux kernel 4.9 and enable TCP BBR congestion control algorithm to improve network bandwidth utilization (10x improvement is not uncommon).

URL=http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9.9/linux-image-4.9.9-040909-generic_4.9.9-040909.201702090333_amd64.deb

wget $URL
sudo dpkg -i $(basename $URL)

sudo reboot

echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
lsmod | grep bbr
#!/bin/bash
sudo apt-get update
sudo apt-get install python-pip
sudo pip install shadowsocks
{
"server": "0.0.0.0",
"server_port": "[port]",
"password": "[password]",
"timeout": 300,
"method": "aes-256-cfb",
"fast_open": true
}
[Unit]
Description=Daemon to start shadowsocks server
Wants=network-online.target
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks/ss.json -qq
User=nobody
[Install]
WantedBy=multi-user.target
#!/bin/bash
sudo /usr/local/bin/ssserver -c /etc/shadowsocks/ss.json --user nobody -qq -d start
#!/bin/bash
sudo /usr/local/bin/ssserver -c /etc/shadowsocks/ss.json -d stop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment