找回密码
 立即注册
查看: 13929|回复: 9

[经验分享] 利用duckdns和caddy实现docker +ha外网https访问

[复制链接]

11

主题

77

回帖

603

积分

论坛分享达人

积分
603
金钱
515
HASS币
0
发表于 2018-10-21 03:31:20 | 显示全部楼层 |阅读模式
本帖最后由 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了

评分

参与人数 2金钱 +32 收起 理由
+ 16 我来瀚思就为看你!
neroxps + 16 厉害了word楼主!

查看全部评分

回复

使用道具 举报

40

主题

3016

回帖

1万

积分

超级版主

Nero

积分
11150
金钱
8044
HASS币
182
发表于 2018-10-21 06:29:36 | 显示全部楼层
不错,谢谢分享。
Nero
回复

使用道具 举报

11

主题

77

回帖

603

积分

论坛分享达人

积分
603
金钱
515
HASS币
0
 楼主| 发表于 2018-10-21 15:16:00 | 显示全部楼层
哈哈 第一次分享就高亮,thanks
回复

使用道具 举报

aaa 

34

主题

301

回帖

1848

积分

金牌会员

积分
1848
金钱
1513
HASS币
0
发表于 2018-10-25 12:08:04 | 显示全部楼层
感谢分享,我用frp实现的
回复

使用道具 举报

6

主题

98

回帖

487

积分

中级会员

积分
487
金钱
383
HASS币
0
发表于 2018-10-25 13:14:18 | 显示全部楼层
感谢分享!
回复

使用道具 举报

11

主题

77

回帖

603

积分

论坛分享达人

积分
603
金钱
515
HASS币
0
 楼主| 发表于 2018-10-25 22:46:35 | 显示全部楼层
aaa 发表于 2018-10-25 12:08
感谢分享,我用frp实现的

我这边电信打个电话,可以改公网
回复

使用道具 举报

20

主题

696

回帖

3214

积分

论坛元老

积分
3214
金钱
2498
HASS币
0
发表于 2018-12-13 18:09:15 | 显示全部楼层
duckdns老是开不起来
# INFO: Using main config file /data/workdir/configERROR: Problem connecting to server (get for https://acme-v02.api.letsencrypt.org/directory; curl returned with 6)
回复

使用道具 举报

13

主题

320

回帖

1418

积分

金牌会员

积分
1418
金钱
1085
HASS币
0
发表于 2019-1-28 20:47:10 | 显示全部楼层
楼主,是不是还有哪里需要设置的,我这边可以访问网址,输入密码后但总是显示
Unable to connect to Home Assistant.
回复

使用道具 举报

3

主题

147

回帖

894

积分

高级会员

积分
894
金钱
744
HASS币
0
发表于 2019-3-4 14:54:54 | 显示全部楼层
aaa 发表于 2018-10-25 12:08
感谢分享,我用frp实现的

请问frp怎么配置Caddyfile文件?我也是frp,但是外网文章都打不开网页
回复

使用道具 举报

1

主题

17

回帖

70

积分

注册会员

积分
70
金钱
52
HASS币
0
发表于 2022-6-5 13:26:40 | 显示全部楼层
我設定完後
LOG看起來也沒問題
可是外網就無法連線
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-5-16 20:58 , Processed in 0.140550 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表