Dùng tivi box làm linux server

Vào thẳng vấn đề, trong bài này mình sẽ tổng hợp lại cách cài Home Assistant(là HASSIO, không phải Hassbian) lên một chiếc Android TV Box (Android box) chạy chip S905.

Ưu điểm khi sử dụng Android box là ở giá thành rẻ, chỉ với khoản 500k chúng ta đã có 1 con Android box chạy chip S905 mạnh tương đương con Raspberry Pi 3 B+, RAM 2GB, nguồn và case đầy đủ, bảo hành lên đến 2 năm. Quá đủ để chạy HASSIO cho những bạn mới bắt đầu tìm hiểu.

Trong bài này chúng ta sẽ có những nội dung như sau:

  1. Tạo thẻ nhớ chứa bộ cài đặt Armbian
  2. Cài đặt Armbian lên Android box
  3. Kết nối Wifi cho Armbian
  4. Cài đặt Docker
  5. Cài đặt Hassio lên Docker
  6. Cài đặt Dynamic DNS, tạo domain, lấy chứng thực SSL.

Những thứ chúng ta sẽ cần có để thực hiện gồm:

  1. Một con Android box chạy chip S905 (mình đang dùng con Tanix TX3 Mini chạy chip Amlogic S905W, RAM 2GB, có Wifi không Bluetooth)
  2. Một thẻ microSD Class 10 hoặc USB 3.0 dung lượng 16GB

Bắt đầu nào.

1. Tạo thẻ nhớ chưa bộ cài đặt Armbian:

Để chạy được HASSIO trên Android box, việc đầu tiên cần làm là chúng ta phải cài đặt hệ điều hành mới cho nó là Armbian. Để biết xem chip xử lý trong Android box của bạn có được Armbian hỗ trợ hay không thì bạn sẽ vào diễn đàn https://forum.armbian.com/ tìm thử nhé.

Dùng tivi box làm linux server

Khi xác định chip trên con Android box của bạn được hỗ trợ, bạn sẽ cần những công cụ sau:

  • Ứng dụng balenaEtcher: Download tại đây
  • File image Armbian để flash lên thẻ nhớ: Download tại đây
  • Ứng dụng PuTTY: Download tại đây

Vào link tải Armbian có thể bạn sẽ choán ngợp vì quá nhiều phiên bản, không biết phải chọn bản nào cho đúng. Bạn cứ chọn phiên bản mới nhất mà sử dụng thôi (hiện tại lúc mình viết bài là 5.88). Các bạn lưu ý thêm là Armbian nó có 2 phiên bản Debian và Ubuntu. Với Debian thì nên chọn bản sretch, với Ubuntu nên chọn bản bionic. Mình thích Ubuntu hơn nên sẽ chọn tải về file image Armbian 5.88 Ubuntu bionic.

Sau khi tải xong, dùng 7zip để giải nén ra sẽ được 1 file .img, sau đó dùng balenaEtcher để flash lên thẻ nhớ hoặc USB đã chuẩn bị sẵng ở trên.

Dùng tivi box làm linux server


Khi đã flash thành công, bạn rút thẻ nhớ/USB ra, cắm trở lại vào máy tính, vào My PC sẽ thấy một ổ đĩa có tên là BOOT. Vào đó và tìm file uEnv.ini mở lên để chỉnh sửa. Ở dòng đầu tiên trong file uEnvi.ini bạn sẽ sửa lại dtb_name đúng với cái Android box mà bạn sắp cài đặt Hassio lên trên đó.

Dùng tivi box làm linux server


Danh sách dtb_name của các thiết bị bạn có thể tham khảo bảng bên dưới:

Dùng tivi box làm linux server

2. Cài đặt Armbian lên Android box

Rút thẻ nhớ/USB gắn vào Android box, cắm cáp LAN, cắm cáp HDMI, nhấn nút Reset trên Android box và cấp nguồn để bắt đầu tiến hành cài đặt Armbian.

Dùng tivi box làm linux server


Khi màn hình hiện lên như thế này, bạn vào cài đặt của router wifi để xác định IP Android box (thiết bị có tên "aml")

Dùng tivi box làm linux server

Mở ứng dụng PuTTY rồi kết nối vào Android box theo ip bên trên.

