Debian & Ubuntu 上部署 shadowsocks-libev 服务端

本文最后更新于 2020 年 4 月 17 日


本文以 Debian 10 (Buster) 系统为例,介绍如何搭建 ss-libev 服务端,本教程同样适用于 Ubuntu。客户端使用教程见这里

注:请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文以 sammy 用户为例,进行 shadowsocks-libev server 的建立,并默认已按初始化配置文章对服务器进行了配置。


准备

  • 可用的公网 IP 服务器(例如在 BandwagonHostVultr 等处购买的 VPS)
  • 基础 Linux 操作知识,并了解 vim 编辑器的基本使用方法

安装

安装 snapd

1
sudo apt update && sudo apt install snapd -y

安装 snap core:

1
sudo snap install core

安装 shadowsocks-libev

1
sudo snap install shadowsocks-libev

配置

编辑配置文件:

1
2
sudo mkdir -p /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev
sudo vim /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
1
2
3
4
5
6
7
8
9
10
{
"server":["::0","0.0.0.0"],
"server_port":端口,
"local_port":1080,
"password":"密码",
"timeout":60,
"method":"aes-256-gcm",
"mode":"tcp_and_udp",
"fast_open":false
}

自启

1
sudo vim /etc/systemd/system/[email protected]
/etc/systemd/system/[email protected]
1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Shadowsocks-Libev Custom Server Service for %I
After=network-online.target

[Service]
Type=simple
LimitNOFILE=65536
ExecStart=/usr/bin/snap run shadowsocks-libev.ss-server -c /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/%i.json

[Install]
WantedBy=multi-user.target

启动并检查

激活服务,以便开机自动启动:

1
sudo systemctl enable shadowsocks-libev-server@config

启动服务:

1
sudo systemctl start shadowsocks-libev-server@config

查看服务状态:

1
sudo systemctl status shadowsocks-libev-server@config

防火墙配置

1
sudo ufw allow 端口

至此,对服务端的部署配置愉快完成。


相关

Debian & Ubuntu 使用 ss-libev 客户端的方法,见这篇文章。

关于禁止 BT 或 P2P 流量的讨论,请详见利用 iptables 或 UFW 禁止 BT 流量一文。

References

shadowsocks/shadowsocks-libev

snap 安装 ss-server后 无法正常启动,需要额外安装 core

使用 snap 安装存在诸多问题

Can’t run shadowsocks from config file (Invalid config path)

Debian 从 snap 上安装 ss-libev

关于一键安装脚本安全优化的一点小小建议 #1011

Dynamic Users with systemd

systemd

Starting as a systemd service failed

Snap as systemd service: cannot create user directory

Where can Ubuntu snaps write data?

Environment variables

Snap layouts

Using in-development features in snapcraft.yaml

Systemd: Service File Examples

Mastodon