diff --git a/scripts/container-entrypoint.sh b/scripts/container-entrypoint.sh index 0a06ef4..336248d 100755 --- a/scripts/container-entrypoint.sh +++ b/scripts/container-entrypoint.sh @@ -192,6 +192,7 @@ check_headscale_environment_vars() { check_env_var_or_set_default "MAGIC_DNS" "${headscale_magic_dns_default}" "^(true|false)$" "Invalid 'MAGIC_DNS'. Must be 'true' or 'false'." require_env_var "PUBLIC_SERVER_URL" require_env_var "HEADSCALE_DNS_BASE_DOMAIN" + check_env_var_or_set_default "EPHEMERAL_NODE_INACTIVITY_TIMEOUT" "${headscale_ephemeral_node_inactivity_timeout_default}" "^[0-9]+[smhd]([0-9]+[smhd])*$" "Invalid 'EPHEMERAL_NODE_INACTIVITY_TIMEOUT'. Must be a valid duration (e.g., '30m', '1h', '90s')." } ####################################### @@ -418,6 +419,7 @@ check_config_files() { "MAGIC_DNS" "IP_ALLOCATION" "HEADSCALE_EXTRA_RECORDS_PATH" + "EPHEMERAL_NODE_INACTIVITY_TIMEOUT" ) for var in "${template_vars[@]}"; do export "${var}=${!var}" @@ -443,6 +445,7 @@ display_configuration_summary() { log_info "Tailnet Base Domain: ${HEADSCALE_DNS_BASE_DOMAIN}" log_info "Public Listening Port: ${PUBLIC_LISTEN_PORT}" log_info "GOMAXPROCS: ${GOMAXPROCS}" + log_info "Ephemeral Node Inactivity Timeout: ${EPHEMERAL_NODE_INACTIVITY_TIMEOUT}" log_feature_status "HTTPS Mode" "${https_enabled}" "" "warn" log_feature_status "Litestream" "${litestream_enabled}" "${LITESTREAM_REPLICA_URL}" "warn" diff --git a/scripts/defaults.sh b/scripts/defaults.sh index 5cfc21e..8dd9fdc 100644 --- a/scripts/defaults.sh +++ b/scripts/defaults.sh @@ -2,6 +2,7 @@ # shellcheck disable=SC2034 # This is a defaults file public_listen_port_default=443 +headscale_ephemeral_node_inactivity_timeout_default="30m" headscale_extra_records_path_default="/data/headscale/extra-records.json" headscale_magic_dns_default="true" headscale_ipv6_only_default="false" diff --git a/templates/headscale.template.yaml b/templates/headscale.template.yaml index 96c8393..b92d681 100644 --- a/templates/headscale.template.yaml +++ b/templates/headscale.template.yaml @@ -135,7 +135,7 @@ derp: disable_check_updates: true # Time before an inactive ephemeral node is deleted? -ephemeral_node_inactivity_timeout: 30m +ephemeral_node_inactivity_timeout: $EPHEMERAL_NODE_INACTIVITY_TIMEOUT database: # Database type. Available options: sqlite, postgres