树莓派HomeAassistant系列(一)外网远程控制

HomeAassistant系列

这篇文章中已经讲了如何进行内网穿透来远程连接我们的树莓派,那么如果能够让Homeassistant也能够进行远程连接的话,那么这样会很爽。

我是在Docker下安装的HA,在设置外网远程连接的时候遇到了非常多的坑,下面先说下我遇到的坑。

1.Docker下有4中network模式,有host,container,none,bridge(默认),一开始按照别人的教程安装是bridge模式,然后用cpolar http 8123进行内网穿透,遇到了我的第一个坑,页面显示400 bad request。
解决方案:凭借着不解决不死心的决心,我搜索了各种资料,终于让我在bing上找到了方法,由于是HA是在docker下运行的,所以有一个虚拟的IP地址,可以用portainer找到网络模式下找到这个IP地址,显示为172.17.0.1,解决的方案就是在configuration.yaml下添加下面的信息:

1
2
3
4
http:
use_x_forwarded_for: true
trusted_proxies:
- 172.17.0.1

然后重新进行内网穿透,哇!居然可以了!可是还有坑迎接我😭

2.然后我开始配置homekit,非常nice,有官方集成,直接一键傻瓜操作,并且生成了二维码让我去扫,结果我试了好几次,都说无法找到设备,我服了。
解决方案:凭借着不解决不死心的决心,我搜索了各种资料,终于又让我在bing(必应还是不错的)上找到了方法,因为我们安装的时候docker选择bridge模式,这种网络homekit是无法找到设备的,需要设置为host模式,ok,行,那我删除镜像重新安装,也是非常简单的,把bridge改成host。没错,真的就是这么一回事,果然找到设备了。然后我又兴高采烈用cpolar http 8123穿透,结果显示400 bad request,可是这次是host模式呀,和宿主机共享呀,根本不是bridge下那种情况,所以我就在配置文件写了我的本机地址192.168.1.104,结果还是不行,难度homekit和远程连接我只能选择其中一样?可是我都想要呀,然后我又想了半天,试试能不能用nginx进行反向代理,设置了好久也没有搞定,终于最后,我查了两天资料,又让我在论坛上找到了别人的一个配置信息,只需要在configuration.yaml添加这个配置就可以。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http:
server_port: 8123
use_x_forwarded_for: True
trusted_proxies:
- 127.0.0.1
- ::1
- 10.0.20.0/24
- 10.10.0.0/16
- 10.43.0.0/16
- 10.42.0.0/16
- 10.0.20.81
- 10.0.20.82
- 10.0.20.83
- 10.42.1.14
- 10.42.0.42
ip_ban_enabled: False
login_attempts_threshold: 5

成功了!homekit和远程我都可以一起要了!这里有个细节,就是cpolar会生成两个链接,一个是加密的https,一个是http,因为咱是白嫖,没有域名,没有服务器,所以只能用http这个,当然,如果你有域名有云服务器的话,应该不会遇到我上面这些问题,因为我看网络上远程链接教程还是比较全的。

一些提示cpolarngork.cc都可以用免费的内网穿透,区别在于cpolar是动态更换链接,而ngrok链接可以是固定的,但是太卡了,所以我还是选择cpolar,当然,有钱任性,可以直接买他们的服务。

一些心得:其实在bridge模式下能够进行远程连接,我就已经有信心在host模式下远程连接,所以我觉得肯定是一些配置上出现了问题,后来想到用nginx进行反向代理,虽然我并没有成功设置好,但是我觉得即便设置好了,也会出现400,因为本质上不是这个问题,而是HA直接拒绝你,所以后来不从这个思路下手,终于更换各种关键词去论坛上搜索,找到一个人的配置,太开心了,还有,英文还是得要学好,HA论坛都是英文。