legends810 commited on
Commit
8788edb
·
verified ·
1 Parent(s): f01051c

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +39 -14
Dockerfile CHANGED
@@ -1,44 +1,58 @@
1
  ###############################################################################
2
- # n8n for Hugging Face Spaces – gzip fully disabled via custom extension
3
  ###############################################################################
4
  FROM docker.n8n.io/n8nio/n8n:latest
5
 
6
- ################ Runtime env vars #############################################
7
  ENV N8N_HOST=0.0.0.0 \
8
  N8N_PROTOCOL=http \
9
  DB_TYPE=sqlite \
10
  DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite \
11
  N8N_COMMUNITY_PACKAGES_ENABLED=true \
12
- # नीचे वाले flag रहने दीजिये – पर अब JS extension भी लगेगा
13
  N8N_DISABLE_PRODUCTION_MAIN_PROCESS_RESPONSE_COMPRESSION=true \
14
  N8N_DISABLE_PRODUCTION_WEBHOOK_RESPONSE_COMPRESSION=true \
15
  N8N_BASIC_AUTH_ACTIVE=false \
16
  N8N_USER_MANAGEMENT_DISABLED=true \
17
- N8N_LOG_LEVEL=info \
18
- # ➜ custom extension path
19
  N8N_CUSTOM_EXTENSIONS=/home/node/n8n-custom
20
 
21
- ################ Copy custom extension ########################################
22
  USER node
23
- RUN mkdir -p /home/node/n8n-custom
24
- # JS file repo में जिस path पर है वही copy करें
25
- COPY n8n-custom/disableCompression.js /home/node/n8n-custom/
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
- ################ Start script ##################################################
28
  USER root
29
  RUN set -e; \
30
  cat >/usr/local/bin/start.sh <<'SH' && \
31
  chmod +x /usr/local/bin/start.sh
32
  #!/bin/sh
33
  set -eu
 
 
34
  N8N_PORT="${PORT:-7860}"
35
  export N8N_PORT
36
 
37
- # ----- build public URL ------------------------------------------------------
38
  if [ -n "${SPACE_ID:-}" ]; then
 
39
  SPACE_SLUG=$(printf '%s' "$SPACE_ID" | tr '/_' '-')
40
  APP_URL="https://${SPACE_SLUG}.hf.space"
41
- elif [ -n "${SPACE_HOST:-}" ]; then
42
  APP_URL="https://${SPACE_HOST}"
43
  elif [ -n "${HOSTNAME:-}" ] && echo "$HOSTNAME" | grep -q '\.hf\.space'; then
44
  APP_URL="https://${HOSTNAME}"
@@ -46,19 +60,30 @@ else
46
  APP_URL="http://localhost:${N8N_PORT}"
47
  fi
48
 
49
- # NOTE: trailing slash हटाया है ताकि double-slash न बने
50
  export N8N_BASE_URL="${APP_URL}"
51
  export WEBHOOK_URL="${APP_URL}"
52
  export N8N_EDITOR_BASE_URL="${APP_URL}"
53
 
54
- echo "🚀 n8n starting on ${N8N_PORT} | Public URL: ${APP_URL}"
 
 
 
 
 
 
 
55
  exec n8n start
56
  SH
57
  USER node
58
 
 
59
  EXPOSE 7860
 
 
60
  HEALTHCHECK --interval=30s --timeout=10s --start-period=45s --retries=3 \
61
  CMD sh -c 'curl -f http://localhost:${PORT:-7860}/healthz || exit 1'
62
 
 
63
  ENTRYPOINT ["tini", "--"]
64
  CMD ["start.sh"]
 
1
  ###############################################################################
2
+ # n8n for Hugging Face Spaces – gzip compression fully disabled (Complete Fix)
3
  ###############################################################################
4
  FROM docker.n8n.io/n8nio/n8n:latest
5
 
6
+ #################### Runtime env vars #########################################
7
  ENV N8N_HOST=0.0.0.0 \
8
  N8N_PROTOCOL=http \
9
  DB_TYPE=sqlite \
10
  DB_SQLITE_DATABASE=/home/node/.n8n/database.sqlite \
11
  N8N_COMMUNITY_PACKAGES_ENABLED=true \
 
12
  N8N_DISABLE_PRODUCTION_MAIN_PROCESS_RESPONSE_COMPRESSION=true \
13
  N8N_DISABLE_PRODUCTION_WEBHOOK_RESPONSE_COMPRESSION=true \
