about summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/forge.skb70
1 files changed, 61 insertions, 9 deletions
diff --git a/doc/forge.skb b/doc/forge.skb
index 9063b80..607ef39 100644
--- a/doc/forge.skb
+++ b/doc/forge.skb
@@ -238,12 +238,14 @@ web. Our cgit service features]
            (itemize
             (item [clonable URLs via the smart HTTP protocol through
 ,(command [git-http-backend])])
-            (item [syntax highlighting for a wide variety of
-programming languages using ,(ref :url "https://pygments.org/" :text
-"Pygments")])
+            (item [syntax highlighting for a wide variety of programming
+languages using ,(ref :url "https://github.com/alecthomas/chroma" :text
+"Chroma")])
             (item [rendering markdown, org mode, reStructuredText, man
 page, HTML or plain text README files in the ,(emph [About]) page])
-            (item [hiding full email addresses on cgit web pages]))
+            (item [hiding full email addresses on cgit web pages])
+            (item [,(ref :url "https://anubis.techaro.lol/" :text "Anubis")
+protection for expensive endpoints]))
            [Note that this service is different from the cgit service
 of the same name in Guix upstream.])
         (description
@@ -308,7 +310,9 @@ include in the generated ,(file [cgitrc]) configuration file])
            (record-field "repository-directory"
              [Directory containing git repositories to serve])
            (record-field "site-name"
-             [Title on klaus web pages])))))
+             [Title on klaus web pages])
+           (record-field "gunicorn-workers"
+             [Number of gunicorn worker processes])))))
     (section :title [tissue service]
              :ident "section-tissue-service"
       (p [tissue is an issue tracker built on plain text files and
@@ -392,10 +396,45 @@ be a ,(record-ref "<forge-host-socket>"), ,(record-ref "<forge-ip-socket>"), or
 [/.well-known/acme-challenge/]) in response to ACME HTTP-01
 challenges])
          (record-field "server-blocks"
-           [List of ,(ref :url
+           [List of ,(ref :ident "<forge-nginx-server-configuration>" :text
+"<forge-nginx-server-configuration>") or ,(ref :url
 "https://guix.gnu.org/manual/en/html_node/Web-Services.html#index-nginx_002dserver_002dconfiguration"
-:text "<nginx-server-configuration>") objects describing server blocks
-to add to the nginx configuration]))))
+:text "<nginx-server-configuration>") objects describing server blocks to add to
+the nginx configuration]))
+       (record-documentation "guix/forge/nginx.scm" '<forge-nginx-server-configuration>
+         (record-field "server-name"
+           [List of server names this server represents. ,(code ['default])
+represents the default server for connections matching no other server.])
+         (record-field "root"
+           [Root of the website nginx will serve])
+         (record-field "locations"
+           [List of ,(ref :url
+"https://guix.gnu.org/manual/devel/en/html_node/Web-Services.html#index-nginx_002dlocation_002dconfiguration"
+:text (code [nginx-location-configuration])) or ,(ref :url
+"https://guix.gnu.org/manual/devel/en/html_node/Web-Services.html#index-nginx_002dnamed_002dlocation_002dconfiguration"
+:text (code [nginx-named-location-configuration])) records to use within this
+server block.])
+         (record-field "index"
+           [List of index files to look for when clients ask for a directory. If it
+cannot be found, nginx will send the list of files in the directory.])
+         (record-field "try-files"
+           [List of files whose existence is checked in the specified order.
+nginx will use the first file it finds to process the request.])
+         (record-field "anubis?"
+           [If ,(code [#t]), ,(ref :url
+"https://anubis.techaro.lol/docs/admin/configuration/subrequest-auth/" :text
+"Anubis subrequest authentication") locations are added to the server
+configuration. These are namely a ,(samp "/.within.website/") location and a
+,(samp "@redirectToAnubis") location. Locations to be protected by Anubis should
+specify ,(code "auth_request /.within.website/x/cmd/anubis/api/check; error_page
+401 = @redirectToAnubis;"). To use this feature, ,(code [nginx-service-type])
+must be configured with an nginx compiled with ,(samp
+[--with-http_auth_request_module]). The ,(code [nginx-with-auth-request])
+package is provided as a convenience for this purpose.])
+         (record-field "raw-content"
+           [List of strings or file-like objects to be appended to the server
+block. Each item is prefixed with indentation and suffixed with a new line.
+Nested lists are flattened.]))))
     (section :title [ACME service]
              :ident "section-acme-service"
       (p [,(abbr :short "ACME" :long "Automatic Certificate Management
@@ -567,7 +606,20 @@ environment])
            (record-field "mappings"
              [List of ,(code [<file-system-mapping>]) objects describing
 additional directories that should be shared with the container
-gunicorn is run in]))))))
+gunicorn is run in])))))
+    (section :title [Anubis AI firewall service]
+             :ident "section-anubis-ai-firewall-service"
+      (p [Anubis is a web AI firewall utility that uses a combination of
+heuristics and challenges to identify and block bots before they take your
+website down. Anubis is as lightweight as possible and is designed to help
+protect the small internet from the endless storm of requests that flood in from
+AI companies. This service runs Anubis in ,(ref :url
+"https://anubis.techaro.lol/docs/admin/configuration/subrequest-auth/" :text
+"subrequest authentication mode").])
+      (description
+       (record-documentation "guix/forge/anubis.scm" '<anubis-configuration>
+         (record-field "package"
+           [,(code [anubis]) package to use])))))
   (chapter :title [Reference]
            :ident "chapter-reference"
     (description