explaingit

fscarmen/sing-box

4,545ShellAudience · ops devopsComplexity · 4/5Setup · hard

TLDR

A shell script that automatically installs and configures sing-box network proxy on a Linux VPS, supporting multiple protocols and Cloudflare tunnel integration.

Mindmap

mindmap
  root((sing-box))
    What it does
      Proxy installation
      Protocol setup
      Config generation
    Protocols
      Hysteria2 and Reality
      Shadowsocks and VMess
      VLESS and Trojan
    Integrations
      Cloudflare Argo
      Docker support
    Client apps
      Shadowrocket iOS
      Clash Mihomo
      v2rayN Windows
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Set up a personal proxy on a rented Linux VPS with a single command and minimal manual steps.

USE CASE 2

Install multiple proxy protocols and generate ready-made client config files for phone and PC apps.

USE CASE 3

Route proxy traffic through Cloudflare Argo tunnels to hide your server's direct IP address.

Tech stack

ShellDockerCloudflare

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a Linux VPS and familiarity with proxy protocols, Cloudflare integration adds extra configuration steps.

No license specified.

In plain English

This repository provides a shell script that sets up sing-box, a network proxy tool, on a Linux VPS (a rented remote server). Sing-box is software that lets network traffic travel through alternative routes, which is commonly used to access the internet from regions with strict filtering. The script in this repo handles the full installation and configuration process with a single command, removing the need to configure each piece manually. The script supports a wide range of connection protocols, which are different technical methods for routing traffic. These include Hysteria2, Reality, Shadowsocks, VMess, VLess, Trojan, TUIC, and AnyTLS. Each protocol has different properties around speed, stability, and how well it avoids detection. The script lets users pick which ones to install and generates matching configuration files for several popular client apps: Shadowrocket (for iPhone), Clash Mihomo, v2rayN (for Windows), and Nekobox (for Android). A notable feature is integration with Cloudflare Argo tunnels. Cloudflare provides a service that creates an encrypted tunnel from your server to Cloudflare's network, which can help traffic pass through CDN addresses instead of your server's direct IP. The script can set this up automatically using a JSON tunnel configuration or a permanent token, and it can also create the tunnel via the Cloudflare API for users managing many servers. Installation can be done interactively (the script asks questions step by step) or in a fully automatic mode that fills all parameters without prompting. Docker-based installation is also supported for users who prefer containers. After installation, the script provides a command-line tool called sb for making changes, such as modifying ports, switching CDN providers, or toggling features like port hopping, without reinstalling. The README is written in both Chinese and English, with Chinese being the primary language. The full README is longer than what was shown.

Copy-paste prompts

Prompt 1
Help me run the sing-box install script on my Ubuntu VPS and choose the right protocols for bypassing network filters.
Prompt 2
How do I use the sb command-line tool to change the port or switch CDN provider after installing sing-box?
Prompt 3
Generate a Shadowrocket config file for iOS from my sing-box VPS setup.
Prompt 4
How do I set up a Cloudflare Argo tunnel with my sing-box installation using a permanent token?
Prompt 5
Install sing-box with Docker on my VPS and configure it to use the Hysteria2 protocol.
Open on GitHub → Explain another repo

← fscarmen on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.