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

 找回密码
 立即注册
12
返回列表 发新帖
楼主: nichwang

[流程系列] Node-RED在Docker中稳定性差?问题基本解决

[复制链接]

2

主题

223

帖子

3462

积分

论坛元老

Rank: 8Rank: 8

积分
3462
金钱
3239
HASS币
0
 楼主| 发表于 2018-9-25 13:55:17 来自手机 | 显示全部楼层
alei643 发表于 2018-9-25 13:08
那导致不稳定的原因跟域名解析关系比较大吧,我只在NAS上做了HTTPS,HA上没做,再说HTTPS不可能影响内网I ...

反正我现在HA开启了https以后,配置了域名,再在Node-RED里面用https+ip访问不了,只能域名访问。
回复

使用道具 举报

6

主题

230

帖子

2128

积分

金牌会员

Rank: 6Rank: 6

积分
2128
金钱
1893
HASS币
20
发表于 2018-9-25 14:02:52 | 显示全部楼层
我是做了个frp+nginx反向代理啥的,node和ha都不动,公网访问用frp进来,然后内网访问直接用的nginx配置了反向代理指向这两个主机的内网地址,内外网访问都可以通过同样的域名和端口号,内网IP直接访问也不影响。你可以参考下我的nginx的配置。

我的nginx和frp是放在家里的路由器上的,所以如果你不是在路由器上可能要进行其他的设置,比如要把DNS指向你的那台单独的主机

另外我申请的是一级域名方式,公网访问的话是用frp分别二级域名指向内网的node和ha
比如aaa.com,我node.aaa.com指向内网node-red,ha.aaa.com指向内网ha

nginx反向代理的配置如下:
/etc/nginx/nginx.conf配置文件下添加include proxy.conf

http {
    include       mime.types;
    #default_type  application/octet-stream;
    include proxy.conf;


然后同个目录新建个proxy.conf配置文件,丢上去如下信息:

server {
    listen 13080;     # 这个是你需要使用的端口号
    listen [::]:13080;   # 这个是IPV6的,跟上面一样就好了

    server_name node.aaa.com;   # 你的域名

    location / {
        proxy_set_header        Host                $http_host;
        proxy_set_header        X-Real-IP           $remote_addr;
        proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto   $scheme;
        proxy_intercept_errors  on;
        proxy_http_version      1.1;
                proxy_set_header        Upgrade             $http_upgrade;
                proxy_set_header        Connection          "upgrade";
        proxy_pass [url]http://10.10.10.110:1880;[/url]    # node-red的内网地址

    }

}

server {
    listen 13080;
    listen [::]:13080;

    server_name ha.aaa.com;    

    location / {
        proxy_set_header        Host                $http_host;
        proxy_set_header        X-Real-IP           $remote_addr;
        proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto   $scheme;
        proxy_intercept_errors  on;
        proxy_http_version      1.1;
                proxy_set_header        Upgrade             $http_upgrade;
                proxy_set_header        Connection          "upgrade";
        proxy_pass [url]http://10.10.10.110:8123;[/url]     # ha的内网地址

    }

}


现在应该就可以使用域名访问两个主机了


node.aaa.com:13080 访问node-red
ha.aaa.com:13080 访问ha

写的不是很明白...将就看看把
回复

使用道具 举报

2

主题

223

帖子

3462

积分

论坛元老

Rank: 8Rank: 8

积分
3462
金钱
3239
HASS币
0
 楼主| 发表于 2018-9-25 14:11:51 | 显示全部楼层
bilubin 发表于 2018-9-25 14:02
我是做了个frp+nginx反向代理啥的,node和ha都不动,公网访问用frp进来,然后内网访问直接用的nginx配置了 ...

多谢达人提供这么详尽的教程。由于本人有电信外网IP,所以不需要用反向代理就可以直接访问的,只需要在路由器做映射就可以了。为什么要转https,主要是为了安全,尤其是在外面用不安全的wifi的时候访问自家HA或者Node-RED的时候,https不会被破译,http则不然(当然这属于黑客范畴,我自己也没能力监听)。
另外,我内网也可以用ip来访问HA和NodeRED的,但就是在Node中配置HA节点的时候没法用ip+密码来连接,这个问题比较蛋疼。至于为什么过了一段时间就自动化失效的问题就更加摸不着头脑了。
回复

使用道具 举报

23

主题

656

帖子

4609

积分

元老级技术达人

积分
4609
金钱
3938
HASS币
30

教程狂人

QQ
发表于 2018-9-25 17:21:04 | 显示全部楼层
nichwang 发表于 2018-9-25 13:55
反正我现在HA开启了https以后,配置了域名,再在Node-RED里面用https+ip访问不了,只能域名访问。 ...

应该用http+ip啊,不要带s
回复

使用道具 举报

2

主题

223

帖子

3462

积分

论坛元老

Rank: 8Rank: 8

积分
3462
金钱
3239
HASS币
0
 楼主| 发表于 2018-9-25 17:56:42 | 显示全部楼层
alei643 发表于 2018-9-25 17:21
应该用http+ip啊,不要带s

HA开启了https以后就不能用http访问了,所以设置http+ip连不上,我也试过了。
回复

使用道具 举报

6

主题

230

帖子

2128

积分

金牌会员

Rank: 6Rank: 6

积分
2128
金钱
1893
HASS币
20
发表于 2018-9-26 10:34:10 | 显示全部楼层
本帖最后由 bilubin 于 2018-9-26 10:36 编辑
nichwang 发表于 2018-9-25 14:11
多谢达人提供这么详尽的教程。由于本人有电信外网IP,所以不需要用反向代理就可以直接访问的,只需要在路 ...

nginx也支持https的,证书申请一级域名的证书,然后将http反向代理成https,同样可以的
第二个问题,node没办法用密码登陆,应该是你没有开启HA的旧模式的密码登陆方式吧?

homeassistant:
  auth_providers:
    # 77.0后启用最新登录方式
    - type: homeassistant
    # 可信任的内网方式
    # - type: trusted_networks
    # 旧版本验证方式
    - type: legacy_api_password

回复

使用道具 举报

2

主题

223

帖子

3462

积分

论坛元老

Rank: 8Rank: 8

积分
3462
金钱
3239
HASS币
0
 楼主| 发表于 2018-9-26 12:05:57 | 显示全部楼层
本帖最后由 nichwang 于 2018-9-26 12:07 编辑
bilubin 发表于 2018-9-26 10:34
nginx也支持https的,证书申请一级域名的证书,然后将http反向代理成https,同样可以的
第二个问题,node ...

我在HA里面已经开启兼容模式了,可以密码登录的,只是在node-red中只能域名+密码,不能ip+密码模式,不知道是不是ip没有证书的原因导致的。
我昨晚在论坛里面找到了灵感,路由设置中,将我的内网机器的域名解析为我内网地址(相当于DNS劫持),这样同样是域名+密码模式,可以解析为内网ip+密码,我观察下这种状态下的稳定性。
同时也非常感谢你的帮助,frp反向代理我大概了解,但是nginx这块还不怎么熟悉,后期有需要的话还要请教你,谢啦。
回复

使用道具 举报

7

主题

201

帖子

1095

积分

论坛积极会员

积分
1095
金钱
894
HASS币
0
发表于 2022-6-23 14:30:38 | 显示全部楼层
nichwang 发表于 2018-9-25 17:56
HA开启了https以后就不能用http访问了,所以设置http+ip连不上,我也试过了。 ...

解决方法,在HA节点配置的下面有个选项:
accept unauthorized ssl certificates
打上勾就好了。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 10:17 , Processed in 1.245081 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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