jinqians/snell-server

By jinqians

Updated 11 days ago

Snell Server Docker 镜像,支持 v4/v5/v6 beta 和 ShadowTLS v3

Image
Networking
0

2.0K

jinqians/snell-server repository overview

Snell Server Docker 镜像

Docker Hub 镜像:jinqians/snell-server

这个镜像支持 Snell v4 / v5 / v6 beta,并可选启用 ShadowTLS v3。容器首次启动时可以自动生成 Snell 配置、Snell PSK 和 ShadowTLS 密码。

标签说明

标签Snell 版本说明
latestv5.0.1固定指向 v5.0.1,不指向 v6
v4v4.1.1当前 v4 标签
v5v5.0.1当前 v5 标签
v6v6.0.0b4当前 v6 beta 标签
v4.0.0, v4.0.1, v4.1.0, v4.1.1v4固定版本标签
v5.0.0, v5.0.1v5固定版本标签
v6.0.0b1, v6.0.0b2, v6.0.0b3, v6.0.0b4v6 beta固定版本标签

架构支持

版本平台
v4 / v5linux/amd64, linux/arm64, linux/arm/v7
v6linux/amd64, linux/arm64

切换版本时,需要同时修改镜像标签和 SNELL_VER。例如使用 jinqians/snell-server:v5.0.1 时,SNELL_VER 仍填写 v5

直接运行 Snell

推荐挂载 /etc/snell 到宿主机目录。容器首次启动时会自动生成 snell-server.conf 和 PSK,后续升级可以继续复用。

mkdir -p ./snell-config

docker run -d --name snell-server \
  --restart unless-stopped \
  -p 6160:6160/tcp \
  -p 6160:6160/udp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v5 \
  -v ./snell-config:/etc/snell \
  jinqians/snell-server:v5

查看日志、配置和自动生成的 PSK:

docker logs snell-server
cat ./snell-config/snell-server.conf

手动指定 PSK:

docker run -d --name snell-server \
  --restart unless-stopped \
  -p 6160:6160/tcp \
  -p 6160:6160/udp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v5 \
  -e SNELL_PSK=your_16_plus_char_psk \
  -v ./snell-config:/etc/snell \
  jinqians/snell-server:v5

如果 ./snell-config/snell-server.conf 已存在,容器会直接使用已有配置,不会再用环境变量覆盖它。v5 和 v6 建议同时映射 TCP 和 UDP。v4 只需要 TCP,保留 UDP 映射也不会影响使用。手动设置 PSK 时建议不少于 16 个字符,便于兼容 v6。

Surge 直连 Snell 示例:

HK = snell, 服务器IP, 6160, psk = your_16_plus_char_psk, version = 5, reuse = true, tfo = true

运行指定版本

# v4 当前标签
docker run -d --name snell-v4 \
  --restart unless-stopped \
  -p 6160:6160/tcp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v4 \
  -v ./snell-v4-config:/etc/snell \
  jinqians/snell-server:v4

# v5 固定版本
docker run -d --name snell-v5 \
  --restart unless-stopped \
  -p 6160:6160/tcp \
  -p 6160:6160/udp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v5 \
  -v ./snell-v5-config:/etc/snell \
  jinqians/snell-server:v5.0.1

# v6 当前 beta 标签
docker run -d --name snell-v6 \
  --restart unless-stopped \
  -p 6160:6160/tcp \
  -p 6160:6160/udp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v6 \
  -v ./snell-v6-config:/etc/snell \
  jinqians/snell-server:v6

Snell + ShadowTLS

启用 ShadowTLS 后,客户端连接 ShadowTLS 对外端口。Snell 后端只在容器内监听 127.0.0.1:6160,通常不需要映射 Snell 原始端口。

mkdir -p ./snell-shadowtls-config

docker run -d --name snell-shadowtls \
  --restart unless-stopped \
  -p 8443:8443/tcp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v5 \
  -e SNELL_LISTEN_HOST=127.0.0.1 \
  -e SHADOWTLS_ENABLE=1 \
  -e SHADOWTLS_PORT=8443 \
  -e SHADOWTLS_SNI=www.microsoft.com \
  -v ./snell-shadowtls-config:/etc/snell \
  jinqians/snell-server:v5

查看客户端需要的密钥:

docker logs snell-shadowtls
grep '^psk' ./snell-shadowtls-config/snell-server.conf
cat ./snell-shadowtls-config/shadowtls-password

手动指定密钥:

