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


参考来源:

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

Installing Portainer

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

Installation Home Assistant on Docker

骁龙 8cx Gen3 的 Windows 11 on ARM 体验

老早之前写了苹果 M1 虚拟机和初代骁龙 8cx 跑 Win11 ARM 版的体验,转眼都过去一年多了,现在来给这系列再续一笔。 最近为了体验下 8cx Gen3,买了台华...

阅读全文

Xbox One S 更换固态硬盘流程

记录一下给 Xbox One S 换硬盘的过程,虽然手头现在有 XSX 和 XSS 了,但 X1S 作为我第一台游戏机,还是陪我度过了几年美好时光的,所以如今固态硬盘一路下...

阅读全文

无线宝一代 64G 加速版编程器刷 Padavan

前年底买的一代京东无线宝挂到现在基本也没啥收益了,之前一天还能有个四五毛捞点电费,现在收益又挨了几轮刀后基本惨不忍睹了,白嫖那么多流量一个月到头来...

阅读全文

1 条评论