Cloudflared kết nối Home Assistant Instance của bạn thông qua đường hầm an toàn tới một miền hoặc tên miền phụ tại Cloudflare. Điều này cho phép bạn hiển thị Home Assistant của mình và các dịch vụ khác trên Internet mà không cần mở cổng trên bộ định tuyến của bạn. Ngoài ra, bạn có thể sử dụng Cloudflare Zero Trust để bảo mật hơn nữa sự liên quan.
Thiết lập ban đầu
Điều kiện tiên quyết
- Tên miền (ví dụ example.com) sử dụng Cloudflare cho DNS. Xin lưu ý rằng các tên miền từ Freenom không sử dụng được
- Quyết định giữa đường hầm cục bộ (do tiện ích bổ sung quản lý) hoặc đường hầm từ xa (được quản lý trong giao diện của Cloudflare)
Thiết lập tiện ích bổ sung đường hầm cục bộ (khuyến nghị)
Trong các bước sau, Đường hầm Cloudflare sẽ được tự động tạo bởi tiện ích bổ sung để hiển thị phiên bản Home Assistant của bạn.
Nếu bạn chỉ muốn hiển thị các dịch vụ khác, bạn có thể để lại external_hostname
làm trống và đặt additional_hosts
thành mô tả bên dưới phần Cấu hình.
- Cấu hình tích hợp
http
trong cấu hình Home Assistant của bạn như bên dưới phần Cấu hình.
- Đặt tùy chọn bổ sung
external_hostname
cho tên miền/tên miền phụ bạn muốn sử dụng để truy cập từ xa ví dụ ha.example.com
- Khởi động tiện ích bổ sung (điều này sẽ ghi đè lên bất kỳ mục nhập DNS hiện có nào khớp với
external_hostname
hoặc additional_hosts
)
- Dán URL từ nhật ký bổ sung vào một tab mới để xác thực với Cloudflare
- Truy cập Home Assistant của bạn thông qua URL từ xa mà không cần cổng ví dụ
https://ha.example.com/
Đường hầm lúc này sẽ được liệt kê trong bảng điều khiển Cloudflare Teams của bạn. Vui lòng xem lại các tùy chọn cấu hình bổ sung bên dưới.
Thiết lập tiện ích bổ sung đường hầm từ xa (nâng cao)
Trong các bước sau, bạn sẽ tự tay tạo Đường hầm Cloudflare trong Zero
Tin cậy vào Bảng điều khiển và cung cấp mã thông báo cho tiện ích bổ sung.
- Cấu hình tích hợp
http
vào cấu hình Home Assistant của bạn như bên dưới phần Cấu hình.
- Tạo Đường hầm Cloudflare trong bảng điều khiển Cloudflare Teams
- Đặt tùy chọn bổ sung
tunnel_token
vào tunnel_token
của bạn (tất cả các cấu hình khác sẽ bị bỏ qua)
- Khởi động tiện ích bổ sung, kiểm tra nhật ký để xác nhận mọi thứ diễn ra như mong đợi hy vọng
- Truy cập Home Assistant của bạn thông qua URL từ xa mà không cần cổng ví dụ
https://ha.example.com/
Đường hầm của bạn bây giờ sẽ được liên kết với tiện ích bổ sung Cloudflared. Bất kỳ những thay đổi về cấu hình phải được thực hiện trong bảng điều khiển Cloudflare Teams.
Cấu hình
Các tùy chọn cấu hình này chỉ áp dụng cho thiết lập đường hầm cục bộ. Thêm có thể đạt được cấu hình nâng cao bằng cách sử dụng thiết lập đường hầm từ xa.
Tổng quan: Cấu hình bổ sung
Lưu ý: Nhớ khởi động lại tiện ích bổ sung khi cấu hình thay đổi.
Ví dụ về cấu hình bổ sung:
external_hostname: ha.example.com
additional_hosts:
- hostname: router.example.com
service: http://192.168.1.1
- hostname: website.example.com
service: http://192.168.1.3:8080
Lưu ý: Đây chỉ là ví dụ, đừng sao chép và dán! Hãy tự tạo ví dụ của riêng bạn!
Tùy chọn: external_hostname
Đặt tùy chọn external_hostname
thành tên miền hoặc tên miền phụ mà bạn muốn sử dụng để truy cập Home Assistant.
Đây là tùy chọn, additional_hosts
có thể được sử dụng thay thế để chỉ hiển thị các host khác dịch vụ.
Lưu ý: Tên đường hầm phải là duy nhất trong tài khoản Cloudflare của bạn.
external_hostname: ha.example.com
Tùy chọn: additional_hosts
Bạn có thể sử dụng proxy ngược nội bộ của Cloudflare Tunnel để xác định thêm máy chủ bên cạnh Home Assistant. Theo cách đó, bạn có thể sử dụng đường hầm để truy cập các hệ thống khác như diskstation, router hoặc bất cứ thứ gì khác.
Giống như tùy chọn external_hostname
được sử dụng cho Home Assistant, các mục nhập DNS sẽ được tạo tự động tại Cloudflare.
Thêm tùy chọn (tùy chọn) disableChunkedEncoding
vào tên máy chủ để vô hiệu hóa mã hóa chuyển giao chunked. Điều này hữu ích nếu bạn đang chạy máy chủ WSGI, như Proxmox chẳng hạn.
Vui lòng xem bên dưới một mục nhập ví dụ cho ba máy chủ bổ sung:
additional_hosts:
- hostname: router.example.com
service: http://192.168.1.1
- hostname: diskstation.example.com
service: https://192.168.1.2:5001
- hostname: website.example.com
service: http://192.168.1.3:8080
disableChunkedEncoding: true
Lưu ý: Nếu bạn xóa tên máy chủ khỏi danh sách, tên máy chủ đó sẽ không được phục vụ nữa. Tuy nhiên, bạn cũng nên xóa thủ công mục nhập DNS khỏi Cloudflare vì nó không thể bị xóa bởi tiện ích bổ sung.
Tùy chọn: tunnel_name
Tùy chọn tunnel_name
cho phép thay đổi tên đường hầm thành tên khác hơn là mặc định là homeassistant
.
Lưu ý: Tên đường hầm phải là duy nhất trong tài khoản Cloudflare của bạn.
Tunnel_name: myHomeAssistant
Tùy chọn: catch_all_service
Nếu bạn muốn chuyển tiếp tất cả các yêu cầu từ bất kỳ tên máy chủ nào không được xác định trong external_hostname
hoặc additional_hosts
, bạn có thể sử dụng tùy chọn này và định nghĩa một URL để chuyển tiếp đến. Ví dụ, điều này có thể được sử dụng cho proxy ngược.
Lưu ý: Nếu bạn muốn sử dụng tiện ích bổ sung HA [Nginx Proxy Manager][nginx_proxy_manager] với tư cách là proxy ngược, bạn nên đặt cờ nginx_proxy_manager
và không sử dụng tùy chọn này.
catch_all_service: http://192.168.1.100
Lưu ý: Điều này vẫn sẽ định tuyến external_hostname
đã xác định của bạn đến Home Assistant cũng như bất kỳ additional_hosts
tiềm năng nào ở nơi bạn đã xác định trong config. Bất kỳ lưu lượng truy cập nào khác sẽ được chuyển hướng đến dịch vụ đã xác định.
Để định tuyến tên máy chủ qua đường hầm, bạn phải tạo từng tên máy chủ riêng lẻ Bản ghi CNAME trong Cloudflare cho tất cả chúng, trỏ đến external_hostname
của bạn hoặc trực tiếp đến URL đường hầm mà bạn có thể lấy từ mục CNAME của tên_máy_chủ_bên_ngoài
.
Ngoài ra, bạn có thể thêm bản ghi DNS đại diện trong Cloudflare bằng cách thêm bản ghi CNAME có tên là *
.
Tùy chọn: nginx_proxy_manager
Nếu bạn muốn sử dụng Cloudflare Tunnel với tiện ích bổ sung [Nginx Proxy Manager][nginx_proxy_manager], bạn có thể thực hiện điều này bằng cách thiết lập tùy chọn này. Nó sẽ tự động đặt catch_all_service thành URL nội bộ của Nginx Proxy Manager. Bạn không cần phải thêm tùy chọn catch_all_service
vào cấu hình của mình (nếu dù sao bạn cũng thêm nó vào, nó sẽ bị bỏ qua).
nginx_proxy_manager: true
Lưu ý: Giống như catch_all_service
, điều này vẫn sẽ định tuyến external_hostname
cho Home Assistant cũng như bất kỳ additional_hosts
tiềm năng nào đến nơi bạn đã xác định trong cấu hình. Bất kỳ lưu lượng truy cập nào khác sẽ được định tuyến đến Nginx Proxy Manager.
Để định tuyến tên máy chủ qua đường hầm, bạn phải tạo từng tên máy chủ riêng lẻ Bản ghi CNAME trong Cloudflare cho tất cả chúng, trỏ đến external_hostname
của bạn hoặc trực tiếp đến URL đường hầm mà bạn có thể lấy từ mục CNAME của tên_máy_chủ_bên_ngoài
.
Ngoài ra, bạn có thể thêm bản ghi DNS đại diện trong Cloudflare bằng cách thêm bản ghi CNAME có tên là *
.
Cuối cùng, bạn phải thiết lập máy chủ proxy của mình trong Nginx Proxy Manager và chuyển tiếp mang chúng đến bất cứ nơi nào bạn muốn.
Tùy chọn: post_quantum
Nếu bạn muốn Cloudflared sử dụng mật mã hậu lượng tử cho đường hầm, đặt lá cờ này.
Lưu ý: Khi post_quantum
được đặt, cloudflared sẽ tự giới hạn ở QUIC vận chuyển cho kết nối đường hầm. Điều này có thể gây ra sự cố cho một số người dùng. Ngoài ra, nó sẽ chỉ cho phép trao đổi khóa lai sau lượng tử và không quay trở lại một kết nối không phải hậu lượng tử.
post_quantum: true
Tùy chọn: run_parameters
Bạn có thể thêm các tham số chạy bổ sung vào cloudflared demon bằng cách sử dụng điều này tham số. Kiểm tra [tài liệu Cloudflare][cloudflare-run_parameter] để biết tất cả các thông số có sẵn và giải thích về chúng.
Các tham số hợp lệ cần thêm là:
- –edge-bind-address
- –edge-ip-version
- –grace-period
- –logfile
- –loglevel
- –pidfile
- –protocol
- –region
- –retries
- –tag
- –ha-connections
Lưu ý: Các tham số này được thêm vào các tham số hiện tại theo mặc định “no-autoupdate”, “metrics” và “loglevel”. Ngoài ra, đối với một quản lý cục bộ đường hầm “origincert” và “config” được thêm vào trong khi “token” được thêm vào cho các đường hầm được quản lý từ xa. Bạn không thể ghi đè các tham số này bằng lựa chọn.
Lưu ý: Nếu bạn đang sử dụng tùy chọn yêu cầu đường dẫn, bạn có thể sử dụng /config như root. Đường dẫn này có thể được truy cập, ví dụ, thông qua tiện ích bổ sung VS-code qua /addon_configs.
run_parameters:
- "--region=us"
- "--protocol=http2"
- "--loglevel=debug"
Tùy chọn: log_level
Tùy chọn log_level
kiểm soát mức độ đầu ra nhật ký của tiện ích bổ sung và có thể được thay đổi để trở nên dài dòng hơn hoặc ít hơn, điều này có thể hữu ích khi bạn đang giải quyết một vấn đề chưa biết.
Lưu ý: Nếu bạn muốn thay đổi mức nhật ký của đường hầm, bạn có thể sử dụng tùy chọn run_parameters
--loglevel
.
log_level: debug
Các giá trị có thể là:
trace
: Hiển thị mọi chi tiết, giống như tất cả các hàm nội bộ được gọi.
debug
: Hiển thị thông tin gỡ lỗi chi tiết.
info
: Các sự kiện bình thường (thường) thú vị.
warning
: Những trường hợp ngoại lệ không phải là lỗi.
error
: Lỗi thời gian chạy không yêu cầu hành động ngay lập tức.
fatal
: Có điều gì đó rất tệ đã xảy ra. Tiện ích bổ sung không sử dụng được.
Xin lưu ý rằng mỗi cấp độ tự động bao gồm các thông báo nhật ký từ một mức độ nghiêm trọng hơn, ví dụ, debug
cũng hiển thị thông báo info
. Theo mặc định, log_level
được đặt thành info
, đây là cài đặt được khuyến nghị trừ khi bạn đang khắc phục sự cố.
Cấu hình Home Assistant
configuaration.yaml
Vì Home Assistant chặn các yêu cầu từ proxy/proxy ngược, bạn cần yêu cầu phiên bản của bạn cho phép các yêu cầu từ tiện ích bổ sung Cloudflared. Tiện ích bổ sung chạy cục bộ, vì vậy HA phải tin tưởng vào mạng docker. Để làm như vậy, hãy thêm những dòng sau vào /config/configuration.yaml
của bạn:
Lưu ý: Không cần phải điều chỉnh bất cứ điều gì trong các dòng này vì phạm vi IP của mạng docker luôn giống nhau.
http:
use_x_forwarded_for: true
trusted_proxies:
- 172.30.33.0/24
Nhớ khởi động lại Home Assistant khi cấu hình thay đổi.
Tác giả và cộng tác viên
Thiết lập ban đầu của kho lưu trữ này là của Tobias Brenner