部署caddy2反向代理 n8n postgres 配置中文汉化界面

部署caddy2反向代理 n8n,配置postgresql数据库,挂载中文汉化界面。

数据库初始化脚本

参考官方的自动建表脚本init-data.sh

参考官方文档 https://github.com/n8n-io/n8n-hosting/blob/main/docker-compose/withPostgres/init-data.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
set -e;

if [ -n "${POSTGRES_NON_ROOT_USER:-}" ] && [ -n "${POSTGRES_NON_ROOT_PASSWORD:-}" ]; then
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE USER ${POSTGRES_NON_ROOT_USER} WITH PASSWORD '${POSTGRES_NON_ROOT_PASSWORD}';
GRANT ALL PRIVILEGES ON DATABASE ${POSTGRES_DB} TO ${POSTGRES_NON_ROOT_USER};
GRANT CREATE ON SCHEMA public TO ${POSTGRES_NON_ROOT_USER};
EOSQL
else
echo "SETUP INFO: No Environment variables given!"
fi

挂载中文汉化前端

下载前端预编译包 https://github.com/other-blowsnow/n8n-i18n-chinese

docker compose 部署n8n

参考官方部署文档 https://github.com/n8n-io/n8n-hosting/tree/main/docker-compose/withPostgres

编写docker-compose.yml

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
version: '3.9'
services:
n8nio:
image: n8nio/n8n:1.117.3
volumes:
- 'n8n_data:/home/node/.n8n'
- ./dist:/usr/local/lib/node_modules/n8n/node_modules/n8n-editor-ui/dist # 挂载前端
ports:
- '5678:5678'
restart: unless-stopped
environment:
TZ: Asia/Shanghai
N8N_SECURE_COOKIE: false
N8N_HOST: n8n.abc.com # 你的域名
N8N_PORT: 5678
N8N_PROTOCOL: https
NODE_ENV: production
WEBHOOK_URL: https://n8n.abc.com/ # 你的域名
GENERIC_TIMEZONE: Asia/Shanghai
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: true
N8N_RUNNERS_ENABLED: true
N8N_PROXY_HOPS: 2 # 这里代表允许跳过几跳代理层,比如caddy是一层,这里填1,再加上CDN代理,这里填2,代表两跳。
N8N_DEFAULT_LOCALE: zh-CN
DB_TYPE: postgresdb
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_HOST: n8n-postgres
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: postgres
networks:
- n8n-network
depends_on:
- n8n-postgres
n8n-postgres:
image: postgres:17
volumes:
- n8n_postgres_data:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh # 挂载数据库初始化脚本
environment:
- TZ=Asia/Shanghai
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_NON_ROOT_USER=n8n
- POSTGRES_NON_ROOT_PASSWORD=postgres
- POSTGRES_DB=n8n
restart: unless-stopped
networks:
- n8n-network
volumes:
n8n_data:
n8n_postgres_data:
networks:
n8n-network:
driver: bridge

配置caddy反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
n8n.pidan.ltd {
encode gzip zstd

handle /robots.txt {
respond `User-agent: *
Disallow: /` 200
}

# 添加 HTTP 头阻止索引
header {
X-Robots-Tag "noindex, nofollow, noarchive"
}
reverse_proxy 172.17.0.1:5678 {
flush_interval -1
}
}