Browse Source

docs/developer: add build directions for manually building Anubis (#154)

Signed-off-by: Xe Iaso <me@xeiaso.net>
Xe Iaso 2 months ago
parent
commit
168329fff0
2 changed files with 48 additions and 3 deletions
  1. 41 0
      docs/docs/developer/building-anubis.md
  2. 7 3
      yeetfile.js

+ 41 - 0
docs/docs/developer/building-anubis.md

@@ -0,0 +1,41 @@
+---
+title: Building Anubis without Docker
+---
+
+:::note
+
+These instructions may work, but for right now they are informative for downstream packagers more than they are ready-made instructions for administrators wanting to run Anubis on their servers.
+
+:::end
+
+## Tools needed
+
+In order to build a production-ready binary of Anubis, you need the following packages in your environment:
+
+- [Go](https://go.dev) - the programming language that Anubis is written in
+- [esbuild](https://esbuild.github.io/) - the JavaScript bundler Anubis uses for its production JS assets
+- [Node.JS & NPM](https://nodejs.org/en) - manages some build dependencies
+- `gzip` - compresses production JS (part of coreutils)
+- `zstd` - compresses production JS
+- `brotli` - compresses production JS
+
+## Install dependencies
+
+```text
+go mod download
+npm ci
+```
+
+## Building static assets
+
+```text
+npm run assets
+```
+
+## Building Anubis to the `./var` folder
+
+```text
+go build -o ./var/anubis ./cmd/anubis
+```
+
+From this point it is up to you to make sure that `./var/anubis` ends up in the right place. You may want to consult the `./run` folder for useful files such as a systemd unit and `anubis.env.default` file.

+ 7 - 3
yeetfile.js

@@ -1,6 +1,4 @@
-go.install();
-
-["amd64", "arm64"].forEach(goarch => {
+["amd64", "arm64", "riscv64"].forEach(goarch => {
     [deb, rpm].forEach(method => method.build({
         name: "anubis",
         description: "Anubis weighs the souls of incoming HTTP requests and uses a sha256 proof-of-work challenge in order to protect upstream resources from scraper bots.",
@@ -8,6 +6,12 @@ go.install();
         license: "MIT",
         goarch,
 
+        documentation: {
+            "./README.md": "README.md",
+            "./LICENSE": "LICENSE",
+            "./docs/docs/CHANGELOG.md": "CHANGELOG.md",
+        },
+
         build: (out) => {
             // install Anubis binary
             go.build("-o", `${out}/usr/bin/anubis`, "./cmd/anubis");