Docker Ngrok 反向穿透内网
考虑到家里有个吃灰很久的树莓派2B,最近几年家电自动化发展越来越成熟,所以花了点时间,把树莓派上装好了 Home assistant,把主要过程记录一下。
1、 树莓派2B
主要配置如下:
1 | - A 900MHz quad-core ARM Cortex-A7 CPU |
2、安装 Raspbian
Raspbain 下载地址,我用的是 Lite 版本。因为不需要桌面、其他软件。只需要最基础的系统,可以 SSH 上去安装 Docker 和 HA 就好。
https://www.raspberrypi.org/downloads/raspbian/
写卡软件,Mac/Linux/Windows 多平台支持:
https://www.balena.io/etcher/
SD 卡,我用的是当时买树莓派2B时(大约四年前)配的 8G SD。官方推荐要 32G 大小。实测 8G 也没问题,一切正常。Home assistant 本身只是一个指令中枢,需要的储存仅限于一点文本配置文件,所以对储存没啥要求。
用 etcher 把下载好的 OS 压缩文件写入 SD 卡,插入树莓派。给树莓派插上鼠标键盘(USB),插上 HDMI 连接显示器,连上网线,插上 Mini USB 到电源(最好是插座电源,否则会报低电压错误)。
启动之后输入等 login 提示。
- 输入 pi ,然后输入密码 raspberry 登录。
- 输入 passwd 更改密码。
- 输入 rasp-config,在 Interface option 里打开 ssh。
4、启动 Docker - home assistant
在这之前为了节约系统资源,我试过安装原生的 HomeAssistant,结果发现环境问题实在是一笔烂账。所以果断切换到 Docker 方案了事。
安装 Docker:
curl -sSL https://get.docker.com | sh
将 pi 用户添加到 Docker 用户组以便 pi 用户可以直接操作 Docker:
sudo usermod -aG docker pi
新建配置文件目录:
mkdir home-assistant
启动 home-assistant
docker run –init -d –name=”home-assistant” -v /home/pi/home-assistant:/config -v /etc/localtime:/etc/localtime:ro –net=host homeassistant/raspberrypi3-homeassistant
启动完成以后,设置树莓派重启后自动启动 HA container:
sudo crontab -l
输入:
@reboot docker start home-assistant
5、找到 Home assistant
输入
ifconfig | grep inet
应该可以看到找到分配的 IP 地址,大概类似于 192.168.X…。如果没找到,只有 127 类似开头的,说明树莓派到路由器的通讯有问题,没有自动分配到局域网 IP,也没有连上局域网。
可以试一下是否连上了互联网,随便 ping 一个地址:
ping 163.com
如果本地 IP 正常,那么就可以访问到启动后的 HA 了:
7、设置 Samba 共享
在配置的时候需要频繁读写配置文件,所以需要配置文件共享来方便读写。
安装 samba
sudo apt-get install samba
调整设置
sudo vim /etc/samba/smb.conf
在最下面添加以下内容
1 | [pi] |
设置密码
sudo smbpasswd -a pi
修改结束以后可以重启 Samba 服务让配置立刻生效:
sudo systemctl restart smbd.service
6、远程访问
基本配置结束,试试在其他 Terminal 客户端连接树莓派的 SSH。
再试试看能否在网络共享/网络邻居里看到你的 Pi。进入 home-assistant 目录,确认可以看到所有文件,以及编辑和保存。如果不能看到文件,或者读写有问题,需要解决文件权限问题。
为了确认所有准备就绪,重启树莓派(可以试着拔掉电源再插回去),稍等几分钟,看看 Home-assistant 能否自动启动,浏览器可以访问。重新确认 SSH 和共享都可以有效连接。
如果可以顺利登录,就可以拔掉鼠标键盘和显示器,把树莓派插到一个更合适的地方即刻。为了通讯稳定,建议还是插固定网线到路由器。
$ ssh [email protected]_HA_IP