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

标题: ha外网访问过程梳理 [打印本页]

作者: xjianfei    时间: 2024-4-11 11:30
标题: ha外网访问过程梳理
条件:
1、有公网ip或ip6
2、有自己的域名.ps: 这个很好弄,阿里云或其他域名平台,申请 免费域名或便宜的域名;
3、已经构建好自己的DDNS。因为我是自己是从nas一路玩过来的,所以这些都已经弄好,没弄好的,可以百度搜索一下这些教程,网上太多了

一、正式开始
1.home Assisstant服务搭建好后,http://[本地ip]:8123可以登录
[attach]57874[/attach]


2. HA和其他npm不一样的地方在于,它需要手动开启允许代理和反代,开启方式如下:
编辑 /配置目录/configuration.yaml,添加如下内容:
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.3.90 # Add the IP address of the proxy server。
ps:注意这时原192.168.3.90需要配置成你自己的npm或者nginx的ip


添加内容后注意重启home Assistant

3. 配置好npm或者nginx代理内容:
npm如下
[attach]57877[/attach]
图中标号1: 自己的域名
标号2: 自己本地的IP+端口
标号3: 这里注意,一定要勾选websockets Support,因为在登录界面输入用户和密码之后,会有一个websockets连接,如果不勾选,websocket连接无法成功,导致读取不到ha服务的数据

3.根据自己情况配置用https还是http
https的话就在ssl选项里添加相应的证书,这里不贴了,上述过程中红色加粗字体是注意事项,欢迎大家讨论交流
[attach]57876[/attach][attach]57876[/attach][attach]57876[/attach]

作者: hhh.    时间: 2024-4-11 12:23
使用群晖反向代理,docker自动更新证书。
作者: 囧    时间: 2024-4-11 12:41
谢谢楼主分享

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.3.90 # Add the IP address of the proxy server

这里的ip地址,我测试是如果是用HAOS的话,得使用docker内网网址:
172.30.33.0/24
作者: 隔壁的王叔叔    时间: 2024-4-11 12:50
感谢分享,请问楼主,我直接用了ipv6的ddns地址+8123,第二步和第三步没做,有没有什么不妥?望不吝赐教。
作者: xieahui    时间: 2024-4-11 13:43
隔壁的王叔叔 发表于 2024-4-11 12:50
感谢分享,请问楼主,我直接用了ipv6的ddns地址+8123,第二步和第三步没做,有没有什么不妥?望不吝赐教。 ...

那是反代和证书
好像无所谓,应该是不能用https访问

作者: yuhuanfan    时间: 2024-4-11 13:48
NGINX Home Assistant SSL proxy这个加duckdns好用
作者: xjianfei    时间: 2024-4-11 14:10
xieahui 发表于 2024-4-11 13:43
那是反代和证书
好像无所谓,应该是不能用https访问

是的,另一个是用域名来访问,可以隐藏端口,把外部只开放统一的https端口和http端口就好了,安全性拉满
作者: xjianfei    时间: 2024-4-11 14:11
yuhuanfan 发表于 2024-4-11 13:48
NGINX Home Assistant SSL proxy这个加duckdns好用

duckdns没用过,应该就是ddns吧
作者: xjianfei    时间: 2024-4-11 14:13
囧 发表于 2024-4-11 12:41
谢谢楼主分享

http:

这个主要取决于你的npm 或nginx部署的内网地址,其实意思就是允许通过npm和nginx代理来进行外网访问
作者: xjianfei    时间: 2024-4-11 14:14
hhh. 发表于 2024-4-11 12:23
使用群晖反向代理,docker自动更新证书。

是的,我其实添加了自动更新的任务,但是还没加到npm里面去,后面得空了看一下
作者: DDDear    时间: 2024-4-11 14:52
用万吉,冬瓜大佬的addon已经集成了
作者: a.Dong    时间: 2024-4-11 15:08


Home Assistant 开启远程访问 可以看下这个,也是今天刚写的

https://bbs.hassbian.com/thread-24906-1-1.html

作者: demacia    时间: 2024-4-11 16:24
在此基础在推荐下,劫持家里的dns,统一都走https+域名的方式。这样app就不用感知是在家里还是在外面了。
作者: hunl1986    时间: 2024-4-11 17:32
如果用爱快的路由不用那么麻烦,直接在路由里设置就行了。
作者: zjhcr    时间: 2024-4-11 18:10
使用lucky反代、ddns、ACME自动ssl证书一条龙,便宜好飞
作者: 360341024    时间: 2024-4-11 20:46
有公网IPv4就很容易了,要是只有ipv6还是很棘手;非本地情况下,手机网络木有IPv6地址,外面陌生WiFi基本也不会开ipv6出来
作者: longtor    时间: 2024-4-11 21:17
我是这样做的,供大家参考:已有 公网IP
家中光猫改桥接模式,主路由拨号,通过主路由器(小米AX9000)的DDNS服务和端口映射。
(一)www.no-ip.com :  注册,取得:用户名、密码、主机名称(XX.ddns.net)
唯一麻烦的是:免费主机名需要每30天确认一次。
(二)端口转发
小米AX9000:高级设置:端口转发 - 添加规则:
外部即可通过当前公网IP进行远程访问。
(三)DDNS
小米AX9000:高级设置 - DDNS:选择 no-ip.com,输入:用户名、密码、主机名称。查看状态:已启用、连接正常。
作者: a.Dong    时间: 2024-4-12 09:10
360341024 发表于 2024-4-11 20:46
有公网IPv4就很容易了,要是只有ipv6还是很棘手;非本地情况下,手机网络木有IPv6地址,外面陌生WiFi基本也 ...

