thảo luận Cài đặt AdguardHome trên tvbox chạy Armbian

Thấy nhiều thím muốn tận dụng tvbox cũ cài armbian để làm server mini, cài đặt docker, hass.io, pi-hole hay adguard home chặn quảng cáo... nhưng không biết bắt đầu từ đâu nên mình mở thread này để các thím tham khảo, thảo luận.

Thông tin trong thread này được tổng hợp từ nhiều nguồn khác nhau, một số khác có được từ quá trình tìm hiểu, mò mẫm của bản thân nên có thể sẽ có nhiều sai sót, các thím cứ gạch đá thoải mái.

1. Về Armbian cho tvbox

Trước hết, phải nói rõ rằng Armbian cho Tvbox (AcT) chỉ là OS do một Dev người Nga (hoặc Ukraina?) phát triển, được cung cấp miễn phí dưới dạng "as is" nên người dùng cuối sẽ không nhận được hỗ trợ từ tác giả.

Hiện nay thì AcT đang được build từ Ubuntu 18.04 (tên mã Bionic), 20.04 (Focal) và Debian 10 (Buster), 11 (Bullseye); có cả bản desktop (có GUI) và bản server (CLI). Vì có nhiều biến thể như vậy nên cần lưu ý chọn bản phù hợp cho mục đích sử dụng. Cũng cần chú ý thêm là hiện nay, Dev này chỉ tập trung build AcT cho các tvbox kiến trúc 64bit (aarch64, ARMv8) dưới dạng một file ảnh (image) duy nhất dùng cho cả chip Amlogic, Allwinner hay Rockchip.

Nhìn chung AcT còn rất nhiều lỗi. Cùng một tvbox nhưng với bản AcT build ngày 5 chẳng hạn thì khi cài đặt xong có thể có wifi 2.4/5 GHz, sound, bluetooth, usb 2.0/3.0, HDMI, màu chuẩn, nhận đủ dung lượng bộ nhớ trong; sang bản build ngày 20 thì lại mất sound, bluetooth, không nhận đủ dung lượng bộ nhớ trong...vv và sang bản build ngày 30 thì có khi mất cả (!), chỉ còn ethernet. Một điểm hạn chế nữa là đa phần các tvbox sau khi cài đặt AcT sẽ chỉ nhận ethernet 100mb, một số ít nhận 1gb.

Mục đích của mình là tận dụng tvbox cũ làm mini server, chạy một số container giám sát hệ thống, chặn quảng cáo nên thường chỉ quan tâm đến bản AcT server build trên nền Debian Buster, có ethernet và ổn định hay không thôi, còn thì không quan tâm lắm đến các tính năng khác như sound, bluetooth hoặc wifi... Hình dưới minh họa việc sử dụng tvbox làm headless server, AcT kernel 5.9 với 5 docker và một số phần mềm khác như Ansible, Prometheus.

20207d5dcee8-1b95-45c9-875a-17fcb0116afa.png

2. Về tvbox

Hiện nay, tvbox có trên thị trường có chất lượng khác nhau, thượng vàng hạ cám, được nhiều bên sản xuất, cùng một dòng có thể chính hãng sản xuất hoặc do một bên khác OEM. Ví dụ như tx3 mini, trên thị trường có ít nhất 3 loại box cùng tên tx3mini, hay x96 mini có tới vài phiên bản dùng board khác nhau. Ngoài ra, một số tvbox dùng bộ nhớ trong eMMC thì sau khi boot AcT từ sdcard thì có thể cài đặt AcT trực tiếp lên eMMC; một số tvbox khác lại dùng bộ nhớ trong là nand flash, loại này thì kernel linux không hỗ trợ nên không thể cài đặt AcT lên bộ nhớ trong. Tvbox mặc định sẽ luôn boot từ OS trên bộ nhớ trong. Do vậy, để có thể boot từ sdcard thì phải thêm một bước nữa là dùng script để kích hoạt chế độ này. Bước này sẽ đề cập ở phần sau.

Vậy, chọn tvbox nào phù hợp? Nếu đã có tvbox rồi thì so sánh model tvbox của mình với danh sách DTB (device tree - định nghĩa giao tiếp cho firmware) của AcT để xem có hỗ trợ không. Riêng chip Amlogic, AcT hỗ trợ gần 30 model, gồm cả tvbox và một số SBC. Trong trường hợp không có trong danh sách model hỗ trợ thì cũng có thể dùng DTB của tvbox nào dùng cùng SoC: lấy ví dụ như tx3mini và x96 mini đều dùng amlogic 905W nên có thể dùng DTB của tx3mini (meson-gxl-s905w-p281.dtb, hoặc meson-gxl-s905w-tx3-mini.dtb) cho x96 mini.

