无需nginx反向代理!为docker版n8n配置SSL证书

六月 16, 2025 / hzstacknote / 94阅读 / 0评论

一、前言:为什么 n8n 需要配置 HTTPS

1、在生产环境中直接暴露 HTTP 存在安全风险(如中间人攻击)。

2、SSL/HTTPS 可保障 Webhook 安全、OAuth2 回调、Webhook 接收方的可信度等。

二、准备工作

1、准备一台安装有 Ubuntu/Debian或者其它linux系统的海外版VPS

2、部署好 Docker环境

三、开始部署

1、更新系统apt软件包

sudo apt update && apt upgrade

2、配置acme.sh环境

curl https://get.acme.sh | sh
sudo apt install socat
echo 'alias acme.sh=~/.acme.sh/acme.sh' | sudo tee -a ~/.bashrc
source .bashrc
acme.sh --set-default-ca --server letsencrypt

3、申请SSL证书(确保80端口是空闲的同时打开防火墙的80端口)

acme.sh --issue --standalone -d example.com

example.com替换成已经绑定了主机公网ip的域名,如果出现表示成功的英文,说明申请成功

4、安装SSL证书

sudo mkdir -p /opt/n8n/ssl

acme.sh --install-cert -d example.com \
--key-file /opt/n8n/ssl/privkey.pem \
--fullchain-file /opt/n8n/ssl/fullchain.pem

sudo chmod 444 /opt/n8n/ssl/privkey.pem

同样的将example.com替换成已经绑定主机公网ip的域名

5、配置并运行docker

sudo docker volume create n8n_data

sudo docker run -it -d --restart always --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -v /opt/n8n/ssl/fullchain.pem:/home/node/.n8n/fullchain.pem:ro \
  -v /opt/n8n/ssl/privkey.pem:/home/node/.n8n/privkey.pem:ro \
  -e N8N_PROTOCOL=https \
  -e N8N_SSL_KEY=/home/node/.n8n/privkey.pem \
  -e N8N_SSL_CERT=/home/node/.n8n/fullchain.pem \
  -e N8N_HOST=example.com \
  -e N8N_PORT=5678 \
  -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
  docker.n8n.io/n8nio/n8n

同样的将example.com替换成已经绑定主机公网ip的域名

四、检查n8n运行情况

开启防火墙的5678端口,在网址栏输入类似https://example.com:5678的网址,不要漏了https://,看能否访问成功。如果失败请使用docker logs id(实际的容器id)查看具体问题。

文章作者:hzstacknote

文章链接:http://localhost:8090/archives/wei-dockerban-de-n8npei-zhi-sslzheng-shu

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!


评论