Featured image of post 一步一步帶你自架n8n

一步一步帶你自架n8n

來架設自己的自動化軟體吧?

簡介

n8n是一個No-code的自動化工具。n8n提供了雲端以及自架兩種使用方式,我們將在這篇文章中介紹如何在地端架設自己的n8n服務。

自架的好處與壞處

好處

  • 隱私性較高
  • 免費

壞處

  • 需要自己動手設定、維護
  • 個別場景需要自己的網域才能運作

安裝教學

先決條件

  • 請確保環境中已安裝Docker CE、Docker Desktop或OrbStack。
  • 確保Docker Compose的版本為v2.14.0或更新版本。
  • 安裝環境需要至少4GB的RAM。

下載設定檔案

我們將使用官方所提供的設定檔,搭配Docker Compose來進行架設。請先將GitHub上的n8n-hosting倉庫下載到地端。(連結

在這個教學中,我們將使用docker-compose/withPostgres資料夾中的檔案。

修改資料庫使用者資訊

在啟動服務前,請務必修改資料庫的使用者資訊。修改.env檔案中的內容:

1
2
3
4
5
6
POSTGRES_USER=changeUser
POSTGRES_PASSWORD=changePassword
POSTGRES_DB=n8n

POSTGRES_NON_ROOT_USER=changeUser
POSTGRES_NON_ROOT_PASSWORD=changePassword

直接使用預設設定

如果不進行額外設定,可以直接使用以下的指令啟動n8n服務。

1
docker-compose up -d

進行客製化設定

當你需要進行客製化設定,例如把n8n放在不同的電腦運作,可以將docker-compose.yml檔案中的內容進行修改,使得其他電腦可以訪問到容器的連接埠。以下是一個範例:

將n8n部署在不同的機器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
version: '3.8'

volumes:
  db_storage:
  n8n_storage:

services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      - POSTGRES_USER
      - POSTGRES_PASSWORD
      - POSTGRES_DB
      - POSTGRES_NON_ROOT_USER
      - POSTGRES_NON_ROOT_PASSWORD
    volumes:
      - db_storage:/var/lib/postgresql/data
      - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
    ports:
      - "<your ip>:5678:5678"      # 修改此處來將容器的port與宿主機的port做綁定
    links:
      - postgres
    volumes:
      - n8n_storage:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy

警告

重要!請務必變更使用者資訊以避免資安問題。

連線至服務

當n8n服務就緒,我們將可以透過以下的網址訪問n8n服務:

  1. 同一機器:http://localhost:5678
  2. 跨機器訪問:http://<n8n ip>:5678

結語

在這篇教學中,我們示範了如何使用Docker Compose在地端建立n8n服務,我們將會在後續的文章中示範如何為自架的n8n設定域名,並連結Google OAuth驗證。

comments powered by Disqus
使用 Hugo 建立
主題 StackJimmy 設計