为Portainer WebUI启用HTTPS访问的方法咨询
为树莓派Ubuntu上的Portainer启用HTTPS访问
下面提供两种实用方案,根据你的需求选择:
方案一:直接通过Portainer CE版启用HTTPS(自动申请Let's Encrypt证书)
Portainer CE版本支持直接集成Let's Encrypt自动获取可信证书,步骤如下:
- 停止并移除当前运行的Portainer容器(持久化数据不会丢失):
docker stop portainer docker rm portainer
- 重新启动Portainer,配置HTTPS与Let's Encrypt参数:
docker run -d -p 8000:8000 -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest \ --ssl \ --letsencrypt \ --letsencryptdomain por.example.com \ --letsencryptemail your-email@example.com
- 说明:
9443是Portainer默认的HTTPS端口,映射到主机后可通过https://por.example.com:9443访问--letsencrypt开启自动证书申请,证书会自动存储在portainer_data数据卷中- 替换
your-email@example.com为你的有效邮箱,用于证书过期通知
- 开放防火墙端口:
sudo ufw allow 9443/tcp sudo ufw allow 8000/tcp
方案二:Nginx反向代理+Let's Encrypt(适合多服务统一管理)
如果需要为多个服务统一配置HTTPS,推荐用Nginx反向代理:
- 安装Nginx与Certbot工具:
sudo apt update && sudo apt install nginx certbot python3-certbot-nginx -y
- 创建Nginx配置文件:
编辑/etc/nginx/sites-available/portainer,写入以下内容:
server { listen 80; server_name por.example.com; return 301 https://$host$request_uri; # 自动重定向HTTP到HTTPS } server { listen 443 ssl; server_name por.example.com; location / { proxy_pass http://localhost:9000; 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; } }
- 启用配置并验证Nginx:
sudo ln -s /etc/nginx/sites-available/portainer /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
- 申请并配置Let's Encrypt证书:
sudo certbot --nginx -d por.example.com
按照终端提示完成操作:输入邮箱、同意条款、选择自动重定向HTTP到HTTPS即可。
- 开放防火墙端口:
sudo ufw allow 443/tcp sudo ufw allow 80/tcp
配置完成后,直接访问https://por.example.com即可(无需加端口,Nginx默认监听443端口)。
注意事项
- 确保你的域名
por.example.com已正确解析到树莓派的公网IP - 若使用方案一且希望用9000端口作为HTTPS端口,只需将启动命令中的
-p 9443:9443改为-p 9000:9443 - 自签证书仅适合测试场景,生产环境优先使用Let's Encrypt的可信证书
内容的提问来源于stack exchange,提问作者Chen Jiang
相关产品推荐
相关产品推荐