202065d06fa7-78ad-4a54-9efc-a0b2b7c8b108.png

Còn nếu mua tvbox mới thì theo ý kiến cá nhân nên chọn của các hãng có tên tuổi như tanix, envybox, beelink. Các hãng này thường có website, thông tin, cấu hình tvbox chuẩn, rõ ràng, build chắc chắn, có phần tải/cập nhật firmware. Do đó, trong một số trường hợp đã cài AcT lên eMMC rồi thì việc muốn quay về OS gốc cũng dễ dàng hơn.

Một số tvbox thông dụng hiện nay: Tanix tx3 mini (khoảng trên 400-450k cho bản 2/16 GB, các đời đều chạy được AcT); x96 mini (chỉ rev 2.1 chạy được AcT; rev 2.2 đã khóa uboot nên không chạy được AcT), x96 max; Beelink dòng GT1, GT-King (khá đắt, chắc chẳng thím nào bỏ ra 2000-3000k mua về chỉ để chạy AcT) và nhiều model khác.... Có thể tham khảo một số dòng tvbox chạy được AcT trên forum armbian.

3. Cài đặt AcT lên tvbox

3.1. Nguyên liệu

  • tvbox: thường dùng bản 2gb ram, 16gb bộ nhớ trong (2/16). Nếu chỉ sử dụng tvbox cài pihole, adguard chặn quảng cáo thì chỉ cần bản 1/8 GB tuy hơi đuối. Trong ví dụ sau mình dùng tx3 mini rev H, 2/16 GB, cấu trúc 64bit.
  • 1 micro SD card 8 hoặc 16gb, class 10. Class càng cao càng tốt nếu muốn chạy AcT từ sdcard. Còn nếu chỉ để dùng sdcard làm trung gian trước khi cài đặt AcT lên eMMC của tvbox thì có thể tận dụng bất cứ sdcard nào săn có. Lưu ý là nếu sdcard class thấp (4, 6 chẳng hạn) thì ở lần khởi động AcT đầu tiên sẽ mất khá lâu, thường từ 30 phút đến cả tiếng; class 10 thì chỉ khoảng 3-5 phút.
  • usb đọc thẻ sd.
  • Phần mềm để ghi AcT lên sdcard: thường là Etcher, Rufus. Mình hay dùng Rufus vì có thể ghi image từ file zip mà không phải giải nén, sau khi ghi xong thì có thể sửa lại file cấu hình luôn mà không phải rút, cắm lại usb đọc thẻ.
  • AcT image: tải về tại đây
  • PuTTy hoặc Terminal để kết nối với tvbox đang chạy AcT.

3.2. Các bước

  • Tải file image của Armbian từ đường link trên. Trong hình, mình chọn bản server buster dùng chung cho cả 3 loại chip, build ngày 5/10/2020, kernel 5.9.0.
2020c8a9cff0-5b83-49a5-b99d-cdf2cc897709.png
  • Cắm usb card reader vô PC. Chạy Rufus, chọn usb reader từ menu sổ "Device", kéo thả file image Armbian vừa tải ở bước trên vào "Boot selection" rồi click "Start" để ghi ra sdcard.
202020b1c4c9-4452-47f9-ace6-a25fb99e606b.png
  • Sau khi Armbian đã được ghi ra sdcard thì phải sửa file config cho phù hợp với cấu hình của tvbox. Lấy ví dụ cấu hình của tx3 mini: SoC là Amlogic S905W
+ Dùng Explorer để duyệt phân vùng BOOT của sdcard. Sửa file "u-boot-*" thành "u-boot.ext". tx3 mini dùng S905W nên mình sẽ sửa file u-boot-s905x-s912 thành u-boot.ext​
202059be965c-d4e1-4324-b4a5-986d61e3850d.png


20209784ddf4-363d-4acf-9257-559c3b8be6dd.png

+ Mở file "extlinux.conf" trong thư mục extlinux bằng notepad hoặc bất kỳ text editor nào sẵn có trên PC. Trong ví dụ này, mình dùng Sublime Text để chỉnh sửa:​
20203ad65e46-ddb3-4848-8106-b9cb5a35ce7a.png

