Server configuration¶
The LXD server can be configured through a set of key/value configuration options.
The key/value configuration is namespaced. The following options are available:
See How to configure the LXD server for instructions on how to set the configuration options.
Note
Options marked with a global
scope are immediately applied to all cluster members.
Options with a local
scope must be set on a per-member basis.
Core configuration¶
The following server options control the core daemon configuration:
Key: | core.bgp_address |
Type: | string |
Scope: | local |
Key: | core.bgp_asn |
Type: | string |
Scope: | global |
Key: | core.bgp_routerid |
Type: | string |
Scope: | local |
The identifier must be formatted as an IPv4 address.
Key: | core.debug_address |
Type: | string |
Scope: | local |
Key: | core.dns_address |
Type: | string |
Scope: | local |
Key: | core.https_address |
Type: | string |
Scope: | local |
Key: | core.https_allowed_credentials |
Type: | bool |
Default: |
|
Scope: | global |
If enabled, the Access-Control-Allow-Credentials
HTTP header value is set to true
.
Key: | core.https_allowed_headers |
Type: | string |
Scope: | global |
Key: | core.https_allowed_methods |
Type: | string |
Scope: | global |
Key: | core.https_allowed_origin |
Type: | string |
Scope: | global |
Key: | core.https_trusted_proxy |
Type: | string |
Scope: | global |
Specify a comma-separated list of IP addresses of trusted servers that provide the client’s address through the proxy connection header.
Key: | core.metrics_address |
Type: | string |
Scope: | local |
Key: | core.metrics_authentication |
Type: | bool |
Default: |
|
Scope: | global |
Key: | core.proxy_http |
Type: | string |
Scope: | global |
If this option is not specified, LXD falls back to the HTTP_PROXY
environment variable (if set).
Key: | core.proxy_https |
Type: | string |
Scope: | global |
If this option is not specified, LXD falls back to the HTTPS_PROXY
environment variable (if set).
Key: | core.proxy_ignore_hosts |
Type: | string |
Scope: | global |
Specify this option in a similar format to NO_PROXY
(for example, 1.2.3.4,1.2.3.5
)
If this option is not specified, LXD falls back to the NO_PROXY
environment variable (if set).
Key: | core.remote_token_expiry |
Type: | string |
Default: | no expiry |
Scope: | global |
Key: | core.shutdown_timeout |
Type: | integer |
Default: |
|
Scope: | global |
Specify the number of minutes to wait for running operations to complete before the LXD server shuts down.
Key: | core.storage_buckets_address |
Type: | string |
Scope: | local |
Key: | core.syslog_socket |
Type: | bool |
Default: |
|
Scope: | local |
Set this option to true
to enable the syslog unixgram socket to receive log messages from external processes.
ACME configuration¶
The following server options control the ACME configuration:
Key: | acme.agree_tos |
Type: | bool |
Default: |
|
Scope: | global |
Key: | acme.ca_url |
Type: | string |
Default: |
|
Scope: | global |
OpenID Connect configuration¶
The following server options configure external user authentication through OpenID Connect authentication:
Key: | oidc.audience |
Type: | string |
Scope: | global |
This value is required by some providers.
Key: | oidc.groups.claim |
Type: | string |
Scope: | global |
Specify a custom claim to be requested when performing OIDC flows. Configure a corresponding custom claim in your identity provider and add organization level groups to it. These can be mapped to LXD groups for automatic access control.
Cluster configuration¶
The following server options control Clustering:
Key: | cluster.healing_threshold |
Type: | integer |
Default: |
|
Scope: | global |
Specify the number of seconds after which an offline cluster member is to be evacuated.
To disable evacuating offline members, set this option to 0
.
Key: | cluster.https_address |
Type: | string |
Scope: | local |
Key: | cluster.images_minimal_replica |
Type: | integer |
Default: |
|
Scope: | global |
Specify the minimal number of cluster members that keep a copy of a particular image.
Set this option to 1
for no replication, or to -1
to replicate images on all members.
Key: | cluster.join_token_expiry |
Type: | string |
Default: |
|
Scope: | global |
Key: | cluster.max_standby |
Type: | integer |
Default: |
|
Scope: | global |
Specify the maximum number of cluster members that are assigned the database stand-by role.
This must be a number between 0
and 5
.
Key: | cluster.max_voters |
Type: | integer |
Default: |
|
Scope: | global |
Specify the maximum number of cluster members that are assigned the database voter role.
This must be an odd number >= 3
.
Images configuration¶
The following server options configure how to handle Images:
Key: | images.auto_update_cached |
Type: | bool |
Default: |
|
Scope: | global |
Key: | images.auto_update_interval |
Type: | integer |
Default: |
|
Scope: | global |
Specify the interval in hours.
To disable looking for updates to cached images, set this option to 0
.
Key: | images.compression_algorithm |
Type: | string |
Default: |
|
Scope: | global |
Possible values are bzip2
, gzip
, lzma
, xz
, or none
.
Key: | images.default_architecture |
Type: | string |
Loki configuration¶
The following server options configure the external log aggregation system:
Key: | loki.api.url |
Type: | string |
Scope: | global |
Specify the protocol, name or IP and port. For example https://loki.example.com:3100
. LXD will automatically add the /loki/api/v1/push
suffix so there’s no need to add it here.
Key: | loki.auth.password |
Type: | string |
Scope: | global |
Key: | loki.auth.username |
Type: | string |
Scope: | global |
Key: | loki.instance |
Type: | string |
Default: | Local server host name or cluster member name |
Scope: | global |
This allows replacing the default instance value (server host name) by a more relevant value like a cluster identifier.
Key: | loki.labels |
Type: | string |
Scope: | global |
Specify a comma-separated list of values that should be used as labels for a Loki log entry.
Key: | loki.loglevel |
Type: | string |
Default: |
|
Scope: | global |
Miscellaneous options¶
The following server options configure server-specific settings for Instances, MAAS integration, OVN integration, Backups and Storage:
Key: | backups.compression_algorithm |
Type: | string |
Default: |
|
Scope: | global |
Possible values are bzip2
, gzip
, lzma
, xz
, or none
.
Key: | instances.migration.stateful |
Type: | bool |
Scope: | global |
You can override this setting for relevant instances, either in the instance-specific configuration or through a profile.
Key: | instances.nic.host_name |
Type: | string |
Default: |
|
Scope: | global |
Possible values are random
and mac
.
If set to random
, use the random host interface name as the host name.
If set to mac
, generate a host name in the form lxd<mac_address>
(MAC without leading two digits).
Key: | instances.placement.scriptlet |
Type: | string |
Scope: | global |
When using custom automatic instance placement logic, this option stores the scriptlet. See Instance placement scriptlet for more information.
Key: | maas.machine |
Type: | string |
Default: | host name |
Scope: | local |
Key: | network.ovn.ca_cert |
Type: | string |
Default: | Content of |
Scope: | global |
Key: | network.ovn.client_cert |
Type: | string |
Default: | Content of |
Scope: | global |
Key: | network.ovn.client_key |
Type: | string |
Default: | Content of |
Scope: | global |
Key: | network.ovn.integration_bridge |
Type: | string |
Default: |
|
Scope: | global |
Key: | network.ovn.northbound_connection |
Type: | string |
Default: |
|
Scope: | global |
Key: | storage.backups_volume |
Type: | string |
Scope: | local |
Specify the volume using the syntax POOL/VOLUME
.