Sign inSign up

axelburks/snell-server-docker

By axelburks

•Updated about 1 month ago

Image
0

1.2K

axelburks/snell-server-docker repository overview

⁠snell-server-docker

Build Docker Pulls Docker Stars Image Size Version

A lightweight, multi-architecture Docker image for Snell⁠.

⁠Features

  • Multi-architecture — linux/amd64, linux/386, linux/arm64, linux/arm/v7
  • Configurable via environment variables — listen, psk, mode, DNS preference, obfs and extra args
  • Random PSK — a 32-character key is generated automatically when PSK is not provided
  • Minimal base — built on debian:stable-slim⁠

⁠Usage

⁠Start a container
docker run -d --name=snell -v $HOME/app/snell:/etc/snell --restart always -p 8388:8388 -p 8388:8388/udp axelburks/snell-server-docker

On first run a config is generated under /etc/snell/ (mounted to $HOME/app/snell above). If PSK is not provided, a random one is generated — read it from the logs.

⁠Display config
docker logs snell
⁠Config in Surge
Proxy = snell, [SERVER ADDRESS], 8388, psk=xxx, version=6, reuse = true, tfo = true

⁠Environment Variables

namedefaultdescription
LISTEN0.0.0.0:8388listen addresses, e.g. '0.0.0.0:8388,[::]:8388' for dual-stack
PSK[RANDOM]pre-shared key; auto-generated when unset
MODE(unset)crypto/obfuscation mode, e.g. default, unshaped, unsafe-raw
DNS_IP_PREFERENCE(unset)DNS IP family preference, e.g. default, prefer-ipv4, prefer-ipv6, ipv4-only, ipv6-only
OBFS(unset)obfuscation mode, e.g. http, off
OBFS_HOST(unset)obfuscation host, nly used when OBFS=http
ARGS(unset)extra arguments appended to snell-server

⁠Build

# one-time: create and use a multi-arch capable builder
docker buildx create --name multi --driver docker-container --use

# one-time: set up a proxy for multi-arch builder on OrbStack
docker buildx create --name multi --driver docker-container --use \
  --driver-opt env.http_proxy=http://proxy.orb.internal:8305 \
  --driver-opt env.https_proxy=http://proxy.orb.internal:8305

# build with the default SNELL_VERSION in the Dockerfile
docker buildx build \
  --platform linux/amd64,linux/386,linux/arm64 \
  -t axelburks/snell-server-docker:latest \
  -t axelburks/snell-server-docker:v6.0.0rc2 \
  --push .

# build with a custom SNELL_VERSION
docker buildx build \
  --platform linux/amd64,linux/386,linux/arm64 \
  -t axelburks/snell-server-docker:latest \
  -t axelburks/snell-server-docker:v6.0.0rc2 \
  --build-arg SNELL_VERSION=v6.0.0rc2 \
  --push .

Add linux/arm/v7 to --platform after surge releases armv7l.


⁠Release

Regular release (recommended) — builds and pushes both :latest and :vX.Y.Z to Docker Hub:

# edit ARG SNELL_VERSION=vX.Y.Z in the Dockerfile
git commit -am "update snell to vX.Y.Z"
git push

Publish a single version without touching latest — builds and pushes only :vX.Y.Z to Docker Hub:

git tag vX.Y.Z
git push origin vX.Y.Z

Tag summary

Content type

Image

Digest

sha256:05abf8c93…

Size

29.6 MB

Last updated

about 1 month ago

docker pull axelburks/snell-server-docker