Home Assistant

Home Assistant: đừng quên backup!

Sao lưu dự phòng Home Assistant

Sử dụng Google Drive để chứa các bản sao lưu tự động, phòng trường hợp Home Assistant bị lỗi

24 phút để đọc hết nội dung

Xin chào! Bạn đã mất vài ngày để cài đặt máy chủ Home Assistant và thêm thiết bị, dịch vụ vào máy chủ. Bạn cũng đã kịp tạo ra một số tuỳ chỉnh và kịch bản tự động hoá theo thói quen sinh hoạt của gia đình mình. Chúc mừng bạn đã hoàn tất toàn bộ các hướng dẫn Home Assistant cơ bản, giờ chính là LÚC để quan tâm đến việc sao lưu – backup máy chủ Hass của bạn.

Duy Truong Profile Image

Duy Trương

Tác giả

Nhân đây, mình cũng muốn gửi lời cảm ơn đến tất cả mọi người đã chịu khó đọc, làm theo và phản hồi các bài viết của mình tại konnected.vn! Cũng như gửi lời cảm ơn vì đã chịu đựng và ủng hộ quá trình “chiếm sóng” của mình ở đây.

Trở lại nội dung chính,

BACKUP! BACKUP! BACKUP! chính là câu thần chú để bạn bảo vệ dữ liệu và công sức của mình. Nếu bạn không muốn một sáng thức dậy đối diện với thảm hoạ máy chủ Hass không thể truy cập và phải làm lại toàn bộ từ đầu thì Backup chính là điều đầu tiên nên làm để ngăn chặn điều đó xảy ra.

Backup Home Assistant thường xuyên sẽ giúp lưu trữ và phục hồi máy chủ Home Assistant trong một số (nhưng không phải tất cả) tình huống điển hình sau:

  • Bộ nhớ lưu trữ (ổ cứng, thẻ nhớ) bị hư hỏng hoặc lỗi nghiêm trọng dẫn đến bạn không thể lấy lại cấu hình Home Assistant trên đó
  • Bạn thay đổi cấu hình Hass nhưng bị lỗi và không biết lỗi ở đâu để sửa
  • Bạn cài mới lại Home Assistant nhưng quên copy cấu hình cũ
  • Bản cập nhật Home Assistant, Supervisor hay OS không tương thích hoặc quá trình cập nhật bị lỗi dẫn đến không thể khởi động máy chủ

Giờ bạn đã đánh giá được mức độ quan trọng của việc sao lưu – Backup Home Assistant. Vậy Backup như thế nào?

Chiến lược sao lưu

Sao lưu ở nhiều nơi khác nhau là chiến lược đầu tiên và quan trọng nhất. Với người dùng thông thường, những lựa chọn khả dĩ sẽ là giữ bản sao lưu:

  1. Trên chính bộ nhớ máy chủ Home Assistant (như Raspberry Pi)
  2. Trên máy tính cá nhân hoặc thiết bị lưu trữ gắn ngoài (USB Drive)
  3. Trên dịch vụ lưu trữ đám mây (Google Drive, Dropbox v.v..)

Chiến lược tiếp theo là sao lưu càng nhiều càng tốt. Tần suất sao lưu càng dày thì bạn sẽ càng ít mất những sửa đổi gần đây.

Với máy chủ Home Assistant thông thường, những nguyên tắc sau đây mình cho là đủ tốt:

  • Tạo các bản sao lưu đầy đủ ngay trước mỗi thay đổi quan trọng như cập nhật Home Assistant lên một phiên bản chính (không phải bản sửa lỗi)
  • Tạo các bản sao lưu một phần, chủ yếu là sao lưu cấu hình, trước khi bạn thay đổi một cài đặt cấu hình quan trọng và sau khi đã áp dụng thành công
  • (tạo các bản sao lưu ngay khi bạn cảm thấy Home Assistant của mình chạy “quá tốt, quá ổn, quá hài lòng” vì bạn không biết điều gì xảy ra ở giây tiếp theo đâu) – đây không phải để ám chỉ rằng máy chủ Home Assistant “mong manh dễ vỡ”
  • Chép các bản sao lưu đầy đủ ra khỏi máy chủ Home Assistant ngay sau khi tạo
  • Chép các bản sao lưu một phần ra khỏi máy chủ Home Assistant nếu bạn có thể