Dùng tivi box làm linux server


Tài khoản mặc định để đăng nhập vào Armbian:

Code:

user: root
password: 1234

Sau khi đăng nhập, bạn tiến hành thay đổi mật khẩu mặc định, tạo user phụ như hướng dẫn hiện ra trên màn hình. Xin chúc mừng, đến đây xem như bạn đã cài đặt thành công Armbian vào chiếc Android TV Box rồi đấy. Những lần sau SSH vào Android box thì dùng tài khoản phụ vừa tạo, không cần phải dùng tài khoản root đâu.

3. Kết nối Android box vào wifi

Nếu chip Wifi dùng trên con Android box của bạn được Armbian hỗ trợ, bạn có thể làm theo hướng dẫn bên dưới để kết nối, thích hợp đặt ở những nơi không thể kéo dây LAN đến được.

Đầu tiên, SSH vào Armbian, sau đó dùng lệnh sudo armbian-config để mở giao diện cài đặt. Chọn Network -> Wifi -> Kết nối vào Wifi

Khởi động lại Android box. Sau khi khởi động lại xong, vào armbian-config một lần nữa để kiểm tra xem Wifi vừa thiết lập lúc nãy đã kết nối được hay chưa. Nếu đã kết nối Wifi thành công thì bạn khởi động lại box, rút dây cáp mạng ra khỏi box. Cuối cùng, vào tìm IP Wifi của Android box để cố định lại. Từ đây, bạn có thể di chuyển Android box đến đến bất cứ vị trí nào miễn nó vẫn nằm trong vùng phủ sóng của Wifi là được.

4. Cài đặt Docker:

Home Assistant Ubuntu sẽ được chạy trên Docker, vì thế chúng ta sẽ cài Docker và các plugin cần thiết trước khi cài Hassio.

Bước này cũng đơn giản thôi, chỉ cần bạn làm theo đúng hướng dẫn của mình là được. Các dòng lệnh bạn copy từ đây và nhấp chuột phải để paste vào màn hình SSH (không phải Ctrl + V nhé).

Add Docker GPG key:

Code:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


Tạo một Docker repository.
Trong trường hợp của mình, con TX3mini sử dụng kiến trúc aarch64 nên mình sẽ dùng lệnh sau: (bạn có thể kiểm tra lại kiến trúc đang sử dụng trên thiết bị của bạn bằng lệnh uname -m)

Code:

sudo add-apt-repository \
   "deb [arch=arm64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"


Bắt đầu cài đặt Docker Ce:

Code:

sudo apt-get install docker-ce docker-ce-cli containerd.io


Xác minh Docker đã được cài đặt đúng bằng "hello-world"

Code:

sudo docker run hello-world

Nếu bạn thấy hiện ra nội dung giống bên dưới thì xin chúc mừng bạn đã cài được Docker.

5. Cài HASSIO

Cài đặt các add-on cần thiết trước khi tiến hành cài đặt Hassio

Code:

sudo apt install jq avahi-daemon apparmor


Tiến hành cài đặt Hassio bằng câu lệnh sau:

Code:

curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s -- -m raspberrypi3

Khi màn hình báo Run Hassio là thành công nhé. Bạn đợi thêm vài phút để Hassio khởi động xong rồi tiến hành đăng nhập vào http://:8123 để hoàn thành thiết lập.

Dùng tivi box làm linux server


6. Cài đặt Dynamic DNS, tạo domain, lấy chứng thực SSL.

Mình sẽ hướng dẫn các bạn tạo domain và lấy chứng chỉ ssl theo một cách khác, đó là dùng thiết lập DDNS có sẵng trên router wifi kết hợp với một nhà cung cấp dịch vụ Dynamic DNS để có được domain đẹp hơn so với việc dùng DuckDNS.

