Install Shadowsocks proxy on Debian or Ubuntu

Server:

  • Install:
    sudo apt install shadowsocks-libev
  • Restore config from backup if you have one:
    sudo cp -a backup/etc/shadowsocks-libev /etc
    or just:
    sudo tee /etc/shadowsocks-libev/config.json << EOF
    {
        "server":"0.0.0.0",
        "server_port":8388,
        "local_port":1080,
        "password":"<password>",
        "timeout":60,
        "method":"chacha20-ietf-poly1305"
    }
    EOF
    
  • Disable server localhost access from clients:
    sudo sed -i -e 's|^DAEMON_ARGS=.*|DAEMON_ARGS="-u --acl acl/server_block_local.acl"|' /etc/default/shadowsocks-libev
  • Restart:
    sudo systemctl restart shadowsocks-libev

Client:

  • Install:
    sudo apt install shadowsocks-libev
  • Disable server:
    sudo systemctl disable --now shadowsocks-libev
  • Copy server config to /etc/shadowsocks-libev/<server name>.json, change server to server address, add local_address (usually 127.0.0.1), or just:
    sudo tee /etc/shadowsocks-libev/<server name>.json << EOF
    {
        "server":"<server address>",
        "server_port":8388,
        "local_address":"127.0.0.1",
        "local_port":1080,
        "password":"<password>",
        "timeout":60,
        "method":"chacha20-ietf-poly1305"
    }
    EOF
    
  • Enable client service:
    sudo systemctl enable --now shadowsocks-libev-local@<server name>