mrkeyoor.com_
Mon 21 Sept 23:39 UTC
Self-Hostedevaluationupdated 21 Sept 2026

BackPack review

BackPack is a Go tunnel engine for carrying traffic between an entry server in Iran and an overseas exit server. It combines reverse port forwarding, a direct private network, 13 transport choices, monitoring, and updates in one binary for routes where ordinary connections are filtered or unreliable.

Verdict

Our BackPack run installed 91 packages, built in 43 seconds, and passed all 64 tests, so the measured code earned a trial on a disposable VPS pair. Use it when an Iran-to-overseas route needs transport switching, health checks, watchdogs, and rollback in one binary. Choose a narrower tunnel if you cannot justify giving a young AGPL project root on both hosts.

We ran it

Lab card: what happened when we ran BackPackScreenshot of BackPack (t.me/BlackProtocols/10)
Install✓ · 107s91 packages
Build✓ · 43s
Tests✓ · 233s64 passed · 0 failed of 64 (go test)
Repo675 files~113,038 lines of source · 11 MB · 2 CI workflows

Answers from our run

Does BackPack build from source?

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

Do BackPack's tests pass?

Yes: 64 of 64 passed 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 BackPack?

Teams that will not grant a tunnel manager root on both servers: the documented install writes under /root, /etc, and /usr/local/bin, then creates systemd services.

What are the alternatives to BackPack?

frp, rathole, GOST. Our BackPack run installed 91 packages, built in 43 seconds, and passed all 64 tests, so the measured code earned a trial on a disposable VPS pair.

Setup3/5One installer, but 2 rooted servers and firewall work remain
Docs4/5Detailed transport guides; current panel scope docs disagree
Community3/5355 stars and quick replies, with 6 older pull requests open
Maturity3/564 tests passed, but the repository is only 2 months old

Who it’s for

Operators linking an Iran entry VPS to an overseas exit and needing several ways to cross a filtered route.
Linux administrators who own both servers and are comfortable with root, systemd, firewall rules, and port mappings.
Teams that want route testing, tunnel health checks, rollback, and monitoring in the same tool.
Self-hosters who need TCP and UDP forwarding plus a whole-IP private link between two machines.

Who it’s NOT for

Teams that will not grant a tunnel manager root on both servers: the documented install writes under /root, /etc, and /usr/local/bin, then creates systemd services.
Anyone assuming every transport protects its credential: the transport guide says plain TCP, TCP Mux, UDP, WS, and WS Mux send the token as-is.
Operators who require a long stability record: the repository was created on 2026-07-11, and issue 41 reports that a v1.7.7.5 update broke panel access until the user rolled back.
Organizations that cannot accept AGPL-3.0 plus the project's stated attribution and rename requirements for modified versions.

Setup reality

Our sandbox install of commit 9bbeecf succeeded in 107 seconds and fetched 91 packages. The build succeeded in 43 seconds. Tests took 233 seconds, with all 64 passing.

A real deployment needs 2 Linux servers, root access, a shared 64-character token, a tunnel port, forwarded-port mappings, and matching transport choices. The Iran-side firewall must admit the tunnel and forwarded ports. WSS can also require a certificate and domain.

The wizard writes configs under /etc/backpack and creates one systemd service per tunnel. Raw-packet and whole-IP modes need Linux capabilities that usually mean root. The measured repo had 2 CI workflows but no Dockerfile or tests directory, and go.mod declares Go 1.26.0 even though our Go 1.24 container completed the build.

Thirteen transports target filtered routes

BackPack's 13 transport choices are the reason to consider it. The usual reverse shape exposes ports on an Iran server while an overseas client dials inward and hands traffic to the real service. A direct mode lets the Iran side dial out instead, and the whole-IP mode joins both hosts on a private network. That range addresses networks where a plain reverse proxy connects poorly or cannot connect at all.

Five of the 13 choices, plain TCP, TCP Mux, UDP, WS, and WS Mux, send the tunnel token as-is. The transport guide says to choose an encrypted option on an untrusted path. Stealth uses Noise, WSS uses TLS with a session-bound credential, and KCP derives a key from the token. This is a menu of different security properties, so choosing by speed alone is a mistake.

What happened when we ran it

Our sandbox installed commit 9bbeecf in 107 seconds and fetched 91 packages. The build finished successfully in 43 seconds. That checkout occupied 11 MB before installation and contained 675 files with about 113,038 lines of source. The green result shows that a fresh unprivileged Debian container could obtain the Go dependencies and compile the measured commit without secrets.

Tests took 233 seconds in the same 3-CPU, 8 GB container. Go reported 64 passed and 0 failed out of 64. Our measurement method found 2 CI workflow files, no Dockerfile, and no tests directory even though Go test files are distributed through the source tree. Those facts cover repository mechanics at 9bbeecf. We did not measure tunnel throughput, packet loss, latency, or behavior on an Iran route.