手机网络现在默认都分配 公网IPv6
作者: shijei2012    时间: 2024-4-12 13:45
感谢分享,我去试一试
作者: huanglinsd    时间: 2024-4-14 13:23
没有看到楼主的文章,我这边也是直接梳理了一次,猜踩了很多坑,总结如下:
1.HA配置里面一定需要开启,此处可以从日志访问看出,增加配置后报错即可异常。
2.NG如果配置,最好可以直接指向根路径进行代理,如果使用接口进行代理较为复杂,需要有相关经验才能进行配置。
3.NG配置需要增加websocker的支持,具体如下:
http块增加:
  1. map $http_upgrade $connection_upgrade {
  2.           default upgrade;
  3.         ''      close;
  4.         }
复制代码

所在server块增加
  1. proxy_set_header Upgrade $http_upgrade;
  2.             proxy_set_header Connection "upgrade";
  3.                         proxy_http_version 1.1;
复制代码

作者: xjianfei    时间: 2024-4-14 14:27
360341024 发表于 2024-4-11 20:46
有公网IPv4就很容易了,要是只有ipv6还是很棘手;非本地情况下,手机网络木有IPv6地址,外面陌生WiFi基本也 ...

当然,有公网ipv4最好,手机移动网是已经有ipv6的,外面的wifi我通常是cloudflare来实现,因为我看youtube也要用cloudflare,所以对我来说没任何问题
作者: xjianfei    时间: 2024-4-14 14:28
huanglinsd 发表于 2024-4-14 13:23
没有看到楼主的文章,我这边也是直接梳理了一次,猜踩了很多坑,总结如下:
1.HA配置里面一定需要开启,此处可 ...


作者: xjianfei    时间: 2024-4-14 14:30
longtor 发表于 2024-4-11 21:17
我是这样做的,供大家参考:已有 公网IP
家中光猫改桥接模式,主路由拨号,通过主路由器(小米AX9000)的DD ...

我以前也差不多是这么用的,后来家里升级了千兆光纤,光猫动不了
作者: yuyanhui1988    时间: 2024-4-14 21:45
有公网了,作端口映射补不就可以了吗?
作者: sauron    时间: 2024-4-15 19:09
如果是用nginx.conf
可以只在在location块里加入
  1.     proxy_set_header Upgrade $http_upgrade;
  2.     proxy_set_header Connection $connection_upgrade;
复制代码

来开启websockets支持

作者: sauron    时间: 2024-4-15 19:10
yuyanhui1988 发表于 2024-4-14 21:45
有公网了,作端口映射补不就可以了吗?

nginx可以得到访问日志,联动fail2ban之类的
作者: xiangboshi    时间: 2024-4-16 09:59
DDDear 发表于 2024-4-11 14:52
用万吉,冬瓜大佬的addon已经集成了

我虽然下载了,但是不会用,盲区
作者: DDDear    时间: 2024-4-16 12:00
xiangboshi 发表于 2024-4-16 09:59
我虽然下载了,但是不会用,盲区

官网有教程很全
作者: 15888623438    时间: 2024-4-16 20:10
感谢楼主分享!
作者: xiaoo    时间: 2024-4-18 00:20
sauron 发表于 2024-4-15 19:09
如果是用nginx.conf
可以只在在location块里加入

一直在用这种方法,不用修改HA的配置,只在nginx中转发
作者: coolplus    时间: 2024-4-19 11:39
非常好的解释,通俗易懂
作者: free7712    时间: 2024-5-8 17:25
想用CF代理怎么搞?

作者: yzbleaf    时间: 2024-5-11 16:19
谢谢分享,先学习下
作者: 雨滴飞然    时间: 2024-5-28 00:10
有那么麻烦吗?不是直接一个路由端口转发就搞定的吗?我一直都是用的路由里面弄个端口转发,转发的端口就是内网进HA的地址,想用https的话,可以安装个lucky,里面有转换成https的功能,但是我用端口转发这个地址不成功
作者: fuhao3503    时间: 2024-5-31 09:56
zjhcr 发表于 2024-4-11 18:10
使用lucky反代、ddns、ACME自动ssl证书一条龙,便宜好飞

我刚刚也是想这样说。
但不知为何,我外网时在网页端访问HA,是正常跳转HA的登陆界面,但同样的外网环境,在手机APP端打开后,就跳转出浏览器并显示NAS(威联通)的管理登陆页面。
作者: smeily    时间: 2024-6-2 15:47
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: h2234    时间: 2024-6-2 21:57
截图那个画面在哪打开的

