+9
nixos/doc/manual/redirects.json
+9
nixos/doc/manual/redirects.json
···
+2
nixos/doc/manual/release-notes/rl-2505.section.md
+2
nixos/doc/manual/release-notes/rl-2505.section.md
···- [PDS](https://github.com/bluesky-social/pds), Personal Data Server for [bsky](https://bsky.social/). Available as [services.pds](option.html#opt-services.pds).+- [Anubis](https://github.com/TecharoHQ/anubis), a scraper defense software. Available as [services.anubis](options.html#opt-services.anubis).- [synapse-auto-compressor](https://github.com/matrix-org/rust-synapse-compress-state?tab=readme-ov-file#automated-tool-synapse_auto_compressor), a rust-based matrix-synapse state compressor for postgresql. Available as [services.synapse-auto-compressor](#opt-services.synapse-auto-compressor.enable).
+1
nixos/modules/module-list.nix
+1
nixos/modules/module-list.nix
···
+61
nixos/modules/services/networking/anubis.md
+61
nixos/modules/services/networking/anubis.md
···+[Anubis](https://anubis.techaro.lol) is a scraper defense software that blocks AI scrapers. It is designed to sit+This module is designed to use Unix domain sockets as the socket paths can be automatically configured for multiple+If Unix domain sockets are not needed or desired, this module supports operating with only TCP sockets.+It is possible to configure default settings for all instances of Anubis, via {option}`services.anubis.defaultOptions`.+Note that at the moment, a custom bot policy is not merged with the baked-in one. That means to only override a setting+[the upstream repository](https://github.com/TecharoHQ/anubis/blob/1509b06cb921aff842e71fbb6636646be6ed5b46/cmd/anubis/botPolicies.json)
+314
nixos/modules/services/networking/anubis.nix
+314
nixos/modules/services/networking/anubis.nix
···+Anubis policy configuration in Nix syntax. Set to `null` to use the baked-in policy which should be+This option has no effect if `settings.POLICY_FNAME` is set to a different value, which is useful for+See [the documentation](https://anubis.techaro.lol/docs/admin/installation) for a complete list of+# BIND and METRICS_BIND are defined in instance specific options, since global defaults don't make sense+Whether to serve a default robots.txt that denies access to common AI bots by name and all other+The address that Anubis listens to. See Go's [`net.Listen`](https://pkg.go.dev/net#Listen) for syntax.+Defaults to Unix domain sockets. To use TCP sockets, set this to a TCP address and `BIND_NETWORK` to `"tcp"`.+The address Anubis' metrics server listens to. See Go's [`net.Listen`](https://pkg.go.dev/net#Listen) for+The metrics server is enabled by default and may be disabled. However, due to implementation details, this is+only possible by setting a command line flag. See {option}`services.anubis.defaultOptions.extraFlags` for an+Defaults to Unix domain sockets. To use TCP sockets, set this to a TCP address and `METRICS_BIND_NETWORK` to+The usage of Unix domain sockets is supported by the following syntax: `unix:///path/to/socket.sock`.+The attribute name may be an empty string, in which case the `-<name>` suffix is not added to the service name
+1
nixos/tests/all-tests.nix
+1
nixos/tests/all-tests.nix
···
+98
nixos/tests/anubis.nix
+98
nixos/tests/anubis.nix
···+"/metrics".proxyPass = "http://unix:${config.services.anubis.instances."".settings.METRICS_BIND}";+machine.succeed('curl -f -X POST http://basic.localhost/.within.website/x/cmd/anubis/api/make-challenge | grep challenge')