Lock iCon BẢO MẬT

Các bản sao lưu chứa toàn bộ cấu hình, cơ sở dữ liệu cũng như thông tin xác thực của mọi dịch vụ và thiết bị bạn tích hợp vào Home Assistant.
Vì vậy hãy giữ các bản sao lưu này ở nơi an toàn, sử dụng mã hoá nếu được và không chia sẻ các bản sao lưu này.

Tạo các Snapshot

! Về sao lưu Home Assistant Core

Khi sử dụng Home Assistant Core không Supervisor, bạn sẽ không có các chức năng backup như bên dưới. Việc backup sẽ phải thực hiện sử dụng các tiện ích ở mức hệ điều hành. Chúng tôi sẽ có bài hướng dẫn trong thời gian sắp tới.

Tạo Snapshot

Home Assistant đi kèm tính năng tạo các bản sao lưu toàn bộ hoặc một phần trong bộ Supervisor. Các bản sao lưu này gọi là snapshot. Để tạo snapshot, bạn vào mục Supervisor, chọn Snapshots.

Sao lưu Home Assistant bằng Snapshot
Tạo bản sao lưu – Snapshot sử dụng Supervisor

Tiếp theo hãy đặt tên cho bản sao lưu này rồi chọn hình thức sao lưu là toàn bộ hay một phần. Cuối cùng, chọn và nhập mật khẩu để mã hoá bản sao lưu nếu bạn muốn.

! Full / Partial / Password
  • Full snapshot chứa thư mục dữ liệu tổng của Home Assistant bao gồm cấu hình, các thông tin lưu trữ, cơ sở dữ liệu, cấu hình và lưu trữ của addon
  • Partial snapshot chỉ chứa những phần bạn chọn, có thể chỉ sao lưu cấu hình của một addon nào đó
  • Password Protection là khoá mã hoá cho toàn bộ file sao lưu được tạo, sử dụng tiêu chuẩn AES-128 tương đối an toàn. Bạn phải nhớ khoá này nếu muốn restore – phục hồi bản sao lưu.
    Kích hoạt mã hoá cũng làm tăng thời gian cần thiết để tạo và phục hồi bản sao lưu.

Sau khi bấm CREATE để tạo sao lưu, hãy chờ 10 đến 15 phút để quá trình sao lưu hoàn tất. Nếu bạn tìm thấy bản sao lưu với tên đã đặt trong mục Supervisor > Snapshots > Available Snapshots thì quá trình sao lưu đã thành công.

Tải về và lưu trữ các bản Snapshot

Bạn sẽ tìm thấy các bản snapshot đã tạo trong thư mục chia sẻ /backup nếu bạn đang sử dụng addon Samba share (như trong hướng dẫn Thiết lập cơ bản).

Home Assistant tải bản backup

Hoặc bạn cũng có thể tải các file này về máy tính/điện thoại ngay trong giao diện web của Supervisor bằng cách chọn bản snapshot muốn tải rồi bấm Download Snapshot.

Automation tạo Snapshot theo định kỳ

Automation – tự động hoá mẫu bên dưới sẽ tự động tạo bản full snapshot đầy đủ vào lúc 23:00:00 ngày 1 và 15 hàng tháng. Ngày được chọn ngẫu nhiên còn giờ sao lưu nhắm đến khoảng thời gian máy chủ Home Assistant “rảnh rỗi” nhất, bạn thay đổi cho phù hợp với quan sát của mình.

- id: '1591335903672729768'
  alias: Hass Snapshot every 2 weeks
  description: Tạo Sao lưu mỗi 2 tuần vào lúc 23:00:00 ngày 1 & 15
  trigger:
  - at: '23:00:00'
    platform: time
  condition:
  - condition: template
    value_template: '{{trigger.now.day == 1 or trigger.now.day == 15}}'
  action:
  - data_template:
      name: Auto_Snapshot_{{trigger.now.strftime('%a %d-%b-%y')}}
    service: hassio.snapshot_full
  - service: persistent_notification.create
    data_template:
      message: 'Automation: Creating Backup named Auto_Full_Snapshot_{{trigger.now.strftime(''%a %d-%b-%y'')}}'

Lưu ý: để tạo snapshot mã hoá, bạn cần thêm password vào mục data_template của service hassio.snapshot_full như mẫu bên dưới:

