diff --git a/docker/headscale/prep.sh b/docker/headscale/prep.sh index ee068f2..6a80b7d 100644 --- a/docker/headscale/prep.sh +++ b/docker/headscale/prep.sh @@ -36,4 +36,38 @@ download_and_process_config() { fi } +insert_placeholders() { + local config_file="/etc/headscale/config-example.yaml" + + if [[ ! -f "$config_file" ]]; then + echo "Config file $config_file not found." + return 1 + fi + + declare -a replacements=( + "server_url: .*" "server_url: \${SERVER_URL}" + "listen_addr: .*" "listen_addr: \${LISTEN_ADDR}" + "metrics_listen_addr: .*" "metrics_listen_addr: \${METRICS_LISTEN_ADDR}" + "grpc_listen_addr: .*" "grpc_listen_addr: \${GRPC_LISTEN_ADDR}" + "grpc_allow_insecure: .*" "grpc_allow_insecure: \${GRPC_ALLOW_INSECURE}" + "private_key_path: .*" "private_key_path: \${NOISE_PRIVATE_KEY_PATH}" + "acme_url: .*" "acme_url: \${ACME_URL}" + "acme_email: .*" "acme_email: \${ACME_EMAIL}" + "tls_letsencrypt_hostname: .*" "tls_letsencrypt_hostname: \${TLS_LETSENCRYPT_HOSTNAME}" + "tls_letsencrypt_cache_dir: .*" "tls_letsencrypt_cache_dir: \${TLS_LETSENCRYPT_CACHE_DIR}" + "db_type: .*" "db_type: \${DB_TYPE}" + "db_path: .*" "db_path: \${DB_PATH}" + ) + + for i in "${!replacements[@]}"; do + local search="${replacements[i]% *}" + local replace="${replacements[i]#* }" + sed -i "s|$search|$replace|" "$config_file" + done + + echo "Placeholders inserted in $config_file" +} + +insert_placeholders + download_and_process_config \ No newline at end of file