mrkeyoor.com_
Thu 24 Sept 19:59 UTC
Self-Hostedevaluationupdated 26 Aug 2026

anubis review

Anubis is a reverse-proxy gate that asks suspicious web visitors to complete a browser challenge before they reach your site. It is aimed at small sites overwhelmed by bulk AI scraping, especially operators who cannot or will not put the origin behind Cloudflare.

+108stars / 7d
Verdict

Our Anubis install stopped after 24 seconds because its prepare script reached a Go version and tool block the sandbox parser did not accept, so source contributors need the exact documented toolchain before they begin. Use Anubis when scraper traffic is measurably hurting a small origin and you can tolerate a browser challenge plus ongoing allowlist work. Do not deploy it as a reflex: the project itself warns that it can block useful bots and smaller clients.

We ran it

Lab card: what happened when we ran anubisScreenshot of anubis (anubis.techaro.lol)
Install✗ · 24s
Build—
Repo785 files~31,961 lines of source · 4.9 MB · 18 CI workflows · tests dir

Answers from our run

Does anubis build from source?

The dependency install failed, and the project has no separate build step. We cloned commit 2f45638 into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use anubis?

Sites that need every small browser, archive, feed reader, or script client to work by default: the README calls Anubis a nuclear response and warns that good bots may be blocked.

What are the alternatives to anubis?

CrowdSec, ALTCHA, Cloudflare. Our Anubis install stopped after 24 seconds because its prepare script reached a Go version and tool block the sandbox parser did not accept, so source contributors need the exact documented toolchain before they begin.

Setup2/5Published packages help, but source install failed on Go syntax
Docs4/5Policies, environments, cookies, and proxy deployment are documented
Community5/521,732 stars and active same-day issue and pull request work
Maturity4/5v1.27.0 is active; proxy path and client compatibility remain sharp

Discussed on

  1. hnFeat: Add 'Proof of React' Challenge11 points
  2. hnAnubis – Open-Source Web AI Firewall Utility10 points
  3. hnAnubis: Weighs the soul of HTTP requests using proof-of-work to stop AI crawlers6 points
  4. hnAnubis weighs the soul of incoming HTTP requests to stop AI crawlers4 points

Who it’s for

Independent site operators whose logs show automated scraping is exhausting the origin.
Self-hosters able to place a policy-aware proxy in front of an existing application.
Administrators willing to maintain crawler allowlists and test real browsers after every policy change.
Sites where a short JavaScript proof-of-work challenge is less harmful than continued scraper load.

Who it’s NOT for

Sites that need every small browser, archive, feed reader, or script client to work by default: the README calls Anubis a nuclear response and warns that good bots may be blocked.
Public services where JavaScript-free access is a requirement: the challenge depends on browser behavior that command-line and accessibility-oriented clients may not provide.
Operators who cannot test reverse-proxy headers and path handling: issue #1886 reports a protected Forgejo path returning users to the homepage after the challenge.
Teams already satisfied with Cloudflare's protections: Anubis's README says most sites probably do not need it in that case.
Developers pinned to the older Go parser in our Node 22 sandbox: installation stopped on the declared Go version and tool block before build or tests.

Setup reality

Our sandbox install failed with exit 1 after 24 seconds. Npm ran Anubis's prepare step, which called go mod download; the available Go parser rejected go 1.26.3 and reported unknown block type: tool. Because installation did not finish, no build or tests ran.

Deployment needs a reverse proxy route, an upstream target, a public URL, an Ed25519 signing key, cookie settings, and a bot policy. Administrators must pass the correct client address and original request headers, decide which crawlers bypass challenges, and keep the metrics endpoint private or separately protected.

The 4.9 MB checkout had 785 files and about 31,961 source lines, with 18 CI workflows and a tests directory but no Dockerfile in our scan. Published container images and packages are the intended operator path. Browser challenges, cookies, redirects, and trusted-proxy handling all need checks against the actual ingress stack.

Anubis trades universal access for lower scraper load

Anubis sits between a visitor and an existing web application. A request that policy does not trust receives a JavaScript challenge, and successful clients get a signed cookie before traffic reaches the origin. The goal is to make bulk scraping consume enough client work that a small server stays usable. It is an HTTP gate, not a crawler detector that can identify every company or intent with certainty.

The README is candid about the trade. It calls Anubis a nuclear response and says smaller scrapers or useful bots such as the Internet Archive may be blocked. Administrators can write policy rules and allow known crawlers, but that makes bot classification an operating task. A site serving researchers, feed readers, command-line clients, or unusual browsers should inventory those users before turning the challenge on.

