买了个斐讯的 DC1 插排来折腾,所以要来建一个 HomeAssistant 服务器,研究了一圈踩了几个坑后,加上考虑自己手头的设备条件,还是决定采用 Windows 系统+虚拟机的形式来搞。本文用于记录过程供参考。
之前捡了台暴风的播酷云矿渣,运行 Server 2019 当做 NAS 一直非常稳定,为了方便,虚拟机决定就用系统自带的 Hyper-V 了,如何开启这功能的教程网上一搜一大把。
系统方面个人选了 Debian 10 系统,实际 Ubuntu/CentOS 这些也都可以,自己喜欢哪个用哪个好了。
官网下载系统镜像,小型镜像就够了,地址:https://www.debian.org/distrib/
Hyper-V 里新建个外部的虚拟交换机,名称随便起,绑定到自己上网用的物理网卡,如下图所示。
然后就是按照流程一路新建一个虚拟机了,基本就是一路默认设置即可,但注意网卡选择上面新建的那个外部网卡。
内存大小根据自己物理机硬件来适当调整。我这里给虚拟机就起名叫 Debian10。
系统选择之前下载好的系统镜像,点击完成即可。
创建完建议去设置里把安全启动关了。
然后就可以启动虚拟机了,点击连接可以看到虚拟机的画面。Debian 的安装过程就不说了,Graphical inatall 就是图形化界面安装,普通用户都建议选这个即可,系统安装流程也很简单,不再多说。
安装时会有软件源选择,建议不用默认那个,选个中科大,网易或者华为云这类国内源都可以,下载速度快。
最后把 SSH 服务勾选上就装完系统了。
系统安装时会让你设定 root 用户的密码,还有一个普通用户的用户名和密码,这些后面管理系统时需要用到,都务必记好。
重启进入系统后,这时候去路由器界面看一下虚拟机分到的 IP,设备名称就是设定的虚拟机名称,我这里分到的是 192.168.2.164 。
然后就可以用 putty 这类管理工具进行 SSH 连接了,端口默认为 22
连上 SSH 后用安装时设定的普通用户名和密码登陆,然后运行:
su
输入 root 用户密码,切换到 root 模式。Debian 默认不允许 root 用户登陆,所以要这样操作,当然你也可以修改文件允许 root 直接登录,可以自行搜索教程。
然后添加新存储库所需的软件包,执行:
apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
导入存储库的 GPG 密钥,成功会提示 OK :
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
将稳定版的 Docker APT 存储库添加到软件存储库列表中:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
更新软件包并安装最新版本的 Docker 社区版(Community Edition):
apt update
apt install docker-ce
下载所需文件时需要连接到国外服务器,会比较慢,可以去喝杯茶,耐心等它完成,或者开始安装前路由器上挂个科学上网这类。
安装完成后,Docker 服务默认会自启。输入命令检测运行情况如下:
默认情况下,root 用户和具有 sudo 权限的用户才能执行 Docker 命令,这显然太不方便了。执行如下指令将现有用户添加到 docker 组 :
usermod -aG docker $USER
然后重新登录 SSH,普通用户登陆就能直接运行 docker 相关命令了,不用加 sudo。
到这里,Debian 系统的 Docker 配置实际就完成了。还建议先把 Docker 的源换成国内阿里云这类,加快下载镜像速度,具体教程可以参考阿里云的容器镜像服务页面。
为了管理方便,我这里再来装个 Portainer ,这是 Docker 的图形化管理面板。
首先拉取最新镜像,运行:
docker pull portainer/portainer
宿主机上创建 portainer_data 目录用于保存配置数据:
docker volume create portainer_data
开始运行容器,成功运行的话会出现一串 ID:
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer 参数说明: -d:容器在后台运行; -p 9000:9000 :把容器的 9000 端口映射到宿主的 9000 端口,这是访问 portainer 管理页面需要用的端口; -v /var/run/docker.sock:/var/run/docker.sock :把宿主机目录挂载到容器中同样的位置; -v portainer_data:/data :把宿主机 portainer_data 数据卷挂载到容器/data 目录;
这时候浏览器里访问虚拟机 IP+9000 端口,就会看到 portainer 管理页面了,按照向导创建一个管理员账户即可使用。
这里是本地使用,选择 Local 即可,点击连接。
然后就能看到管理界面,虽然全英文,然而都不难懂,自己琢磨下就行。
管理页面装完后继续回到命令行,拉取 HA 的 0.93.1 版镜像。HA 本身是开源程序,更新速度极快,版本号一直在快速迭代,这里要根据自己需求选择对应版本,不是越新越好:
docker pull homeassistant/home-assistant:0.93.1
然后运行即可:
docker run -d --name="ha0.93.1" -v /home/lishuma/hass/config:/config -p 8123:8123 -p 8000:8000 homeassistant/home-assistant:0.93.1
附带解释命令意思,整个命令实际很简单:
-d:表示在后台运行 –name:给容器设置一个名称,用于识别,后面操作重启等命令时都需要用到这个名字,这个可以自己随便改成简单易记的,这里我起名叫 “ ha0.93.1 ”。 -v:配置目录映射(容器内的指定目录直接映射到本地主机的对应目录,比如上面那句命令里,意思就是将容器里 HA 的 config 目录映射到 /home/lishuma/hass/config 这个目录里,加粗的文字表示宿主上对应的目录,可以根据自己需求随意修改) -p:映射端口(将容器内的 8123 端口直接映射到物理机的 8123 端口,这样输入 NAS 的 IP 地址即可访问 HA 页面,8000 端口是 DC1 插排通讯需要使用的) 最后就是运行刚才下载的容器镜像了,一定要注意最后还是要加上版本号 tag,不然系统找不到对应镜像,又会去自动下载最新版
之后刷新一下,也能在管理页面里看到 HA 容器了。
浏览器输入虚拟机 IP+8123 端口,即可访问 HA 页面,创建一个管理员账户即可使用。
到此,在 Windows 系统下跑 Debian 虚拟机并在里面利用 Docker 运行 HomeAssistant 程序(也是够绕的)就成功完成了。
Docker 和 HomeAssistant 都是很有意思的平台,能实现很多玩法,有关的更多内容就自行研究吧。
原文地址:https://lishuma.com/archives/2321