在Ubuntu服务器中部署HomeAssistant的步骤。个人备忘,以便需要时查看

0. 在Ubuntu中安装Docker

参考 Ubuntu Docker Docs

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1.通过Docker运行HomeAssistant

镜像地址 Package home-assistant

  • 使用以下命令拉取镜像
docker pull ghcr.io/home-assistant/home-assistant:latest
  • 使用以下命令启动容器
docker run -d --name="hass" -v /home/hass/config:/config -p 8123:8123 ghcr.io/home-assistant/home-assistant:latest

将会把HA的配置保存在/home/hass中,若需备份或恢复,直接拷贝整个文件夹即可

2. 修改HA的配置文件

首先需要修改HA的配置文件,以允许代理访问,否则将产生HTTP 400错误。
修改/home/hass/config/configuration.yaml,添加如下内容

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - 172.17.0.1 # 填写Docker Bridge网络的地址,可使用docker network inspect bridge查看

3. 修改Nginx配置文件

刚开始以为直接添加http代理就行,就只对根路径写了proxy_pass http://127.0.0.1:8123,可以打开HA的页面,但是输入账号密码一直登录失败,如图:
在这里插入图片描述
通过ssh转发8123端口到本地,登录进去发现这样的报错:
在这里插入图片描述
查了些资料,发现还需要添加websocket的代理才行。

最后贴出完整的配置文件

server {
	listen 443 ssl;
	server_name 域名;
    ssl_certificate /etc/ssl/域名.pem;
    ssl_certificate_key /etc/ssl/域名.key;
    location / {
        proxy_pass http://127.0.0.1:8123;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /api/websocket {
        proxy_pass http://127.0.0.1:8123/api/websocket;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    access_log /var/log/nginx/ha.access.log;
}
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