mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 21:18:11 -04:00
fix(install): quote root user credentials in the .env file
ROOT_USERNAME with a space (or a password with #, $ or quotes) was written unquoted, so phpdotenv failed to parse .env and Coolify returned HTTP 500. Closes #12276 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
54c930d8dd
commit
d37b7356e7
+22
-4
@@ -929,7 +929,8 @@ update_env_var() {
|
||||
|
||||
# If variable "key=" exists but has no value, update the value of the existing line
|
||||
if grep -q "^${key}=$" "$ENV_FILE"; then
|
||||
sed -i "s|^${key}=$|${key}=${value}|" "$ENV_FILE"
|
||||
# awk reads the value from the environment, so characters such as | & \ in it stay literal
|
||||
KEY="$key" VALUE="$value" awk '$0 == ENVIRON["KEY"] "=" { $0 = ENVIRON["KEY"] "=" ENVIRON["VALUE"] } { print }' "$ENV_FILE" >"$ENV_FILE.tmp" && mv "$ENV_FILE.tmp" "$ENV_FILE"
|
||||
echo " - Updated value of ${key} as the current value was empty"
|
||||
# If variable "key=" doesn't exist, append it to the file with value
|
||||
elif ! grep -q "^${key}=" "$ENV_FILE"; then
|
||||
@@ -938,6 +939,23 @@ update_env_var() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Quote a user-supplied value so that Docker Compose and phpdotenv both read it back unchanged
|
||||
# (spaces, #, $ and quotes otherwise break parsing or change the value).
|
||||
quote_env_value() {
|
||||
local value="$1"
|
||||
case "$value" in
|
||||
*\'*)
|
||||
value=${value//\\/\\\\}
|
||||
value=${value//\"/\\\"}
|
||||
value=${value//\$/\\\$}
|
||||
printf '"%s"' "$value"
|
||||
;;
|
||||
*)
|
||||
printf "'%s'" "$value"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
update_env_var "APP_ID" "$(openssl rand -hex 16)"
|
||||
update_env_var "APP_KEY" "base64:$(openssl rand -base64 32)"
|
||||
# update_env_var "DB_USERNAME" "$(openssl rand -hex 16)" # Causes issues: database "random-user" does not exist
|
||||
@@ -951,9 +969,9 @@ update_env_var "PUSHER_BACKEND_PORT" "6001"
|
||||
# Add default root user credentials from environment variables
|
||||
if [ -n "$ROOT_USERNAME" ] && [ -n "$ROOT_USER_EMAIL" ] && [ -n "$ROOT_USER_PASSWORD" ]; then
|
||||
echo " - Setting predefined root user credentials from environment"
|
||||
update_env_var "ROOT_USERNAME" "$ROOT_USERNAME"
|
||||
update_env_var "ROOT_USER_EMAIL" "$ROOT_USER_EMAIL"
|
||||
update_env_var "ROOT_USER_PASSWORD" "$ROOT_USER_PASSWORD"
|
||||
update_env_var "ROOT_USERNAME" "$(quote_env_value "$ROOT_USERNAME")"
|
||||
update_env_var "ROOT_USER_EMAIL" "$(quote_env_value "$ROOT_USER_EMAIL")"
|
||||
update_env_var "ROOT_USER_PASSWORD" "$(quote_env_value "$ROOT_USER_PASSWORD")"
|
||||
fi
|
||||
|
||||
if [ -n "${REGISTRY_URL+x}" ]; then
|
||||
|
||||
Reference in New Issue
Block a user