作者: goldstep    时间: 2024-6-14 16:27
买个域名,然后群晖里面申请一个注册dnspods的ddns,方便多了
作者: xjianfei    时间: 2024-6-22 09:43
goldstep 发表于 2024-6-14 16:27
买个域名,然后群晖里面申请一个注册dnspods的ddns,方便多了

关键是HA里面需要开允许代理的地址
作者: xjianfei    时间: 2024-6-22 09:45
h2234 发表于 2024-6-2 21:57
截图那个画面在哪打开的

第一个截图还是第二个呀,第一个局域网网页,第二个是npm里面添加proxy host
作者: xjianfei    时间: 2024-6-22 09:45
h2234 发表于 2024-6-2 21:57
截图那个画面在哪打开的

第一个截图还是第二个呀,第一个局域网网页,第二个是npm里面添加proxy host
作者: xjianfei    时间: 2024-6-22 09:47
free7712 发表于 2024-5-8 17:25
想用CF代理怎么搞?

上外网youtube上一堆教程
作者: goldstep    时间: 2024-6-22 09:54
xjianfei 发表于 2024-6-22 09:43
关键是HA里面需要开允许代理的地址

跟hass没关系的
作者: xjianfei    时间: 2024-6-22 10:04
goldstep 发表于 2024-6-22 09:54
跟hass没关系的

那是你直接拿ha作ddns吧,我是有很多服务,ddns是到其他主机,这台主机弄npm服务,ha只是局域网内一台服务,我还有很多个其他局域网主机服务,所以弄npm,应用场景不一样
作者: xjianfei    时间: 2024-6-22 10:14
demacia 发表于 2024-4-11 16:24
在此基础在推荐下,劫持家里的dns,统一都走https+域名的方式。这样app就不用感知是在家里还是在外面了。 ...

这是更高级的玩法
作者: lolstone    时间: 2024-9-17 00:28
本帖最后由 lolstone 于 2024-9-17 00:31 编辑
zjhcr 发表于 2024-4-11 18:10
使用lucky反代、ddns、ACME自动ssl证书一条龙,便宜好飞

configuration.yaml里面已经添加
http:  use_x_forwarded_for: true
  trusted_proxies:

     - 10.10.10.0/24
还是提示400: Bad Request,lucky反代的其它内容都正常,唯独ha有问题

作者: zjhcr    时间: 2024-9-18 17:20
lolstone 发表于 2024-9-17 00:28
configuration.yaml里面已经添加
http:  use_x_forwarded_for: true
  trusted_proxies:

10.10.10.0/24改成0.0.0.0/0
作者: lolstone    时间: 2024-9-20 22:18
zjhcr 发表于 2024-9-18 17:20
10.10.10.0/24改成0.0.0.0/0

感谢大佬,我多等一会反代就通了,之前等的时间不够以为没弄好,又改配置,反反复复的折腾半天
作者: foreveryanyee    时间: 2024-9-29 09:15
学习一下
作者: goodhelp    时间: 2024-9-29 12:13
还是安装集成简单
作者: chenwei0418    时间: 2024-10-5 19:41
free7712 发表于 2024-5-8 17:25
想用CF代理怎么搞?

想问一下楼主,用CF代理,ha 安装在群晖虚拟机上怎么搞
作者: wzry68    时间: 2025-2-17 23:37
大佬,我用的lucky来进行反代,我填的
http:
  use_x_forwarded_for: true
  trusted_proxies:
     - 192.168.0.0/24 #我的内网IP是192.168.0.116
然后用域名+端口号还是打不开,提示ERR_CONNECTION_REFUSED;然后我在lucky页面上也没找到websocket勾选项(我之前用的ngm倒是有这个勾选项)
作者: xjianfei    时间: 2025-3-24 23:45


作者: xjianfei    时间: 2025-3-24 23:49
wzry68 发表于 2025-2-17 23:37
大佬,我用的lucky来进行反代,我填的
http:
  use_x_forwarded_for: true

好久没登录论坛了,现在才看到,应该已经解决了吧
作者: wzry68    时间: 2025-3-25 02:45
xjianfei 发表于 2025-3-24 23:49
好久没登录论坛了,现在才看到,应该已经解决了吧

解决了,想不到上次回复已经是一个月前了。谢谢回复,我现在在弄群晖摄像头抓图企业微信通知,卡在上传临时素材这步了。。。报错404(企业微信是通的)
作者: xjianfei    时间: 2025-3-27 15:18
wzry68 发表于 2025-3-25 02:45
解决了,想不到上次回复已经是一个月前了。谢谢回复,我现在在弄群晖摄像头抓图企业微信通知,卡在上传临 ...

我平常用不到企业微信,倒是常用钉钉,所以 我的通知 都是用的钉钉,这个爱莫能助了
作者: xjianfei    时间: 2025-3-27 15:20
chenwei0418 发表于 2024-10-5 19:41
想问一下楼主,用CF代理,ha 安装在群晖虚拟机上怎么搞

没明白你的需求哦,一般cf代理要么在电脑上,要么在软路由上,ha指定代理或网关到代理地址
作者: doomzc    时间: 2025-6-8 01:38
我就说我的赛博活菩萨的隧道为啥不行呢。。还得开启哦




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5