在虚拟专用服务器 (VPS) 上安装 n8n 可以提高自动化工作流程的灵活性和控制力。 在 VPS 上自托管 n8n 的两种主要方法是使用 Docker 或 Node 包管理器 (npm)。此方法涉及在 VPS 上设置 Docker 和 Docker Compose,然后在 Docker 容器中定义和运行 n8n。
0. 前期准备
0.1. 域名DNS指向IP
为了确保服务器的安全性和便捷性,需要先将域名链接到服务器(IP)上
在Namecheap中找到对应的域名
ADD NEW RECORD ⇒ 输入子域名(n8n)⇒ 输入服务器IP地址 ⇒ 确认
0.1.1 确认是否链接成功
输入自己的域名
如果大部分是对号,并且IP地址是VPS服务器的地址,那么说明链接成功了

1. 安装必要的包
1.1 更新Ubuntu服务器
sudo apt update && apt upgrade -y
1.2 安装Docker
sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$UBUNTU_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
1.3 安装Docker engine && docker compose
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
1.4 安装Nginx
sudo apt update && sudo apt install nginx -y
1.5 安装Certbot
sudo apt install certbot python3-certbot-nginx -y
1.6 开放必要端口
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
2. 安装n8n
2.1 创建n8n目录和配置文件
# 创建n8n目录 sudo mkdir -p /opt/n8n cd /opt/n8n # 创建数据目录并设置正确权限(解决权限问题) sudo mkdir -p n8n_data sudo chown -R 1000:1000 n8n_data sudo chmod -R 755 n8n_data
2.2 创建Docker Compose配置文件
sudo nano docker-compose.yml
初始配置(HTTP模式,避免SSL问题)
version: '3.8' services: n8n: image: docker.n8n.io/n8nio/n8n container_name: n8n restart: always user: "1000:1000" # 明确指定用户ID,避免权限问题 ports: - "127.0.0.1:5678:5678" # 只绑定本地,避免直接暴露 environment: - N8N_HOST=n8n1.techchris.net - N8N_PORT=5678 - N8N_PROTOCOL=http # 先用HTTP - WEBHOOK_URL=http://n8n1.techchris.net - N8N_SECURE_COOKIE=false # 避免安全cookie问题 - GENERIC_TIMEZONE=Asia/Seoul volumes: - ./n8n_data:/home/node/.n8n
ℹ️ 将
N8N_HOST
&WEBHOOK_URL
部分换成自己的域名
2.3 启动n8n容器
sudo docker compose up -d
ℹ️ 整个 过程会持续一段时间,结束后会出现如下图所示:
3. 创建Nginx配置文件
3.1 创建Nginx文件
sudo nano /etc/nginx/sites-available/n8n1.techchris.net
ℹ️ 将
n8n1.techchris.net
替换成自己的域名
HTTP配置(避免SSL证书路径错误):
server { listen 80; server_name n8n1.techchris.net; location / { proxy_pass http://localhost:5678; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; 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; proxy_cache_bypass $http_upgrade; # n8n特殊配置 proxy_set_header X-Forwarded-Host $host; proxy_read_timeout 300s; proxy_connect_timeout 75s; proxy_buffering off; proxy_request_buffering off; } }
ℹ️ 将
server_name
改为自己的域名
3.2 启用n8n站点配置
创建符合链接
# 创建符号链接 sudo ln -s /etc/nginx/sites-available/n8n1.techchris.net /etc/nginx/sites-enabled/
测试&加载Nginx
# 测试Nginx配置 sudo nginx -t # 重载Nginx配置 sudo systemctl reload nginx
如果出现这个提示,说明成功配置了Nginx
3.3 访问自己的域名后如果
访问自己的域名,如果此时将会出现这个页面,说明已经✅成功了

4. 申请SSL证书
4.1 通过Let’s Encrypt申请SSL证书
# 使用Let's Encrypt申请SSL证书 sudo certbot --nginx -d n8n1.techchris.net
ℹ️ 将
n8n1.techchris.net
修改为自己的域名
成功后会显示:
4.2 更新n8n配置为https模式
SSL证书申请成功后,更新Docker配置:
sudo nano /opt/n8n/docker-compose.yml
HTTPS配置:
version: '3.8' services: n8n: image: docker.n8n.io/n8nio/n8n container_name: n8n restart: always user: "1000:1000" ports: - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n1.techchris.net - N8N_PORT=5678 - N8N_PROTOCOL=https # 改为HTTPS - WEBHOOK_URL=https://n8n1.techchris.net - N8N_SECURE_COOKIE=true # 启用安全cookie - GENERIC_TIMEZONE=Asia/Seoul volumes: - ./n8n_data:/home/node/.n8n
ℹ️ 将
N8N_PROTOCOL
&WEBHOOK_URL
改为自己的域名
将N8N_SECURE_COOKIE
改为true
4.3 重新启动docker compose配置
# 重启容器应用新配置 sudo docker compose down sudo docker compose up -d
此时会发现SSL锁已经配置到了n8n上了
通过以上的步骤可以实现将n8n部署在私有服务器上,并且配置自己的域名保证访问的便捷性,更重要的是将该域名配置SSL锁确保了信息传输中的安全性。
Views: 0