SafeLine

A self-hosted, reverse-proxy WAF that sits in front of your own web app, inspects incoming HTTP requests, and blocks attacks. You install it on your own Linux server with Docker.

cat safeline/meta.ymlChecked on 2026-10-25

Safety

Impact Reaches othersSees other people's traffic or sends traffic to their devices
Admin rights
Required
Test lab
Required

Usage

Purpose
Defense
Difficulty
Intermediate
Type
Self-hosted server
Platforms
Linux / Docker

Trust

Repository
chaitin/safeline
License
CopyleftGPL-3.0
GitHub
stars22,9482026-10-25
Maintenance
Actively updatedLast update 2026-10-22
Contents
  1. Introduction
  2. What a WAF does
  3. What SafeLine can do
  4. License and editions
  5. Trying it safely: put Juice Shop behind it
  6. Checking blocks in the logs
  7. Common tasks
  8. Cautions
  9. Read next
  10. Sources

SafeLine is a WAF (web application firewall) that you place in front of your own web app. Requests from users pass through SafeLine first, and the ones it judges to be attacks are stopped before they reach the app.

This review is for people who run their own web apps, or who want hands-on experience with the defending side. After reading it, you can do the following:

  • Install SafeLine on a Linux lab VM and sign in to the web console
  • Put OWASP Juice Shop, a deliberately vulnerable practice app, behind SafeLine
  • Find blocked requests in the console logs

What a WAF does

A WAF checks HTTP requests before they reach your app and drops the dangerous ones. It does not fix vulnerabilities in the app. Anything the WAF misses goes straight to the app, so you still need input validation and updates on the app side. SafeLine’s own documentation reports an attack-sample detection rate of 71.65% in balance mode and 76.17% in strict mode in its own tests. Treat it as an extra layer that reduces the attacks reaching your app, not as something that stops everything.

What SafeLine can do

According to the official documentation, SafeLine is an HTTP/HTTPS reverse proxy built on nginx. Its main features are:

  • Blocking web attacks: SQL injection, XSS, code injection, OS command injection, XXE, SSRF, path traversal, and more
  • Rate limiting: throttles traffic above limits you set, to slow brute-force attempts and traffic surges
  • Anti-bot challenge: adds checks such as a CAPTCHA, letting people through and stopping crawlers and bots
  • Authentication challenge: when turned on, only visitors who enter a password can see the site
  • Dynamic protection: encrypts the HTML and JavaScript each time a page is served

On detection, the official website says SafeLine uses a semantic analysis engine that parses the meaning of HTTP traffic. The pricing table lists semantic analysis detection and rule-based protection in the free edition too.

What it does not doSafeLine does not find or fix vulnerabilities in your app. To look for vulnerabilities, use a scanner such as ZAP. The official FAQ also says no edition supports macOS or Windows.

License and editions

Both the GitHub repository label and the LICENSE file say GPL-3.0. The repository belongs to Chaitin Tech (chaitin) on GitHub, while the English website and paid editions are run under the CyberServal name. We could not confirm how the two are related. We also could not confirm whether the source for every component in the distributed Docker images is in this repository.

There are three editions:

Edition Price Main differences
Personal Free Up to 10 apps. Single-thread mode
Lite Paid Up to 20 apps. Geo-blocking, attack log export, Discord and Telegram notifications
Pro Paid No app limit. Load balancing, multi-user management, ARM deployment, and more

Running on an ARM server requires a Pro license, so use x86_64 for the free edition.

Trying it safely: put Juice Shop behind it

