mirror of
https://github.com/kossakovsky/n8n-install.git
synced 2026-03-29 16:44:14 +00:00
Compare commits
8 Commits
v1.4.0-dev
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9dcf622e9f | ||
|
|
7861dee1b1 | ||
|
|
6fe028d01b | ||
|
|
804b81f6cb | ||
|
|
d344291c21 | ||
|
|
174fce7527 | ||
|
|
b0564ea0d8 | ||
|
|
888347e110 |
23
.env.example
23
.env.example
@@ -226,6 +226,10 @@ N8N_LOG_LEVEL=info
|
||||
NODES_EXCLUDE="[]"
|
||||
N8N_LOG_OUTPUT=console
|
||||
|
||||
# Maximum payload size in MB for n8n requests (default: 256 MB).
|
||||
# Increase if you need to handle large files or webhook payloads.
|
||||
N8N_PAYLOAD_SIZE_MAX=256
|
||||
|
||||
# Timezone for n8n and workflows (https://docs.n8n.io/hosting/configuration/environment-variables/timezone-localization/)
|
||||
GENERIC_TIMEZONE=America/New_York
|
||||
|
||||
@@ -421,6 +425,25 @@ IMGPROXY_ENABLE_WEBP_DETECTION=true
|
||||
# Add your OpenAI API key to enable SQL Editor Assistant
|
||||
OPENAI_API_KEY=
|
||||
|
||||
|
||||
############
|
||||
# Storage - Configuration for S3 protocol endpoint
|
||||
############
|
||||
|
||||
# S3 bucket when using S3 backend, directory name when using 'file'
|
||||
GLOBAL_S3_BUCKET=stub
|
||||
|
||||
# Used for S3 protocol endpoint configuration
|
||||
REGION=stub
|
||||
|
||||
# Equivalent to project_ref (S3 session token authentication)
|
||||
STORAGE_TENANT_ID=stub
|
||||
|
||||
# Access to Storage via S3 protocol endpoint
|
||||
S3_PROTOCOL_ACCESS_KEY_ID=
|
||||
S3_PROTOCOL_ACCESS_KEY_SECRET=
|
||||
|
||||
|
||||
# ============================================
|
||||
# Cloudflare Tunnel Configuration (Optional)
|
||||
# ============================================
|
||||
|
||||
12
CHANGELOG.md
12
CHANGELOG.md
@@ -2,6 +2,18 @@
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.4.2] - 2026-03-28
|
||||
|
||||
### Fixed
|
||||
- **n8n** - Make `N8N_PAYLOAD_SIZE_MAX` configurable via `.env` (was hardcoded to 256, ignoring user overrides)
|
||||
- **Uptime Kuma** - Fix healthcheck failure (`wget: not found`) by switching to Node.js-based check
|
||||
|
||||
## [1.4.1] - 2026-03-23
|
||||
|
||||
### Fixed
|
||||
- **Supabase Storage** - Fix crash-loop (`Region is missing`) by adding missing S3 storage configuration variables (`REGION`, `GLOBAL_S3_BUCKET`, `STORAGE_TENANT_ID`) from upstream Supabase
|
||||
- **Supabase** - Sync new environment variables to existing `supabase/docker/.env` during updates (previously only populated on first install)
|
||||
|
||||
## [1.4.0] - 2026-03-15
|
||||
|
||||
### Added
|
||||
|
||||
@@ -83,7 +83,7 @@ x-n8n: &service-n8n
|
||||
N8N_LOG_LEVEL: ${N8N_LOG_LEVEL:-info}
|
||||
N8N_LOG_OUTPUT: ${N8N_LOG_OUTPUT:-console}
|
||||
N8N_METRICS: true
|
||||
N8N_PAYLOAD_SIZE_MAX: 256
|
||||
N8N_PAYLOAD_SIZE_MAX: ${N8N_PAYLOAD_SIZE_MAX:-256}
|
||||
N8N_PERSONALIZATION_ENABLED: false
|
||||
N8N_RESTRICT_FILE_ACCESS_TO: /data/shared
|
||||
N8N_RUNNERS_AUTH_TOKEN: ${N8N_RUNNERS_AUTH_TOKEN}
|
||||
@@ -1291,7 +1291,7 @@ services:
|
||||
volumes:
|
||||
- uptime_kuma_data:/app/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "http_proxy= https_proxy= HTTP_PROXY= HTTPS_PROXY= wget -qO- http://localhost:3001/ || exit 1"]
|
||||
test: ["CMD-SHELL", "node -e \"const http=require('http');const r=http.get('http://localhost:3001',res=>{process.exit(res.statusCode<400?0:1)});r.on('error',()=>process.exit(1));r.setTimeout(5000,()=>{r.destroy();process.exit(1)})\""]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
@@ -115,6 +115,8 @@ declare -A VARS_TO_GENERATE=(
|
||||
["RAGFLOW_MINIO_ROOT_PASSWORD"]="password:32"
|
||||
["RAGFLOW_MYSQL_ROOT_PASSWORD"]="password:32"
|
||||
["RAGFLOW_REDIS_PASSWORD"]="password:32"
|
||||
["S3_PROTOCOL_ACCESS_KEY_ID"]="hex:32"
|
||||
["S3_PROTOCOL_ACCESS_KEY_SECRET"]="hex:64"
|
||||
["SEARXNG_PASSWORD"]="password:32" # Added SearXNG admin password
|
||||
["SECRET_KEY_BASE"]="base64:64" # 48 bytes -> 64 chars
|
||||
["TEMPORAL_UI_PASSWORD"]="password:32" # Temporal UI basic auth password
|
||||
|
||||
@@ -71,18 +71,40 @@ def clone_supabase_repo():
|
||||
os.chdir("..")
|
||||
|
||||
def prepare_supabase_env():
|
||||
"""Copy .env to .env in supabase/docker."""
|
||||
"""Copy .env to supabase/docker/.env, or sync new variables if it already exists."""
|
||||
if not is_supabase_enabled():
|
||||
print("Supabase is not enabled, skipping env preparation.")
|
||||
return
|
||||
env_path = os.path.join("supabase", "docker", ".env")
|
||||
env_example_path = os.path.join(".env")
|
||||
# Do not overwrite existing Supabase env to avoid credential drift
|
||||
root_env_path = ".env"
|
||||
if os.path.exists(env_path):
|
||||
print(f"Supabase env already exists at {env_path}, not overwriting.")
|
||||
# Sync new variables from root .env that don't exist in supabase .env
|
||||
print(f"Syncing new variables from root .env to {env_path}...")
|
||||
root_env = dotenv_values(root_env_path)
|
||||
supabase_env = dotenv_values(env_path)
|
||||
new_vars = []
|
||||
for key, value in root_env.items():
|
||||
if key not in supabase_env and value is not None:
|
||||
# Quote values to handle special characters safely
|
||||
if '$' in value:
|
||||
new_vars.append(f"{key}='{value}'")
|
||||
else:
|
||||
new_vars.append(f'{key}="{value}"')
|
||||
if new_vars:
|
||||
with open(env_path, 'r') as f:
|
||||
existing_content = f.read()
|
||||
sync_header = "# --- Variables synced from root .env ---"
|
||||
with open(env_path, 'a') as f:
|
||||
if sync_header not in existing_content:
|
||||
f.write(f"\n{sync_header}\n")
|
||||
for var in new_vars:
|
||||
f.write(f"{var}\n")
|
||||
print(f"Synced {len(new_vars)} new variable(s) to Supabase env.")
|
||||
else:
|
||||
print("Supabase env is up to date, no new variables to sync.")
|
||||
return
|
||||
print("Copying .env in root to .env in supabase/docker...")
|
||||
shutil.copyfile(env_example_path, env_path)
|
||||
shutil.copyfile(root_env_path, env_path)
|
||||
|
||||
def clone_dify_repo():
|
||||
"""Clone the Dify repository using sparse checkout if not already present."""
|
||||
|
||||
Reference in New Issue
Block a user