+ Tìm đến dòng config cho SoC Amlogic (# aml s9xxx). Bỏ các dấu # ở đầu dòng FDT (chỉ cần 1 dòng) và APPEND.​
Chú ý: tvbox dùng chip nào thì tìm dòng config cho chip tương ứng, xóa toàn bộ các dòng config còn lại cho các dòng chíp khác không dùng đến.​
2020ee005b68-70c1-4693-85bb-d76d0a45b896.png

+ Quay trở lại cửa sổ Explorer, duyệt đến BOOT > dtb > chip Amlogic, tìm dtb cho tx3 mini, sao chép tên của file dtb này.​
Chú ý: Với SoC 905W có 2 file DTB là meson-gxl-s905w-p281.dtb và meson-gxl-s905w-tx3-mini.dtb, dùng file DTB nào cũng được. Mình thử cả 2 file thì tvbox của mình chỉ nhận meson-gxl-s905w-p281.dtb mà không nhận file còn lại.​

2020f5683276-1c2b-40bc-af9f-b70a5a9a15f7.png

+ Dán tên file dtb vào dòng FDT như hình dưới đây. Lưu các thông tin vừa chỉnh sửa.​
202056d7d1a7-a17f-444f-806c-237af23aa056.png
  • Tháo sdcard ra và lắp vào khe TF trên tvbox. Cắm điện tvbox để boot vào OS gốc Androi.
  • Trong Android, chọn cài đặt (Setting), sau đó chọn Cập nhật (Update), chọn file aml_autoscript.zip trên sdcard, sau đó nhấn Update. tvbox sẽ khởi động lại.
  • Sau khi tvbox khởi động lại, nếu hên thì có thể boot luôn vào Armbian trên sdcard. Nói nếu hên vì trên forum Armbian có đề cập một số trường hợp boot được luôn vào AcT, một số trường hợp thì vẫn vào lại Android gốc của tvbox.
2020876eebd0-7efc-4d0a-b858-4d42a214eefb.png
  • Nếu rơi vào trường hợp sau thì dùng phương pháp chọc que vào nút reset như sau:
+ Rút jack điện của tvbox.​
+ Dùng một cái que chọc vào nút reset. Tùy từng tvbox mà nút reset này được bố trí ở các vị trí khác nhau: với tx3 mini thì nút reset nằm trong lỗ cắm AV, với x96 mini thì nằm ở mặt lưng tvbox.​
+ Vẫn nhấn giữ que nhọn chọc nút reset, cắm jack điện cho tvbox. Đợi trên 30s thì tvbox sẽ boot vào Armbian trên sdcard, lúc này nhả tay giữ que chọc lỗ reset.​
  • Làm đúng các bước trên, các thím sẽ cài đặt AcT trên sdcard thành công. Ở lần đăng nhập đầu tiên, dùng username là root, password là 1234. Sau đó khởi tạo username và password mới
  • Một số bước cần làm tiếp theo:
+ Khóa account root và chỉ sử dụng username khởi tạo nói trên ở những lần đăng nhập sau.​
+ Cập nhật hệ thống, đảm bảo các package là mới nhất: Chạy lần lượt các lệnh sau​
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade
+ Chạy lệnh armbian-config để cài đặt thêm package của bên thứ 3: docker, hass.io..; thay đổi tên host của tvbox; trong trường hợp có sử dụng cron để tự động hóa một số task thì các thím phải thay đổi múi giờ phù hợp...​
+ Dùng lệnh sudo reboot để khởi động lại tvbox.​
  • Nếu muốn cài đặt lên eMMC (để tận dụng tốc độ của eMMC; sdcard để làm việc khác..) thì sau khi dùng PuTTY đăng nhập vào AcT, tại terminal nhập vào lệnh sau:
sudo /root/install-aml.sh

Đợi một lúc Act sẽ tự cài đặt lên eMMC theo kịch bản (script), báo thành công thì khởi động lại tvbox. Rút sdcard ra trước khi cắm điện, tvbox sẽ boot vào AcT từ eMMC.

Cập nhật

10/2021: Cập nhật link tải về (Bản build cuối cho armlogic, 10/2020, debian buster, kernel 5.9)

4/2021: sửa lỗi hiển thị ảnh: đổi server của pik.vn từ 2 sang 3.

1. Từ tháng 11/2020, AcT chỉ hỗ trợ tvbox chip allwinner và rockchip. Bản build 10/2020 (kernel 5.9.0) là bản cuối cùng hỗ trợ cho các tvbox chạy chip amlogic.

2. Một số cách fix khi không boot được AcT từ sd card:
 
Last edited:

4. Cài đặt Portainer trên docker​

Portainer là một công cụ giúp dễ dàng quản lý docker container, host và docker swam qua giao diện UI. Người dùng sẽ không phải vất vả nhớ những câu lệnh mỗi khi phải quản lý các tài nguyên của docker như images, network, containers, volummes; ngoài ra, việc sửa lỗi cũng dễ dàng, trực quan hơn. Xem ảnh dưới để thấy quá trình cập nhật Portainer từ bản 1.8 lên 2.0 bằng docker CLI nhiêu khê như thế nào. Vì vậy, sau một thời gian dùng CLI trên docker compose thì mình đã chuyển sang Portainer cho nhàn.

Phần này chỉ hướng dẫn qua cách cài đặt Portainer, các thím muốn tìm hiểu thêm về Portainer thì tham khảo phần Documentation trên trang chủ Portainer. Cài đặt Portainer tương đối dễ, chỉ cần 2 dòng lệnh:

  • Dùng PuTTY kết nối với tvbox (đang chạy AcT, đã cài docker) bằng SSH, port 22.
  • Tại dấu nhắc, nhập 2 lệnh sau:

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Chú ý tới đoạn cuối cừng của dòng lệnh thứ 2: portainer/portainer-ce, từ bản 2.0 thì Portainer đã đổi tên thành Portainer CE, do đó để pull và sử dụng bản mới nhất thì cấu trúc câu lệnh phải đổi thành portainer/portainer-ce. Nói thêm, CE = Community Edition: bản cộng đồng người dùng.

Mặc định thì Portainer dùng port 9000 cho giao diện UI nên sau khi cài đặt xong thì đăng nhập vào Portainer qua địa chỉ http://tvbox_IP:9000. Lấy ví dụ như tvbox của mình có địa chỉ ip là 192.168.1.13, sẽ đăng nhập vào Portainer qua http://192.168.1.13:9000. Sử dụng username là admin, đặt password tùy chọn, sau đó xác nhận để vào giao diện quản lý.

202098f38ea0-c709-41a0-8775-0106d6532279.png

5. Cài đặt AdguardHome chặn quảng cáo​

Pi-hole thì đã khá quen thuộc với các vozer do đang có nguyên một thread trên voz, cả tân và cựu. Cài đặt Pihole trên tvbox đang chạy AcT cũng tương đối dễ dàng: dùng docker hoặc cài trực tiếp lên eMMC.

Ở đây mình muốn đề cập tới AdguardHome (AGH). AGH về cơ bản có tính năng không khác nhiều so với Pihole và đều là DNS server. Dưới đây là so sánh tính năng giữa 2 phần mềm mà theo mình là rõ ràng nhất và không thiên vị (nguồn: Github AdguardTeam). Qua so sánh này thì các thím có thể tự mình rút ra kết luận.

2020461753bb-af57-41d4-8b35-87f516e4d471.png

Cá nhân mình thích giao diện đơn giản, không màu mè của AGH hơn. AGH cài đặt được trên nhiều platform, mình đã thử và cài ngon trên PC (CentOS 8), laptop (Debian 10/Windơs 10), tuy nhiên trên AcT cho dù đã thử nhiều cách nhưng vẫn không thể cài đặt trực tiếp thành công lên eMMC, có lẽ do AcT còn nhiều lỗi. Hên là AGH có bản cho docker nên sau đây mình minh họa cách cài bản này dùng Portainer.

- Dùng PuTTY SSH đến tvbox đã cài đặt AcT, đăng nhập và tạo thư mục để lưu data của AGH trên eMMC. Mục đích của bước này là để lưu dữ liệu lâu dài trên eMMC của tvbox, khi có sự cố phải cài đặt lại AGH thì không bị mất dữ liệu của lần cài đặt trước. Giả sử mình đang ở root của eMMC:

sudo mkdir adguardhome
cd adguardhome
sudo mkdir data conf

202014d43cbe-567b-42f9-be74-ce2b7a3ec4ff.png

- Đăng nhập Portainer. Ở lần đăng nhập đầu tiên sẽ có giao diện như dưới, click vào Local, sau đó chọn Stack > Add Stack

2020b559f3d6-5841-4d3d-9f1e-b934bbe821df.png


2020e543dcae-2248-467f-aee7-1141f0e44fab.png


2020a9ed335e-e11a-4ecd-9c14-d0f495e2f58b.png

- Tại cửa sổ Create stack, đặt tên cho docker tại phần Name, sao chép và dán đoạn code sau vào phần Web editor:
version: '2'
services:
adguardhome:
container_name: adguardhome
image: adguard/adguardhome:latest
restart: unless-stopped
volumes:
- /root/adguardhome/data:/opt/adguardhome/work
- /root/adguardhome/conf:/opt/adguardhome/conf
network_mode: "host"

2020cead45e6-8bc3-48a4-8771-4f2e81a6ecae.png

- Chú ý các điểm sau:

+) Đoạn code trên dùng YAML nên cần thụt lề (indent) đầu dòng đúng như hình trên, nếu ko sẽ bị báo lỗi khi chạy lệnh trên Portainer .
+) hai thư mục là data, config đã được tạo ở bước đầu tiên trên eMMC sẽ được BIND với hai thư mục tương úng là work và conf của AGH. Do đó cần trỏ chính xác đường dẫn của các thư mục này.
+) dòng lệnh cuối network_mode: "host". Nếu theo đúng hướng dẫn cài đặt trên trang chủ của AGH thì không được/chạy, nhưng nếu sửa lại như trên (dùng AGH làm DNS server) thì AGH lại chạy ngon. Điểm này mình chưa biết lý do, vì AGH đã chạy ngon rồi nên cũng không cần tìm hiểu thêm.

  • Kéo xuuống phía dưới chọn "Deploy the stack", đợi một lúc.
  • Click chọn Container, nếu thấy dòng trạng thái của AGH là running màu xanh như hình thì AGH đã cài đặt thành công.

