# 使用 Node.js 24 版本的 alpine 輕量映像 # alpine 體積小(約 5MB),適合 HF Space 的輕量部署 # ⚠️ 注意:Node.js 24 與舊版 n8n 不一定相容,如遇問題可改 node:20-alpine FROM node:24-alpine # 切換使用者為root USER root # 安裝 chromium 瀏覽器與 tzdata(時區資料) RUN apk add --no-cache chromium tzdata # 設定 n8n 執行所需的環境變數 # 跳過 puppeteer 下載,直接用系統 chromium ENV PUPPETEER_SKIP_DOWNLOAD=true # 指定 chromium 執行路徑 ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser # 強制設定檔案權限 ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true # 綁定所有網路介面 ENV N8N_HOST=0.0.0.0 # HF Space 開放的對外埠號(必須用 7860) ENV N8N_PORT=7860 # n8n 的暫存資料夾(⚠️ HF Space 內會被清空,不能當永久儲存) ENV N8N_USER_FOLDER=/data # 系統時區:台北 (自行修改) ENV TZ=Asia/Taipei # 通用時區:台北 (自行修改) ENV GENERIC_TIMEZONE=Asia/Taipei # 啟用 n8n runners ENV N8N_RUNNERS_ENABLED=true # --- 以下為固定且非敏感的設定 --- # 使用 HTTPS ENV N8N_PROTOCOL=https # 啟用n8n 基本認證 ENV N8N_BASIC_AUTH_ACTIVE=true # 使用 PostgreSQL(Supabase) ENV DB_TYPE=postgresdb # Supabase 預設 database 名稱 ENV DB_POSTGRESDB_DATABASE=postgres # Supabase 預設埠號 ENV DB_POSTGRESDB_PORT=5432 # 使用Supabase 預設的schema : public ENV DB_POSTGRESDB_SCHEMA=public # 啟用log紀錄清理 ENV EXECUTIONS_DATA_PRUNE=true # log保存 2160 小時 = 90 天 ENV EXECUTIONS_DATA_MAX_AGE=2160 # 套用系統時區 RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 全域安裝最新版本 n8n,若指訂1.113.3版則改為RUN npm install -g n8n@1.113.3 RUN npm install -g n8n@latest # 安裝模組 RUN npm install -g @aotoki/n8n-nodes-line-messaging # 建立暫存資料目錄(HF Space 不保證永久化) RUN mkdir -p /data && chmod -R 777 /data WORKDIR /data # 開放 HF Space 指定的埠號 EXPOSE 7860 # 啟動 n8n CMD ["n8n", "start"]