v1.21.0: Minfilia Warde #846
Xe
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
In this release, Anubis becomes internationalized, gains the ability to use system load as input to issuing challenges, finally fixes the "invalid response" after "success" bug, and more! Please read these notes before upgrading as the changes are big enough that administrators should take action to ensure that the upgrade goes smoothly.
Big ticket changes
The biggest change is that the "invalid response" after "success" bug is now finally fixed for good by totally rewriting how Anubis' challenge issuance flow works. Instead of generating challenge strings from request metadata (under the assumption that the values being compared against are stable), Anubis now generates random data for each challenge. This data is stored in the active storage backend for up to 30 minutes. This also fixes #746 and other similar instances of this issue.
In order to reduce confusion, the "Success" interstitial that shows up when you pass a proof of work challenge has been removed.
Storage
Anubis now is able to store things persistently in memory, on the disk, or in Valkey (this includes other compatible software). By default Anubis uses the in-memory backend. If you have an environment with mutable storage (even if it is temporary), be sure to configure the
bbolt
storage backend.Localization
Anubis now supports localized responses. Locales can be added in lib/localization/locales/. This release includes support for the following languages:
If facts or local regulations demand, you can set Anubis default language with the
FORCED_LANGUAGE
environment variable or the--forced-language
command line argument:Load average
Anubis can dynamically take action based on the system load average, allowing you to write rules like this:
Something to keep in mind about system load average is that it is not aware of the number of cores the system has. If you have a 16 core system that has 16 processes running but none of them is hogging the CPU, then you will get a load average below 16. If you are in doubt, make your "high load" metric at least two times the number of CPU cores and your "low load" metric at least half of the number of CPU cores. For example:
8.0
2.0
32.0
8
Also keep in mind that this does not account for other kinds of latency like I/O latency. A system can have its web applications unresponsive due to high latency from a MySQL server but still have that web application server report a load near or at zero.
Other features and fixes
There are a bunch of other assorted features and fixes too:
COOKIE_SECURE
option to set the cookie Secure flagBIND_NETWORK
/--bind-network
value from the bind address (#677)./healthz
route for use in platform-based health checks.Potentially breaking changes
We try to introduce breaking changes as much as possible, but these are the changes that may be relevant for you as an administrator:
Challenge format change
Previously Anubis did no accounting for challenges that it issued. This means that if Anubis restarted during a client, the client would be able to proceed once Anubis came back online.
During the upgrade to v1.21.0 and when v1.21.0 (or later) restarts with the in-memory storage backend, you may see a higher rate of failed challenges than normal. If this persists beyond a few minutes, open an issue.
If you are using the in-memory storage backend, please consider using a different storage backend.
Systemd service changes
The following potentially breaking change applies to native installs with systemd only:
Each instance of systemd service template now has a unique
RuntimeDirectory
, as opposed to each instance of the service sharing aRuntimeDirectory
. This change was made to avoid theRuntimeDirectory
getting nuked any time one of the Anubis instances restarts.If you configured Anubis' unix sockets to listen on
/run/anubis/foo.sock
for instanceanubis@foo
, you will need to configure Anubis to listen on/run/anubis/foo/foo.sock
and additionally configure your HTTP load balancer as appropriate.If you need the legacy behaviour, install this systemd unit dropin:
Just keep in mind that this will cause problems when Anubis restarts.
What's Changed
New Contributors
Full Changelog: v1.20.0...v1.21.0
This discussion was created from the release v1.21.0: Minfilia Warde.
Beta Was this translation helpful? Give feedback.
All reactions