| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
🚀 One-click slipstream-rust server deployment and management
A comprehensive automation script for deploying and managing slipstream-rust DNS tunnel servers on Linux systems. This script handles everything from building from source to configuration, making DNS tunnel deployment effortless.
A high-performance Rust (Axum) + React (Vite) admin panel for managing Slipstream VPN users, traffic quotas, and nameserver load balancing.
slipstream-panel/ ├── crates/ │ ├── server/ # Axum HTTP server + API routes │ │ ├── src/ │ │ │ ├── main.rs # Server entry point │ │ │ ├── config.rs # Configuration management │ │ │ ├── error.rs # Error types │ │ │ ├── middleware/ # Auth middleware │ │ │ └── routes/ # API route handlers │ │ │ ├── clients.rs # User management endpoints │ │ │ ├── nameservers.rs # Nameserver endpoints │ │ │ ├── server.rs # Server config endpoints │ │ │ └── export.rs # Export endpoints │ │ └── Cargo.toml │ ├── db/ # SQLite database layer │ │ ├── src/ │ │ │ ├── lib.rs # Database operations │ │ │ ├── models.rs # Data models │ │ │ └── schema.rs # Database schema │ │ └── Cargo.toml │ ├── traffic/ # Traffic accounting + quota enforcement │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ ├── counter.rs # Atomic traffic counters │ │ │ └── quota.rs # Quota enforcement │ │ └── Cargo.toml │ ├── export/ # Connection string export │ │ ├── src/ │ │ │ ├── lib.rs │ │ │ ├── exporter.rs # Export logic │ │ │ ├── slipnet_enc.rs # SlipNet format │ │ │ └── ssh_url.rs # SSH URL format │ │ └── Cargo.toml │ └── tunnel/ # Slipstream tunnel management │ ├── src/ │ │ ├── lib.rs │ │ ├── balancer.rs # Load balancing logic │ │ └── load_balancer.rs # Nameserver manager │ └── Cargo.toml ├── frontend/ # React + Vite admin panel │ ├── src/ │ │ ├── components/ # React components │ │ │ ├── ConfigPanel.tsx # Server config UI │ │ │ ├── NameserverSelector.tsx │ │ │ └── ... │ │ ├── api/ # API client │ │ │ └── config.ts │ │ └── App.tsx │ ├── package.json │ └── vite.config.ts ├── migrations/ # SQL migrations ├── Dockerfile # Container image ├── docker-compose.yml ├── install-panel.sh # One-line installer └── Cargo.toml # Workspace config
| Crate | Purpose |
|---|---|
| server | Axum-based HTTP server with REST API endpoints |
| db | SQLite database with models and schema definitions |
| traffic | Atomic traffic counters and quota enforcement |
| export | Connection string export in multiple formats |
| tunnel | Load balancer and nameserver management |
bash <(curl -Ls https://raw.githubusercontent.com/SireJeff/slipstreamGUI/main/install-panel.sh)export PANEL_ADMIN_USER="admin"
export PANEL_ADMIN_PASS="your-secure-password"
export PANEL_PORT="8080"
export PANEL_SSH_PORT="2222"
export PANEL_SOCKS_PORT="1080"
export PANEL_DNS_PORT="5300"
curl -Ls https://raw.githubusercontent.com/SireJeff/slipstreamGUI/main/install-panel.sh | bash# Start the panel
sudo systemctl start slipstream-panel
# Stop the panel
sudo systemctl stop slipstream-panel
# Restart the panel
sudo systemctl restart slipstream-panel
# View logs
sudo journalctl -u slipstream-panel -f
# Check status
sudo systemctl status slipstream-panel
# Uninstall
bash <(curl -Ls https://raw.githubusercontent.com/SireJeff/slipstreamGUI/main/install-panel.sh) uninstall| Method | Endpoint | Description |
|---|---|---|
| GET | /health | Health check |
| GET | /api/export/options | Available export formats |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/clients | List all clients |
| POST | /api/clients | Create new client |
| GET | /api/clients/:id | Get client details |
| PUT | /api/clients/:id | Update client |
| DELETE | /api/clients/:id | Delete client |
| POST | /api/clients/:id/recharge | Recharge client traffic quota |
| GET | /api/clients/:id/qrcode | Get client QR code |
| GET | /api/clients/:id/config | Get client configuration |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/nameservers | List all nameservers |
| POST | /api/nameservers | Create nameserver |
| GET | /api/nameservers/:id | Get nameserver details |
| PUT | /api/nameservers/:id | Update nameserver |
| DELETE | /api/nameservers/:id | Delete nameserver |
| POST | /api/nameservers/:id/health | Check nameserver health |
| GET | /api/nameservers/recommendation | Get load balancer recommendation |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/server/config | Get server configuration |
| PUT | /api/server/config | Update server configuration |
| GET | /api/server/stats | Get server statistics |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/export/clients | Export all clients |
| GET | /api/export/config | Export server configuration |
| GET | /api/export/qr-codes | Export all QR codes |
| Setting | Type | Default | Description |
|---|---|---|---|
| server_ip | string | - | Server public IP address |
| ssh_port | integer | 2222 | SSH server port |
| socks_port | integer | 1080 | SOCKS proxy port |
| dns_port | integer | 5300 | DNS tunnel port |
| panel_port | integer | 8080 | Admin panel port |
| slipstream_public_key | string | - | TLS certificate for clients |
| slipstream_private_key | string | - | TLS private key |
| Setting | Type | Default | Description |
|---|---|---|---|
| default_traffic_limit_gb | integer | 5 | Default traffic quota per user (GB) |
| default_max_connections | integer | 1 | Default max concurrent connections |
| mtu | integer | 1400 | Maximum Transmission Unit |
| tunnel_mode | string | 'socks' | Tunnel mode: 'ssh', 'socks', or 'custom' |
| congestion_control | string | 'bbr' | Algorithm: 'bbr' or 'dcubic' |
| keep_alive_interval | integer | 400 | Keep-alive interval (ms) |
| gso_enabled | boolean | false | Enable UDP GSO |
| dns_transport | string | 'udp' | DNS transport: 'udp' or 'tcp' |
| Setting | Type | Default | Description |
|---|---|---|---|
| domain | string | - | Nameserver domain |
| public_key | string | - | Nameserver public key |
| assigned_users | integer | 0 | Current user count |
| max_users | integer | 50 | Maximum users |
| is_healthy | boolean | true | Health status |
| priority | integer | 0 | Load balancer priority (lower = higher) |
The panel uses a least-loaded with priority algorithm for nameserver selection:
Example response:
{
"nameserver_id": 2,
"domain": "ns2.example.com",
"load_percent": 10.0,
"available_slots": 45,
"reason": "Selected based on priority 1 and 10.0% load"
}# Backend setup
cargo build --release
cargo test --all
# Frontend setup
cd frontend
npm install
npm run build
npm run test# Backend (Rust)
cargo test --all
# Frontend (React)
cd frontend && npm run test# Clone repository
git clone https://github.com/SireJeff/slipstreamGUI.git
cd slipstreamGUI/slipstream-panel-worktree
# Create environment file
cat > .env << EOF
ADMIN_PASSWORD=your-secure-password
ENCRYPTION_KEY=32-byte-long-encryption-key-change-me
EOF
# Start services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down| Port | Protocol | Description |
|---|---|---|
| 8080 | TCP | Admin panel web interface |
| 5300 | UDP | DNS tunnel listener |
| 2222 | TCP | SSH server |
| Volume | Description |
|---|---|
| ./data | Persistent database storage |
# Build image
docker build -t slipstream-panel:latest .
# Run container
docker run -d \
--name slipstream-panel \
-p 8080:8080 \
-p 5300:5300/udp \
-p 2222:2222 \
-v $(pwd)/data:/data \
-e ADMIN_PASSWORD=admin \
slipstream-panel:latestBefore using this script, you need to properly configure your domain's DNS records. Here's the required setup:
Go into your name registrar's configuration panel and add these records:
| Type | Name | Points to |
|---|---|---|
| A | ns.example.com | 203.0.113.2 |
| NS | s.example.com | ns.example.com |
Important: Wait for DNS propagation (can take up to 24 hours) before testing your tunnel.
One-command installation:
bash <(curl -Ls https://raw.githubusercontent.com/SireJeff/slipstreamGUI/main/slipstream-rust-deploy.sh)This command will:
Note: For supported platforms (Linux x86_64, ARM64, ARMv7, RISC-V 64, MIPS64, MIPS64LE, MIPS, MIPSLE, macOS ARM64, macOS Intel), prebuilt binaries are used for faster installation. For other architectures, the script will build from source which may take 10-30 minutes.
After setting up the server, you can connect to it using the slipstream-rust client. You have two options:
SlipStreamGUI is a modern, cross-platform GUI client for SlipStream VPN that provides secure, system-wide tunneling through an HTTP proxy interface. It's the easiest way to connect to your SlipStream server.
Download the latest release for your platform:
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | SlipStream-GUI-macOS-ARM64.dmg |
| macOS (Intel) | SlipStream-GUI-macOS-Intel.dmg |
| Windows (64-bit) | SlipStream-GUI-Windows-x64.exe |
| Windows (32-bit) | SlipStream-GUI-Windows-x86.exe |
| Linux (x86_64) AppImage | SlipStream-GUI-Linux-x64.AppImage |
| Linux (x86_64) DEB | SlipStream-GUI-Linux-x64.deb |
Or visit the Releases page for all available downloads.
If your PC and mobile device are on the same Wi-Fi network, you can configure your mobile device to use your PC's internet connection (including the VPN) through the proxy.
Prerequisites:
For more information, visit the SlipStreamGUI repository.
Slipstream Client for Android is a native Android VPN client that provides full-tunnel connectivity via TUN + tun2socks.
| Architecture | Download |
|---|---|
| ARM64 (arm64-v8a) | app-arm64-v8a-release.apk |
| ARMv7 (armeabi-v7a) | app-armeabi-v7a-release.apk |
| x86 | app-x86-release.apk |
| x86_64 | app-x86_64-release.apk |
Or visit the Releases page for all versions.
For advanced users who prefer command-line tools or need automation, you can use the slipstream-rust client binaries directly.
Prebuilt client binaries are available for the following platforms:
| Platform | Download |
|---|---|
| Linux (x86_64) | slipstream-client-linux-amd64 |
| Linux (ARM64) | slipstream-client-linux-arm64 |
| Linux (ARMv7) | slipstream-client-linux-armv7 |
| Linux (RISC-V 64) | slipstream-client-linux-riscv64 |
| Linux (MIPS64) | slipstream-client-linux-mips64 |
| Linux (MIPS64LE) | slipstream-client-linux-mips64le |
| Linux (MIPS) | slipstream-client-linux-mips |
| Linux (MIPSLE) | slipstream-client-linux-mipsle |
| Windows (x86_64) | slipstream-client-windows-amd64.exe |
| macOS (ARM64) | slipstream-client-darwin-arm64 |
| macOS (Intel) | slipstream-client-darwin-amd64 |
# Download the client for your platform
curl -Lo slipstream-client https://github.com/SireJeff/slipstreamGUI/releases/latest/download/slipstream-client-linux-amd64
chmod +x slipstream-client
# Run the client (connects to your server via DNS tunnel)
./slipstream-client --resolver YOUR_SERVER_IP:53 --domain s.example.com# Download the client
Invoke-WebRequest -Uri "https://github.com/SireJeff/slipstreamGUI/releases/latest/download/slipstream-client-windows-amd64.exe" -OutFile "slipstream-client.exe"
# Run the client
.\slipstream-client.exe --resolver YOUR_SERVER_IP:53 --domain s.example.comWindows Tip: slipstream-rust relies on the Microsoft Visual C++ operating environment. If an error prompts "Cannot find MSVC*.dll" when the program starts, please click the link below to download and install the Microsoft Visual C++ operating environment.
Download the latest supported version of Visual C++ Redistributable Package | Microsoft Docs
| Option | Description | Default | Example |
|---|---|---|---|
| --resolver, -r | DNS resolver address (your server) | Required | --resolver 203.0.113.2:53 |
| --authoritative | Use authoritative mode for resolver | - | --authoritative 203.0.113.2:53 |
| --domain, -d | Tunnel domain (configured on server) | Required | --domain s.example.com |
| --tcp-listen-port, -l | Local TCP port to listen on | 5201 | -l 5201 |
| --cert | Path to server certificate for pinning | - | --cert server.pem |
| --congestion-control, -c | Congestion control algorithm | - | -c bbr or -c dcubic |
| --keep-alive-interval, -t | Keep-alive interval in ms | 400 | -t 500 |
| --gso | Enable UDP GSO (Generic Segmentation Offload) | Disabled | --gso |
Note on GSO: GSO (Generic Segmentation Offload) is a Linux kernel feature that improves UDP performance by batching multiple packets together and letting the NIC hardware handle segmentation. This reduces CPU overhead for high-throughput transfers. Currently, the --gso flag is recognized but not yet fully implemented in the Rust client loop (a warning will be printed).
The client listens on TCP port 5201 by default. Once connected, you can tunnel traffic through it.
SSH Mode: If your server is configured in SSH mode, connect directly via the tunnel:
# Connect to SSH through the DNS tunnel
ssh -o ProxyCommand="nc 127.0.0.1 5201" user@localhostSOCKS Mode: If your server is configured with SOCKS mode, the tunnel connects to the Dante SOCKS proxy on the server. You can use tools like proxychains or configure applications to use the tunnel.
Shadowsocks Mode: If your server is configured with the new Shadowsocks option, slipstream tunnels traffic to a Shadowsocks server running locally on the server (listening on 127.0.0.1 by default). Typical usage is to run ss-local on the client and forward its outbound encrypted connection through the slipstream client.
Example ss-local JSON config (client):
{
"server": "127.0.0.1",
"server_port": 8388,
"local_address": "127.0.0.1",
"local_port": 10800,
"password": "your_password",
"method": "aes-256-gcm"
}Run ss-local and instruct it to go through slipstream's SOCKS proxy produced by slipstream-client:
# Start slipstream client (creates local SOCKS proxy on 127.0.0.1:1080)
./slipstream-client --resolver YOUR_SERVER_IP:53 --domain s.example.com --listen 127.0.0.1:1080
# Run ss-local, forwarding outbound connection through slipstream's SOCKS proxy
ss-local -c config.json --socks5-proxy 127.0.0.1:1080
# Point your applications at ss-local's local port (127.0.0.1:10800)You can use the slipstream-plugin-android with the Shadowsocks Android app to connect from your Android device.
Instructions:
For more details and troubleshooting, see the slipstream-plugin-android documentation.
Notes:
SOCKS Mode (Option 1)
SSH Mode (Option 2)
Shadowsocks Mode (Option 3)
To change settings:
The script will automatically update the configuration and restart services.
The easiest way to manage your slipstream-rust server is through the interactive menu:
slipstream-rust-deployThis provides quick access to:
/usr/local/bin/slipstream-rust-deploy # Management script
/usr/local/bin/slipstream-server # Main binary (prebuilt or built from source)
/opt/slipstream-rust/ # Source code and build directory (only when building from source)
/etc/slipstream-rust/ # Configuration directory
├── slipstream-rust-server.conf # Main configuration
├── {domain}_cert.pem # TLS certificate (per domain)
└── {domain}_key.pem # TLS private key (per domain)
/etc/systemd/system/slipstream-rust-server.service # Systemd service
If you prefer command-line management:
slipstream-rust-server Service:
sudo systemctl status slipstream-rust-server # Check status
sudo systemctl start slipstream-rust-server # Start service
sudo systemctl stop slipstream-rust-server # Stop service
sudo systemctl restart slipstream-rust-server # Restart service
sudo journalctl -u slipstream-rust-server -f # View logsUninstall:
bash <(curl -Ls https://raw.githubusercontent.com/SireJeff/slipstreamGUI/main/slipstream-rust-deploy.sh) uninstall # Complete removal of slipstream-rustDante SOCKS Service (SOCKS mode only):
sudo systemctl status danted # Check status
sudo systemctl start danted # Start service
sudo systemctl stop danted # Stop service
sudo systemctl restart danted # Restart service
sudo journalctl -u danted -f # View logsThe script can update itself in two ways:
Method 1: Using the menu (recommended)
slipstream-rust-deploy
# Choose option 2: Update slipstream-rust-deploy scriptMethod 2: Re-run the curl command
bash <(curl -Ls https://raw.githubusercontent.com/SireJeff/slipstreamGUI/main/slipstream-rust-deploy.sh)
# The script will detect and install updates automaticallyTo update to the latest version:
slipstream-rust-deploy
# Choose option 1: Install/Reconfigure slipstream-rust server
# The script will automatically download the latest prebuilt binary or rebuild from sourceIf you need to build slipstream-rust from source manually:
cd /opt/slipstream-rust
git pull
git submodule update --init --recursive
cargo build --release -p slipstream-server
sudo cp target/release/slipstream-server /usr/local/bin/slipstream-server
sudo systemctl restart slipstream-rust-serverThe management menu provides quick access to troubleshooting tools:
Service Won't Start:
slipstream-rust-deploy # Use menu option 3 to check status
# Or manually:
sudo systemctl status slipstream-rust-server # Check service status
sudo journalctl -u slipstream-rust-server -n 50 # Check logs for errors
ls -la /usr/local/bin/slipstream-server # Verify binary exists and permissionsBuild Failures:
# Check if all dependencies are installed
cargo --version # Verify Rust is installed
cmake --version # Verify cmake is installed
pkg-config --version # Verify pkg-config is installed
pkg-config --exists openssl # Verify OpenSSL headers are available
# Try rebuilding manually
cd /opt/slipstream-rust
cargo clean
cargo build --release -p slipstream-serverDNS Configuration Issues:
dig @YOUR_SERVER_IP s.mydomain.com # Test DNS tunnel (from client)
sudo iptables -t nat -L PREROUTING -n -v # Check iptables rulesSOCKS Proxy Issues:
curl --socks5 127.0.0.1:1080 http://httpbin.org/ip # Test SOCKS proxy locally
sudo cat /etc/danted.conf # Check Dante configurationShadowsocks / No logs / UDP errors:
ss -tlnp | grep ss-server
journalctl -u shadowsocks-libev-server@config -fIf ss-local traffic isn't reaching ss-server, verify that slipstream-server is receiving and forwarding connections:
journalctl -u slipstream-rust-server -f
systemctl status slipstream-rust-serverPort Check:
sudo ss -tulnp | grep 5300 # Check slipstream-rust-server port
sudo ss -tulnp | grep 1080 # Check SOCKS proxy port (if enabled)Certificate Issues:
# Verify certificates exist and have correct permissions
ls -la /etc/slipstream-rust/*.pem
# Regenerate if needed (will be done automatically on reconfiguration)Use the built-in log viewer (menu option 4) or manual commands:
sudo ss -tulnp | grep -E "(5300|1080)" # Monitor connection count
sudo systemctl status slipstream-rust-server # Check service resources
sudo journalctl -u slipstream-rust-server -f --no-pager # Monitor logs for errorsIf you need to customize the build process, you can modify the build in /opt/slipstream-rust:
cd /opt/slipstream-rust
# Make your changes
cargo build --release -p slipstream-server
sudo cp target/release/slipstream-server /usr/local/bin/slipstream-server
sudo systemctl restart slipstream-rust-serverThis deployment script is for the Rust implementation of slipstream, which differs from the C implementation in several ways:
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Made with ❤️ for privacy and security
| Back | FazBrowse Home | New Git URL |