14
  N8N_BASIC_AUTH_ACTIVE=false \
15
  N8N_USER_MANAGEMENT_DISABLED=true \
16
+ N8N_LOG_LEVEL=debug \
 
17
  N8N_CUSTOM_EXTENSIONS=/home/node/n8n-custom
18
 
19
+ #################### Disable compression via custom extension ##################
20
  USER node
21
+ RUN mkdir -p /home/node/n8n-custom && \
22
+ echo 'module.exports = {' > /home/node/n8n-custom/disableGzip.js && \
23
+ echo ' init(app) {' >> /home/node/n8n-custom/disableGzip.js && \
24
+ echo ' if (app?._router?.stack) {' >> /home/node/n8n-custom/disableGzip.js && \
25
+ echo ' app._router.stack = app._router.stack.filter(' >> /home/node/n8n-custom/disableGzip.js && \
26
+ echo ' (layer) => !(layer.handle && layer.handle.name === "compression")' >> /home/node/n8n-custom/disableGzip.js && \
27
+ echo ' );' >> /home/node/n8n-custom/disableGzip.js && \
28
+ echo ' }' >> /home/node/n8n-custom/disableGzip.js && \
29
+ echo ' app.use((_req, res, next) => {' >> /home/node/n8n-custom/disableGzip.js && \
30
+ echo ' res.removeHeader("Content-Encoding");' >> /home/node/n8n-custom/disableGzip.js && \
31
+ echo ' res.setHeader("Cache-Control", "no-transform");' >> /home/node/n8n-custom/disableGzip.js && \
32
+ echo ' next();' >> /home/node/n8n-custom/disableGzip.js && \
33
+ echo ' });' >> /home/node/n8n-custom/disableGzip.js && \
34
+ echo ' console.log("🗜️ gzip compression completely disabled");' >> /home/node/n8n-custom/disableGzip.js && \
35
+ echo ' },' >> /home/node/n8n-custom/disableGzip.js && \
36
+ echo '};' >> /home/node/n8n-custom/disableGzip.js
37
 
38
+ #################### Start script #############################################
39
  USER root
40
  RUN set -e; \
41
  cat >/usr/local/bin/start.sh <<'SH' && \
42
  chmod +x /usr/local/bin/start.sh
43
  #!/bin/sh
44
  set -eu
45
+
46
+ # HF reverse-proxy sets $PORT (local fallback 7860)
47
  N8N_PORT="${PORT:-7860}"
48
  export N8N_PORT
49
 
50
+ # ---- build public URL ------------------------------------------------------
51
  if [ -n "${SPACE_ID:-}" ]; then
52
+ # convert "user/repo" → "user-repo"
53
  SPACE_SLUG=$(printf '%s' "$SPACE_ID" | tr '/_' '-')
54
  APP_URL="https://${SPACE_SLUG}.hf.space"
55
+ elif [ -n "${SPACE_HOST:-}" ]; then # legacy var
56
  APP_URL="https://${SPACE_HOST}"
57
  elif [ -n "${HOSTNAME:-}" ] && echo "$HOSTNAME" | grep -q '\.hf\.space'; then
58
  APP_URL="https://${HOSTNAME}"
 
60
  APP_URL="http://localhost:${N8N_PORT}"
61
  fi
62
 
63
+ # No trailing slash to prevent double-slash issues
64
  export N8N_BASE_URL="${APP_URL}"
65
  export WEBHOOK_URL="${APP_URL}"
66
  export N8N_EDITOR_BASE_URL="${APP_URL}"
67
 
68
+ echo "🚀 n8n starting on port ${N8N_PORT}"
69
+ echo "🌐 Public URL : ${APP_URL}"
70
+ echo "📚 DB : SQLite"
71
+ echo "🔒 Authentication : disabled"
72
+ echo "📦 Community packages: enabled"
73
+ echo "🗜️ Compression : disabled (main + webhook + extension)"
74
+ echo
75
+
76
  exec n8n start
77
  SH
78
  USER node
79
 
80
+ #################### expose port ###################################
81
  EXPOSE 7860
82
+
83
+ #################### health-check #############################################
84
  HEALTHCHECK --interval=30s --timeout=10s --start-period=45s --retries=3 \
85
  CMD sh -c 'curl -f http://localhost:${PORT:-7860}/healthz || exit 1'
86
 
87
+ #################### entrypoint ################################################
88
  ENTRYPOINT ["tini", "--"]
89
  CMD ["start.sh"]