部署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 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 } }