Spaces:
Running
Running
| # 使用 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"] |