Shadowsocks + Cloudflare

Вот так

Summary

shadowsocks config (/etc/shadowsocks-libev/config.json)

{
    "server":["127.0.0.1"],
    "mode":"tcp_only",
    "server_port":my_v2ray_port_number,
    "password":"my_strong_pass",
    "timeout":60,
    "method":"aes-128-gcm",
    "plugin":"/my_path_to_v2ray-plugin/v2ray-plugin",
    "plugin_opts":"server;path=/my_long_path"
}

lighttpd config (/etc/lighttpd/lighttpd.conf)

# ssl-letsencrypt
server.modules += ("mod_openssl")
$SERVER["socket"] == ":443" {
  ssl.engine = "enable"
  ssl.pemfile = "/my_path_to_letsencrypt_cert_dir/fullchain.pem"
  ssl.privkey = "/my_path_to_letsencrypt_cert_dir/privkey.pem"
}

# v2ray-plugin-proxy
server.modules += ( "mod_proxy" )
$HTTP["url"] =~ "^/my_long_path" {
    proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => "my_v2ray_port_number" ) ) )
    proxy.header = ( "upgrade" => "enable" )
}

В plugin_opts на сервере отсутствует опция tls (как и пути к сертификатам), т.к. функцию tls берет на себя lighttpd.
В клиенте опция tls естественно должна присутствовать.