mrkeyoor.com_
Wed 23 Sept 12:31 UTC
Self-Hostedevaluationupdated 26 Aug 2026

sing-box review

sing-box is a configurable network proxy engine for routing traffic through direct connections, tunnels, and many proxy protocols. It combines client and server roles, DNS policy, TUN-based device routing, rule sets, and endpoint support in one Go program, solving the mess of operating several protocol-specific tools.

+124stars / 7d
Verdict

Our sing-box build succeeded in 107 seconds, but 3 of 18 test groups failed, so experienced network operators should treat a source build as something to verify rather than install blindly. The project is a strong choice when one core must own proxy protocols, DNS rules, and TUN routing across several platforms. Use a pinned stable release, run sing-box check, and exercise real DNS, UDP, IPv6, and TUN traffic before an upgrade reaches a gateway.

We ran it

Lab card: what happened when we ran sing-boxScreenshot of sing-box (sing-box.sagernet.org)
Install✓ · 104s411 packages
Build✓ · 107s
Tests✗ · 52s15 passed · 3 failed of 18 (go test)
Repo2915 files~450,280 lines of source · 91 MB · 6 CI workflows · Dockerfile · tests dir

Answers from our run

Does sing-box build from source?

Dependencies installed in 104 seconds (411 packages), and the build succeeded in 107 seconds. We cloned commit 712046a into a clean Debian container with 3 CPUs and no project-specific setup.

Do sing-box's tests pass?

Not all of them: 15 of 18 passed and 3 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use sing-box?

People looking for a normal click-to-connect consumer VPN: the core is driven by a large JSON configuration surface, while graphical clients and profile providers sit around it.

What are the alternatives to sing-box?

Xray-core, V2Ray-core, shadowsocks-rust. Our sing-box build succeeded in 107 seconds, but 3 of 18 test groups failed, so experienced network operators should treat a source build as something to verify rather than install blindly.

Setup3/5Easy packages, demanding DNS, route, protocol, and TUN configuration
Docs5/5Deep English and Chinese references plus detailed migration guides
Community5/5Large user base and active reports, fixes, releases, and discussion
Maturity4/5Established core with fast-moving migrations and current regressions

Discussed on

  1. hnsing-box project. The universal proxy platform5 points

Who it’s for

Network-savvy users who want one engine for TUN routing, DNS policy, and several proxy or tunnel protocols.
Self-hosters who need both inbound server listeners and outbound client connections in the same configuration system.
Operators replacing older V2Ray or Clash-style stacks and willing to maintain explicit JSON routing rules.
Developers building desktop or mobile proxy clients around a mature cross-platform core.

Who it’s NOT for

People looking for a normal click-to-connect consumer VPN: the core is driven by a large JSON configuration surface, while graphical clients and profile providers sit around it.
Operators who cannot schedule configuration migrations: the 1.14 guide deprecates inline ACME, legacy DNS address filters, old DNS server formats, and other earlier fields.
Linux TUN users who need to upgrade without regression testing: issue 4392 reports high-rate UDP session amplification in stable 1.13.15 and 1.13.16 and says rolling back to 1.13.14 stops it.
Windows users relying on complex IPv6 TUN routing without their own tests: issue 4178 reports a possible self-route loop and a log exceeding 10 MB from six failed requests.
Companies that require a standard permissive license: repository metadata cannot classify the license, and the LICENSE text uses GPLv3 plus an additional restriction on derivative naming and implied association.

Setup reality

Our fresh Go 1.24 sandbox installed 411 packages in 104 seconds and built sing-box in 107 seconds. The test command finished after 52 seconds with 15 of 18 test groups passing and 3 failing; the log tail only listed packages with no test files before the final FAIL, so it does not identify a cause.

Running the binary still means supplying servers, credentials, certificates, DNS policy, and routes. Packages are available for several platforms, but a dependable TUN setup requires operating-system testing and sing-box check before deployment.

The repository at commit 712046a occupied 91 MB and contained 2,915 files with about 450,280 source lines. Version migrations can turn deprecated configuration into startup errors, so upgrades need a configuration check and a rollback copy.

What happened when we ran it

Our sandbox installed 411 Go packages in 104 seconds, then built commit 712046a successfully in 107 seconds. The checkout was 91 MB, with 2,915 files and about 450,280 source lines, so this is a substantial networking core rather than a small command wrapper.

Tests took another 52 seconds and failed: 15 of 18 test groups passed, while 3 failed. The end of the captured log listed transport packages that had no test files and then printed FAIL. It did not show the failing assertions or a cause, so the finding is limited to the result: our clean Go 1.24 run did not produce a fully passing suite.

One process owns proxying, DNS, and routes

sing-box accepts traffic through TUN, SOCKS, HTTP, Shadowsocks, Trojan, VMess, VLESS, Hysteria, TUIC, AnyTLS, and other inbound types. It can send that traffic through direct connections, proxies, SSH, Tor, WireGuard, OpenVPN, Tailscale, and related outbounds or endpoints. DNS resolution and route selection live in the same configuration.

A router or desktop that once needed a DNS forwarder, transparent proxy, and protocol-specific client can express that chain in one process. sing-box also runs server listeners, so the core works on both ends. It does not supply a remote network: operators bring servers, credentials, certificates, routes, and policy.

