#Shadowsocks2022 Server-side JSON ```json { "inbounds": [ { "port": 1234, "protocol": "shadowsocks", "settings": { "method": "2022-blake3-aes-128-gcm", "password": "{{ psk }}", "network": "tcp,udp" } } ], "outbounds": [ { "protocol": "freedom" } ] } ``` Server-side JSON (multi-user) ```json { "inbounds": [ { "port": 1234, "protocol": "shadowsocks", "settings": { "method": "2022-blake3-aes-128-gcm", "password": "{{ server psk }}", "clients": [ { "password": "{{ user psk }}", "email": "my user" } ], "network": "tcp,udp" } } ], "outbounds": [ { "protocol": "freedom" } ] } ``` Server-side JSON (transit) ```json { "inbounds": [ { "port": 1234, "protocol": "shadowsocks", "settings": { "method": "2022-blake3-aes-128-gcm", "password": "{{ relay psk }}", "clients": [ { "address": "server", "port": 1234, "password": "{{ server/user psk }}", "email": "my server" } ], "network": "tcp,udp" } } ], "outbounds": [ { "protocol": "freedom" } ] } ``` Client JSON ```json { "inbounds": [ { "port": 10801, "protocol": "socks", "settings": { "udp": true } }, { "port": 10802, "protocol": "http" } ], "outbounds": [ { "protocol": "shadowsocks", "settings": { "servers": [ { "address": "{{ host }}", "port": 1234, "method": "2022-blake3-aes-128-gcm", "password": "{{ psk }}" } ] } } ] } ``` Client JSON (UDP over TCP) ```json { "inbounds": [ { "port": 10801, "protocol": "socks", "settings": { "udp": true } }, { "port": 10802, "protocol": "http" } ], "outbounds": [ { "protocol": "shadowsocks", "settings": { "servers": [ { "address": "{{ host }}", "port": 1234, "method": "2022-blake3-aes-128-gcm", "password": "{{ psk }}", "uot": true } ] } } ] } ``` Client JSON (multi-user) ```json { "inbounds": [ { "port": 10801, "protocol": "socks", "settings": { "udp": true } }, { "port": 10802, "protocol": "http" } ], "outbounds": [ { "protocol": "shadowsocks", "settings": { "servers": [ { "address": "{{ host }}", "port": 1234, "method": "2022-blake3-aes-128-gcm", "password": "{{ server psk }}:{{ user psk }}" } ] } } ] } ``` Client JSON (transit) ```json { "inbounds": [ { "port": 10801, "protocol": "socks", "settings": { "udp": true } }, { "port": 10802, "protocol": "http" } ], "outbounds": [ { "protocol": "shadowsocks", "settings": { "servers": [ { "address": "{{ host }}", "port": 1234, "method": "2022-blake3-aes-128-gcm", "password": "{{ relay psk }}:{{ user psk }}" } ] } } ] } ``` ## Password Shadowsocks 2022 uses a pre-shared key similar to WireGuard for the password. Use `openssl rand -base64 ` to generate a shadowsocks-rust compatible key, the length depends on the encryption method used. | encryption method | key length | |--------------------------------|-----:| | 2022-blake3-aes-128-gcm | 16 | | 2022-blake3-aes-256-gcm | 32 | | 2022-blake3-chacha20-poly1305 | 32 | In the Go implementation, 32-bit keys always work.