Để làm được bước này các bạn phải có quyền truy cập vào router (ở địa chỉ http://192.168.1.1), và mạng của các bạn không bị nhà cung cấp khóa port 443, 80. Bạn liên hệ số hotline của nhà mạng để được hỗ trợ kiểm tra port nhé.

Bắt đầu từ việc đăng nhập vào router, tìm thiết lập DDNS (Dynamic DNS) của router xem nó hỗ trợ những tịch vụ từ nhà cung cấp nào như trong ảnh bên dưới. Trong ví dụ mình dùng mạng FPT, còn thực tế các bạn sử dụng mạng khác thì thiết lập Dynamic DNS này nó sẽ nằm ở vị trí khác nhé.

Dùng tivi box làm linux server


Mình sẽ chọn dịch vụ Dynamic DNS của ChangeIP.com. Vào trang đấy để tạo tài khoản và đăng ký 1 domain miễn phí nào. Trong thực tế, router của các bạn không có hỗ trợ ChangeIP.com thì bạn phải chọn dịch vụ khác nhé, cách làm cũng tương tự thôi.

Dùng tivi box làm linux server


Sau khi đăng ký được một tài khoản và một domain miễn phí, mình sẽ quay lại trang thiết lập router để khai báo tài khoản vừa tạo cho router biết nơi sẽ update ip của nó lên. Khai báo đầy đủ và nhấn Apply, chờ một tí IP của bạn sẽ được cập nhật ngay thôi.

Dùng tivi box làm linux server


Tiếp theo chúng ta sẽ tiến hành mở port cho router. Nguyên tắt mở port là sẽ mở port WAN 80 -> LAN 80, WAN 443 -> LAN 443, WAN 22 -> LAN 22 (cổng 22 dành cho các bạn có nhu cầu SSH từ xa).

Dùng tivi box làm linux server

Dùng tivi box làm linux server


Mở port xong nhớ reset lại router để thiết lập có hiệu lực nhé. Từ lúc này trở đi bạn đã có thể truy cập vào HASSIO của mình bằng domain vừa đăng ký (vẫn chưa có https nhé). Thử nào.

Sau khi đăng nhập được vào Hassio, chúng ta tiếp tục tìm và cài đặt add-on Let's Encrypt. Đây là một dịch vụ cung cấp chứng chỉ ssl miễn phí nổi tiếng. Mỗi chứng chỉ được cấp sẽ có thời hạn sử dụng lên đến 30 ngày.

Dùng tivi box làm linux server


Các bạn nhớ khai báo đúng cổng 80 (cổng chúng ta đã mở ở trên) thì mới có thể nhận được chứng chỉ ssl. Nhấn SAVE và sao đó nhấn START nào... Sau khi nhấn start các bạn check log nếu có thông báo như bên dưới là đã nhận chứng chỉ ssl cho domain thành công rồi nhé.

Dùng tivi box làm linux server


Tiếp theo bạn dùng ứng dụng WinSCP (Download tại đây) để SSH vào server cấp quyền cho 2 file fullchain.pem và privkey.pem mà Let's Encrypt vừa lấy được. Vị trí 2 file nằm trong thư mục /usr/share/hasio/ssl, nhấp phải vào từng file, chọn Properties cấp quyền 0775 cho cả 2 file.

Dùng tivi box làm linux server

Tiếp tục cũng trong WinSCP, đến thư mục /usr/share/hasio/homassistant tìm file configuration.yaml mở và chỉnh sửa như nội dung bên dưới.

Code:

http:
  base_url: https://< domain của bạn >:8123
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Dùng tivi box làm linux server


Save file configuration.yaml lại, trở lại bảng điều khiển hassio Configuration -> General -> CHECK CONFIG -> Nếu không báo lỗi gì thì tiến hành RESTART lại Hassio. Từ đây bạn đã có thể truy cập vào bảng điều khiển Hassio của mình bằng https rồi.

Dùng tivi box làm linux server


Như đã nói ở trên, mỗi chứng chỉ ssl do Let's Encrypt chỉ có giá trị trong 30 ngày, vì thế chúng ta cần tạo 1 Automation để kiểm tra và tự gia hạn vào lúc 00:00:00 mỗi ngày. Thêm đoạn code sao vào file automations.yaml để thực hiện việc đó.

Code:

- id: letsencrypt-renewal
  alias: "Let's Encrypt Renewal"
  trigger:
  - platform: time
   at: '00:00:00'
  action:
  - service: hassio.addon_restart
   data:
     addon: core_letsencrypt

Dùng tivi box làm linux server


Tận hưởng thành quả thôi nào.