3. Configuration
halon-submission loads the non-reloadable configuration from /etc/halon/submission.yaml
.
It is described by, and can be validated with, the
submission.schema.json
JSON schema (included in our Visual Studio Code integration).
The default startup configuration file in /opt/halon/submission/share
can normally be used as a base:
$ cp /opt/halon/submission/share/submission.yaml /etc/halon/
3.1. Authentication directives
- authentication.apikeys[]
List of allowed API keys for the HTTP server (sent in the X-API-Key header).
3.2. Listener directives
- listeners[]
One or more listen directives needs to be configured which specify which TCP port and address to listen on. Required.
- listeners[].port
Which TCP port to listen on. Required.
- listeners[].address
IPv4 or IPv6 address to listen on. The default is to listen to all IPv4 and IPv6 addresses.
- listeners[].pki
The X.509 certificate and private key. The private key and certificate should have either a
path
ordata
property.pki: certificate: data: |- -----BEGIN CERTIFICATE----- ... privatekey: data: |- -----BEGIN PRIVATE KEY----- ...
- listeners[].proxy[]
Can either be a boolean or a list of IP addresses and subnets to trust as being reverse proxies. If it’s a boolean and it’s set to true it will trust all IP-addresses and subnets as being reverse proxies.
3.3. Host directives
- hosts[]
One or more host directives needs to be configured which specify which HTTP submission endpoint to connect to on your Halon instance. Required.
- hosts[].port
Which TCP port to connect to. Required.
- hosts[].address
Hostname, IPv4 address or IPv6 address to connect to. Required.
- hosts[].tls.enabled
If TLS should be used for the requests. The default is false.
- hosts[].tls.verify
If the server certificate should be verified. The default is true.
- hosts[].apikey
The API key that will be used for the requests (sent in the X-API-Key header).
- hosts[].xforwardedfor
Set the X-Forwarded-For header.
3.4. Queue directives
- queues.timeout.connect
The connect timeout (in seconds) against the backend hosts. The default is 30.
- queues.timeout.socket
The socket timeout (in seconds) against the backend hosts. The default is 900.
- queues.concurrency.total
The total amount of concurrent connections that should be allowed against all the backend hosts.
Note
This value is unique to each worker (child process).
- queues.concurrency.ip
The max amount of concurrent connections that should be allowed against each individual backend host.
Note
This value is unique to each worker (child process).
3.5. Tracking directives
- tracking.click
If click tracking should be enabled or not. The default is false.
Note
This setting can be overriden in the HTTP request by setting the
tracking.click
property. It can also be turned off for individual links by including thetracking=off
attribute inside the anchor of a link before thehref
.
- tracking.open
If open tracking should be enabled or not. The default is false.
Note
This setting can be overriden in the HTTP request by setting the
tracking.open
property.
- tracking.unsubscribe
If one-click list unsubscribe should be enabled or not. The default is false.
Note
This setting can be overriden in the HTTP request by setting the
tracking.unsubscribe
property.
- tracking.url
The base url that should be used for the rewritten links and tracking pixels. Required.
Note
This setting can be overriden in the HTTP request by setting the
tracking.url
property.
- tracking.secret.id
The ID of the secret that should be used to generate the hash of the tracking payload. This must be an integer between 1 and 254. Required.
- tracking.secret.key
The key for the secret that should be used to generate the hash of the tracking payload. Required.
3.6. Other directives
- workers
The amount of child processes that should be started to handle incoming requests. The default is as many as there are CPU cores.
- maxsize
The maximum request body size to accept. The default is 10 485 760 bytes.
- source
Pass source information to the configured hosts in the metadata. The default is false.
3.7. Environment directives
- environment.privdrop.user
- environment.privdrop.group