#...
  action:
  - data_template:
      name: Auto_Snapshot_{{trigger.now.strftime('%a %d-%b-%y')}}
      password: 'konnected.vn' #thay thế password của bạn
    service: hassio.snapshot_full
! Tạo Partial Snapshot

Automation bên dưới sẽ tự động tạo bản Partial Snapshot vào mỗi tối Chủ Nhật lúc 23:00:00.

- id: '1591336835951'
  alias: Hass Snapshot on Sunday
  description: Tạo Sao lưu vào 23g mỗi CN
  trigger:
  - at: '23:30:00'
    platform: time
  condition:
  - condition: time
    weekday:
    - sun
  action:
  - data_template:
      name: Auto_Partial_Snapshot_{{trigger.now.strftime('%a %d-%b-%y')}}
      folders:
        - homeassistant
        - share
        - ssl
    service: hassio.snapshot_partial
  - service: persistent_notification.create
    data_template:
      message: 'Automation: Creating Backup named Auto_Partial_Snapshot_{{trigger.now.strftime(''%a %d-%b-%y'')}}'

Tự động backup, quản lý theo lịch và tải lên Google Drive

Thực hiện Snapshot theo cách bên trên đòi hỏi bạn phải nhớ để chép các bản backup vào một nơi khác với bộ nhớ lưu trữ của máy chủ Home Assistant phòng trường hợp bộ nhớ này lỗi.
Với cách này, ta sẽ tự động tải các bản backup này lên dịch vụ lưu trữ đám mây, cụ thể là Google Drive.

Bạn sẽ cần một tài khoản Google Drive (miễn phí hoặc có phí) để thực hiện theo cách này.

! Tài khoản Google Drive / Bảo mật

Các bản Snapshot có dung lượng tương đối lớn và vì vậy sẽ ảnh hưởng đến dung lượng trống còn lại của Google Drive. Bạn có thể tạo một tài khoản miễn phí mới với 15GB dung lượng trống để dành riêng cho việc sao lưu.

Bảo mật: chưa có bằng chứng cho thấy Google quét các file lưu trữ cá nhân trên Google Drive để phân tích hỗ trợ quảng cáo, tuy nhiên bạn phải ý thức được điều này như một nguy cơ có thể xảy ra. Bạn cũng phải bảo mật thông tin đăng nhập tài khoản Google để tránh bị mất các file backup.
Để an toàn hơn, hãy tạo các snapshot được mã hoá trước khi upload lên Google Drive.

Cài addon Hassio Google Drive Backup

Addon này không có sẵn trong Home Assistant. Bạn sẽ phải cài đặt bằng cách:

  1. Vào mục Supervisor, Add-on Store rồi bấm vào nút ... trên bên phải, chọn Repositories rồi thêm địa chỉ sau:
    https://github.com/sabeechen/hassio-google-drive-backup
Home Assistant thêm addon
Thêm addon bên ngoài vào Home Assistant
Bản quyền / Credit

Bạn có thể vào địa chỉ trên để xem các hướng dẫn gốc của tác giả sabeechen và nếu được hãy ủng hộ tác giả của addon bằng cách ⭐️ và ủng hộ tiền qua Buy Me A Coffee Banner. Số tiền tuỳ bạn và không quá quan trọng.

Sau khi thêm địa chỉ trên, bạn quay lại Add-on Store, tìm “Google Drive” rồi bấm vào addon Hass.io Google Drive Backup, sau đó bấm INSTALL để cài đặt.
Lưu ý không phải mọi addon đều hỗ trợ tất cả các cấu trúc máy chủ Hass, nếu không thể INSTALL, bạn phải tìm cách khác.

Home Assistant Cài Addon Google Drive Backup
Tìm và cài đặt addon Hass.io Google Drive Backup

Đợi vài phút cho Hass tải về và cài đặt addon này. Sau đó chuyển sang bước cấu hình và xác thực.

Cấu hình addon và cấp quyền truy cập Google Drive

Cấp quyền truy cập Google Drive

Sau khi cài đặt thành công, bạn ấn START để khởi động addon và chờ đến khi xuất hiện nút OPEN WEB UI thì bấm vào để truy cập giao diện quản lý như bên dưới. Ấn vào AUTHENTICATE WITH GOOGLE DRIVE để bắt đầu quá trình xác thực và cấp quyền truy cập vào Google Drive.