One installer controls two rooted servers

A normal deployment controls 2 Linux servers and writes into host-level locations. The documented installer runs as root, places the binary in /usr/local/bin, stores tunnel state under /etc/backpack, and keeps release files below /root/BackPack. Each tunnel becomes its own systemd service. That isolation is sensible for recovery, but it also means BackPack sits beside the firewall and service manager rather than inside an ordinary user account.

Setup still requires a correct 64-character token, the same transport on both ends, a control port, forwarded-port mappings, and firewall rules on the Iran server. The dashboard normally uses port 7777. A source build has another wrinkle: go.mod declares Go 1.26.0, while our base image was Go 1.24. The build succeeded in our sandbox, but a pinned internal toolchain should honor the declared version instead of assuming an older compiler is enough.

Four presets do not remove network judgment

BackPack supplies 4 performance presets and a Link Test that measures the route before recommending a transport. That helps with the first choice, especially when TCP stalls or UDP is filtered. The maintainers also label xDi and IP Spoofing experimental. Both need Linux and root, while the whole-IP tunnel needs /dev/net/tun plus network-administration capability. These modes are specialist escape routes, not harmless toggles.

The setup guide names 4 common failure points before it reaches tuning: server roles, the shared token, port mappings, and firewall rules. UDP forwarding is off by default. A bare mapping such as 443 sends traffic to port 443 on the overseas machine itself, which is easy to misread. Health Check can point at a bad configuration, but an operator still needs to understand where every listener and backend lives.

Updates have safeguards, while the history is short

Release v1.8.1 shipped on 2026-09-15, and the repository was pushed again on 2026-09-21. The update flow saves a restore point, verifies the downloaded archive against published SHA-256 data, restarts the tunnels, and rolls back when its health check fails. An offline path accepts a copied archive and checksum, which matters when the server itself cannot reach GitHub.

The repository was created on 2026-07-11. GitHub showed 355 stars and 7 open issues and pull requests on 2026-09-21, split into 1 issue and 6 pull requests. The open issue's reporter later said their repeated PCK restarts came from their own configuration. Issue 41 is the sharper warning: two users reported panel 404s after v1.7.7.5, and one said rolling back to v1.7.5 restored access. The thread does not establish the cause.

AGPL-3.0 forks need attribution and a new name

BackPack uses AGPL-3.0, and its README states 2 additional obligations for modified versions. The required attribution must remain in the notice, README, version output, and panel notices. A modified fork must also use a different product name and logo. Those terms are clearly written, which makes the decision easier, but a company expecting Apache-2.0 or MIT terms should stop before deployment.

The documentation is deep enough to explain each of the 13 transports, firewall openings, backups, update recovery, and Persian summaries. One current-main seam needs cleanup. docs/web-panel.md calls the panel monitoring-only, while docs/access-control.md defines 3 scopes and says the write scope can create and edit tunnels, restart services, and upgrade. Check the exact release you deploy before designing operator roles around either description.

The 64-test result earns a controlled trial

All 64 tests passing makes BackPack credible enough for a spare pair of VPS hosts. Its best audience already knows why plain TCP, KCP, WSS, or an ICMP carrier would behave differently on the route in question. Start with the documented basic transport, confirm port and UDP behavior, then exercise update rollback before any user traffic depends on the link.

For ordinary NAT traversal, frp or rathole asks you to accept a smaller operational surface. GOST fits operators who want to assemble proxy behavior from a broader toolkit. BackPack earns its extra root-level reach when filtering forces you to switch among 13 carriers and you want one control plane to watch them. If you cannot name the carrier you need, choose the smaller proxy.

Alternatives

ProjectWhat it isPick it when
frp gh↗A general reverse proxy for exposing services behind NAT or a firewall.pick this instead when you need ordinary reverse proxying and do not need BackPack's Iran-specific transport menu.
ratholeA small Rust reverse proxy focused on NAT traversal.pick this instead when a narrow client-server tunnel and Apache-2.0 license fit better than an all-in-one control plane.
GOSTA Go proxy and tunneling toolkit with an MIT license.pick this instead when you want composable proxy protocols without BackPack's opinionated two-server workflow.

What people are saying

  1. [github-trending] AminMGMT/BackPack

Sources

  1. BackPack repository
  2. BackPack README
  3. BackPack v1.8.1 release
  4. BackPack transport guide
  5. BackPack installation guide
  6. BackPack access-control guide
  7. BackPack web-panel guide
  8. BackPack issue 41

More self-hosted reviews

PanWatch · wiki · dashy · animeko · server · iptv · the whole board →