买了个斐讯的 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

2222
Latest posts by 2222 (see all)

【娱乐】32M 内存 VPS 建站

两个多月前,在某商家处看到了个 32M 内存的 NAT VPS 小鸡,价格仅为 5 元人民币一季度,遂下了一单。然而下单后等了好几天迟迟没有开通,又加上购买时提示...

阅读全文

威联通 NAS 配置 NPS 内网穿透

上个礼拜看到威联通的 TS-453Bmin 在狗东又又又促销到了低价,索性入了一台来体验一下正经大厂的系统之类。之前 NAS 用的是捡来的矿渣播酷云,跑的 windows ...

阅读全文

Debian/Ubuntu/CentOS 的防火墙差异

写这篇文章的原因是之前和朋友讨论时,对 Linux 的防火墙问题产生了截然不同的观点,继续交流后才发现原来是各自常用的发行版不同,朋友日常都用 Ubuntu 居...

阅读全文

1 条评论

欢迎留言