Hướng dẫn cài đặt n8n với docker compose và nginx

I. Yêu cầu trước khi bắt đầu

1. Docker và Docker compose được cài đặt trên máy:

– Docker: Công cụ để chạy container.
– Docker compose: Công cụ để quản lý nhiều container bằng YAML.

docker --version
docker-compose --version

– Nếu chưa cài, bạn có thể tham khảo hướng dẫn cài đặt Docker tại đây

2. Máy tính hoặc server có đủ tài nguyên.

– Ram tối thiểu: 2GB.
– CPU: tối thiểu 2 core.
– Dung lượng ổ cứng: 20GB+

II. Tạo dự án.

1. Tạo một thư mục để lưu trự file cấu hình và dữ liệu n8n:
mkdir n8n-docker
cd n8n-docker
2. Trong thư mục này, ta sẽ file compose.yaml để cấu hình n8n.

Tạo file compose.yaml với nội dung sau

nano compose.yaml
services:
n8n:
image: docker.n8n.io/n8nio/n8n:1.85.0
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=yourdomain.com/ #Thay thế bằng domain của bạn
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin  #Thay thế bằng user của bạn
- N8N_BASIC_AUTH_PASSWORD= PASSWORD123  #Thay thế bằng pass của bạn
- N8N_TRUSTED_PROXIES=nginx
- N8N_RUNNERS_ENABLED=true
- N8N_SECURE_COOKIE=true
- TZ=Asia/Ho_Chi_Minh
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5437
- DB_POSTGRESDB_DATABASE=database #Thay thế bằng database của bạn
- DB_POSTGRESDB_USER=POSTGRESTUSER #Thay thế bằng postgress user của bạn
- DB_POSTGRESDB_PASSWORD=PASSWORD123 #Thay thế bằng pass của bạn
- WEBHOOK_URL=https://yourdomain.com/ #Thay thế bằng domain của bạn
volumes:
- ./n8n-data:/home/node/.n8n
depends_on:
- postgres

postgres:
image: postgres:latest
restart: always
ports:
- "5432:5432" 
environment:
- POSTGRES_USER=POSTGRESTUSER #Thay thế bằng postgress user của bạn
- POSTGRES_PASSWORD=PASSWORD123
- POSTGRES_DB=database #Thay thế bằng postgress  database của bạn
- TZ=Asia/Ho_Chi_Minh
volumes:
- ./postgres-data:/var/lib/postgresql/data

nginx:
    image: nginx:latest
    restart: always
    ports:
      - "80:80"    # Cổng HTTP
      - "443:443"  # Cổng HTTPS
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf  # File cấu hình Nginx
      - ./certsn:/etc/nginx/certs            # Thư mục chứa chứng chỉ SSL
    depends_on:
      - n8n
    networks:
      - n8n-network

networks:
  n8n-network:
    driver: bridge
3. Tạo file cấu hình nginx

Trong thư mục n8n-docker ta tiến hành tạo file nginx.conf với nội dung như sau

nano nginx.conf

user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    server {
        listen 80;
        server_name youdomain.com;  # Thay bằng tên miền của bạn

        # Chuyển hướng tất cả HTTP sang HTTPS
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl;
        server_name youdomain.com;  # Thay bằng tên miền của bạn

        ssl_certificate /etc/nginx/certs/fullchain.pem;  # Đường dẫn đến chứng chỉ SSL
        ssl_certificate_key /etc/nginx/certs/privkey.pem;  # Đường dẫn đến khóa riêng

        location / {
            proxy_pass http://n8n:5678;  # Chuyển tiếp yêu cầu đến n8n
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade; # websocket support
            proxy_set_header Connection "Upgrade"; # websocket support
            proxy_set_header Host $host;
            chunked_transfer_encoding off;
            proxy_buffering off;
            proxy_cache off;
            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;
        }
    }
}

Sau khi đã cấu hình file compose.yaml và nginx xong ta tiến hành chạy project bằng lệnh

docker compose up -d

Sau đó kiểm tra container có chạy thành công không:

docker ps

nếu kết quả trả về như trên là đã chạy thành công.

Một số lệnh phổ biến để quản lý docker

# Start dockercompose 
Docker compose up -d
# Stop docker compose 
Docker compose down
# Restart docker compose 
Docker compose restart
# Check logs docker compose 
docker-compose logs -f

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nội dung