Skip to content

Using a Varnish Cache

Varnish is a layer that sits between your web server and your backend application - it does something similar to nginx caching, but tends to be optimised for speed over all else.

To set up a varnish cache, first you'll need to install varnish.

This will vary by distribution, and since this is a rather advanced guide, no copy-paste instructions are provided. It's probably in your distribution's package manager, though. apt-get install varnish and so on.

Once you have varnish installed, you'll need to configure it to work with akkoma.

Copy the configuration file to the varnish configuration directory:

cp installation/akkoma.vcl /etc/varnish/akkoma.vcl

You may want to check if varnish added a default.vcl file to the same directory, if so you can just remove it without issue.

Then boot up varnish, probably systemctl start varnish or service varnish start.

Now you should be able to curl -D- localhost:6081 and see a bunch of akkoma javascript.

Once that's out of the way, we can point our webserver at varnish. This

upstream phoenix { server 127.0.0.1:6081 max_fails=5 fail_timeout=60s; }

reverse_proxy 127.0.0.1:6081

Now hopefully it all works

If you get a HTTPS redirect loop, you may need to remove this part of the VCL

if (std.port(server.ip) != 443) {
      set req.http.X-Forwarded-Proto = "http";
      set req.http.x-redir = "https://" + req.http.host + req.url;
      return (synth(750, ""));
} else {
  set req.http.X-Forwarded-Proto = "https";
}

This will allow your webserver alone to handle redirects.