Use a lab VM that only you use. Connect it to a network the internet cannot reach, such as a host-only network. See Setting up a safe lab for how to build one.

  1. Check the VM. The official minimum is Linux, x86_64 or arm64, 1 CPU core / 1 GB memory / 5 GB disk, a CPU with the ssse3 instruction, Docker 20.10.14 or later, and Docker Compose 2.0.0 or later.

  2. Start OWASP Juice Shop with Docker on the same VM.

  3. Install SafeLine with the official script. It needs root. Save the script and read it before you run it (see “Cautions” below).

    bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en
  4. Generate the admin password and write it down.

    docker exec safeline-mgt resetadmin
  5. Open https://<VM IP>:9443/ in a browser and sign in as admin with the password from step 4.

  6. On the “Applications” page, click “Add Application”. Enter the domain to listen on (the VM’s IP works), a port such as 80, and Juice Shop’s address as the upstream (for example, http://<VM IP>:3000).

  7. Open Juice Shop through SafeLine and check that the page loads normally.

Checking blocks in the logs

The official “Add Application” page has example test URLs for checking that blocking works. Try them only against your own Juice Shop.

  • When a request is blocked, SafeLine returns its block page instead of Juice Shop.
  • A new entry appears in the console’s attack list. Open “detail” to see the request.
  • The official FAQ notes that the interception count and the number of attack log entries can differ. Requests stopped by rate limiting, bot checks, or the authentication challenge are not logged as attack events.

If a normal action shows the block page, that is a false positive. Find which action caused it in the logs before you change the settings.

Common tasks

Task How
Reset the admin password docker exec safeline-mgt resetadmin
Re-bind the dynamic password (TOTP) docker exec safeline-mgt resettotp
Change the console port Add MGT_PORT to .env in the install directory, then run docker compose down && docker compose up -d
Stop and remove Run docker compose down in the install directory, then delete the directory

The console uses port 9443. SafeLine also uses 65508 (health check) and 65443 (custom pages).

Cautions

  • The official install command fetches the script with curl -k, which skips certificate checks. Rather than piping it straight into bash, save it to a file and read it first. The official docs also describe a manual install.
  • Do not expose the console (port 9443) to the internet. We did not find an official statement on this, but the console controls your WAF settings, so keep it reachable only from your own machine or a VPN.
  • In production, visitors’ request contents are kept in the logs. Decide where logs are stored and who can read them before you go live.
  • Send test attack requests only to your own environment or one you have written permission to test.
  • The official FAQ warns that upgrading across several major versions can cause data incompatibility. Back up the whole install directory (default /data/safeline) before upgrading.

Sources

  1. Official repository (README)github.com/chaitin/SafeLine
  2. Official repository: LICENSEgithub.com/chaitin/SafeLine/blob/main/LICENSE.md
  3. Docs: Overviewdocs.waf.chaitin.com/en/home
  4. Docs: Deploy SafeLinedocs.waf.chaitin.com/en/GetStarted/Deploy
  5. Docs: Add Applicationdocs.waf.chaitin.com/en/GetStarted/AddApplication
  6. Docs: Plan (editions and feature comparison)docs.waf.chaitin.com/en/License/Plan
  7. Docs: Verifying the effectiveness of SafeLinedocs.waf.chaitin.com/en/tutorials/Effect
  8. Docs: FAQdocs.waf.chaitin.com/en/faq/home
  9. Official website (plans and pricing)cyberserval.tech/landing/safeline

Checked on 2026-10-25

Similar tools

OWASP Juice Shop

Impact Local only
juice-shop/juice-shop

An intentionally vulnerable online shop for practice. Run it on your own computer to learn how web vulnerabilities work and to try out security testing tools.

Purpose
Learning
Type
Practice lab
Difficulty
Beginner
License
PermissiveMIT
Category
Learning and practice labs / Web security
Actively updatedstars14,228Last update 2026-10-23
Read the OWASP Juice Shop review

ZAP

Impact Can harm others
zaproxy/zaproxy

A free web app scanner that sits between your browser and a web app, records the traffic, and looks for vulnerabilities. Formerly OWASP ZAP, now ZAP by Checkmarx.

Purpose
Audit
Type
Desktop app
Difficulty
Intermediate
License
PermissiveApache-2.0
Category
Web security / Vulnerability scanning
Actively updatedstars16,025Last update 2026-10-23
Read the ZAP review