mrkeyoor.com_
Wed 09 Sept 17:44 UTC
Self-Hostedevaluationupdated 09 Sept 2026

SafeLine review

SafeLine is a self-hosted web application firewall that sits in front of websites, filters HTTP and HTTPS requests, and forwards accepted traffic to the original servers. Its web console manages attack rules, rate limits, bot checks, access controls, and protected applications.

trackingstars / 7d
Verdict

Our SafeLine sandbox installed 192 packages in 24 seconds and built in 35 seconds, but 3 of 5 Go test outcomes failed in the BlazeHTTP submodule. SafeLine is worth a staged trial for a Linux team that wants a managed reverse-proxy WAF and accepts a seven-service Docker stack. Do not treat the passing build as proof of the whole appliance, and keep it out of production until your routes, certificates, false positives, upgrade path, and authentication flows pass local checks.

We ran it

Lab card: what happened when we ran SafeLineScreenshot of SafeLine (ly.safepoint.cloud/fUxS0GW)
Install✓ · 24s192 packages
Build✓ · 35s
Tests✗ · 16s2 passed · 3 failed of 5 (go test)
Repo34182 files~16,256 lines of source · 87.5 MB · 1 CI workflows · Dockerfile

Answers from our run

Does SafeLine build from source?

Dependencies installed in 24 seconds (192 packages), and the build succeeded in 35 seconds. We cloned commit 1496593 into a clean Debian container with 3 CPUs and no project-specific setup.

Do SafeLine's tests pass?

Not all of them: 2 of 5 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 SafeLine?

Personal Edition users deploying on ARM: the official installation guide says ARM requires a Pro license.

What are the alternatives to SafeLine?

ModSecurity, Coraza, BunkerWeb. Our SafeLine sandbox installed 192 packages in 24 seconds and built in 35 seconds, but 3 of 5 Go test outcomes failed in the BlazeHTTP submodule.

Setup3/5One root installer, then seven services and a production traffic cutover
Docs4/5English install and routing guides cover the important prerequisites
Community5/522,545 stars, a September release, and active maintainer replies
Maturity4/5v9.4.1 is actively maintained, with an acknowledged OIDC bug

Who it’s for

Linux operators who want a Docker-based WAF with a graphical console instead of hand-editing a rule engine.
Small infrastructure teams prepared to make SafeLine the reverse proxy for public HTTP and HTTPS traffic.
Self-hosters who need rate limits, bot or password challenges, and attack-event review in one appliance.
SafeLine administrators who want read-only attack events exposed to an MCP client through a separately secured bridge.

Who it’s NOT for

Personal Edition users deploying on ARM: the official installation guide says ARM requires a Pro license.
Teams unable to reroute production DNS and ports 80 or 443 through a new reverse proxy: SafeLine only protects requests that pass through it.
Operators seeking a network firewall for non-HTTP protocols: the project describes itself as an HTTP and HTTPS reverse proxy WAF.
MCP users who cannot place an administrator credential in the bridge: SafeLine lacks a dedicated read-only service credential, so the MCP process enforces read-only access around an admin API token.
Teams depending on Unified Authentication with OIDC today: issue 1318 reproduces malformed redirects and a duplicated token on v9.4.1, and a collaborator says the bug is tracked.

Setup reality

Our sandbox installed 192 packages in 24 seconds and built the Go project in 35 seconds. Tests failed after 16 seconds: 2 passed and 3 failed out of 5. The log tail identifies github.com/chaitin/blazehttp/gui as a build failure and the HTTP package as passing in 0.003 seconds.

The measured project lives in ./blazehttp/, a pinned submodule and WAF evaluation client. A real SafeLine deployment needs Linux, Docker 20.10.14 or newer, Compose 2.0.0 or newer, a PostgreSQL password, persistent storage, an admin login, and traffic routed through its seven-service Compose stack.

The docs set a minimum of 1 CPU core, 1 GB of memory, 5 GB of disk, and SSSE3 support. Automated setup runs as root. ARM requires Pro, and remote MCP access needs separate token files plus an HTTPS gateway because its built-in listener is plain HTTP.

Version 9.4.1 is a seven-service reverse proxy stack

SafeLine 9.4.1 is a self-hosted web application firewall built around an HTTP and HTTPS reverse proxy. Its console configures attack blocking, IP rules, rate limits, bot challenges, password challenges, and dynamic HTML or JavaScript protection. The repository also includes connectors for Ingress NGINX, Kong Gateway, and an MCP server. GPL-3.0 licensing makes the Community Edition source usable under copyleft terms.

The supplied Compose file defines 7 services: PostgreSQL, management, detection, Tengine, Luigi, FVM, and a challenge service. Persistent volumes hold database state, configuration, and logs. Tengine uses the host network, while the management console defaults to port 9443. This is an appliance with several moving parts, even though the official automatic installer reduces the initial work to one root command.

Ports 80 and 443 must move behind SafeLine

The application guide asks for a domain, a SafeLine listen port such as 80 or 443, and the original application's upstream address. The operator then points that domain's DNS record at the SafeLine server. That routing change is the product's security boundary: requests that reach the origin by another path do not pass through its filtering or access rules.

