n4n / Dockerfile
nelson40514's picture
Update Dockerfile
de6575f verified
# 使用 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"]