authelia/docs/content/en/configuration/miscellaneous/server.md
James Elliott b2c60ef898
feat: major documentation refresh (#3475)
This marks the launch of the new documentation website.
2022-06-15 17:51:47 +10:00

6.0 KiB

title description lead date draft images menu weight toc aliases
Server Configuring the Server Settings. Authelia runs an internal webserver. This section describes how to configure and tune this. 2022-03-20T12:52:27+11:00 false
configuration
parent
miscellaneous
199200 true
/c/server
/docs/configuration/server.html

Configuration

server:
  host: 0.0.0.0
  port: 9091
  path: ""
  read_buffer_size: 4096
  write_buffer_size: 4096
  enable_pprof: false
  enable_expvars: false
  disable_healthcheck: false
  tls:
    key: ""
    certificate: ""
    client_certificates: []
  headers:
    csp_template: ""

Options

host

{{< confkey type="string" default="0.0.0.0" required="no" >}}

Defines the address to listen on. See also port. Should typically be 0.0.0.0 or 127.0.0.1, the former for containerized environments and the later for daemonized environments like init.d and systemd.

Note: If utilising an IPv6 literal address it must be enclosed by square brackets and quoted:

host: "[fd00:1111:2222:3333::1]"

port

{{< confkey type="integer" default="9091" required="no" >}}

Defines the port to listen on. See also host.

path

{{< confkey type="string " required="no" >}}

Authelia by default is served from the root / location, either via its own domain or subdomain.

Modifying this setting will allow you to serve Authelia out from a specified base path. Please note that currently only a single level path is supported meaning slashes are not allowed, and only alphanumeric characters are supported.

Example:

server:
  path: ""

Works for https://auth.example.com/, https://example.com/, etc.

Example:

server:
  path: authelia

Works for https://auth.example.com/authelia/, https://example.com/authelia/, etc.

asset_path

{{< confkey type="string " required="no" >}}

Authelia by default serves all static assets from an embedded filesystem in the Go binary.

Modifying this setting will allow you to override and serve specific assets for Authelia from a specified path. All assets that can be overridden must be placed in the asset_path. The structure of this directory and the assets which can be overriden is documented in the Sever Asset Overrides Reference Guide.

read_buffer_size

{{< confkey type="integer " default="4096" required="no" >}}

Configures the maximum request size. The default of 4096 is generally sufficient for most use cases.

write_buffer_size

{{< confkey type="integer " default="4096" required="no" >}}

Configures the maximum response size. The default of 4096 is generally sufficient for most use cases.

enable_pprof

{{< confkey type="boolean" default="false" required="no" >}}

Enables the go pprof endpoints.

enable_expvars

{{< confkey type="boolean" default="false" required="no" >}}

Enables the go expvars endpoints.

disable_healthcheck

{{< confkey type="boolean" default="false" required="no" >}}

On startup Authelia checks for the existence of /app/healthcheck.sh and /app/.healthcheck.env and if both of these exist it writes the configuration vars for the healthcheck to the /app/.healthcheck.env file. In instances where this is not desirable it's possible to disable these interactions entirely.

An example situation where this is the case is in Kubernetes when set security policies that prevent writing to the ephemeral storage of a container or just don't want to enable the internal health check.

tls

Authelia typically listens for plain unencrypted connections. This is by design as most environments allow to security on lower areas of the OSI model. However it required, if you specify both the tls key and tls certificate options, Authelia will listen for TLS connections.

The key must be generated by the administrator and can be done by following the Generating an RSA Self Signed Certificate guide provided a self-signed certificate is fit for purpose. If a self-signed certificate is fit for purpose is beyond the scope of the documentation and if it is not fit for purpose we instead recommend generating a certificate signing request or obtaining a certificate signed by one of the many ACME certificate providers. Methods to achieve this are beyond the scope of this guide.

key

{{< confkey type="string" required="situational" >}}

The path to the private key for TLS connections. Must be in DER base64/PEM format.

certificate

{{< confkey type="string" required="situational" >}}

The path to the public certificate for TLS connections. Must be in DER base64/PEM format.

client_certificates

{{< confkey type="list(string)" required="situational" >}}

The list of file paths to certificates used for authenticating clients. Those certificates can be root or intermediate certificates. If no item is provided mutual TLS is disabled.

headers

csp_template

{{< confkey type="string" required="no" >}}

This customizes the value of the Content-Security-Policy header. It will replace all instances of ${NONCE} with the nonce value of the Authelia react bundle. This is an advanced option to customize and you should do sufficient research about how browsers utilize and understand this header before attempting to customize it.

For example, the default CSP template is default-src 'self'; object-src 'none'; style-src 'self' 'nonce-${NONCE}'.

Additional Notes

Buffer Sizes

The read and write buffer sizes generally should be the same. This is because when Authelia verifies if the user is authorized to visit a URL, it also sends back nearly the same size response as the request. However you're able to tune these individually depending on your needs.

Asset Overrides

If replacing the Logo for your Authelia portal it is recommended to upload a transparent PNG of your desired logo. Authelia will automatically resize the logo to an appropriate size to present in the frontend.