Xác thực addon Google Drive Backup
Ấn vào AUTHENTICATE WITH GOOGLE DRIVE

Tiếp theo, trong tab/cửa sổ mới mở ra, đăng nhập vào tài khoản Google mà bạn muốn chứa bản sao lưu sau đó ấn ALLOW để cho phép addon bắt đầu xác thực.

Tác giả sử dụng một API riêng để thực hiện quá trình này. Nếu bạn cảm thấy không an tâm, có thể tự lấy API và xác thực addon thủ công.

Cấp quyền addon Google Drive Backup

Bạn sẽ cấp cho addon quyền đọc và quản lý tất cả các file và thư mục do chính addon tạo ra trên Google Drive.

Bấm Allow để cho phép và kết thúc quá trình xác thực.

Cấu hình addon

Ngay sau khi xác thực thành công, addon Hass.io Google Drive Backup (😟 tác giả nên đổi tên ngắn hơn và bỏ Hass.io đi – duytruong) sẽ thể hiện danh sách tất cả các bản snapshot hiện có và bắt đầu upload lên Google Drive.

Mặc định thì Hass.io Google Drive Backup:

  • Sao lưu các bản Backup lên thư mục Hass.io Snapshots, tên và vị trí thư mục này có thể đổi được trong SETTINGS
  • Số lượng tối đa các bản snapshot được giữ lại trên máy chủ Home Assistant là 4 – bốn, bất kể loại và do addon hay bạn tạo
  • Số lượng tối đa các bản snapshot giữ lại trên Google Drive là 4 – bốn, các bản cũ hơn sẽ bị xoá đi nhường cho bản mới, bất kể loại
  • Tần suất sao lưu tự động là 3 ngày một lần
Cấu hình addon Google Drive Backup
Thông tin các bản backup và tình trạng

Bạn có thể tìm thấy các tuỳ chọn trong mục SETTINGS để thay đổi các mặc định bên trên và:

  • Đặt mật khẩu mã hoá, có thể là mật khẩu như bình thường hoặc lưu trong secrets.yaml
  • Thời gian tạo snapshot tự động, dạng 23:00
  • Thay đổi tên của các bản snapshot sử dụng template
  • Ngừng việc upload lên Google Drive nhưng các bản snapshot vẫn được tạo theo lịch và giữ trên máy chủ Hass

Bạn cũng có thể quản lý các bản backup từ giao diện của add-on này, bao gồm tạo ngay, phục hồi, tải về máy tính, xoá và tuỳ chọn luôn giữ lại trên Google Drive hoặc máy chủ Hass.

Home Assistant Google Drive Backup Options
Tuỳ chọn giữ lại bản snapshot

Một số lỗi đã biết

  • Lỗi đầy bộ nhớ: do phương thức xoá file của addon và cả do lỗi chậm cập nhật của Google Drive. Nếu bạn nhận được thông báo của addon rằng bộ nhớ Google Drive bị đầy, hãy truy cập vào Google Drive và xoá bớt các file trong thùng rác – trash bin.
  • Lỗi không xác thực được: mặc dù đã hoàn tất xác thực và cấp quyền nhưng addon Hass.io Google Drive Backup thông báo lỗi 404/401 khi cố truy cập API của Google Drive. Nếu bạn gặp lỗi này, cần xoá dữ liệu của addon bằng cách đơn giản nhất là UNINSTALL rồi INSTALL lại và làm lại quá trình xác thực lần nữa. Lần này làm chậm thôi.
    Hoặc bạn có thể chuyển sang một trình duyệt khác hay sử dụng trình duyệt ở chế độ ẩn danh rồi xác thực lại.

Giảm dung lượng và thời gian tạo Backup

Dung lượng file backup

Dù bạn sử dụng addons hay automation để tạo snapshot, hãy nhớ mấy lưu ý sau:

  • Giữ tần suất sao lưu tự động vừa phải, phù hợp với nhu cầu của mình. “Vọc” nhiều thì sao lưu dày hơn, khi đã ổn định thì giãn ra.
  • Lưu ý đến không gian trống của bộ nhớ lưu trữ máy chủ Hass. Bộ nhớ với ít không gian trống sẽ làm chậm Home Assistant và ảnh hưởng lớn đến tuổi thọ của bộ nhớ dạng flash (SSD, thẻ nhớ, USB drive).

