+
+
+
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
new file mode 100644
index 00000000..5facf0c2
--- /dev/null
+++ b/docs/.vitepress/theme/index.ts
@@ -0,0 +1,9 @@
+import DefaultTheme from 'vitepress/theme'
+import SIP002Generator from './components/SIP002Generator.vue'
+
+export default {
+ ...DefaultTheme,
+ enhanceApp({ app }) {
+ app.component('SIP002Generator', SIP002Generator)
+ }
+}
diff --git a/docs/doc/advanced.md b/docs/doc/advanced.md
index a2b439b9..e35a1e42 100644
--- a/docs/doc/advanced.md
+++ b/docs/doc/advanced.md
@@ -2,7 +2,7 @@
## Optimize the shadowsocks server on Linux
-First of all, upgrade your Linux kernel to 3.5 or later.
+First of all, make sure your Linux kernel is reasonably up to date (4.9 or later recommended).
### Step 1, increase the maximum number of open file descriptors
@@ -51,7 +51,6 @@ net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
-net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
diff --git a/docs/doc/configs.md b/docs/doc/configs.md
index a404623c..cac410a1 100644
--- a/docs/doc/configs.md
+++ b/docs/doc/configs.md
@@ -26,11 +26,10 @@ Explanation of each field:
### Encryption Method
-The strongest option is an [AEAD cipher](/doc/aead.html). The recommended
-choice is "chacha20-ietf-poly1305" or "aes-256-gcm". Other
-[stream ciphers](/doc/stream.html) are implemented but do not provide
-integrity and authenticity. Unless otherwise specified the encryption method
-defaults to "table", which is **not secure**.
+The strongest option is an [AEAD cipher](/doc/aead). The recommended
+choice is "chacha20-ietf-poly1305" or "aes-256-gcm". For the latest
+AEAD-2022 ciphers, see [SIP022](/doc/sip022). [Stream ciphers](/doc/stream)
+are deprecated and do not provide integrity or authenticity.
## URI and QR code
@@ -48,21 +47,21 @@ ss://method:password@hostname:port
Note that the above URI doesn't follow RFC3986. It means the password here should be plain text, not percent-encoded.
-For example, we have a server at `192.168.100.1:8888` using `bf-cfb` encryption method and password `test/!@#:`. Then, with the plain URI `ss://bf-cfb:test/!@#:@192.168.100.1:8888`, we can generate the BASE64 encoded URI:
+For example, we have a server at `192.168.100.1:8888` using `chacha20-ietf-poly1305` encryption method and password `test/!@#:`. Then, with the plain URI `ss://chacha20-ietf-poly1305:test/!@#:@192.168.100.1:8888`, we can generate the BASE64 encoded URI:
```
-> console.log( "ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888") )
-ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
+> console.log( "ss://" + btoa("chacha20-ietf-poly1305:test/!@#:@192.168.100.1:8888") )
+ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp0ZXN0LyFAIzpAMTkyLjE2OC4xMDAuMTo4ODg4
```
To help organize and identify these URIs, you can append a tag after the BASE64 encoded string:
```
-ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
+ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTp0ZXN0LyFAIzpAMTkyLjE2OC4xMDAuMTo4ODg4#example-server
```
This URI can also be encoded to QR code. Then, just scan it with your Android / iOS devices:
### SIP002
-There is also a new URI scheme proposed in SIP002. Any client or server which supports SIP003 plugin should use SIP002 URI scheme instead.
+There is also a new URI scheme proposed in [SIP002](/doc/sip002). Any client or server which supports SIP003 plugin should use the SIP002 URI scheme instead.
diff --git a/docs/doc/deploying.md b/docs/doc/deploying.md
index 21092ced..722625a9 100644
--- a/docs/doc/deploying.md
+++ b/docs/doc/deploying.md
@@ -6,34 +6,7 @@ First, buy a server from any cloud provider. DigitalOcean is recommended by us:
[](https://www.digitalocean.com/?refcode=b7f5848a6ce2&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge)
-Then, install Linux on your servers, Ubuntu 20.04 is recommended.
-
-## Python
-
-shadowsocks-python is the initial version written by [@clowwindy]. It aims to provide a simple-to-use and easy-to-deploy implementation with basic features of shadowsocks.
-
-#### PyPI
-
-First, make sure you have Python 2.6 or 2.7.
-
-```bash
-$ python --version
-Python 2.6.8
-```
-
-Then install from PIP
-
-```bash
-$ pip install shadowsocks
-```
-
-#### GitHub
-
-Checkout the source codes and run the scripts directly.
-
-https://github.com/shadowsocks
-
-shadowsocks-python is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
+Then, install Linux on your servers, Ubuntu 22.04 or later is recommended.
## Go
@@ -41,10 +14,10 @@ shadowsocks-python is licensed under the [Apache License, Version 2.0](https://w
#### GitHub
-Use `go get` to install.
+Use `go install` to install.
```bash
-$ go get -u -v github.com/shadowsocks/go-shadowsocks2
+$ go install github.com/shadowsocks/go-shadowsocks2@latest
```
go-shadowsocks2 is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
@@ -61,7 +34,7 @@ go-shadowsocks2 is licensed under the [Apache License, Version 2.0](https://www.
Download pre-built binaries from the [GitHub releases](https://github.com/Jigsaw-Code/outline-ss-server/releases) or build it from source:
```
-go get github.com/Jigsaw-code/outline-ss-server
+go install github.com/Jigsaw-Code/outline-ss-server@latest
$(go env GOPATH)/bin/outline-ss-server -config=config.yml -metrics=127.0.0.1:9091
```
@@ -75,23 +48,13 @@ and low end boxes. It's a pure C implementation and has a very small footprint
#### Debian/Ubuntu:
-shadowsocks-libev is available in the official repository for Debian
-9("Stretch"), unstable, Ubuntu 16.10 and later derivatives:
+shadowsocks-libev is available in the official repository for Debian and Ubuntu:
```
sudo apt update
sudo apt install shadowsocks-libev
```
-For Debian Jessie users, please install it from jessie-backports:
-
-```
-sudo sh -c 'printf "deb http://httpredir.debian.org/debian jessie-backports
-main" > /etc/apt/sources.list.d/jessie-backports.list'
-sudo apt-get update
-sudo apt-get -t jessie-backports install shadowsocks-libev
-```
-
#### Docker
shadowsocks-libev is shipped also in containers, which makes it a great choice if your cloud provider is Docker-ready or if you aim to build a scalable solution.
@@ -176,11 +139,9 @@ $ cpan Net::Shadowsocks
There is a server.pl script under the `eg` directory. Put your `config.json` in the same directory as `server.pl` and
run the `server.pl` script there.
-Net::Shadowsocks is licensed under the [Artistic License (2.0)] (http://www.perlfoundation.org/artistic_license_2_0).
+Net::Shadowsocks is licensed under the [Artistic License (2.0)](http://www.perlfoundation.org/artistic_license_2_0).
-[@clowwindy]: https://github.com/clowwindy
-[@cyfdecyf]: https://github.com/cyfdecyf
[@madeye]: https://github.com/madeye
[@librehat]: https://github.com/librehat
[@zhou0]: https://github.com/zhou0
diff --git a/docs/doc/getting-started.md b/docs/doc/getting-started.md
index e2cbabf1..bd754fe3 100644
--- a/docs/doc/getting-started.md
+++ b/docs/doc/getting-started.md
@@ -4,7 +4,6 @@ First, you need to pick a shadowsocks server and client implementation. Any impl
## CLI implementations
-- [shadowsocks][ss]: The original Python implementation.
- [shadowsocks-libev][ss-libev]: Lightweight C implementation for embedded devices and low end boxes. Very small footprint (several megabytes) for thousands of connections.
- [go-shadowsocks2][go-ss2]: Go implementation focusing on core features and code reusability.
- [shadowsocks-rust][ss-rust]: A rust port of shadowsocks.
@@ -17,7 +16,6 @@ First, you need to pick a shadowsocks server and client implementation. Any impl