请选择 进入手机版 | 继续访问电脑版

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

 找回密码
 立即注册
查看: 36040|回复: 32

【小白实践】3. 设置外网访问Home Assistant

[复制链接]

5

主题

22

帖子

134

积分

论坛分享达人

积分
134
金钱
112
HASS币
0
发表于 2017-10-29 10:22:17 | 显示全部楼层 |阅读模式
本帖最后由 buronnie 于 2017-10-29 10:22 编辑

要想在外网访问Home Assistant, 需要给树莓派分配一个静态IP。不过绝大多数用户都没有这个条件,所以官网推荐duckdns。配合路由器的端口映射和加密https,我们可以做到安全方便的从任何地方访问home assistant server. 接下来我们慢慢聊一聊这是如何实现的。

  • 端口映射(port forwarding)
    现在所有的路由器都支持这个技术,它解决了从外网访问内网服务器的问题。

    通常我们上网都是从内向外:
    我的电脑 —> 路由器 —> www.sina.com

          在home assistant中我们需要的是从外网访问内网服务器:
          手机 —> 路由器(71.23.0.1) —> home assistant(树莓派)(192.168.1.20)

          这个过程看似简单,却还是有两个问题需要解决:
          1)如何给路由器一个固定的IP地址?
          2)如何让我们的http请求穿过路由器到达树莓派?

          通常网络运营商给用户的都是动态IP地址,要解决这个问题我们需要duckdns,这个一会在下面会仔细说。

          假设我们已经有个固定的IP地址,接下来就需要端口映射来帮助我们把从外面来的请求转发给内网的树莓派。这个过程就叫做端口映射。

2. DuckDNS
打开https://duckdns.org, 用google或facebook账户登录后,可以自定义一个域名(domain),最好是好记的,还有当前路由器的IP地址,直接度娘“我的ip”就能查到。每当我们的公网IP改变时,home assistant 就会通知DuckDNS更新IP, 从而保证我们的域名总是链接到最新的IP地址。设置成功之后,我们可以在浏览器里输入: http://<mydomain>.duckdns.org. 应该可以看到路由器的配置界面。这说明我们的域名和IP已经成功绑定。

3. 配置端口映射
在路由器管理界面里,找到port forwarding选项。填写:
外部起始端口:80
外部结束端口:80
内部起始端口:8123
内部结束端口:8123
内部IP地址:home assistant的IP 地址,在路由器菜单里能找到。
这样我们就设置好了端口映射,80是默认的http请求使用的端口,8123是home assistant使用的端口。
保存设定,再次访问http://<mydomain>.duckdns.org,这次看到了home assitant的界面,说明端口映射成功!

4. 安装DuckDNS插件
这个插件可以同步公网IP到DuckDNS,保证域名链接到最新的IP。这个插件还集成了let_encrypt插件的功能,使我们可以使用加密的https安全访问内网。安装插件非常容易,安装成功后需要配置一下选项:
{
  "lets_encrypt": {
    "accept_terms": true,
    "certfile": "fullchain.pem",
    "keyfile": "privkey.pem"
  },
  "token":<可以在duckdns账户中找到>,
  "domains": ["<mydomain>.duckdns.org"],
  "seconds": 300
}

          最后启动duckdns 插件即可。
          需要注明的一点是如果已经使用了duckdns插件,那么就不要安装Let’s Encrypt插件,因为Let’s encrypt插件的功能已经整合进去了。

5. 设置https访问
Let’s encrypt 会自动生成并更新https需要的安全证书,打开configuration.yaml, 添加

  http:
    base_url: https://buronnie.duckdns.org:8123
    ssl_certificate: /ssl/fullchain.pem
    ssl_key: /ssl/privkey.pem

    最后去路由器端口映射菜单,将之前的配置里面的
    外部起始端口改为443
    外部结束端口改为443
    因为https默认使用的是443端口.
    重启home assistant使配置生效后,就可以使用https://<mydomain>.duckdns.org访问了。

评分

参与人数 1金钱 +8 收起 理由
Roger + 8 哇哦,楼主的头像是和Paulus的合影!.

查看全部评分

回复

使用道具 举报

1

主题

282

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
金钱
940
HASS币
0
发表于 2017-10-29 11:27:58 | 显示全部楼层
很赞,80端口封了,只能443端口来https了
回复

使用道具 举报

4

主题

109

帖子

818

积分

高级会员

Rank: 4

积分
818
金钱
709
HASS币
10
发表于 2017-10-29 11:30:02 | 显示全部楼层
现在443端口也封了
回复

使用道具 举报

0

主题

76

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
金钱
192
HASS币
0
发表于 2017-10-29 12:12:55 | 显示全部楼层
先收藏,回头试试
回复

使用道具 举报

6

主题

272

帖子

3897

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3897
金钱
3620
HASS币
0
发表于 2017-10-29 12:58:28 | 显示全部楼层
哇塞,楼主的头像是和Paulus的合影!Home-assistant的创始人!
回复

使用道具 举报

5

主题

22

帖子

134

积分

论坛分享达人

积分
134
金钱
112
HASS币
0
 楼主| 发表于 2017-10-29 14:05:42 | 显示全部楼层
Roger 发表于 2017-10-29 12:58
哇塞,楼主的头像是和Paulus的合影!Home-assistant的创始人!

他是我的组长,hoho
回复

使用道具 举报

6

主题

272

帖子

3897

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3897
金钱
3620
HASS币
0
发表于 2017-10-29 14:10:17 | 显示全部楼层
buronnie 发表于 2017-10-29 14:05
他是我的组长,hoho

哇哦,他在中国?
回复

使用道具 举报

5

主题

22

帖子

134

积分

论坛分享达人

积分
134
金钱
112
HASS币
0
 楼主| 发表于 2017-10-29 14:13:32 | 显示全部楼层
Roger 发表于 2017-10-29 14:10
哇哦,他在中国?

哦,不是,我在美国
回复

使用道具 举报

6

主题

272

帖子

3897

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3897
金钱
3620
HASS币
0
发表于 2017-10-29 14:21:58 | 显示全部楼层
buronnie 发表于 2017-10-29 14:13
哦,不是,我在美国

,希望home-assistant越来越强大!请转告Paulus,中国有个home-assistant论坛,挺热闹的!
回复

使用道具 举报

5

主题

22

帖子

134

积分

论坛分享达人

积分
134
金钱
112
HASS币
0
 楼主| 发表于 2017-10-29 14:27:03 | 显示全部楼层
Roger 发表于 2017-10-29 14:21
,希望home-assistant越来越强大!请转告Paulus,中国有个home-assistant论坛,挺热闹的! ...

哈哈,我还是通过他知道咱们论坛的,高手云集!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-3-28 21:41 , Processed in 0.154231 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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