202059f8a139-e48d-42b9-a079-1919dbaa57b6.png

Do network đang ở chế độ server (xem chú ý phần trên), truy cập vào giao diện quản lý AGH sẽ thông qua địa chỉ ip của tvbox. Cách sử dụng AGH như Pihole, thêm danh sách các sites quảng cáo vào phần bộ lọc (Filter > DNS block list) như hình dưới.

2020af44ef2b-283a-403f-9a4d-e4a9c1641227.png


2020791144d6-56dc-4807-9c0e-63923111538c.png


202047c469cd-8bdd-4f05-b121-45b46e35d89c.png


20208247147d-e6b4-44c4-b62e-6aeeb819fcb2.png

Nguồn tham khảo:
https://documentation.portainer.io
https://github.com/AdguardTeam/AdGuardHome
https://forum.armbian.com/forum/41-support-armbian-tv/
 
Last edited:
Những pm chạy trên docker này updatre bằng cách nào khi những pm này có ver mới vậy b?
Thím dùng Watchtower, cũng là một docker. Watchtower sẽ tự động kiểm tra tất cả các container khác và bản thân nó, khi có bản image mới thì sẽ tự tải về và deploy theo đúng thiết lập. Nói chung, watchtower tự làm từ a -z cho thím, cực tiện.
 
