Script to Install Snell Server on Linux

#!/bin/bash

# Check package inventory based on available package manager
if command -v apt &> /dev/null; then
    echo "Updating apt package inventory..."
    sudo apt update
elif command -v yum &> /dev/null; then
    echo "Updating yum package inventory..."
    sudo yum makecache
elif command -v dnf &> /dev/null; then
    echo "Updating dnf package inventory..."
    sudo dnf makecache
else
    echo "Error: No supported package manager found (apt/yum/dnf)."
    exit 1
fi

# Check if unzip is installed, install if not
if ! command -v unzip &> /dev/null; then
    echo "unzip is not installed. Installing unzip..."
    if command -v apt &> /dev/null; then
        sudo apt install -y unzip
    elif command -v yum &> /dev/null; then
        sudo yum install -y unzip
    elif command -v dnf &> /dev/null; then
        sudo dnf install -y unzip
    else
        echo "Error: No supported package manager found (apt/yum/dnf)."
        exit 1
    fi
fi

# Download the snell-server executable
wget https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-amd64.zip -O /tmp/snell-server.zip

# Create the target directory
mkdir -p /opt/Surge

# Unzip the downloaded file to /opt/Surge
unzip /tmp/snell-server.zip -d /opt/Surge

# Add executable permissions to snell-server
chmod +x /opt/Surge/snell-server

# Change to /opt/Surge directory and run snell-server with 'y' to generate config
cd /opt/Surge
echo "y" | ./snell-server

# Create systemd service file
cat << EOF > /etc/systemd/system/snell-server.service
[Unit]
Description=Snell Proxy Server
After=network.target

[Service]
Type=simple
ExecStart=/opt/Surge/snell-server -c /opt/Surge/snell-server.conf
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
EOF

# Reload systemd daemon and enable the service
systemctl daemon-reload
systemctl enable snell-server.service
systemctl start snell-server.service

# Clean up temporary file
rm /tmp/snell-server.zip

This article was updated on June 4, 2025