Packages are easy; correct TUN policy is not

SagerNet documents APT and DNF repositories, a Linux and OpenWrt installer, packages for major desktop systems, GitHub releases, and a container image. Linux packages can include a systemd service.

After installation, sing-box expects JSON. A top-level file can define logging, DNS, NTP, certificate providers, HTTP clients, network namespaces, endpoints, inbounds, outbounds, routes, services, and experimental APIs. The supplied JSON Schema helps editors catch shape errors, while sing-box check validates configuration, format normalizes it, and merge combines files or configuration directories. These are useful tools because realistic configurations grow quickly.

A minimal local SOCKS proxy is not hard. A dependable whole-device TUN setup is. The operator must understand which traffic enters the tunnel, how the program's own connections escape it, which DNS server resolves each class of name, whether FakeIP is acceptable, how IPv4 and IPv6 differ, and which process or domain rules win. On a server, add user authentication, TLS certificates, firewall policy, and log handling.

The breadth is genuinely useful

Protocol range alone can become checkbox collecting, but sing-box integrates its pieces into a coherent routing model. Route rules can consider domains, networks, ports, protocols, source attributes, processes, users, packages, and remote rule sets. DNS has its own rules and server types, rather than being an afterthought sent outside the tunnel. Selector and URLTest outbounds provide manual or latency-based path choice.

The newer endpoint model brings network-style connections such as WireGuard, Tailscale, OpenVPN, and OpenConnect into the configuration. Certificate providers, network namespaces, and services further widen what one process can own. Optional Clash and V2Ray APIs help existing dashboards and monitoring tools fit around it. Official graphical clients on Android, Apple platforms, and desktop systems define profiles, imports, status views, traffic, and selector controls around the same core.

That integration is the advantage over a narrow Shadowsocks implementation. One protocol favors a smaller daemon; policy routing, split DNS, and several transports make consolidation useful.

Configuration churn is part of the deal

sing-box develops quickly and is willing to remove old configuration concepts. The 1.14 migration guide moves inline ACME settings into certificate providers, changes address-based DNS filtering to explicit response matching, removes an independent cache option, replaces cache fields, and continues earlier DNS server and rule-action migrations. Some legacy combinations are rejected at startup.

This is responsible when old abstractions block a cleaner design, but it creates work for operators. Do not point an unattended package updater at a critical gateway and hope old JSON remains valid. Pin a stable release, read the migration page before crossing minor versions, run sing-box check against the new binary, and keep the previous package and configuration ready for rollback.

Current bugs reinforce that advice. Issue 4392 describes a regression in stable versions 1.13.15 and 1.13.16 where a qBittorrent NAT-PMP request on Linux produces high-rate TUN traffic; the reporter says 1.13.14 is unaffected. Issue 4178 reports a possible Windows IPv6 self-route loop under a 1.14 alpha build. These are specific network interactions, not proof the core is generally unreliable, but a proxy failure can disrupt all traffic on a machine.

A newer report, issue 4446, describes thread counts climbing until sing-box 1.13.19 aborts on one Windows 11 TUN setup. Issue 4450 reports that the 1.14.0 release candidate fails to link when cross-compiled with Go 1.27, while the reporter says Go 1.26 works. Both reports are narrow, but both warrant testing the exact platform and toolchain intended for deployment.

The August 2026 release stream is active

The repository README is unusually thin, but the linked documentation site is extensive and available in English and Chinese. It has field-level configuration references, installation pages, client behavior, examples, migration instructions, and a long changelog. The weakness is discoverability for beginners: the documentation explains every component better than it teaches a newcomer how to design a safe routing policy.

The last push was August 25, 2026, and release 1.13.19 arrived on August 17. GitHub listed 288 open issues and pull requests, with reports still updated on August 26. More than 37,000 stars show reach, while the push and issue dates show current maintenance. The release pace also creates upgrade work.

sing-box is an excellent choice for an expert who wants a modern, cross-platform networking core and will treat configuration as infrastructure. It is a poor choice for someone who wants one server address, one connect button, and no routing homework. Start with the smallest configuration that works, add rules only when their purpose is testable, and never upgrade a gateway without checking the migration notes and exercising DNS, IPv6, UDP, and TUN traffic.

Alternatives

ProjectWhat it isPick it when
Xray-core gh↗A V2Ray-derived proxy platform centered on XTLS, REALITY, and a large protocol ecosystem.pick this instead when XTLS-specific compatibility and the Xray ecosystem matter more than sing-box's unified DNS and endpoint design.
V2Ray-coreThe community-run proxy platform behind many established clients and configurations.pick this instead when you depend on V2Fly compatibility, documentation, or existing VMess and transport deployments.
shadowsocks-rustA focused, efficient Rust implementation of the Shadowsocks proxy protocol.pick this instead when Shadowsocks alone solves the problem and a smaller protocol surface is easier to audit and operate.

What people are saying

  1. [github-trending] SagerNet/sing-box

Sources

  1. sing-box repository and README
  2. sing-box installation documentation
  3. sing-box migration guide
  4. Release 1.13.19
  5. Windows thread exhaustion report
  6. Go 1.27 cross-compilation report

More self-hosted reviews

omakade · Mobile-Security-Framework-MobSF · radar · sftpgo · mailcow-dockerized · openGym · the whole board →