docker run -d --name snell-shadowtls \
  --restart unless-stopped \
  -p 8443:8443/tcp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v5 \
  -e SNELL_LISTEN_HOST=127.0.0.1 \
  -e SNELL_PSK=your_16_plus_char_psk \
  -e SHADOWTLS_ENABLE=1 \
  -e SHADOWTLS_PORT=8443 \
  -e SHADOWTLS_PASSWORD=your_shadowtls_password \
  -e SHADOWTLS_SNI=www.microsoft.com \
  -v ./snell-shadowtls-config:/etc/snell \
  jinqians/snell-server:v5

客户端填写:

项目填写内容
服务器VPS 公网 IP 或域名
端口ShadowTLS 对外端口,示例为 8443
Snell 版本5
Snell PSKsnell-server.conf 里的 psk
ShadowTLS 密码shadowtls-password 的内容,或手动传入的 SHADOWTLS_PASSWORD
ShadowTLS SNISHADOWTLS_SNI,默认 www.microsoft.com
ShadowTLS 版本3

Surge 示例:

HK = snell, 服务器IP, 8443, psk = your_16_plus_char_psk, version = 5, reuse = true, tfo = true, shadow-tls-password = your_shadowtls_password, shadow-tls-sni = www.microsoft.com, shadow-tls-version = 3

Docker Compose:直连 Snell

创建 compose.yml

services:
  snell:
    image: jinqians/snell-server:v5
    container_name: snell-server
    restart: unless-stopped
    ports:
      - "6160:6160/tcp"
      - "6160:6160/udp"
    environment:
      - SNELL_PORT=6160
      - SNELL_VER=v5
    volumes:
      - ./snell-config:/etc/snell

启动、查看配置、停止:

docker compose up -d
docker logs snell-server
cat ./snell-config/snell-server.conf
docker compose down

手动指定 PSK 时,在 environment 中增加:

      - SNELL_PSK=your_16_plus_char_psk

Docker Compose:Snell + ShadowTLS

创建 compose.yml

services:
  snell-shadowtls:
    image: jinqians/snell-server:v5
    container_name: snell-shadowtls
    restart: unless-stopped
    ports:
      - "8443:8443/tcp"
    environment:
      - SNELL_PORT=6160
      - SNELL_VER=v5
      - SNELL_LISTEN_HOST=127.0.0.1
      - SHADOWTLS_ENABLE=1
      - SHADOWTLS_PORT=8443
      - SHADOWTLS_SNI=www.microsoft.com
    volumes:
      - ./snell-shadowtls-config:/etc/snell

启动、查看密钥、停止:

docker compose up -d
docker logs snell-shadowtls
grep '^psk' ./snell-shadowtls-config/snell-server.conf
cat ./snell-shadowtls-config/shadowtls-password
docker compose down

手动指定 Snell PSK 和 ShadowTLS 密码时,在 environment 中增加:

      - SNELL_PSK=your_16_plus_char_psk
      - SHADOWTLS_PASSWORD=your_shadowtls_password

更新

Docker:

docker pull jinqians/snell-server:v5
docker rm -f snell-server
docker run -d --name snell-server \
  --restart unless-stopped \
  -p 6160:6160/tcp \
  -p 6160:6160/udp \
  -e SNELL_PORT=6160 \
  -e SNELL_VER=v5 \
  -v ./snell-config:/etc/snell \
  jinqians/snell-server:v5

Docker Compose:

docker compose pull
docker compose up -d

删除 Docker 容器:

docker rm -f snell-server

环境变量

变量默认值说明
SNELL_VERv4Snell 配置模式:v4v5v6
SNELL_PORT6160Snell 后端监听端口
SNELL_PSK自动生成Snell PSK;配置文件已存在时不会覆盖已有 psk
SNELL_LISTEN_HOST0.0.0.0Snell 监听地址;搭配 ShadowTLS 时使用 127.0.0.1
SNELL_IPV6truev4 / v6 配置项
SNELL_TFOtruev4 / v6 配置项
SHADOWTLS_ENABLE0设置为 1 启用 ShadowTLS
SHADOWTLS_PORT8443ShadowTLS 对外监听端口
SHADOWTLS_PASSWORD自动生成ShadowTLS 密码,会保存到 /etc/snell/shadowtls-password
SHADOWTLS_SNIwww.microsoft.comShadowTLS TLS 伪装 SNI

Tag summary

Content type

Image

Digest

sha256:8e387bad8

Size

10.3 MB

Last updated

11 days ago

docker pull jinqians/snell-server