The 24-second install failed before compilation began

We cloned commit 2f45638 into an unprivileged Debian container with 3 CPUs and 8 GB of RAM using the lab Node 22 image. The checkout contained 785 files, about 31,961 source lines, and occupied 4.9 MB. Npm began installation, ran the package's prepare script, invoked Husky, and then called go mod download.

That Go command rejected the module file. The log says line 3 contains an invalid Go version, 1.26.3, for the parser's expected format, and line 204 has an unknown tool block. Npm exited with code 1 after 24 seconds. The failure shows that this source checkout expects a newer or different Go toolchain than the one available in that sandbox. The log does not show a missing network dependency or application defect.

What happened when we ran it

Our sandbox never completed installation. The prepare hook failed after 24 seconds at go mod download, so the harness had no valid dependency state from which to build or test. We did not run a binary, solve a browser challenge, or send traffic through a protected origin. Any claim about request capacity, proof cost, or crawler reduction would go beyond this measurement.

The repository scan found 18 CI workflow files and a tests directory, but no Dockerfile. That does not mean containers are unavailable: the project publishes images and the release notes discuss container tags. It means our source scan and npm path are different from the packaged deployment route an administrator would normally follow. Source contributors should match the repository's Go declaration before interpreting any later compiler or test result.

Reverse-proxy correctness decides whether users return to the right page

Anubis needs an upstream target, public URL, signing key, policy file, cookie configuration, and a listener behind the site's ingress. The ingress must preserve the original host, path, scheme, and client address correctly. Getting one header wrong can affect policy decisions or the post-challenge redirect. Metrics should be bound where the monitoring system can reach them without exposing operational data to the public internet.

Open issue #1886 reports that a Forgejo request for /foo returned to the site homepage after the user solved the challenge. The reporter supplied Caddy headers and a Compose configuration, and Anubis logged the original path. Issue #1878 describes malformed redirects for a path without a trailing slash in an Apache setup. These are individual reports, not proof that every proxy combination fails. They justify explicit tests for deep links, query strings, trailing slashes, and login callbacks.

Browser challenges exclude more than hostile AI crawlers

A normal graphical browser can run the challenge and retain its cookie. Text browsers, scripts, monitoring probes, RSS readers, package clients, and users who disable JavaScript may not. Search and archive crawlers need deliberate policy decisions. Release v1.27.0 added rules for Arquivo.pt, Dillo, NetSurf, Pale Moon, Googlebot addresses, DuckDuckBot, and another AI crawler, showing how much maintenance sits around the challenge itself.

Local services are another edge case. Issue #1888 asks Anubis to allow localhost by default because same-machine clients otherwise face the gate. The reporter also notes that such a default would make local reproduction harder, so they plan to handle it in user policy. That is the correct mental model: an allow rule changes both access and what can be tested from a host. Monitor checks should exercise the protected public route as well as the origin.

Active releases do not make a blanket policy safe

Version 1.27.0 was published on August 8, 2026. It introduced beta Windows Server packages, changed cookie names based on settings, and fixed a release process that had allowed prerelease containers to populate the latest tag. GitHub showed 21,732 stars, 364 combined issues and pull requests, and an August 25 push. Those facts show active maintenance and a sizable user queue.

The dynamic cookie change fixes loops caused by old cookies surviving configuration changes, but it can affect advanced setups that inspect cookie names. The earlier container-tag mistake is also a reason to pin releases rather than follow latest. Anubis is a sensible response when logs prove that scraper load threatens uptime. If Cloudflare is already acceptable, or if non-JavaScript access is part of the service contract, its own README points toward a less disruptive choice.

Alternatives

ProjectWhat it isPick it when
CrowdSec gh↗A collaborative detection engine that turns log behavior into remediation decisions across supported firewalls and proxies.pick this instead when blocking abusive addresses from log patterns suits the threat better than challenging every uncertain browser.
ALTCHAA self-hosted proof-of-work CAPTCHA system for protecting forms and application actions.pick this instead when abuse is concentrated on signup, login, or submission forms rather than whole-site crawling.
CloudflareA managed edge network with bot controls, rate limits, caching, and firewall rules.pick this instead when a managed edge service is acceptable and reducing origin traffic matters more than keeping the gate self-hosted.

What people are saying

  1. [github-trending] TecharoHQ/anubis

Sources

  1. Anubis README
  2. Anubis v1.27.0 release
  3. Forgejo path issue #1886
  4. Trailing slash issue #1878
  5. Localhost policy request #1888

More self-hosted reviews

autobrr · AgentENV · LibreChat · hosts · Atomic-Chat · omakade · the whole board →