<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged reverseproxy</title>
<link>https://coderlegion.com/tag/reverseproxy</link>
<description>Powered by Question2Answer</description>
<item>
<title>How to Decide If a Node.js App Belongs Behind SafeLine</title>
<link>https://coderlegion.com/32135/how-to-decide-if-a-node-js-app-belongs-behind-safeline</link>
<description>&lt;p&gt;A Node.js app is not protected by installing a library that these SafeLine documents never mention. The supplied pages describe a self-hosted web application firewall that filters and monitors HTTP traffic between a web application and the Internet. They do not document a Node module, an npm package, or framework middleware. The supported decision is whether the process can sit behind the documented reverse proxy. I will not invent a runtime agent to fill that gap.&lt;/p&gt;
&lt;p&gt;That boundary is the whole plan. Validation, sessions, and secrets stay in the application. SafeLine sits on the network path in front of it. Clients reach the WAF first. Only traffic it accepts should be forwarded to the Node process that still serves the original app.&lt;/p&gt;
&lt;h3 id=&quot;what-the-pages-actually-specify&quot;&gt;What the pages actually specify&lt;/h3&gt;
&lt;p&gt;The introduction says deploying a WAF in front of a web application places a shield between that application and the Internet. A forward proxy hides a client. SafeLine is the other shape: a reverse proxy that reduces direct exposure of the server, because clients pass through it before they reach the origin. It filters, monitors, and blocks malicious HTTP and HTTPS traffic, and it is also described as preventing unauthorized data from leaving the app by applying policies that separate malicious traffic from safe traffic. Listed core capabilities are defenses for web attacks, proactive bot abuse defense, HTML and JS code encryption, IP-based rate limiting, and a web access control list. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The application guide is the operational half of that statement. SafeLine is developed based on nginx. It receives traffic for the original website, cleans malicious attack traffic, and forwards safe and reliable traffic to the original application. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nothing on those pages ties the origin to one language. A Node HTTP server qualifies only as an upstream address. Express, Fastify, or the built-in http module do not receive a special connector in this material. The checklist is how I decide the proxy is appropriate, then how I fill only the fields the console documents.&lt;/p&gt;
&lt;h3 id=&quot;five-checks-before-dns-changes&quot;&gt;Five checks before DNS changes&lt;/h3&gt;
&lt;p&gt;Host fit is first. The deploy guide requires Linux, x86_64 or arm64, Docker 20.10.14 or above, and Docker Compose 2.0.0 or above. The minimum environment is 1 core CPU, 1 GB memory, and 5 GB disk. The CPU must support ssse3. The same page lists uname -m, docker version, docker compose version, free -h, df -h, and an lscpu check for ssse3 so the baseline can be confirmed before install. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Edition fit is second, and it matters on small Node hosts. SafeLine installed on ARM requires a Pro license to work properly. The Personal Edition is not supported on ARM. An arm64 image is therefore a license decision, not a footnote after the container starts. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Upstream design is third. Log into the web admin console, open Applications, and choose Add Application. Domain may be a domain name, a hostname, or an IP address. Port is what SafeLine listens on, such as 80 or 443. HTTPS applications need the SSL option checked. Upstream is the real address of the original app, and that is where cleaned traffic is forwarded. After the entry is saved, resolve the entered name to the IP of the server running SafeLine. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I do not publish the Node listen port as the client entry. If the upstream name resolves back to SafeLine, the forward path loops. The docs do not ship a Node bind tutorial, so the rule stays the documented one: upstream must be the real application address, reachable from the WAF.&lt;/p&gt;
&lt;p&gt;Proof is fourth. The application guide gives sample cases for SQL injection, XSS, path traversal, code injection, and XXE. Replace the example host with the protected domain. A blocking page means that case was defended. The web console attack list, then the detail view, shows whether the event was recorded. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Release track is fifth. The LTS version will no longer be maintained starting from 9.1.0-LTS (14 August 2025). LTS users are strongly recommended to upgrade to the latest version. If there are concerns, the deploy guide recommends waiting one month after a new release before upgrading. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;controls-that-match-a-public-node-service&quot;&gt;Controls that match a public Node service&lt;/h3&gt;
&lt;p&gt;Attack blocking is the wide net. The feature list names SQL injection, XSS, code injection, OS command injection, CRLF injection, XXE, SSRF, and path traversal. The introduction also names LDAP injection, XPath injection, RCE, backdoor, bruteforce, HTTP flood, and bot abuse. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rate limiting is documented against DoS attacks, bruteforce attempts, traffic surges, and other abuse, by throttling traffic that exceeds defined limits. IP-based rate limiting is part of the core list. A captcha challenge is documented so human users can continue while crawlers and bots are blocked. When the authentication challenge is on, visitors must enter the password or they are blocked. When dynamic protection is on, HTML and JS from the web server are dynamically encrypted on each visit. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I do not apply every control as if every Node app were a browser site. Dynamic HTML and JS encryption matches a page that returns markup. A JSON API should not be described as if that encryption were its main defense. For an API, the documented controls I plan around are attack filtering, rate limits, the bot challenge, and the access control list. The authentication challenge is a visitor password gate. It is not application login, and these pages do not say it replaces tokens or sessions inside Node.&lt;/p&gt;
&lt;p&gt;The home page also publishes an effect evaluation with 33669 samples in each column. SafeLine Balance is listed at 71.65 percent detection, 0.07 percent false positive, and 99.45 percent accuracy. SafeLine Strict is listed at 76.17 percent detection, 0.22 percent false positive, and 99.38 percent accuracy. The same table includes ModSecurity Level 1 and CloudFlare Free. I treat those cells as published comparison figures, not as a measurement I ran against a Node route. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;scale-and-commercial-notes-kept-apart-from-setup&quot;&gt;Scale and commercial notes, kept apart from setup&lt;/h3&gt;
&lt;p&gt;The introduction says SafeLine is production-ready. It reports over 180,000 installations worldwide, protection for over 1,000,000 websites, and more than 30,000,000,000 HTTP requests handled daily. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As of September 30, 2026, SafeLine surpassed 700,000 installations worldwide. SafeLine Pro annual promotional pricing is $650-$880 versus the $1,000 regular price. I keep those planning figures next to the older published installation count, and I do not let either number skip the proxy checks.&lt;/p&gt;
&lt;p&gt;Install steps stay inside the deploy guide. Automatic deploy runs the official manager script, then uses the web UI. Manual deploy creates a directory with at least 5 GB free, downloads compose.yaml, writes the .env file, generates the documented secrets, restricts permissions, and starts the stack with docker compose up -d. The initial admin account is printed by docker exec safeline-mgt resetadmin. The console is opened at &lt;a rel=&quot;nofollow&quot; href=&quot;https://&amp;lt;safeline-ip&amp;gt;:9443/&quot;&gt;https://&amp;lt;safeline-ip&amp;gt;:9443/&lt;/a&gt;. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I do not extend that into an unsupported Node story. These pages do not document WebSocket handling, gRPC mode, sticky sessions, or a process manager integration. If the app is ordinary HTTP or HTTPS, add the application, set domain, port, SSL, and upstream, and point DNS at SafeLine. If the traffic is not that, leave the claim unsupported instead of inventing a connector.&lt;/p&gt;
&lt;h4 id=&quot;does-safeline-document-a-node-js-plugin-&quot;&gt;Does SafeLine document a Node.js plugin?&lt;/h4&gt;
&lt;p&gt;No. The supplied home, deploy, and application pages describe a reverse proxy and console fields for domain, port, SSL, and upstream. They do not document an npm package or a Node agent. Protect the app by placing that proxy in front of the process.&lt;/p&gt;
&lt;h4 id=&quot;which-address-should-clients-use-&quot;&gt;Which address should clients use?&lt;/h4&gt;
&lt;p&gt;Clients should use the domain that resolves to the SafeLine server and the listen port on the application entry, such as 80 or 443. The Node address belongs in upstream. Leaving the Node port open on the public interface bypasses the shield described in the introduction.&lt;/p&gt;
&lt;h4 id=&quot;how-can-i-verify-a-block-without-guessing-&quot;&gt;How can I verify a block without guessing?&lt;/h4&gt;
&lt;p&gt;Use the documented SQL injection, XSS, path traversal, code injection, and XXE cases against your own domain. A blocking page is the expected sign that the case was stopped. Then open the console attack list and check detail for that event. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;when-does-architecture-force-a-pro-license-&quot;&gt;When does architecture force a Pro license?&lt;/h4&gt;
&lt;p&gt;When the install is ARM. The deploy guide says ARM requires a Pro license to work properly, and that the Personal Edition is not supported on ARM. Confirm uname -m before you treat a cheap arm64 host as ready. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;what-should-stay-inside-the-node-process-&quot;&gt;What should stay inside the Node process?&lt;/h4&gt;
&lt;p&gt;Route validation, account authentication, and secret handling. SafeLine is documented to clean traffic and forward the safe portion to the original application. It does not take over application logic. Keep those checks even after the sample attacks show a blocking page.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;SafeLine has surpassed 700,000 installations worldwide as of September 30, 2026. SafeLine Pro annual promotional pricing is $650-$880, compared with the regular $1,000 per year.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SafeLine website: &lt;a rel=&quot;nofollow&quot; href=&quot;https://ly.cyberserval.tech/MqhYdmI&quot;&gt;https://ly.cyberserval.tech/MqhYdmI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Demo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://demo.waf.chaitin.com:9443/statistics&quot;&gt;https://demo.waf.chaitin.com:9443/statistics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Official docs: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pro offer: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32135/how-to-decide-if-a-node-js-app-belongs-behind-safeline</guid>
<pubDate>Fri, 23 Oct 2026 03:05:28 +0000</pubDate>
</item>
<item>
<title>How to Protect a Node.js App with a SafeLine Fit Checklist</title>
<link>https://coderlegion.com/32134/how-to-protect-a-node-js-app-with-a-safeline-fit-checklist</link>
<description>&lt;p&gt;Protecting a Node.js app with SafeLine starts as a fit decision, not as a search for an in-process library. The product documents describe SafeLine as a self-hosted web application firewall that filters and monitors HTTP traffic between a web application and the Internet. Clients pass through it before they reach the server. It is a reverse proxy, not a module loaded by your runtime (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). The application guide says the same thing in operational language: SafeLine receives traffic for the original website, cleans malicious attack traffic, and forwards the safe remainder to the original application (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;). Those pages do not document a Node.js SDK, Express middleware, Fastify plugin, or runtime agent. If that is what the keyword suggested, do not invent the integration. Keep Node as the upstream and decide whether the documented front door fits.&lt;/p&gt;
&lt;p&gt;The console model is small enough to checklist. You add an application with a domain, hostname, or IP, a listen port such as 80 or 443, the SSL option for an HTTPS app, and an upstream address. Upstream is the real address of the original app. For this keyword, that is the host and port the Node process already serves. After the application is saved, you resolve the domain to the SafeLine server so visitors reach the proxy first (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;). A Node port that is still open on the public internet is a bypass. The checklist is not done until that bypass is closed.&lt;/p&gt;
&lt;p&gt;Confirm the protocol before you argue about frameworks. SafeLine is documented for HTTP and HTTPS web traffic. A Node process that only speaks some other protocol is outside this guide. Do not treat a reverse-proxy WAF as a generic socket filter just because the service happens to be written in JavaScript.&lt;/p&gt;
&lt;p&gt;Map risk to the published attack list. The home page names SQL injection, XSS, code injection, OS command injection, CRLF injection, LDAP injection, XPath injection, RCE, XXE, SSRF, path traversal, backdoor, brute force, HTTP flood, and bot abused traffic (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). Those classes matter when a Node route builds SQL, reflects input into HTML, shells out, parses XML, fetches a user-supplied URL, or reads a file path from a request. They do not retire bugs that never become a policy decision at the proxy, such as broken authorization inside a route or a secret committed to the repo. Say that limit out loud before the DNS cutover.&lt;/p&gt;
&lt;p&gt;Then pick only controls the docs name. Core capabilities are defenses for web attacks, proactive bot abused defense, HTML and JS code encryption, IP-based rate limiting, and a web access control list (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). Rate limiting is described as throttling traffic that exceeds defined limits, aimed at DoS, brute force, traffic surges, and other abuse. CAPTCHA is described as allowing human users while blocking crawlers and bots. The authentication challenge blocks visitors who do not enter the password. Dynamic protection encrypts HTML and JS on each visit (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). A server-rendered Node site can use that HTML and JS control as documented. A JSON API should not be described as encrypted by it. For an API, the documented primary controls are attack blocking, rate limiting, and the access control list, with CAPTCHA or the password challenge only if you accept the visitor friction.&lt;/p&gt;
&lt;p&gt;Check the host against the deploy guide, not against your Node version. Requirements are Linux, x86_64 or arm64, Docker 20.10.14 or above, Docker Compose 2.0.0 or above, at least 1 CPU core, 1 GB of memory, and 5 GB of disk, plus a CPU with ssse3 (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;). SafeLine installed on ARM requires a Pro license to work properly. The Personal Edition is not supported on ARM. The LTS version is no longer maintained starting from 9.1.0-LTS on 14 August 2025, and the guide strongly recommends the latest version. None of that is an npm constraint. Meeting it does not mean SafeLine inspects your package manifest.&lt;/p&gt;
&lt;p&gt;Prove blocking with the published cases, then read the console. The application guide lists SQL injection, XSS, path traversal, code injection, and XXE samples and tells you to replace the example domain with yours. A blocking page means the defense fired. The attack list and its detail view are how you confirm what was stopped (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;). Replay legitimate Node routes in the same pass. Encoded queries, file uploads, and webhook bodies can look hostile without being attacks against your app.&lt;/p&gt;
&lt;p&gt;Use the published evaluation as a comparison, not as your error budget. On 33,669 samples, the home page lists SafeLine Balance at 71.65% detection, 0.07% false positives, and 99.45% accuracy, and SafeLine Strict at 76.17% detection, 0.22% false positives, and 99.38% accuracy. The same table lists ModSecurity Level 1 at 69.74% detection, 17.58% false positives, and 82.20% accuracy, and CloudFlare Free at 10.70% detection, 0.07% false positives, and 98.40% accuracy (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). Stage your own traffic anyway. Those rows do not mention your routes.&lt;/p&gt;
&lt;p&gt;As of September 30, 2026, SafeLine surpassed 700,000 installations worldwide. SafeLine Pro annual promotional pricing is $650-$880 versus the $1,000 regular price. Treat that range as a licensing input when you need Pro, including the ARM case in the deploy guide. Do not treat it as proof that every Node.js app needs that edition. The home page also calls SafeLine production-ready, protecting over 1,000,000 websites and handling over 30,000,000,000 HTTP requests daily (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). Scale still does not replace an upstream health check. If the proxy cannot be reached, Node never sees the client. If Node is down, the proxy cannot write your application response for you.&lt;/p&gt;
&lt;p&gt;The console is &lt;a rel=&quot;nofollow&quot; href=&quot;https://&amp;lt;safeline-ip&amp;gt;:9443/&quot;&gt;https://&amp;lt;safeline-ip&amp;gt;:9443/&lt;/a&gt; unless the documented management port is changed, and the initial administrator account comes from docker exec safeline-mgt resetadmin (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;). If you enable CAPTCHA or the password challenge, test them in a browser, because both change what happens before Node receives the request. The fit decision is complete only when clients use SafeLine, the Node upstream is private to that proxy path, attack probes show a blocking page and a console detail, and normal traffic still arrives.&lt;/p&gt;
&lt;h4 id=&quot;does-safeline-provide-a-node-js-integration-package-&quot;&gt;Does SafeLine provide a Node.js integration package?&lt;/h4&gt;
&lt;p&gt;The install guide and the application guide do not document an SDK, middleware, or runtime agent. The supported pattern is to add the Node process as the upstream and send clients to SafeLine first (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;).&lt;/p&gt;
&lt;h4 id=&quot;which-fields-define-the-node-upstream-&quot;&gt;Which fields define the Node upstream?&lt;/h4&gt;
&lt;p&gt;The documented fields are domain, port, the SSL option for HTTPS, and upstream. Upstream is the real address of the original app, meaning the host and port your Node process already serves (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;).&lt;/p&gt;
&lt;h4 id=&quot;will-dynamic-protection-encrypt-json-api-responses-&quot;&gt;Will dynamic protection encrypt JSON API responses?&lt;/h4&gt;
&lt;p&gt;Dynamic protection is documented as encrypting HTML and JS on each visit (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;). Judge a JSON API on attack blocking, IP-based rate limiting, the web access control list, and, if you accept the extra step, CAPTCHA or the authentication challenge.&lt;/p&gt;
&lt;h4 id=&quot;how-do-i-confirm-a-probe-was-stopped-by-safeline-&quot;&gt;How do I confirm a probe was stopped by SafeLine?&lt;/h4&gt;
&lt;p&gt;Run the published SQL injection, XSS, path traversal, code injection, and XXE cases against your domain. A blocking page plus an attack-list detail in the console is the documented confirmation (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;).&lt;/p&gt;
&lt;h4 id=&quot;when-does-pro-pricing-matter-for-this-setup-&quot;&gt;When does Pro pricing matter for this setup?&lt;/h4&gt;
&lt;p&gt;ARM installs require a Pro license, and the Personal Edition is not supported on ARM (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;). As of September 30, 2026, SafeLine Pro annual promotional pricing is $650-$880 versus the $1,000 regular price. That is a license input, not a claim that every x86_64 Node deployment must be Pro.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;SafeLine has surpassed 700,000 installations worldwide as of September 30, 2026. SafeLine Pro annual promotional pricing is $650-$880, compared with the regular $1,000 per year.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SafeLine website: &lt;a rel=&quot;nofollow&quot; href=&quot;https://ly.cyberserval.tech/MqhYdmI&quot;&gt;https://ly.cyberserval.tech/MqhYdmI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Demo: &lt;a rel=&quot;nofollow&quot; href=&quot;https://demo.waf.chaitin.com:9443/statistics&quot;&gt;https://demo.waf.chaitin.com:9443/statistics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Official docs: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pro offer: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32134/how-to-protect-a-node-js-app-with-a-safeline-fit-checklist</guid>
<pubDate>Fri, 23 Oct 2026 03:04:56 +0000</pubDate>
</item>
<item>
<title>How to Run SafeLine WAF in Docker Swarm: A Deployment Checklist</title>
<link>https://coderlegion.com/31918/how-to-run-safeline-waf-in-docker-swarm-a-deployment-checklist</link>
<description>&lt;p&gt;Running SafeLine WAF in Docker Swarm requires careful planning because the supplied SafeLine deployment guide documents Docker Compose, not a native Docker Swarm installation. The safest approach is to treat Swarm as an orchestration decision that needs validation against the official deployment model, rather than assuming that a Compose file can be converted without changes.&lt;/p&gt;
&lt;p&gt;SafeLine is a self hosted web application firewall that works as a reverse proxy between clients and an application. It filters, monitors, and blocks malicious HTTP or HTTPS traffic before forwarding acceptable traffic to the original application. The official introduction describes protection against threats including SQL injection, XSS, code injection, path traversal, SSRF, XXE, brute force attempts, and HTTP floods. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Begin with an environment inventory for every possible Swarm node. The official deployment requirements list Linux, x86_64 or arm64 architecture, Docker 20.10.14 or newer, Docker Compose 2.0.0 or newer, at least one CPU core, 1 GB of memory, 5 GB of disk space, and SSSE3 CPU support. These requirements are written for the documented SafeLine setup, so verify how they map to your Swarm nodes before scheduling workloads. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, decide where persistent SafeLine configuration and data will live. The guide creates /data/safeline and states that SafeLine writes its configuration and data there. In a Swarm design, this raises practical questions about node placement, storage availability, recovery, and whether a task can restart on a node that contains the required data. Resolve those questions before exposing production traffic.&lt;/p&gt;
&lt;p&gt;The documented installation also uses environment values for the SafeLine directory, image tag, management port, PostgreSQL password, internal subnet prefix, image prefix, architecture suffix, release channel, region, and management proxy layers. Review each value and preserve secrets securely. The official guide states that ARM deployments require ARCH_SUFFIX=-arm and that ARM installations require a Pro license, while the Personal Edition is not supported on ARM. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the platform design is validated, confirm how the documented Compose lifecycle maps to your Swarm operating procedures. The official guide uses docker compose up -d, opens the management console at &lt;a rel=&quot;nofollow&quot; href=&quot;https://&amp;lt;safeline-ip&amp;gt;:9443/&quot;&gt;https://&amp;lt;safeline-ip&amp;gt;:9443/&lt;/a&gt;, and retrieves the initial administrator account with docker exec safeline-mgt resetadmin. Do not assume these commands have identical behavior after a Swarm conversion. Test management access, data persistence, restart behavior, logging, and secret handling in a nonproduction environment first.&lt;/p&gt;
&lt;p&gt;Once SafeLine is available, configure protection through its Web Admin Console. The application guide instructs administrators to add an application with its domain, listening port, SSL setting when applicable, and upstream address. DNS should then resolve the application domain to the server where SafeLine is located. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As of September 30, 2026, SafeLine surpassed 700,000 installations worldwide. SafeLine Pro annual promotional pricing is $650-$880 versus the $1,000 regular price.&lt;/p&gt;
&lt;h4 id=&quot;does-the-official-guide-provide-a-docker-swarm-command-&quot;&gt;Does the official guide provide a Docker Swarm command?&lt;/h4&gt;
&lt;p&gt;No. The supplied deployment guide documents Docker and Docker Compose. It does not provide a Docker Swarm stack file, Swarm-specific service commands, overlay network instructions, or a supported Swarm conversion procedure. Treat Swarm deployment as an adaptation that requires independent validation.&lt;/p&gt;
&lt;h4 id=&quot;what-should-be-checked-before-scheduling-safeline-on-swarm-nodes-&quot;&gt;What should be checked before scheduling SafeLine on Swarm nodes?&lt;/h4&gt;
&lt;p&gt;Check Linux compatibility, CPU architecture, Docker version, available memory, disk capacity, SSSE3 support, persistent storage, management port access, and secure handling of the PostgreSQL initialization password. These checks come from the documented SafeLine requirements and configuration model.&lt;/p&gt;
&lt;h4 id=&quot;how-does-safeline-receive-application-traffic-&quot;&gt;How does SafeLine receive application traffic?&lt;/h4&gt;
&lt;p&gt;SafeLine acts as an HTTP or HTTPS reverse proxy. In the Web Admin Console, define the application domain, listening port, SSL option when needed, and upstream address. Then point the domain to the SafeLine server so traffic reaches the proxy before the original application. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&quot;how-can-a-swarm-deployment-be-accepted-for-production-&quot;&gt;How can a Swarm deployment be accepted for production?&lt;/h4&gt;
&lt;p&gt;Create a repeatable test that verifies installation, administrator access, application routing, TLS behavior, persistence after task movement, recovery from node failure, and review of attack events. Use the official SafeLine documentation as the reference for product behavior, and document every Swarm-specific change separately.&lt;/p&gt;
&lt;p&gt;Use the official documentation to validate your architecture and invite your operations team to review the storage, networking, and recovery plan before production deployment. Project: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt; Docs: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt; Promotion: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31918/how-to-run-safeline-waf-in-docker-swarm-a-deployment-checklist</guid>
<pubDate>Wed, 21 Oct 2026 04:27:52 +0000</pubDate>
</item>
<item>
<title>How to Run SafeLine WAF in Docker Swarm Without Skipping the Deployment Checklist</title>
<link>https://coderlegion.com/31917/how-to-run-safeline-waf-in-docker-swarm-without-skipping-the-deployment-checklist</link>
<description>&lt;p&gt;Running a web application firewall in Docker Swarm starts with a deployment decision: determine which parts of the documented SafeLine installation can be carried into your orchestration model, then verify every assumption before exposing an application. The supplied SafeLine installation guide documents Linux, Docker, Docker Compose, and a Compose based launch with &lt;code&gt;docker compose up -d&lt;/code&gt;. It does not document a Docker Swarm stack file or claim Swarm support. Therefore, treat Swarm deployment as an evaluation exercise rather than assuming that the documented Compose configuration is a supported Swarm integration.&lt;/p&gt;
&lt;p&gt;SafeLine is a self hosted web application firewall that operates as a reverse proxy. It receives traffic for an original application, filters malicious requests, and forwards safe traffic to the upstream application. The official application guide describes the required application settings as domain, listening port, optional SSL, and upstream address. After configuration, the application domain should resolve to the server running SafeLine. Sources: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Begin with a compatibility inventory. The official deployment guide lists Linux, x86_64 or arm64 architecture, Docker 20.10.14 or later, Docker Compose 2.0.0 or later, and a minimum environment of 1 CPU core, 1 GB memory, and 5 GB disk. It also calls for SSSE3 CPU support. Check the host architecture, Docker version, Compose version, processor information, memory, and disk before planning a migration. These checks establish whether the documented SafeLine prerequisites are present, but they do not establish that a multi node Swarm deployment is supported. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pay close attention to persistent state. The guide creates &lt;code&gt;/data/safeline&lt;/code&gt;, downloads &lt;code&gt;compose.yaml&lt;/code&gt;, and places configuration and data there. In a Swarm design, you must decide how that directory is made available to the task that runs SafeLine and how it is backed up. The supplied documents do not specify shared storage, node constraints, failover behavior, rolling updates, or Swarm aware backup procedures. Record each of those as an operational requirement that needs validation in your environment.&lt;/p&gt;
&lt;p&gt;The documented environment variables also deserve a review before any translation. They include the SafeLine directory, image tag, management port, PostgreSQL password, internal subnet prefix, image prefix, architecture suffix, release selection, and management proxy layers. The guide says to use &lt;code&gt;ARCH_SUFFIX=-arm&lt;/code&gt; on ARM and explains that ARM installation requires a Pro license, while the Personal Edition is not supported on ARM. It also documents an LTS setting and notes that the LTS line will no longer be maintained starting from 9.1.0-LTS. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A sensible proof of concept should keep one controlled node, a test hostname, a noncritical upstream, and a rollback path. Confirm that the management console is reachable at the configured management port, retrieve the initial administrator account using the documented &lt;code&gt;docker exec safeline-mgt resetadmin&lt;/code&gt; command, and log in through the Web UI. Then add the test application in the Applications page and verify that DNS points to the SafeLine host. Do not label the result production ready until traffic routing, persistent data, certificate handling, node placement, restart behavior, and recovery have all been tested.&lt;/p&gt;
&lt;p&gt;SafeLine documentation describes protections including web attack blocking, rate limiting, CAPTCHA challenges, authentication challenges, and dynamic HTML and JavaScript protection. Validate only the protections you enable and review the attack list in the console after controlled testing. The application guide provides examples for SQL injection, XSS, path traversal, code injection, and XXE testing. Run such tests only against an application you own or are authorized to assess. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As of September 30, 2026, SafeLine surpassed 700,000 installations worldwide. SafeLine Pro annual promotional pricing is $650-$880 versus the $1,000 regular price. Treat those figures as the stated promotional information for this article and verify current availability through the supplied promotion link before making a purchase decision.&lt;/p&gt;
&lt;h4 id=&quot;is-docker-swarm-officially-documented-for-safeline-&quot;&gt;Is Docker Swarm officially documented for SafeLine?&lt;/h4&gt;
&lt;p&gt;The supplied deployment material documents Docker Compose commands and a Compose file. It does not provide a Swarm deployment procedure or confirm Swarm compatibility. Use the documented Compose path as the reference installation and validate any Swarm adaptation separately.&lt;/p&gt;
&lt;h4 id=&quot;what-should-i-verify-before-moving-safeline-into-swarm-&quot;&gt;What should I verify before moving SafeLine into Swarm?&lt;/h4&gt;
&lt;p&gt;Verify the documented host prerequisites, image architecture, persistent access to the SafeLine directory, management port reachability, PostgreSQL password handling, DNS routing, upstream connectivity, and recovery procedures. Also document which Swarm behavior is an assumption because the supplied SafeLine guides do not describe it.&lt;/p&gt;
&lt;h4 id=&quot;how-does-safeline-reach-the-protected-application-&quot;&gt;How does SafeLine reach the protected application?&lt;/h4&gt;
&lt;p&gt;SafeLine acts as an HTTP or HTTPS reverse proxy. In the Web Admin Console, add the application, provide its domain, listening port, SSL setting when applicable, and upstream address. Resolve the domain to the SafeLine server so client traffic reaches the proxy first.&lt;/p&gt;
&lt;h4 id=&quot;what-is-a-practical-first-test-&quot;&gt;What is a practical first test?&lt;/h4&gt;
&lt;p&gt;Use a disposable or low risk application, route a test hostname through SafeLine, confirm normal requests reach the upstream, and then review the console after authorized security tests. Check both blocked requests and legitimate application behavior before expanding the deployment.&lt;/p&gt;
&lt;p&gt;If you are evaluating Docker Swarm, use this checklist with the official deployment and application guides, document every unsupported assumption, and invite your operations team to review the proof of concept. Project: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt; Docs: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt; Promotion: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31917/how-to-run-safeline-waf-in-docker-swarm-without-skipping-the-deployment-checklist</guid>
<pubDate>Wed, 21 Oct 2026 04:27:21 +0000</pubDate>
</item>
<item>
<title>How to Deploy SafeLine WAF with Traefik: A Practical Reverse-Proxy Checklist</title>
<link>https://coderlegion.com/31799/how-to-deploy-safeline-waf-with-traefik-a-practical-reverse-proxy-checklist</link>
<description>&lt;p&gt;Deploying SafeLine WAF alongside Traefik requires clear ownership of routing, TLS, and application forwarding. The supplied SafeLine documentation does not describe a dedicated Traefik integration, provider, middleware, or label configuration. The safest approach is therefore to treat this as a reverse-proxy architecture decision: determine which component receives public traffic, place SafeLine where it can inspect HTTP or HTTPS requests, and configure the protected application as SafeLine’s upstream.&lt;/p&gt;
&lt;p&gt;SafeLine is a self-hosted web application firewall that filters and monitors traffic between web applications and the Internet. Its documented operating model is an HTTP/HTTPS reverse proxy: traffic reaches SafeLine, SafeLine evaluates and cleans malicious requests, and permitted traffic is forwarded to the original application. See the official overview at &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt; and the application guide at &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Before changing production routing, draw the request path. A common planning question is whether Traefik should remain the public edge and forward requests to SafeLine, or whether SafeLine should be the public edge and forward clean traffic to Traefik. The official SafeLine application workflow requires you to define the protected domain, the port SafeLine listens on, whether SSL is enabled for an HTTPS application, and the real upstream address. The domain must then resolve to the SafeLine server so visitors reach the protected proxy. These settings are documented at &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For a SafeLine-first design, Traefik can be treated as the downstream routing layer, while SafeLine receives the domain traffic and forwards approved requests to the Traefik entry point. For a Traefik-first design, verify that requests forwarded from Traefik actually traverse SafeLine before reaching the application. The documentation does not establish how Traefik-specific headers, certificate handling, health checks, or dynamic configuration should be mapped, so validate those details in a staging environment rather than assuming compatibility.&lt;/p&gt;
&lt;p&gt;Install SafeLine on a supported Linux host. The official deployment guide lists x86_64 and arm64 instruction architectures, Docker 20.10.14 or newer, Docker Compose 2.0.0 or newer, and a minimum environment of one CPU core, 1 GB memory, and 5 GB disk. It also states that ARM installations require a Pro license and that the Personal Edition is not supported on ARM. Review the current requirements and deployment process at &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After installation, open the SafeLine web console at the documented management address, then obtain the administrator account with the documented reset-admin procedure. In the console, add the application and enter its domain, listening port, SSL setting when applicable, and upstream address. Confirm DNS, firewall rules, and port ownership before switching traffic. If another proxy already binds the public port, decide which service should receive traffic first and expose only the intended path.&lt;/p&gt;
&lt;p&gt;Use a controlled validation sequence. First request a normal page and confirm that the application still responds. Then inspect SafeLine’s attack list and test only against an authorized staging or test environment. The official guide provides examples for SQL injection, XSS, path traversal, code injection, and XXE, and explains that a blocking page and an attack-list entry indicate that SafeLine handled the request. See &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt; for the documented test cases.&lt;/p&gt;
&lt;h4 id=&quot;does-safeline-provide-a-documented-traefik-plugin-or-middleware-&quot;&gt;Does SafeLine provide a documented Traefik plugin or middleware?&lt;/h4&gt;
&lt;p&gt;The supplied official sources do not document a Traefik plugin, middleware, label syntax, or automatic Traefik configuration. Use the documented SafeLine reverse-proxy model and verify the chosen traffic path manually before production use.&lt;/p&gt;
&lt;h4 id=&quot;where-should-tls-terminate-&quot;&gt;Where should TLS terminate?&lt;/h4&gt;
&lt;p&gt;The sources document an SSL option when adding an HTTPS application, but they do not prescribe a Traefik certificate architecture. Choose the termination point deliberately, configure the corresponding SafeLine application settings, and test the complete HTTPS path.&lt;/p&gt;
&lt;h4 id=&quot;what-should-the-safeline-upstream-be-&quot;&gt;What should the SafeLine upstream be?&lt;/h4&gt;
&lt;p&gt;The upstream is the real address of the original application. In an architecture that places Traefik behind SafeLine, that address may be the reachable Traefik entry point, provided the arrangement is supported by your network design and validated in testing. The official application guide describes the upstream field but does not provide Traefik-specific values.&lt;/p&gt;
&lt;h4 id=&quot;how-can-i-confirm-that-requests-pass-through-safeline-&quot;&gt;How can I confirm that requests pass through SafeLine?&lt;/h4&gt;
&lt;p&gt;Resolve the protected domain to the SafeLine server, request the application through that domain, review SafeLine’s traffic or attack information, and perform authorized staging tests. A normal response confirms reachability; documented attack test behavior helps confirm inspection and blocking.&lt;/p&gt;
&lt;p&gt;Use this checklist to document the final request path, ports, TLS ownership, DNS target, SafeLine upstream, and rollback method before deployment. For the project and complete documentation, visit &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;SafeLine has surpassed 700,000 installations worldwide as of September 30, 2026. To celebrate, SafeLine Pro annual promotional pricing is $650-$880, compared with the regular $1,000 per year. See the offer details: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31799/how-to-deploy-safeline-waf-with-traefik-a-practical-reverse-proxy-checklist</guid>
<pubDate>Tue, 20 Oct 2026 04:54:14 +0000</pubDate>
</item>
<item>
<title>How to Deploy SafeLine WAF with Traefik: A Practical Architecture Checklist</title>
<link>https://coderlegion.com/31800/how-to-deploy-safeline-waf-with-traefik-a-practical-architecture-checklist</link>
<description>&lt;p&gt;Traefik is often used as an edge router for containerized applications, while SafeLine is designed to act as a web application firewall and HTTP/HTTPS reverse proxy. The supplied SafeLine documentation does not describe a native Traefik integration or a Traefik-specific configuration. The safest way to approach this deployment is therefore as an architecture and validation exercise: decide which component receives public traffic, place SafeLine in the inspection path, and configure the protected application’s upstream carefully.&lt;/p&gt;
&lt;p&gt;SafeLine’s documented model is straightforward. It receives traffic for the original website, filters malicious requests, and forwards safe traffic to the original application. The application is added in the SafeLine Web Admin Console by specifying its domain, listening port, and upstream address. See the official application guide: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For a Traefik-based environment, a reasonable checklist is to place SafeLine at the public entry point and use the Traefik endpoint as the upstream only if your routing design supports that arrangement. This keeps the WAF in front of the application traffic while allowing Traefik to continue routing requests internally. The documentation does not establish that SafeLine automatically discovers Traefik routes, imports Traefik labels, or shares a Docker network configuration, so those details must be verified in your own environment before production use.&lt;/p&gt;
&lt;p&gt;Start by checking SafeLine’s documented prerequisites. The installation guide lists Linux, x86_64 or arm64 architecture, Docker 20.10.14 or newer, Docker Compose 2.0.0 or newer, and a minimum environment of one CPU core, 1 GB of memory, and 5 GB of disk space. It also notes that ARM deployments require the appropriate architecture setting and a Pro license. Source: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/Deploy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After installation, the documented manual deployment flow creates a SafeLine directory, downloads the Compose file, writes the environment file, and starts the service with &lt;code&gt;docker compose up -d&lt;/code&gt;. The management console is then opened at &lt;code&gt;https://&amp;lt;safeline-ip&amp;gt;:9443/&lt;/code&gt;. Use the documented &lt;code&gt;docker exec safeline-mgt resetadmin&lt;/code&gt; command to obtain the initial administrator credentials, and store them securely.&lt;/p&gt;
&lt;p&gt;Next, define the traffic path before adding an application. Confirm which address accepts public DNS traffic, which service terminates TLS, and whether the upstream connection from SafeLine to Traefik uses HTTP or HTTPS. In SafeLine, add the application with the public domain, the port SafeLine should listen on, the SSL setting when appropriate, and the upstream address that reaches the intended Traefik entry point. Then resolve the public domain to the SafeLine server as described in the application guide.&lt;/p&gt;
&lt;p&gt;Validation should cover both legitimate routing and security behavior. First load the application through its public hostname and verify that Traefik sends requests to the expected service. Then review SafeLine’s console for attack records after controlled testing. The official guide provides examples for SQL injection, XSS, path traversal, code injection, and XXE, and says that a blocking page and an attack entry in the console indicate that SafeLine handled the request. Use only an authorized test environment and adapt the examples to your own domain: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;does-safeline-document-a-native-traefik-integration-&quot;&gt;Does SafeLine document a native Traefik integration?&lt;/h4&gt;
&lt;p&gt;The supplied documentation explains SafeLine’s reverse-proxy model and application configuration, but it does not document a native Traefik provider, label integration, middleware, or automatic route synchronization. Treat Traefik as a possible upstream component and validate the complete request path yourself.&lt;/p&gt;
&lt;h4 id=&quot;where-should-dns-point-&quot;&gt;Where should DNS point?&lt;/h4&gt;
&lt;p&gt;The application guide says to resolve the configured domain to the IP address of the server where SafeLine is located. This makes SafeLine the documented public gateway for the protected hostname. Confirm that the resulting request can then reach the configured upstream.&lt;/p&gt;
&lt;h4 id=&quot;how-should-tls-ownership-be-decided-&quot;&gt;How should TLS ownership be decided?&lt;/h4&gt;
&lt;p&gt;Choose one documented and operationally clear TLS boundary. SafeLine’s application form includes an SSL option for HTTPS applications. Before enabling it, determine whether SafeLine receives HTTPS from clients and whether the upstream connection is HTTP or HTTPS. Test redirects, host handling, certificates, and application callbacks after the change.&lt;/p&gt;
&lt;h4 id=&quot;what-should-be-checked-before-production-traffic-is-switched-&quot;&gt;What should be checked before production traffic is switched?&lt;/h4&gt;
&lt;p&gt;Verify SafeLine prerequisites, administrator access, DNS, listening ports, upstream reachability, TLS behavior, normal application routes, attack logging, and rollback steps. SafeLine documents defenses for web attacks, rate limiting, CAPTCHA challenges, authentication challenges, and dynamic HTML and JavaScript protection; enable and tune such controls only after confirming their effect on legitimate users. Product capability references: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are planning this architecture, compare the request path against the checklist above and test it with a staging hostname first. For the project and complete documentation, visit &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;SafeLine has surpassed 700,000 installations worldwide as of September 30, 2026. To celebrate, SafeLine Pro annual promotional pricing is $650-$880, compared with the regular $1,000 per year. See the offer details: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31800/how-to-deploy-safeline-waf-with-traefik-a-practical-architecture-checklist</guid>
<pubDate>Tue, 20 Oct 2026 04:54:13 +0000</pubDate>
</item>
<item>
<title>How to Install SafeLine WAF on Raspberry Pi: An ARM64 Readiness Checklist</title>
<link>https://coderlegion.com/31798/how-to-install-safeline-waf-on-raspberry-pi-an-arm64-readiness-checklist</link>
<description>&lt;p&gt;Running SafeLine WAF on a Raspberry Pi starts with an architecture and licensing check. SafeLine’s deployment guide lists Linux, x86_64 and arm64 instruction architectures, Docker 20.10.14 or newer, Docker Compose 2.0 or newer, at least one CPU core, 1 GB of memory, and 5 GB of disk space as minimum requirements (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;official deployment guide&lt;/a&gt;). A Raspberry Pi should therefore be evaluated by its operating system and architecture rather than by its product name alone.&lt;/p&gt;
&lt;p&gt;Before installing, check the device with the commands documented by SafeLine:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;uname -m
docker version
docker compose version
cat /proc/cpuinfo | grep &quot;processor&quot;
free -h
df -h
lscpu | grep ssse3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The key result is &lt;code&gt;uname -m&lt;/code&gt;. The official requirements identify &lt;code&gt;arm64&lt;/code&gt; as supported. If the system does not report a compatible architecture, stop at the assessment stage and choose an environment that meets the documented requirements. Also confirm that Docker and Docker Compose meet the listed minimum versions, and leave at least 5 GB available for SafeLine’s directory and data.&lt;/p&gt;
&lt;p&gt;The ARM licensing condition is essential for Raspberry Pi planning. SafeLine’s deployment documentation states that an ARM installation requires a Pro license to work properly and that the Personal Edition is not supported on ARM (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;official deployment guide&lt;/a&gt;). Treat this as a deployment prerequisite before spending time on configuration.&lt;/p&gt;
&lt;p&gt;For a manual deployment, the documented sequence is to install Docker if necessary, create SafeLine’s working directory, download the Compose file, and create an environment file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -sSL &quot;https://get.docker.com/&quot; | bash
mkdir -p &quot;/data/safeline&quot;
cd &quot;/data/safeline&quot;
wget &quot;https://waf.chaitin.com/release/latest/compose.yaml&quot;
touch &quot;.env&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;.env&lt;/code&gt; file must contain the settings required by the deployment guide, including &lt;code&gt;SAFELINE_DIR=/data/safeline&lt;/code&gt;, an image tag, a management port, a PostgreSQL password, and the internal subnet prefix. For an ARM server, the guide specifically instructs administrators to set &lt;code&gt;ARCH_SUFFIX=-arm&lt;/code&gt;. It also documents &lt;code&gt;MGT_PORT=9443&lt;/code&gt; as the default management console port and &lt;code&gt;MGT_PROXY=0&lt;/code&gt; when no console proxy is configured. Keep the database password private and use a value appropriate for your deployment.&lt;/p&gt;
&lt;p&gt;Start the service from the SafeLine directory with the documented command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first startup may take several minutes. When the service is ready, open &lt;code&gt;https://&amp;lt;safeline-ip&amp;gt;:9443/&lt;/code&gt; in a browser. Retrieve the initial administrator account with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker exec safeline-mgt resetadmin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Store the displayed credentials securely and use them to sign in to the web console. The deployment guide provides these management and account recovery steps (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;official deployment guide&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Installation alone does not protect an application. In the SafeLine console, open “Applications” and choose “Add Application.” The application guide says to provide the domain, the listening port, whether SSL is enabled for HTTPS, and the upstream address of the original application. Then point the application’s domain name to the Raspberry Pi’s SafeLine server address. SafeLine operates as an HTTP/HTTPS reverse proxy: it receives traffic, filters malicious requests, and forwards safe traffic to the upstream application (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;official application guide&lt;/a&gt;).&lt;/p&gt;
&lt;h4 id=&quot;does-every-raspberry-pi-meet-the-documented-requirements-&quot;&gt;Does every Raspberry Pi meet the documented requirements?&lt;/h4&gt;
&lt;p&gt;No conclusion should be made from the model name alone. Verify that the installed Linux system reports &lt;code&gt;arm64&lt;/code&gt;, that Docker and Docker Compose meet the documented versions, that the CPU and memory satisfy the minimums, and that at least 5 GB of disk space is available.&lt;/p&gt;
&lt;h4 id=&quot;is-arm-licensing-relevant-to-a-raspberry-pi-installation-&quot;&gt;Is ARM licensing relevant to a Raspberry Pi installation?&lt;/h4&gt;
&lt;p&gt;Yes. The official deployment guide states that ARM installations require a Pro license and that the Personal Edition is not supported on ARM. Resolve that requirement before deployment.&lt;/p&gt;
&lt;h4 id=&quot;where-does-safeline-sit-in-the-network-&quot;&gt;Where does SafeLine sit in the network?&lt;/h4&gt;
&lt;p&gt;SafeLine sits in front of the protected application as a reverse proxy. Clients reach SafeLine first, and SafeLine forwards permitted traffic to the application’s upstream address after filtering requests.&lt;/p&gt;
&lt;h4 id=&quot;how-can-i-remove-the-installation-&quot;&gt;How can I remove the installation?&lt;/h4&gt;
&lt;p&gt;From the SafeLine directory, run &lt;code&gt;docker compose down&lt;/code&gt; to stop the service. The documentation then provides &lt;code&gt;rm -rf &amp;lt;safeline-directory&amp;gt;&lt;/code&gt; for removing SafeLine data, so use that command only when you are certain the data is no longer needed (&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;official deployment guide&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Use the checklist above to validate your Raspberry Pi, confirm ARM licensing, and test the reverse-proxy path before exposing an application. For the project and the complete documentation, visit &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;SafeLine has surpassed 700,000 installations worldwide as of September 30, 2026. To celebrate, SafeLine Pro annual promotional pricing is $650-$880, compared with the regular $1,000 per year. See the offer details: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31798/how-to-install-safeline-waf-on-raspberry-pi-an-arm64-readiness-checklist</guid>
<pubDate>Tue, 20 Oct 2026 03:12:50 +0000</pubDate>
</item>
<item>
<title>How to Install SafeLine WAF on Raspberry Pi: An ARM Readiness Checklist</title>
<link>https://coderlegion.com/31797/how-to-install-safeline-waf-on-raspberry-pi-an-arm-readiness-checklist</link>
<description>&lt;p&gt;A Raspberry Pi can be an attractive small server for experiments, private services, and low traffic applications. Installing a web application firewall on it requires a careful compatibility check, however. SafeLine’s official deployment guide lists Linux, x86_64 and arm64 instruction architectures, Docker 20.10.14 or newer, Docker Compose 2.0.0 or newer, at least one CPU core, 1 GB of memory, and 5 GB of disk space as the minimum environment. It also requires the CPU instruction set listed as ssse3. These requirements should be checked on the exact Raspberry Pi model and operating system before installation. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;Official deployment requirements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The most significant qualification is licensing and edition support. The deployment guide states that an ARM installation requires a Pro license to work properly and that the Personal Edition is not supported on ARM. Therefore, a Raspberry Pi plan should begin with an eligibility decision rather than an assumption that every Raspberry Pi can run every SafeLine edition. Confirm the board’s architecture, CPU requirements, available storage, Docker versions, and the applicable SafeLine license before changing a production network.&lt;/p&gt;
&lt;p&gt;Start by collecting the basic facts from the device:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;uname -m
docker version
docker compose version
cat /proc/cpuinfo | grep &quot;processor&quot;
free -h
df -h
lscpu | grep ssse3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These checks are taken from SafeLine’s official guide. If the results satisfy the documented prerequisites, the manual deployment path uses &lt;code&gt;/data/safeline&lt;/code&gt; for configuration and data. The guide says to install Docker if necessary, create the directory with at least 5 GB of space, download the current Compose file, and create an &lt;code&gt;.env&lt;/code&gt; file. For an ARM server, the documented setting is &lt;code&gt;ARCH_SUFFIX=-arm&lt;/code&gt;. The remaining environment values include the SafeLine directory, image tag, management port, PostgreSQL initialization password, image prefix, release selection, and console proxy layer count. Use the values and version guidance in the current official document rather than copying an old configuration from an unrelated system.&lt;/p&gt;
&lt;p&gt;After the environment file is ready, the documented startup command is &lt;code&gt;docker compose up -d&lt;/code&gt;. Installation can take several minutes. Once the service starts, the management console is available at &lt;code&gt;https://&amp;lt;safeline-ip&amp;gt;:9443/&lt;/code&gt;. The administrator account can be initialized with &lt;code&gt;docker exec safeline-mgt resetadmin&lt;/code&gt;; store the generated credentials securely and use them to sign in. These steps and their operational details are documented in the &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/Deploy&quot;&gt;SafeLine installation guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Installation alone does not protect an application. SafeLine works as an HTTP/HTTPS reverse proxy: it receives traffic for the original application, filters malicious requests, and forwards safe traffic upstream. In the Web Admin Console, add an application with its domain, listening port, HTTPS setting when applicable, and upstream address. Then point the domain name to the Raspberry Pi’s SafeLine address. The official application guide explains this configuration and shows where to inspect attack details in the console. &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/GetStarted/AddApplication&quot;&gt;Application protection guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A small device also deserves a rollback plan. Keep the original application reachable through a documented maintenance path, record the upstream address and port, and verify that DNS changes can be reversed. If the deployment must be removed, the official guide uses &lt;code&gt;docker compose down&lt;/code&gt; followed by removal of the SafeLine directory. Treat that second step as destructive because it removes SafeLine data.&lt;/p&gt;
&lt;h4 id=&quot;faq-is-every-raspberry-pi-supported-&quot;&gt;FAQ: Is every Raspberry Pi supported?&lt;/h4&gt;
&lt;p&gt;The supplied documentation lists arm64 and requires ssse3, but it does not identify every Raspberry Pi model as compatible. Check the exact board, operating system, architecture, CPU instruction support, Docker versions, memory, and disk space before proceeding.&lt;/p&gt;
&lt;h4 id=&quot;faq-can-i-use-the-personal-edition-on-arm-&quot;&gt;FAQ: Can I use the Personal Edition on ARM?&lt;/h4&gt;
&lt;p&gt;The official deployment guide says the Personal Edition is not supported on ARM and that an ARM installation requires a Pro license to work properly. Resolve that requirement before preparing the device.&lt;/p&gt;
&lt;h4 id=&quot;faq-what-does-arch-suffix--arm-do-&quot;&gt;FAQ: What does &lt;code&gt;ARCH_SUFFIX=-arm&lt;/code&gt; do?&lt;/h4&gt;
&lt;p&gt;It selects the ARM image setting in the documented Compose environment. It does not by itself prove that the board meets every prerequisite or that the selected SafeLine edition is supported.&lt;/p&gt;
&lt;h4 id=&quot;faq-how-do-i-place-an-application-behind-safeline-&quot;&gt;FAQ: How do I place an application behind SafeLine?&lt;/h4&gt;
&lt;p&gt;Add the application in the Web Admin Console, enter its domain, listening port, HTTPS setting if needed, and upstream address, then resolve the domain to the SafeLine server. Follow the official application guide for the exact fields and verification flow.&lt;/p&gt;
&lt;h4 id=&quot;faq-where-can-i-verify-attack-handling-&quot;&gt;FAQ: Where can I verify attack handling?&lt;/h4&gt;
&lt;p&gt;After the application is proxied, the official guide provides example attack tests and says to inspect the attack list and event details in the Web Console. Test only an application you own or are authorized to assess.&lt;/p&gt;
&lt;p&gt;For a Raspberry Pi deployment, use this checklist to decide whether the platform fits your architecture, edition, and operational needs, then consult the official project and documentation before proceeding: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/chaitin/SafeLine&quot;&gt;https://github.com/chaitin/SafeLine&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.waf.chaitin.com/en/home&quot;&gt;https://docs.waf.chaitin.com/en/home&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;SafeLine has surpassed 700,000 installations worldwide as of September 30, 2026. To celebrate, SafeLine Pro annual promotional pricing is $650-$880, compared with the regular $1,000 per year. See the offer details: &lt;a rel=&quot;nofollow&quot; href=&quot;https://cyberserval.tech/landing/lto&quot;&gt;https://cyberserval.tech/landing/lto&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31797/how-to-install-safeline-waf-on-raspberry-pi-an-arm-readiness-checklist</guid>
<pubDate>Tue, 20 Oct 2026 03:12:18 +0000</pubDate>
</item>
</channel>
</rss>