Với cấu hình Home Assistant thông thường, phần lớn dung lượng file snapshot/backup bị chiếm bởi cơ sở dữ liệu – database nơi lưu trữ trạng thái của tất cả entity trong Home Assistant. Tỉ lệ nén của file snapshot vào khoảng 3:1, tức với toàn bộ cấu hình khoảng 300MB và file cơ sở dữ liệu khoảng 1,500MB thì ta sẽ có 1800:3 ~ 600MB cho mỗi file full snapshot. Với tốc độ của Raspberry Pi và thẻ nhớ, sẽ mất từ 20-30 phút cho mỗi lần sao lưu.

Loại bỏ cơ sở dữ liệu ra khỏi snapshot

Hướng dẫn này chỉ áp dụng khi bạn sử dụng hệ cơ sở dữ liệu mặc định của Home Assistant là SQLite. Nếu bạn đang dùng Hệ quản trị cơ sở dữ liệu ngoài thì không cần quan tâm.

Để loại bỏ file cơ sở dữ liệu mặc định /config/home-assistant_v2.db (bạn sẽ thấy file này cùng chỗ với /config/configuration.yaml), ta sẽ cấu hình để chuyển file này sang một folder khác và loại bỏ folder này khi tạo snapshot.

update Retina Cập nhật ngày 05/06/2020
Thay đổi vị trí chuyển file database từ /ssl sang /share

Do quyền truy ghi thông tin bị giới hạn bên trong thư mục /ssl, tạm thời ta chuyển database sang /share. Bạn sẽ mất dữ liệu của một số addon khi tạo partial snapshot theo cách bên dưới.

Ở đây, ta sẽ phải hi sinh một chút bằng cách loại bỏ luôn cả chứng chỉ trong thư mục /ssl dữ liệu của một số addon ra khỏi bản snapshot. Tuy nhiên chứng chỉ này có thể lấy lại được, không quá quan trọng.

Dùng Samba hoặc bất cứ phương thức nào bạn hiện đang dùng để quản lý file cấu hình, copy file home-assistant_v2.dbtất cả các file khác bắt đầu bằng home-assistant_v2 (home-assistant_v2.db-shm & home-assistant_v2.db-wal) từ /config sang /ssl /share.
Nếu bạn cần giữ database thì mới cần copy, nếu không thì bỏ qua bước copy.
Nếu database không quá quan trọng, bạn cut/paste hay move sẽ nhanh hơn nhiều so với copy/paste.

Cấu hình recorder: trong /config/configuration.yaml như bên dưới. Nếu bạn đang cấu hình rồi thì chỉ cần thay đổi mục db_url:.

recorder:
  db_url: sqlite:////share/home-assistant_v2.db

Khởi động lại Home Assistant để áp dụng thay đổi. Kiểm tra lại các entity xem phần lịch sử có lưu lại bình thường hay không hoặc xem Developer Tools > Logs.

Nếu tất cả bình thường, bạn xoá file /config/home-assistant_v2.db đi (file mới ở trong /share/home-assistant_v2.db).

Từ giờ, mỗi khi tạo sao lưu trong Supervisor > Snapshots, bạn hãy chọn Partial Snapshot và loại bỏ thư mục SSL Share ra.

Home Assistant Partial Snapshot
Loại bỏ thư mục SSL Share

Khi gọi service hassio.snapshot_partial trong automation, bạn cũng loại bỏ lựa chọn SSL Share ra khỏi danh sách folders:.

Nếu dùng addon, bạn vào giao diện web của addon Hass.io Google Drive Backup, mục SETTINGS, chọn Partial Snapshots rồi loại bỏ SSL Share khỏi lựa chọn.

Restart lại addon. Từ giờ các bản snapshot tạo bởi addon này sẽ không bao gồm file cơ sở dữ liệu nữa.

all_inclusive
phục hồi từ thảm hoạ

Hi vọng bạn không bao giờ phải sử dụng đến nhưng chúng tôi sẽ viết sẵn một hướng dẫn “khẩn cấp” trong vài ngày tới.

Cảm ơn bạn đã xem bài viết này!

konnectED Team.

Like page để nhận cập nhật

Mời bạn thích – Like facebook page của chúng tôi để cập nhật nhanh chóng các bài viết hay tin tức SmartHome, IOT và công nghệ mới.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).