Thím dùng Watchtower, cũng là một docker. Watchtower sẽ tự động kiểm tra tất cả các container khác và bản thân nó, khi có bản image mới thì sẽ tự tải về và deploy theo đúng thiết lập. Nói chung, watchtower tự làm từ a -z cho thím, cực tiện.
Ah! Mình đang sd docker trên nas synology mà nó ko update đc.
 
bài viết khá hay và chất lượng 1 vote!
trước cùng flash armbian vài con tx3mini...đủ loại lỗi, mà mệt nhất là không ổn định!
Chạy được vài tiếng lại treo...hàng cho nhà nghèo thôi, nhà giàu thì chơi raspberry Pi 4 cho bền, ổn định...
 
Con tx3 đủ build 1 con server chạy web bình thường ko nhỉ?

Gửi từ Xiaomi MI 6 bằng vozFApp
bản 4/32 GB thì có thể được, tuy vẫn đuối. Còn bản mini 2/16 thì mình cài mấy cái container thôi mà ram còn có tí, thím ạ
 

Attachments

  • grafana.png
    grafana.png
    171.1 KB · Views: 806
Mình có con K+ TV Box không xài. Chắc dùng được nhỉ bác?
Kinh nghiệm của em chỉ gói gọn trong 3 con tvbox (2 con tx3 mini, 1 con x96 mini) nên với K+ em cũng ko biết. Em cứ nêu ý kiến bác tham khảo: thường tvbox của mấy brand trong nước đều khóa bootloader/uboot rồi nên sẽ ko boot được OS của bên khác. Giả sử ko khóa boot thì bác cứ thử chuột bạch xem sao: biiết SoC của K+ đang dùng là loại nào, flash Armbian ra sd card rồi thử DTB của SoC gần giống nhất xem có boot được ko.
 
Back
Top