在ubuntu上架設n8n

n8n May 21, 2025

n8n 是一款開源的工作流程自動化工具,其名稱「n8n」來自於英文單字「nodemation」,結合了「node」和「automation」,代表其核心功能是基於節點的自動化流程設計。n8n 由 Jan Oberhauser 於 2019 年創建,目的是提供一個靈活、可擴展且用戶友好的自動化平台,讓用戶能輕鬆地將不同應用程式和服務串接在一起,實現自動化處理任務。

n8n 的核心特色是其開源性,這意味著用戶可以完全控制自己的資料和工作流程,並根據需求進行自定義。此外,n8n 支援大量的應用程式(如 Google Sheets、Slack、Dropbox 等)以及 API 整合,讓它成為一個強大的自動化工具。

以下是一些 n8n 可以使用的方案及其應用範例:

1. 數據整合與同步

  • 應用場景:整合來自不同系統的數據,例如 CRM、ERP 或雲端儲存。
  • 範例
    • 將 Google Sheets 中的數據同步到 Airtable。
    • 將 Salesforce 中的客戶資料匯入到 MySQL 資料庫。

2. 通知與警示系統

  • 應用場景:自動發送通知或警示給團隊成員或用戶。
  • 範例
    • 在監控系統發現異常時,透過 Slack 或 Telegram 發送警示。
    • 訂單完成後,透過電子郵件通知客戶。

3. 社群媒體管理

  • 應用場景:自動化社群媒體的內容發布與互動。
  • 範例
    • 定期將新的部落格文章自動分享到 Twitter 和 Facebook。
    • 自動回覆 Instagram 的留言或私訊。

4. 文件處理與管理

  • 應用場景:自動處理文件,例如格式轉換或存儲。
  • 範例
    • 自動將收到的 PDF 檔案存儲到 Google Drive 並通知相關人員。
    • 將文件從 Dropbox 轉存到 AWS S3。

5. API 整合

  • 應用場景:整合不同平台的 API,實現系統間的互通。
  • 範例
    • 自動從某電商平台抓取訂單數據並更新到內部系統。
    • 將第三方服務的 API 數據整合到自家應用程式。

6. 定時任務

  • 應用場景:設置定時執行的自動化流程。
  • 範例
    • 每天早上自動生成銷售報告並發送給管理層。
    • 每周定期清理過期的數據或檔案。

7. 電子郵件自動化

  • 應用場景:自動化電子郵件的發送與管理。
  • 範例
    • 根據特定條件自動發送促銷郵件。
    • 收到客戶的電子郵件後自動生成回覆。

8. 客戶支援與聊天機器人

  • 應用場景:整合客戶支援系統或聊天機器人。
  • 範例
    • 自動將 Zendesk 中的客戶支援請求同步到 Trello。
    • 配合聊天機器人,根據客戶的問題觸發對應的流程。

9. 資料分析與報告生成

  • 應用場景:自動化資料分析流程並生成報告。
  • 範例
    • 從 Google Analytics 抓取流量數據並生成報表。
    • 將銷售數據進行分析後發送到管理層。

10. 開發與測試流程

  • 應用場景:幫助開發團隊自動化重複性工作。
  • 範例
    • 自動部署應用程式到測試環境。
    • 在 GitHub 有新的 Pull Request 時,觸發 CI/CD 流程。

n8n 的靈活性使其能夠應用於多種場景,並且可以根據需求進行自訂化設計,適合企業和個人用戶用於提升工作效率。

安裝n8n

而安裝n8n有許多種方式,分別為:

  1. 使用 n8n Cloud
  2. self-host
    1. 使用npm
    2. 使用Docker
    3. 知名的代管商

而我自己有一台host在linode的instance,使用的是ubuntu24.0 ,所以我會建立在自己的instance上

而建立在自己的instance的話主要有兩種方式:

  1. 用Docker安裝
  2. 使用npm安裝

用Docker安裝

首先要確認在ubuntu上有安裝docker,有的話這個步驟可以略過

sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable --now docker

安裝一些必備的套件

然後建立一個資料夾,可以自己命名

