Skip to content

Shadowsocks

Description⚓︎

Shadowsocks is a secure split proxy loosely based on SOCKS5

Bare Metal⚓︎

Basic info⚓︎

Basic info with official links

Getting started⚓︎

Warning

This Guide assumes there's no firewall like UFW

Todo

Move client-side to opnsense

Server Side⚓︎

  • Install Shadowsocks-libev

    Bash
    sudo apt update
    sudo apt install shadowsocks-libev
    

  • Edit config.json file

    sudoedit /etc/shadowsocks-libev/config.json
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
      "server":["::1", "0.0.0.0"],
      "mode":"tcp_and_udp",
      "server_port":8969,
      "local_port":1080,
      "password":"PutALongPasswordHere",
      "timeout":60,
      "method":"chacha20-ietf-poly1305"
    }
    

  • IPTables (Dumping here in case needed later)

    Bash
    sudo iptables -I INPUT -p tcp --dport 8969 -j ACCEPT
    sudo iptables -I INPUT -p udp --dport 8969 -j ACCEPT
    

  • Start and Enable service

    Bash
    sudo systemctl enable shadowsocks-libev.service --now
    

  • Check service status

    Bash
    sudo systemctl status shadowsocks-libev.service
    

Warning

If shadowsocks service errors out due to lacking entropy, install rng-tools and run sudo rngd -r /dev/urandom

Client Side⚓︎

  • Install Shadowsocks-libev

    Bash
    sudo apt update
    sudo apt install shadowsocks-libev
    

  • Edit location.json file (Change location to your desired name for file)

    sudoedit /etc/shadowsocks-libev/zurich.json
    {
      "server":["server.ip.or.domain"],
      "mode":"tcp_and_udp",
      "server_port":8969,
      "local_address":"media.lan",
      "local_port":1080,
      "password":"samePasswordAsServerHere",
      "timeout":60,
      "method":"chacha20-ietf-poly1305"
    }
    

  • Start and Enable service

    Bash
    sudo systemctl enable [email protected] --now
    

  • Check service status

    Bash
    sudo systemctl status [email protected]
    

Prowlarr⚓︎

Note

Prowlarr connects to your client on LAN

  • Go to Settings -> Indexers

  • Add a new SOCKS5 Proxy

  • Options to fill out

    Bash
    1
    2
    3
    4
    5
    6
    Name= asDesired
    Tags= sonarr radarr lidarr #Applies to indexers with at least one matching tag
    Host= 192.168.29.11 #your local_address from location.json
    Port= 1080
    
    ## Leave Username and Password empty since we didn't set any on client
    

  • Go to Settings -> Apps

    • Put Sync Level to Full Sync for all the Applications