#n8n #docker #workflow ## n8n Docker install ### n8n Docker Compose file ``` bash cd /home/shenwei/Docker/n8n ``` create **docker-compose.yml** file ``` yaml version: '3.8' services: n8n: build: . image: docker.n8n.io/n8nio/n8n container_name: n8n ports: - "5678:5678" # 只绑定到本地,通过 Caddy 访问 volumes: - n8n_data:/home/node/.n8n environment: - N8N_PROTOCOL=https - N8N_HOST=n8n.ishenwei.online - WEBHOOK_URL=https://n8n.ishenwei.online/ - N8N_TRUST_PROXY=true - N8N_SECURE_COOKIE=true # 建议设为 true,因为使用 HTTPS - N8N_PROXY_HOPS=1 - ALL_PROXY=socks5://172.21.0.1:10808 #配置容器内网络代理 restart: unless-stopped volumes: n8n_data: networks: n8n_default: external: true ``` Dockerfile ``` FROM n8nio/n8n:latest USER root # 安装 curl 和 wget RUN apk update && apk add --no-cache curl wget USER node ``` ### Updating Docker Compose [Doc](https://docs.n8n.io/hosting/installation/docker/#updating-docker-compose "Permanent link") If you run n8n using a Docker Compose file, follow these steps to update n8n: ``` bash # Navigate to the directory containing your docker compose file cd # Pull latest version docker compose pull # Stop and remove older version docker compose down # Start the container docker compose up -d ``` ### Config n8n network proxy #### 1️⃣ 前提条件 1. V2Ray/Tuic 已安装在宿主机并正常运行。 2. V2Ray/Tuic 配置中 **本地监听地址改为 `0.0.0.0`**,端口假设为 `10808`: 在V2rayN GUI里需要打开如下配置: ![[IMG-20251230094029556.png]] 3. Docker 网络 `n8n_default` 已存在(由 docker-compose 自动创建即可) 4. 宿主机防火墙允许 Docker 网桥访问代理端口: ``` sudo ufw allow from 172.18.0.0/16 to any port 10808 ``` #### 2️⃣ Dockerfile(扩展官方 n8n 镜像,安装 curl/wget) 创建 `Dockerfile`: ``` bash FROM n8nio/n8n:latest USER root # 安装 curl 和 wget RUN apk update && apk add --no-cache curl wget USER node ``` - 保持 n8n 默认用户 `node`,安全性高。 - 容器内可以直接使用 `curl`、`wget` 测试代理。 --- #### 3️⃣ docker-compose.yml 示例 ``` yaml version: '3.8' services: n8n: build: . image: docker.n8n.io/n8nio/n8n container_name: n8n ports: - "5678:5678" # 只绑定到本地,通过 Caddy 访问 volumes: - n8n_data:/home/node/.n8n environment: - N8N_PROTOCOL=https - N8N_HOST=n8n.ishenwei.online - WEBHOOK_URL=https://n8n.ishenwei.online/ - N8N_TRUST_PROXY=true - N8N_SECURE_COOKIE=true # 建议设为 true,因为使用 HTTPS - N8N_PROXY_HOPS=1 - ALL_PROXY=socks5://172.21.0.1:10808 #配置容器内网络代理 restart: unless-stopped volumes: n8n_data: networks: n8n_default: external: true ``` 说明: - `ALL_PROXY` 指向宿主机 Docker 网桥 IP + Tuic SOCKS5 端口 - 容器内 HTTP/HTTPS 流量和 n8n 请求都会走 SOCKS5 - 端口 5678 映射宿主机,便于访问 n8n UI > [!注意] 注意:`172.21.0.1` 需替换为以下命令输出的网桥 IP(Gateway)。 ``` bash docker network inspect n8n_default ``` --- #### 4️⃣ 在容器内测试科学上网 进入容器: ``` docker exec -it n8n /bin/sh ``` 测试: ``` # 测试 IP curl --socks5 172.18.0.1:10808 https://ifconfig.me # 或者使用全局代理环境变量 curl https://ifconfig.me wget -qO- https://ifconfig.me ``` 如果返回国外 IP,说明代理生效。 --- #### 5️⃣ 可选优化 - **Dockerfile 内设置环境变量**:可直接在镜像内定义 `ALL_PROXY`,启动容器无需手动设置。 - **安全防护**:宿主机防火墙限制仅 Docker 网桥访问 10808,避免局域网被访问。 - **升级 n8n**:定期 rebuild 镜像即可。 ## Reference [[n8n configure telegram trigger|n8n configure telegram trigger]]