Release v9.4.1 defaults SSL compliance to TLS 1.2 and TLS 1.3, and it lets each application set a health-check interval from 10 to 3,600 seconds. Older clients that still need TLS 1.0 or 1.1 require an explicit change after upgrading. Before a cutover, test certificates, forwarding headers, client IP handling, request size, WebSockets, health checks, and a bypass path for recovery.

What happened when we ran it

Our sandbox installed 192 packages in 24 seconds, then completed the Go build in 35 seconds. The checkout was 87.5 MB and contained 34,182 files with about 16,256 lines counted as source. Those figures describe commit 1496593 in an unprivileged container with 3 CPUs, 8 GB of RAM, and no secrets.

Tests ended with exit code 1 after 16 seconds. The run recorded 2 passing and 3 failing outcomes out of 5. Its log tail says the github.com/chaitin/blazehttp/gui package failed to build, while github.com/chaitin/blazehttp/http passed in 0.003 seconds. The tail does not include the compiler message, so it cannot support a claim about the cause.

Our scan found 1 CI workflow, a Dockerfile, and no dedicated tests directory. A missing tests directory does not mean the repository has no Go tests, as the command produced 5 outcomes. The useful finding is narrower: installation and compilation completed, while the available test step did not pass in the stated Debian environment.

The 35-second build covered BlazeHTTP, not all seven services

At commit 1496593, SafeLine pins chaitin/blazehttp at submodule commit afc88a9. BlazeHTTP is a separate WAF evaluation client with command-line and graphical interfaces; its main README is Chinese and links to an English edition. The lab harness found the runnable Go project under ./blazehttp/, so the 35-second success belongs to that component.

The Compose deployment pulls 7 service images and does not build those services from the BlazeHTTP result. Our run did not start the SafeLine WAF, route a website through it, download its service images, or repeat the README's attack-detection comparison. Buyers should read the passing build as evidence that one included tool compiled, then test the assembled firewall against their own ordinary traffic and attack corpus.

ARM requires Pro, while x86 needs SSSE3

The English installation guide requires Linux, Docker 20.10.14 or newer, and Docker Compose 2.0.0 or newer. It lists a minimum of 1 CPU core, 1 GB of memory, 5 GB of disk, and an SSSE3-capable processor. Both x86_64 and arm64 appear in the architecture table, but the same guide says Personal Edition does not support ARM and an ARM server needs Pro.

SafeLine's MCP server adds Go 1.25.14 or Docker, a configuration file, one downstream token file per instance, and an optional client bearer token. It exposes only the read-only get_attack_events tool. SafeLine does not provide a dedicated read-only credential for the required management API, so the bridge holds an administrator API token and restricts it in its own process. Remote clients also need TLS in front of the plain HTTP listener.

The September 3 release has 68 open issues

GitHub showed 22,545 stars and 68 open issues, with no open pull requests in the fetched list. The last push and v9.4.1 release both landed on September 3, 2026, and issue discussion continued through September 8. That combination indicates active maintenance and a large user queue. The issue count describes reports and requests, not 68 confirmed defects.

One current defect is specific enough to affect a purchase decision. Issue 1318 reproduces a malformed post-login redirect and duplicated sl_portal_jwt with Unified Authentication and Authentik on v9.4.1. A SafeLine collaborator confirmed the reproduction and said it was entered into internal tracking on September 7. Teams using that OIDC path should wait for a fix or prove their exact login flow before cutover.

The 35-second build supports a staged trial

A 35-second component build and frequent v9.4.1 updates make SafeLine reasonable to evaluate, while the failed 5-outcome test step prevents an unconditional recommendation. Put it in front of a staging domain first, replay normal traffic, inspect blocks, test fail-open or bypass procedures, and rehearse an upgrade. A WAF can stop attacks and customers with equal efficiency when its routing or rules are wrong.

Three alternatives cover different operating models. ModSecurity fits teams that already own Apache, IIS, or Nginx and want low-level rule control. Coraza fits a Go service that should embed the firewall. BunkerWeb is the closer packaged choice for operators who want an Nginx-centered security platform across Docker or Kubernetes. SafeLine wins when its console and integrated controls save more work than its 7-service footprint adds.

Alternatives

ProjectWhat it isPick it when
ModSecurityA cross-platform WAF engine for Apache, IIS, and Nginx.pick this instead when you already run a supported web server and want direct control over the rule engine.
CorazaA Go WAF library compatible with ModSecurity rules.pick this instead when the firewall should be embedded in a Go gateway or application rather than deployed as an appliance.
BunkerWebAn Nginx-based web security platform with several deployment options.pick this instead when you want an Nginx security layer that fits Docker, Kubernetes, or an existing reverse-proxy setup.

What people are saying

  1. [github-trending] chaitin/SafeLine

Sources

  1. SafeLine GitHub repository
  2. SafeLine deployment guide
  3. SafeLine application routing guide
  4. SafeLine Docker Compose definition
  5. BlazeHTTP submodule at the measured revision
  6. SafeLine MCP server documentation
  7. SafeLine CE 9.4.1 release
  8. Issue 1318: Unified Authentication redirect bug

More self-hosted reviews

Interstellar · skywalking · bitcoin · awesome-selfhosted · gopeed · httpsms · the whole board →