OpenSnell

Installation

One-line installer for Linux + systemd, manual builds for everything else.

One-line server installer (Linux + systemd)

bash <(curl -fsSL https://s.ee/opensnell)

The interactive installer:

  • Lets you pick between OpenSnell (default, GPLv3, all-platform) or the official Surge snell-server v5.0.1 (closed-source, Linux only).
  • Generates a random PSK with openssl if you leave it blank.
  • Picks an unused random port in 10000–60000 if you leave the port blank.
  • Writes /etc/snell/snell-server.conf, installs a systemd unit (snell-server.service), opens the port in UFW / firewalld if either is active, and starts the service.
  • Re-run with reconfigure, update, uninstall, start, stop, restart, status, or info — see ./install.sh help.

Installing the alpha channel

The alpha branch tracks experimental features ahead of stable release (currently: TUN inbound, fake-IP DNS, tcp-brutal CC — none of which the official Surge snell-server ships). CI publishes a rolling pre-release tagged alpha on every push to that branch; the installer can pull from it via --alpha:

bash <(curl -fsSL https://s.ee/opensnell) install --alpha

The channel is persisted to /etc/snell/.install_meta, so subsequent update runs stay on alpha without re-passing the flag. To switch back to the stable channel, run install again without the flag.

Alpha builds carry the same on-the-wire compatibility guarantees as stable (full interop with Surge snell-server v5.0.1 is part of CI), but the extra features above are not yet part of the official Snell spec and may be removed or reshaped without warning. Use on production systems at your own risk.

Build from source

go build -o snell-server ./cmd/snell-server
go build -o snell-client ./cmd/snell-client

Or fetch directly with go install:

go install github.com/missuo/opensnell/cmd/snell-server@latest
go install github.com/missuo/opensnell/cmd/snell-client@latest

Minimal systemd unit

If you're not using the installer but want systemd supervision:

[Unit]
Description=OpenSnell server
After=network.target

[Service]
ExecStart=/usr/local/bin/snell-server -c /etc/snell/snell-server.conf
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Next steps

On this page