You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Tailscale serve搭配Portainer时的TLS证书验证错误求助

解决Tailscale Serve代理Portainer时的证书验证错误

问题根源

你遇到的两个错误核心原因都是Portainer默认使用自签名HTTPS证书,而Tailscale Serve作为反向代理时会严格校验后端证书有效性:

  1. 第一个错误:Portainer证书绑定的是0.0.0.0,但你代理指向127.0.0.1,IP不匹配导致证书验证失败
  2. 第二个错误:Portainer的自签名证书未被Tailscale信任的CA机构签发,触发未知权威证书校验错误

下面提供两种可行的解决方案:


方案1:修改Tailscale Serve配置,跳过后端证书验证

直接在Tailscale的Serve配置中添加跳过证书校验的参数,让Tailscale忽略Portainer自签名证书的有效性问题:

修改你的serve-config.json文件:

{
    "TCP": {
      "443": {
        "HTTPS": true
      }
    },
    "Web": {
      "${TS_CERT_DOMAIN}:443": {
        "Handlers": {
          "/": {
            "Proxy": "https://127.0.0.1:9443",
            "TLSSkipVerify": true
          }
        }
      }
    }
}

修改后重启Tailscale容器:

docker-compose restart portainer-ts

方案2:让Portainer以HTTP模式运行,由Tailscale处理HTTPS

这种方式更简洁,避免自签名证书的干扰,让Portainer只提供HTTP服务,对外的HTTPS加密由Tailscale负责:

步骤1:调整Portainer的启动参数

修改docker-compose.yml,在Portainer服务中添加命令行参数禁用HTTPS:

version: '3.8'

services:
  portainer-ts:
    image: tailscale/tailscale:latest
    container_name: portainer-ts
    cap_add:
      - net_admin
      - sys_module
    volumes:
      - /home/sagiziv3/portainer/tailscale/state:/var/lib/tailscale
      - /home/sagiziv3/portainer/tailscale/serveconfig:/config
      - /dev/net/tun:/dev/net/tun
    environment:
      - TS_AUTHKEY=tskey-client-XXXXX-XXXXX?ephemeral=false
      - TS_EXTRA_ARGS=--advertise-tags=tag:container --reset
      - TS_STATE_DIR=/var/lib/tailscale
      - TS_SERVE_CONFIG=/config/serve-config.json
      - TS_USERSPACE=false
    hostname: portainer
    restart: unless-stopped
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    network_mode: "service:portainer-ts"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    command: --no-ssl --http-port 9000
    restart: always

volumes:
  portainer_data:

步骤2:更新Tailscale Serve配置

修改serve-config.json,将代理地址改为Portainer的HTTP端口:

{
    "TCP": {
      "443": {
        "HTTPS": true
      }
    },
    "Web": {
      "${TS_CERT_DOMAIN}:443": {
        "Handlers": {
          "/": {
            "Proxy": "http://127.0.0.1:9000"
          }
        }
      }
    }
}

步骤3:重启容器

docker-compose down && docker-compose up -d

验证

完成任一方案后,通过Tailscale分配的域名(如portainer.your-tailnet.ts.net)访问Portainer,即可正常加载页面,不再出现证书错误。

内容的提问来源于stack exchange,提问作者SagiZiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:18:23