『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 26559|回复: 40

[经验分享] 通过ngrok实现公网连接ha

[复制链接]

5

主题

73

帖子

241

积分

论坛分享达人

编码狂魔

积分
241
金钱
168
HASS币
0
发表于 2017-8-2 17:54:28 | 显示全部楼层 |阅读模式
之前一直在纠结怎么实现把树莓派映射到公网上,从公网连接homeassistant,实现随时随地登录。尝试过很多方法,用过花生壳,nat123,也试过在路由器上设置内网穿透,甚至也买过阿里云弹性ECS就为了有个公网地址。
经过一段时间使用,花生壳免费版很慢,收费的有流量限制,很不方便,当然土豪大大们可以使用企业版的,绝对快
nat123免费版的很不稳定,经常掉线,我在homeassistant里设置了configurator panel,连接的是内网的一个端口,当我在外网登录的时候,打开configurator永远显示的是连接超时,很多时候连homeassistant页面也load不出来,果断被我放弃了
然后是用了路由器+阿里云弹性ECS,把内网地址映射到ECS的公网地址上,很快,非常快,但是唯一的缺点是很贵,一年大概在1200元左右,也被我果断放弃了,当然土豪大大们可以忽略。。。
最后我发现了ngrok反代,试了一下,发现10M的贷款足够,不卡,也比较稳定,在免费版里算是非常好的了,翻了翻论坛没有发现相关的帖子,就大概写一下,抛砖引玉
首先浏览器打开ngrok.cc网址,
0.png
注册账号,登录,然后你会来到下面这个界面
1.png
左边栏目最下方点击开通隧道,进入购买界面,选择右边免费的,足够用了
2.png
然后到隧道设置的界面上
3.png
对于前置域名这里要解释一下,如果没有自己的域名,可以使用ngrok的域名,那这里就需要填写前置域名,比如我现在写的myhass,那么到时候映射完了在公网的地址就是myhass.ngrok.cc,如果有自己的域名,这里可以随便写一个,开通隧道成功之后再去设置个人域名。
然后点击确认开通,再次点击确认开通
4.png
然后你就可以在左边隧道管理tab中看到你创建的隧道了
5.png
记下你的隧道ID,后面在树莓派上启动服务的时候需要用到
然后回到ngrok.cc主页上,找到客户端下载tab
6.png
点击进去,找到Linux ARM版本下载
等下载完成后打开看到里面是一个sunny的可执行文件
8.png
现在通过Samba服务把sunny文件放入homeassistant文件夹

执行:
cd /home/homeassistant/.homeassistant/
ls

看一下sunny文件是否存在

如果存在,执行
sudo ./sunny clientid 隧道id

9.png
隧道ID就是上面图中管理后台中的隧道ID
10.png
11.png
看到上面那样的返回就说明连接该隧道成功,打开浏览器输入myhass.ngrok.cc就可以看到自己的hass了
如果需要启动多条隧道把多条隧道id使用英文逗号隔开就可以了
sudo ./sunny clientid c7fb2defb4081919,3e23d14f040b2b12

如果要设置个人域名,在隧道管理界面点击隧道条目最右边的编辑,进入下面界面
13.png
在域名类型选择自定义域名
然后在自定义域名里写入自己的域名
记得在自己域名的服务商那里加一条CNAME记录
解析到server.ngrok.cc
重新保存,重启服务,打完收工

============================================
不敢在各位大神面前班门弄斧,只是分享一下自己的设置经过,抛砖引玉抛砖引玉,有任何不对的地方,欢迎指正。
7.png
回复

使用道具 举报

5

主题

37

帖子

369

积分

论坛分享达人

积分
369
金钱
327
HASS币
0
发表于 2017-8-2 18:22:45 | 显示全部楼层
感谢楼主分享!
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-8-2 18:35:00 | 显示全部楼层
感谢分享,楼主辛苦了!权限奉上,敬请笑纳!
回复

使用道具 举报

8

主题

174

帖子

626

积分

高级会员

Rank: 4

积分
626
金钱
452
HASS币
0

最佳新人

发表于 2017-8-3 06:08:59 | 显示全部楼层
感谢分享。我等小白,只有膜拜的份了。
回复

使用道具 举报

2

主题

302

帖子

1675

积分

金牌会员

Rank: 6Rank: 6

积分
1675
金钱
1372
HASS币
0
发表于 2017-8-3 08:48:53 | 显示全部楼层
感谢分享!每次重启树莓派是不是都要手动sudo ./sunny clientid XXXXXXX
回复

使用道具 举报

39

主题

749

帖子

4833

积分

论坛元老

Freddy.

Rank: 8Rank: 8

积分
4833
金钱
4059
HASS币
0

最佳新人卓越贡献

发表于 2017-8-3 09:17:34 | 显示全部楼层
路由器的端口转发也是极好的。。。
回复

使用道具 举报

5

主题

73

帖子

241

积分

论坛分享达人

编码狂魔

积分
241
金钱
168
HASS币
0
 楼主| 发表于 2017-8-3 09:42:54 | 显示全部楼层
南柯醉一梦丶 发表于 2017-8-3 09:17
路由器的端口转发也是极好的。。。

我的路由器没有公网地址。。。后来不是弄了个ECS么,用他的公网IP做转发,但是ECS就是太贵了。。。
回复

使用道具 举报

2

主题

284

帖子

2279

积分

金牌会员

Rank: 6Rank: 6

积分
2279
金钱
1994
HASS币
0
发表于 2017-8-3 09:47:42 | 显示全部楼层
感谢分享,回头搞一下。
回复

使用道具 举报

13

主题

182

帖子

1716

积分

金牌会员

Rank: 6Rank: 6

积分
1716
金钱
1534
HASS币
0
发表于 2017-8-3 10:48:29 | 显示全部楼层
同问,每次重启树莓派是不是都要手动sudo ./sunny clientid XXXXXXX
回复

使用道具 举报

5

主题

73

帖子

241

积分

论坛分享达人

编码狂魔

积分
241
金钱
168
HASS币
0
 楼主| 发表于 2017-8-3 10:52:32 | 显示全部楼层
lmdf 发表于 2017-8-3 10:48
同问,每次重启树莓派是不是都要手动sudo ./sunny clientid XXXXXXX

目前是这样的 我基本不重启树莓派 所以我一般都是screen -S sunny然后在screen出来的新窗口执行sudo ./sunny clientid XXXXXXX 这样他可以自己在后台运行就行了 如果需要开机启动的话 把这个加到系统服务里就行 参考怎么样让ha开机启动的教程就行了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 11:46 , Processed in 0.157556 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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