本文最后更新于 2024-05-15,文章原本内容可能已经过时,请查看是否有更新内容。

前言

本文参考: 简单搭建Snell服务, deploying-a-snell-server

原文已经十分清晰明了,这里只是搬运一下以及给自己总结:

可选择手搓或者docker,点击右边目录跳转即可,强烈建议docker


snell手搓教程

如果连接VPS之后不是root用户请先执行以下命令,获取权限:

sudo -i

然后执行以下命令

# APT(debian\ubuntu)
sudo apt update && apt upgrade -y && sudo apt install wget unzip

# DNF (centos)
sudo dnf install unzip

搭建Snell服务端

注意区分自己是 amd还是 arm

这里我的vps是amd所以我选择了linux-amd64,如果你是arm或者amd以外其他系统,请去此网站找到对应版本名称

amd

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

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

arm

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

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

然后赋予服务权限

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

再使用snell的wizard生成一个随机配置文件

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

更改配置文件(建议略过)

⚠️前排提示:接下来这一步,如果不需要更改什么可以略过这一步,强烈建议略过,直接到下一步 配置systemd文件,省事

输入以下命令

sudo apt-get install vim

sudo vim /etc/snell-server.conf

如图

操作方法:

i 进入编辑模式,然后用键盘右下角的方向键移动光标,可以把端口改成自己想要的,如果不用 obfs就不用加 obfs = http 了,编辑完后按 esc 退出编辑模式,然后输入冒号 :wq 保存退出即可

⚠️注意:开obfs特征会多一点,按理来说使用起来会更加危险一点,但是一般小流量没啥事,不建议开

如果要开 ipv6的话,就把 listen 那一行的 0.0.0.0 改成 ::0 ,然后把下面的 ipv6=false 改成 ipv6=true 即可

配置 Systemd 文件

第一种方法(建议第二种)

sudo apt-get install vim

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

然后会看到啥都没有,接下来只需要按i 进入编辑模式,然后把下面命令复制进去