mkdir -p ~/n8n
cd ~/n8n

建立一個docker-compose.yml檔案

version: '3'
services:
  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=n8n.yourdomain.com #替換成自己的網域名稱
      - N8N_PROTOCOL=https
      - N8N_PORT=443
      - NODE_ENV=production
      - TZ=Asia/Taipei
      - GENERIC_TIMEZONE=Asia/Taipei #替換成自己的時區
    volumes:
      - ~/.n8n:/home/node/.n8n

N8N_HOST跟GENERIC_TIMEZONE可以自行更換

啟動n8n

docker-compose up -d

啟動n8n


使用npm安裝

需要安裝一些必備套件,若已經安裝可以略過

sudo apt update
sudo apt install nodejs npm

安裝必備套件

確保有最新版本的Node.js(n8n需要Node.js 14或更高版本):

sudo npm install -g n
sudo n stable

安裝n8n

sudo npm install -g n8n

建立一個系統服務以運行n8n

sudo vi /etc/systemd/system/n8n.service

內容如下:

[Unit]
Description=n8n
After=network.target

[Service]
Type=simple
User=root
Environment="TZ=Asia/Taipei"
Environment="GENERIC_TIMEZONE=Asia/Taipei"
Environment="WEBHOOK_URL=https://n8n.yourdomain.com" #替換成自己的domain
ExecStart=/usr/local/bin/n8n start
Restart=on-failure

[Install]
WantedBy=multi-user.target

WEBHOOK_URL要換成自己的domain不然一些webhook在運作時只會使用http://localhost:5678

儲存後啟用並啟動服務:

sudo systemctl enable n8n
sudo systemctl start n8n

PS: 若要增加env環境設定要在 /etc/systemd/system/n8n.service 裡面的[Service]增加Environment=”n8n環境變數key=value”

完成之後需要執行:

sudo systemctl daemon-reload
sudo systemctl restart n8n

Nginx配置(適用於兩種方法)

現在需要設定Nginx作為反向代理:

建立Nginx配置文件:

sudo vi /etc/nginx/sites-available/n8n.yourdomain.com

加入設定檔

server {
    listen 80;
    server_name n8n.yourdomain.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name n8n.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/n8n.yourdomain.com.crt;
    ssl_certificate_key /etc/nginx/ssl/n8n.yourdomain.com.key;

    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

裡面的yourdomain.com要換成自己的domain

建立軟連結並測試設定檔

sudo ln -s /etc/nginx/sites-available/n8n.yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

裡面的yourdomain.com要換成自己的domain

SSL證書

需要為n8n.yourdomain.com獲取SSL證書。可以使用Let's Encrypt:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d n8n.yourdomain.com

裡面的yourdomain.com要換成自己的domain

這將自動獲取證書並更新您的Nginx設定

更新n8n

如果您使用npm安裝了n8n,以下是更新n8n的步驟:

首先,停止正在運行的n8n服務:

sudo systemctl stop n8n

使用npm更新n8n到最新版本:

sudo npm update -g n8n

如果您想更新到特定版本,可以使用:

sudo npm install -g n8n@版本號

更新完成後,重新啟動n8n服務:

sudo systemctl start n8n

確認服務狀態和版本:

sudo systemctl status n8n n8n --version

備份建議 更新前最好先備份您的資料:

# 如果您使用預設設定,n8n數據通常存儲在
cp -r ~/.n8n ~/.n8n_backup_$(date +%Y%m%d)

自動更新

如果您希望能自動更新,可以建立一個簡單的cron任務:

編輯crontab

sudo crontab -e

加入以下這行,例如每週日凌晨3點更新

0 3 * * 0 systemctl stop n8n && npm update -g n8n && systemctl start n8n

注意事項

  • 主要版本更新(例如從0.x到1.x)可能會有不兼容的變更,建議查閱n8n的發布說明
  • 更新後,確認您的工作流程是否正常運行,尤其是使用了第三方整合的部分

這樣您就可以輕鬆地保持n8n處於最新狀態,享受新功能並獲得安全性修復。

標籤