买了个斐讯的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 | sudo 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 都是很有意思的平台,能实现很多玩法,有关的更多内容就自行研究吧。


参考来源:

如何在Debian 10 Linux上安装和使用Docker

Installing Portainer

Docker轻量级图形页面管理Portainer安装配置

Installation Home Assistant on Docker

斐讯DC1插排接入HomeAssistant实现本地局域网内控制

本文可以配合上一篇教程一起食用:Debian10配置Docker,并安装HomeAssistant 在NAS上配置完HA服务器后,接着就需要来把这DC1插排的默认连接域名给劫持到...

阅读全文

Windows系统下Docker配置HomeAssistant服务(从入门到放弃)

首先说明,此文章是废弃的! 目前仅仅是记录一下Win系统下Docker的配置过程, HA这应用不建议使用此方法,依旧建议黑群晖或者虚拟机Linux运行Docker。 ...

阅读全文

移动光猫CM113-Z破解超管密码

CM113-Z,图片来自网络 之前移动升级光纤入户,给了个上图这种CM113-Z的光猫,默认的user账户进去基本啥也改不了,本文记录一下破解超管密码的方法。 ...

阅读全文

1 条评论

欢迎留言