Home-assistant có vài add-on giúp cài đặt SSL cho máy chủ Hass:
- Duckdns: Cung cấp một subdomain dạng xyz.duckdns.org và cung cấp chứng chỉ bảo mật SSL cho subdomain đó, hoàn toàn miễn phí.
- Let’s Encrypt: Nếu chúng ta có sẵn domain thì dùng add-on này để lấy chứng chỉ SSL, gọn nhẹ và nhiều chức năng. Ngoài ra, nếu domain được quản lý bởi cloudflare.com thì add-on này dùng SSL của cloudflare.
Mặc dù máy chủ Hass có thể được thiết lập để dùng http hay https cho giao diện WEB, nhưng một số dịch vụ có thể không hoạt động với đường dẫn http, thí dụ media_player hay tts… Khi đó, chúng ta phải nhờ Duckdns hay Let’s Encrypt.
Khi dùng https chúng ta gặp rắc rối khi dùng mạng cục bộ, thí dụ http://ip_hass:8123/local/sound.mp3 có thể không được tìm thấy, vì chúng ta dùng http thay vì https. Dùng https cho ip cục bộ cũng không được vì ip_hass không có chứng chỉ SSL.
Đường dẫn https://xyz.duckdns.org:8123/local/sound.mp3 cũng không hoạt động trong mạng cục bộ, với nguyên nhân không thuộc về hass mà thuộc về router/modem đang dùng không có NAT loopback. Thí dụ domain xyz.duckdns.org trỏ về WAN IP của router, và sau đó NAT về ip của máy chủ hass. Trong mạng cục bộ, domain này lại không thể phân giải ra IP. Khi đó chúng ta chỉ truy cập được máy chủ hass khi dùng mạng ngoài.
Giải pháp là làm cho xyz.duckdns.org trỏ về ip cục bộ ip_hass nếu được truy cập từ mạng cục bộ. Nếu router không hỗ trợ NAT loopback (như Xiaomi AX3600) thì chúng ta có thể dùng dnsmasq hay Nginx reverse proxy.
+ Add-on dnsmasq có sẵn rồi, chỉ việc cài đặt và cấu hình:
hosts:
- host: xyz.duckdns.org
ip: xyz_local_ip
+ Ngoài ra, trong file configuration.yaml, ghi thêm sensor
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
+ Nếu có dùng external_url thì không dùng internal_url hoặc dùng với cùng url
Sau đó, mọi đường dẫn đến máy chủ hass đều dùng dạng external_url như https://xyz.duckdns.org:8123, bất chấp truy cập hass từ máy trong mạng cục bộ hay máy ngoài.
Chú thích
Còn một bước nữa là khai báo DNS, thêm ip_dnsmasq để máy chủ hass (máy chủ dnsmasq) cũng là một DNS, nhưng một số router không có mục này và chỉ sử dụng ip của mình trên port 53. Thỉnh thoảng mất NAT loopback thì phải khởi động lại router!
- Cho dù truy cập hass server từ máy dùng hệ điều hành nào (Windows, Linux, iPadOS…) cũng có thể dễ dàng cài đặt DNS dùng IP của dnsmasq server. Hass server là một máy tính Linux, nên cách hay nhất vẫn là khai báo để hass server dùng dnsmasq thay cho DNS của router.
- dnsmasq có thể được cài trên máy khác hay trên chính hass server. Khai báo để hass server dùng dnsmasq sẽ giải quyết được việc các ứng dụng trên hass server không phân giải được tên miền:
Nếu hass server nối mạng LAN thì sửa ETH0 IP4, nếu dùng wifi thì khai báo cho WLAN0.
Hass web UI -> Supervisor -> Host System -> IP Address - Change
DNS servers: dnsmasq_ip
Nếu có thể ssh đến hass server, thí dụ với add-on Terminal & SSH, chạy lệnh sau, đặt thêm upstream server cho hass server:
ha dns options --server dns://1.1.1.1 --server dns://8.8.8.8
ha dns restart
- Nếu dùng tên miền động, để ý là ip của tên miền được cache ở máy chủ DNS của nhà cung cấp dịch vụ internet. Một số tên miền được cập nhanh, còn một số được cập nhật rất chậm. Khi đó cần kiểm tra ip để không phải thử sửa cấu hình hass vì không biết nguyên nhân lỗi.