搭建 Snell Server

适用场景:为 Surge 客户端搭建一个轻量的自建代理服务端。本文参考 Surge | 部署 Snell Server – DivineEngine,并结合实际部署过程做了简化整理,从安装依赖到 systemd 托管全流程覆盖。

1. 获取管理权限

sudo -i

2. 安装依赖

APT 系统

sudo apt update
sudo apt install wget unzip vim

DNF 系统

sudo dnf install unzip

3. 下载 Snell Server

如果你的机器是 linux-amd64

wget https://dl.nssurge.com/snell/snell-server-v4.0.1-linux-amd64.zip

如果是 ARM 机器:

wget https://dl.nssurge.com/snell/snell-server-v4.0.1-linux-aarch64.zip

更多版本可参考官方页面: Snell Protocol 文档

4. 解压并赋权

AMD64:

sudo unzip snell-server-v4.0.1-linux-amd64.zip -d /usr/local/bin

ARM64:

sudo unzip snell-server-v4.0.1-linux-aarch64.zip -d /usr/local/bin

赋予执行权限:

chmod +x /usr/local/bin/snell-server

5. 编写配置文件

创建配置目录:

sudo mkdir -p /etc/snell

可以使用向导生成配置:

sudo snell-server --wizard -c /etc/snell/snell-server.conf

也可以手动创建:

sudo vim /etc/snell/snell-server.conf

示例配置:

[snell-server]
listen = 0.0.0.0:11807
psk = AijHCeos15IvqDZTb1cJMX5GcgZzIVE
ipv6 = false

参数说明:

  • listen:监听地址和端口
  • psk:连接密钥
  • ipv6:是否启用 IPv6

6. 配置 systemd 服务

sudo vim /lib/systemd/system/snell.service

写入以下内容:

[Unit]
Description=Snell Proxy Service
After=network.target

[Service]
Type=simple
User=nobody
Group=nogroup
LimitNOFILE=32768
ExecStart=/usr/local/bin/snell-server -c /etc/snell/snell-server.conf
AmbientCapabilities=CAP_NET_BIND_SERVICE
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=snell-server

[Install]
WantedBy=multi-user.target

注意:

  • 某些 Linux 发行版中没有 nogroup,可以改成 Group=nobody
  • 如果需要绑定特权端口,AmbientCapabilities=CAP_NET_BIND_SERVICE 很有用。

7. 启动服务

sudo systemctl daemon-reload
sudo systemctl enable snell
sudo systemctl start snell

常用命令:

sudo systemctl stop snell
sudo systemctl status snell
cat /etc/snell/snell-server.conf

8. 客户端示例

将服务端信息填入 Surge:

AWS-EC2-SG = snell, XXX.XXX.XXX.XXX, 11807, psk=AijHCeos15IvqDZTb1cJMX5GcgZzIVE, version=4, tfo=true

9. 一键脚本

如果你不想手动部署,也可以尝试以下脚本:

wget -O snell.sh --no-check-certificate https://raw.githubusercontent.com/getsomecat/Snell/master/snell_new.sh
chmod +x snell.sh
./snell.sh

验证与自查

  1. sudo systemctl status snell 显示 active(running)
  2. ss -lntup | grep 11807 确认监听端口正常(若改了端口以实际为准)
  3. 在 Surge 中添加节点后延迟测试通过,可正常访问外网
  4. sudo journalctl -u snell -e 无报错

参考