本帖最后由 avrilclc 于 2018-10-21 03:49 编辑
前提:有公网ip,路由端口映射
今天研究怎么样实现外网访问,发现用add-on里面的duckdns按照推荐配置可以实现ha的外网+https;不用买域名即可申请Let's Encrypt的免费SSL证书。但是Docker的UI界面即常用的:9000端口是没办法用https访问的。走了很多弯路,终于配置成功。
1,先安装 DuckDNS,然后去duckdns.org申请一个免费的ddns,会得到一个token
2,DuckDNS配置文件
{
"lets_encrypt": {
"accept_terms": true,
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
},
"token": "你的token",
"domains": [
"你的域名.duckdns.org"
],
"seconds": 300
}
启动DuckDNS
3,安装Caddy,hassio里添加repository地址后直接安装:https://github.com/korylprince/hassio-caddy
在/share/目录下新建目录 caddy,在/share/caddy/目录下新建文件 Caddyfile(无后缀),Caddyfile的内容如下:
https://你的域名.duckdns.org:9999 {
tls /ssl/fullchain.pem /ssl/privkey.pem {
alpn http/1.1
}
proxy / 192.168.0.2:9000 {
transparent
websocket
}
log stdout
errors stderr
}
https:// 你的域名 .duckdns.org:8888 {
tls /ssl/fullchain.pem /ssl/privkey.pem {
alpn http/1.1
}
proxy / 192.168.0.2:8123 {
transparent
websocket
}
log stdout
errors stderr
}
解释一下,https的端口跟内网的端口不能一样,一样的话caddy会报错,我这里用了9999和8888,你们自己改,只要没用的都行,当然80端口肯定运营商x了
最后一步,路由器里面映射(或者叫转发)端口,上面四个端口(8888,9999,8123,9000)全部都要!比如9999就转发9999到你的ha所在ip上(这是关键)。然后现在就能愉快的https+外网了,以此类推,docker里面的服务,也可以这样https了
|