[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-server.conf
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=snell-server

[Install]
WantedBy=multi-user.target

然后按ESC退出编辑模式,输入 :wq 保存退出即可

第二种方法

直接复制这一串到vps

cat > /lib/systemd/system/snell.service << EOF
[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-server.conf
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=snell-server

[Install]
WantedBy=multi-user.target

EOF

然后 回车 即可

注意:在一些 Linux 发行版 (CentOS7) 中并无 nogroup 群组,但可以尝试把Group=nogroup修改成 Group=nobody 解决。

重载服务并启动

依次运行以下命令

# 重载服务
sudo systemctl daemon-reload

# 开机运行 Snell
sudo systemctl start snell

# 开启 Snell
sudo systemctl enable snell

## 查看 Snell 状态
sudo systemctl status snell

查看snell状态显示active就代表成功了,按 q 退出

如果想要停止snell服务可以执行以下命令

sudo systemctl stop snell

surge上导入节点

在VPS输入以下代码查看自己的snell配置

cat /etc/snell-server.conf

就会得到以下格式(示例):

[snell-server]
listen = 0.0.0.0:xxxx(这里表示监听地址和端口)
psk = xxxxxxxxxxxxxxxxxxxx(这里是密钥)
ipv6 = false
obfs = http //⚠️注意可以不开

现在来到surge,我以ios为例:

其他和我一样就行,我这里打开TCP Fast Open了,其实不建议打开

其他和我一样就行,我这里打开TCP Fast Open了,其实不建议打开

至此全部完成 mac surge步骤差不多,找到对应的填就行!!

卸载snell

#停止原snell服务
sudo systemctl disable snell
sudo systemctl stop snell

#移除所有snell文件
rm -rf snell-server-v4.0.0-linux-amd64.zip
rm -rf /usr/local/bin/snell-server
rm -rf /lib/systemd/system/snell.service
rm -rf /etc/snell-server.conf 

至此,原来手搓的snell就没了


docker搭建snell教程

用docker compose方便多了,强烈建议!!!

安装docker

依次输入以下命令

apt-get update && apt-get -y upgrade

#获取docker(国外)
curl -fsSL https://get.docker.com | bash -s docker

#如果之前没安装过docker,请忽略这里
#如果之前安装了compose 2.0以下的版本的话,请先执行卸载指令:
sudo rm /usr/local/bin/docker-compose
#如果之前安装了compose 2.0以上的版本的话,请先执行卸载指令:
rm -rf .docker/cli-plugins/

#下载最新compose
apt-get install docker-compose-plugin -y

然后输入以下命令来检测compose版本

docker compose version 

正常的话会出现一个版本号

好了,现在docker已经安装好了,

搭建snell

创建docker-compose.yml文件夹

mkdir -p /root/snelldocker/snell-conf

⚠️注意:我这里的snelldocker文件夹名可以自行更改,但接下来的命令也要记得对应更改,最好就是啥也不改,省事

接着输入下面这一串,然后直接 回车 即可,注意区分自己是 amd还是 arm

amd

cat > /root/snelldocker/docker-compose.yml << EOF
version: "3.8" 
services:
  snell:
    image: accors/snell:latest
    container_name: snell
    restart: always
    network_mode: host
    volumes:
      - ./snell-conf/snell.conf:/etc/snell-server.conf
    environment:
      - SNELL_URL=https://dl.nssurge.com/snell/snell-server-v4.0.1-linux-amd64.zip
EOF

注意其他服务端文件请去此网站查找

arm

cat > /root/snelldocker/docker-compose.yml << EOF
version: "3.8" 
services:
  snell:
    image: accors/snell:latest
    container_name: snell
    restart: always
    network_mode: host
    volumes:
      - ./snell-conf/snell.conf:/etc/snell-server.conf
    environment:
      - SNELL_URL=https://dl.nssurge.com/snell/snell-server-v4.0.1-linux-aarch64.zip
EOF

注意其他服务端文件请去此网站查找

接下来再输入下面这一串命令,如需要可以自行更改,如果要开 ipv6的话,就把 listen 那一行的 0.0.0.0 改成 ::0 ,然后把下面的 ipv6=false 改成 ipv6=true 即可,接着 回车

cat > /root/snelldocker/snell-conf/snell.conf << EOF
[snell-server]
listen = 0.0.0.0:28261   # 这里28261是端口
psk = GLk1ff4wuQNCDSqr92WwsHwe8KBjy3S  # 这里是密钥,可以自行更改
ipv6 = false
EOF

注意,这里我没有把obfs加入了,如果自己加入了obfs=http记得在surge的配置文件也加上,不建议

现在所有的配置已经完成了!!!

依次输入以下命令即可

cd /root/snelldocker

docker compose up -d

完成之后可以输入以下命令查看日志,来查看是否正常运行snell服务

docker logs -f snell

按 ctrlc 退出日志

那么现在就可以去surge填写配置了,就是这么简单,导入surge教程看上面手搓示例,点击跳转

docker snell更新教程

如果之后更新了就可以输入以下命令完成更新

cd /root/snelldocker && docker compose pull && docker compose up -d

如果之后老刘更新服务端文件的链接了,那就输入以下命令

sudo apt-get install vim

sudo vim /root/snelldocker/docker-compose.yml

把光标移动到下图中红框框处,按 i 进入编辑模式,按 delete= 后面的链接全部删除,然后把新服务端链接复制进去,然后 esc 退出编辑模式,然后 :wq 退出保存,如果操作错误不要慌,输入 :q! 强制退出不保存,重来即可!注意要是英文输入法!

新服务端链接请去此网站查找

然后再输入以下命令即可

cd /root/snelldocker
 
docker stop snell && docker rm snell

docker compose pull

docker compose up -d

至此,docker compose搭建snell就全部结束啦!!


⚠️一些小技巧

增加内核缓冲区大小可以显着提高 UDP 性能

sysctl -w net.core.rmem_max=26214400
sysctl -w net.core.rmem_default=26214400