编译安装 shadowsocks-libev 服务端

前言

shadowsocks 服务端的常用版本有:

shadowsocks-libev 虽然 Github 项目仓库里标识为 Bug-fix-only,但是版本运行程序体积小,运行稳定,由于项目仓库未提供可执行文件,因此需要手动编译。

shadowsocks-rust 则是有在更新,项目仓库提供编译好的可执行文件,但目前还没有出现值得去使用的新功能。

所以还是选择较为稳定且占用内存小的 shadowsocks-libev 版本,下面进行手动编译的过程。

另外还需要编译安装带 AEAD 算法的库:

一、安装依赖

1
2
3
apt-get -y update

apt-get install -y gettext build-essential unzip gzip python3 curl openssl libssl-dev autoconf automake libtool gcc make perl cpio libpcre3 libpcre3-dev zlib1g-dev libev-dev libc-ares-dev

二、下载源码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
mkdir -p ~/src

cd ~/src/

# Mbed-TLS 2.28.0
wget https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v2.28.0.tar.gz

# libsodium 1.0.18
wget https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz

# shadowsocks-libev
git clone https://github.com/shadowsocks/shadowsocks-libev.git

三、编译安装

3.1 安装 Mbed-TLS 2.28.0

1
2
3
4
5
cd ~/src
tar -zxf v2.28.0.tar.gz
cd mbedtls-2.28.0
make SHARED=1 CFLAGS=-fPIC
make DESTDIR=/usr install

3.2 安装 libsodium 1.0.18

1
2
3
4
5
6
7
cd ~/src
tar -zxf libsodium-1.0.18.tar.gz
cd libsodium-1.0.18
./configure --prefix=/usr && make && make install
ldconfig -p
echo '/usr/lib' > /etc/ld.so.conf.d/usr_lib.conf
ldconfig

3.3 安装 shadowsocks-libev

1
2
3
4
5
6
7
cd ~/src/shadowsocks-libev
apt -y install pkg-config
git submodule update --init --recursive
git submodule init && git submodule update
./autogen.sh
./configure --disable-documentation
make && make install

四、shadowsocks-libev 配置

4.1 配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
mkdir /etc/shadowsocks-libev/
cat > /etc/shadowsocks-libev/config.json <<EOF
{
    "server": ["[::0]", "0.0.0.0"],
    "server_port": 12345,
    "password": "password",
    "method": "aes-256-gcm",
    "mode":"tcp_and_udp",
    "timeout": 300,
    "fast_open": false,
    "workers": 1
}
EOF

4.2 配置系统服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
cat > /usr/lib/systemd/system/ss.service <<EOF
[Unit]
Description=Shadowsocks-libev Service
After=network.target

[Service]
Type=simple
User=nobody
Group=nogroup
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/config.json


[Install]
WantedBy=multi-user.target

EOF

4.3 运行服务

1
2
3
systemctl enable ss
systemctl start ss
systemctl status ss

参考资料: