72 lines
2.4 KiB
Bash
Executable File
72 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
CONFIG_PATH="/data/options.json"
|
|
N8N_PATH="$(jq -r '.user_folder // empty' "$CONFIG_PATH")"
|
|
|
|
mkdir -p "${N8N_PATH}/.n8n/.cache"
|
|
|
|
#####################
|
|
## USER PARAMETERS ##
|
|
#####################
|
|
|
|
# IMPORTANT:
|
|
# Don't use: jq ... | while ...; do export ...; done
|
|
# Because in POSIX sh it runs in a subshell and exports won't persist.
|
|
values="$(jq -r '.env_vars_list[]?' "$CONFIG_PATH")"
|
|
|
|
# Iterate newline-separated list safely in POSIX sh
|
|
set -f
|
|
IFS='
|
|
'
|
|
for element in $values; do
|
|
key="${element%%:*}"
|
|
value="${element#*:}"
|
|
|
|
# trim whitespace (POSIX; busybox sed is fine)
|
|
value="$(printf '%s' "$value" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
|
|
|
|
export "$key=$value"
|
|
echo "exported $key=$value"
|
|
done
|
|
unset IFS
|
|
set +f
|
|
|
|
export N8N_HOST="$(jq -r '.n8n_host // empty' "$CONFIG_PATH")"
|
|
export N8N_PORT="$(jq -r '.n8n_port // empty' "$CONFIG_PATH")"
|
|
export NODE_ENV="$(jq -r '.node_env // empty' "$CONFIG_PATH")"
|
|
export WEBHOOK_TUNNEL_URL="$(jq -r '.webhook_tunnel_url // empty' "$CONFIG_PATH")"
|
|
export N8N_BASIC_AUTH_ACTIVE="$(jq -r '.auth // empty' "$CONFIG_PATH")"
|
|
export N8N_BASIC_AUTH_USER="$(jq -r '.auth_username // empty' "$CONFIG_PATH")"
|
|
export N8N_BASIC_AUTH_PASSWORD="$(jq -r '.auth_password // empty' "$CONFIG_PATH")"
|
|
export GENERIC_TIMEZONE="$(jq -r '.timezone // empty' "$CONFIG_PATH")"
|
|
export N8N_PROTOCOL="$(jq -r '.protocol // empty' "$CONFIG_PATH")"
|
|
export N8N_SSL_CERT="/ssl/$(jq -r '.certfile // empty' "$CONFIG_PATH")"
|
|
export N8N_SSL_KEY="/ssl/$(jq -r '.keyfile // empty' "$CONFIG_PATH")"
|
|
export N8N_ENCRYPTION_KEY="$(jq -r '.encryption_key // empty' "$CONFIG_PATH")"
|
|
export N8N_USER_FOLDER="$N8N_PATH"
|
|
export N8N_CMD_LINE="$(jq -r '.cmd_line_args // empty' "$CONFIG_PATH")"
|
|
export N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false
|
|
|
|
if [ -z "$N8N_BASIC_AUTH_USER" ] || [ -z "$N8N_BASIC_AUTH_ACTIVE" ]; then
|
|
export N8N_BASIC_AUTH_ACTIVE=false
|
|
unset N8N_BASIC_AUTH_USER
|
|
unset N8N_BASIC_AUTH_PASSWORD
|
|
fi
|
|
|
|
###########
|
|
## MAIN ##
|
|
###########
|
|
|
|
# Fix ownership BEFORE exec (don't fail container if chown can't run)
|
|
chown -R node:node /home/node 2>/dev/null || true
|
|
|
|
# BusyBox 'su' is available (from busybox --install /bin)
|
|
# Use -s to specify shell and -c to run command.
|
|
if [ "$#" -gt 0 ]; then
|
|
# Started with args (keep behavior similar to your original)
|
|
exec su node -s /bin/sh -c "n8n $N8N_CMD_LINE"
|
|
else
|
|
# Started without args
|
|
exec su node -s /bin/sh -c "n8n start"
|
|
fi |