iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
AI & Data

進擊的 n8n系列 第 15

Day 15:n8n 在 VM / Bare Metal 部署流程

  • 分享至 

  • xImage
  •  

昨天我們透過 Docker Compose 快速啟動 n8n,今天挑戰更貼近「傳統伺服器」的方式:直接在 VM 或 Bare Metal 上安裝 n8n。這種方式適合不想額外學習 Docker,或需要更細緻控制系統環境的人。但因為實體機器本身跟 OS 都會影響部署,所以以下為我強者朋友的單純分享。

步驟 1:準備環境

官方文件建議:

  • Node.js 版本 18 或以上
  • 建議安裝 PostgreSQL(正式環境不建議用 SQLite)
  • 作業系統以 Linux(Ubuntu / Debian)最常見

步驟 2:安裝必要套件

在 Ubuntu 例子:

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential curl python3 git

步驟 3:安裝 Node.js 與 npm

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
node -v
npm -v

步驟 4:安裝 n8n

n8n 可以直接透過 npm 安裝:

sudo npm install n8n -g

安裝完成後,就能直接啟動:

n8n start

預設會在 http://localhost:5678 提供 Web UI。

步驟 5:讓 n8n 常駐服務

在生產環境,我們通常不會直接用 n8n start,而是用 systemd 管理:
建立檔案 /etc/systemd/system/n8n.service

[Unit]
Description=n8n Automation
After=network.target

[Service]
ExecStart=/usr/bin/n8n
Restart=always
User=ubuntu
Environment=DB_TYPE=postgresdb
Environment=DB_POSTGRESDB_HOST=127.0.0.1
Environment=DB_POSTGRESDB_DATABASE=n8n
Environment=DB_POSTGRESDB_USER=n8n
Environment=DB_POSTGRESDB_PASSWORD=n8npass

[Install]
WantedBy=multi-user.target

啟動並設為開機自動執行:

sudo systemctl enable n8n
sudo systemctl start n8n

這樣 n8n 就能穩定跑在 VM 上,適合長期使用。


常見錯誤排查

  1. n8n: command not found
    👉 代表 npm 的 global path 沒有加入環境變數,重新登入或確認 npm root -g。
  2. 無法連線 UI
    👉 VM 上需要開放防火牆:
sudo ufw allow 5678
  1. Postgres 無法連線
    👉 確認 pg_hba.conf 有允許本地連線,並檢查 DB 使用者密碼是否正確。
  2. n8n 重啟就消失
    👉 請務必使用 systemd、pm2 等 process manager,避免手動執行。

到這裡,我們已經能在 VM 上穩定部署 n8n。下一步,Day 16 將挑戰「Cloud Run 部署」,讓 n8n 可以隨需啟動、與 GCP 原生服務結合。


上一篇
Day 14:最簡單的本機部署+n8n 提供的 Queue Mode 常見問題整理分享
系列文
進擊的 n8n15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言