-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsetup-n8n.sh
More file actions
130 lines (110 loc) · 3.44 KB
/
setup-n8n.sh
File metadata and controls
130 lines (110 loc) · 3.44 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash
# Kiểm tra xem script có được chạy với quyền root không
if [[ $EUID -ne 0 ]]; then
echo "This script needs to be run with root privileges"
exit 1
fi
# Hàm kiểm tra domain
check_domain() {
local domain=$1
local server_ip=$(curl -s https://api.ipify.org)
local domain_ip=$(dig +short $domain)
if [ "$domain_ip" = "$server_ip" ]; then
return 0 # Domain đã trỏ đúng
else
return 1 # Domain chưa trỏ đúng
fi
}
# Nhận input domain từ người dùng
read -p "Enter your domain or subdomain: " DOMAIN
# Kiểm tra domain
if check_domain $DOMAIN; then
echo "Domain $DOMAIN has been correctly pointed to this server. Continuing installation"
else
echo "Domain $DOMAIN has not been pointed to this server."
echo "Please update your DNS record to point $DOMAIN to IP $(curl -s https://api.ipify.org)"
echo "After updating the DNS, run this script again"
exit 1
fi
# Sử dụng thư mục /home trực tiếp
N8N_DIR="/home/n8n"
# Kiểm tra Docker và Docker Compose
if ! command -v docker &> /dev/null; then
echo "Docker không được cài đặt. Bắt đầu cài đặt..."
# Cài đặt Docker và Docker Compose
apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose
if ! command -v docker-compose &> /dev/null; then
echo "Cài đặt Docker Compose thất bại."
exit 1
fi
fi
# Tạo thư mục cho n8n
mkdir -p $N8N_DIR
# Kiểm tra và đặt quyền cho thư mục n8n_data
if [ ! -d "$N8N_DIR/n8n_data" ]; then
mkdir -p "$N8N_DIR/n8n_data"
fi
# Đặt quyền cho thư mục n8n_data
chown -R 1000:1000 "$N8N_DIR/n8n_data"
chmod -R 755 "$N8N_DIR/n8n_data"
# Kiểm tra quyền truy cập
if [ ! -w "$N8N_DIR/n8n_data" ]; then
echo "Không có quyền ghi vào thư mục $N8N_DIR/n8n_data. Vui lòng kiểm tra và đặt quyền đúng."
exit 1
fi
# Đặt quyền cho thư mục n8n
chown -R 1000:1000 $N8N_DIR
chmod -R 755 $N8N_DIR
# Tạo file docker-compose.yml
cat << EOF > $N8N_DIR/docker-compose.yml
version: "3"
services:
n8n:
image: n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=${DOMAIN}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${DOMAIN}
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
volumes:
- $N8N_DIR/n8n_data:/home/node/.n8n
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- $N8N_DIR/Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- n8n
volumes:
caddy_data:
caddy_config:
EOF
# Tạo file Caddyfile
cat << EOF > $N8N_DIR/Caddyfile
${DOMAIN} {
reverse_proxy n8n:5678
}
EOF
# Khởi động các container
cd $N8N_DIR
if ! docker compose up -d; then
echo "Khởi động Docker Compose thất bại."
exit 1
fi
echo "N8n đã được cài đặt và cấu hình với SSL sử dụng Caddy. Truy cập https://${DOMAIN} để sử dụng."
echo "Các file cấu hình và dữ liệu được lưu trong $N8N_DIR"