Việc chia sẻ các ứng dụng và dịch vụ tự host (self-hosted) chạy trên Raspberry Pi với gia đình mang lại nhiều tiện ích, nhưng không ít lần tôi phải đau đầu khi các vấn đề phát sinh lúc tôi vắng nhà. Thật khó để mong đợi mẹ tôi chạy các lệnh shell phức tạp mỗi khi Jellyfin, Navidrome hay Audiobookshelf ngừng hoạt động. Mặc dù việc sử dụng các file batch hay script đã bị loại trừ, tôi đã thử một vài tùy chọn và cuối cùng tìm thấy một giải pháp mã nguồn mở đáp ứng mọi tiêu chí: OliveTin.
Ý tưởng chính là cho phép thực hiện các lệnh cơ bản mà không cần sử dụng terminal trên bất kỳ thiết bị nào. OliveTin cung cấp một giao diện web đơn giản để đạt được điều đó mà không yêu cầu ứng dụng Terminal. Phần mềm này mang đến một giao diện web với bảng điều khiển chứa các nút cho các lệnh. Dưới đây là cách tôi đã giúp gia đình mình chạy các lệnh shell từ một giao diện web và thực hiện các tác vụ khắc phục sự cố cơ bản một cách dễ dàng, giúp việc quản lý Raspberry Pi trở nên tiện lợi hơn bao giờ hết.
Một chiếc Raspberry Pi 5 nổi bật, biểu tượng của sự mạnh mẽ trong các dự án tự host và máy chủ gia đình.
Tại sao tôi chọn OliveTin để chạy lệnh shell?
Giúp những người ít am hiểu công nghệ
Gia đình tôi không quá rành về công nghệ, và đó là lý do vì sao tôi thường xuyên phải giải quyết hầu hết mọi vấn đề kỹ thuật cho họ. May mắn thay, họ đã quen thuộc với việc sử dụng bảng điều khiển Home Assistant để quản lý các thiết bị thông minh trong nhà. Đó cũng là lý do tôi quyết định chọn OliveTin, một công cụ cho phép họ sử dụng giao diện giống như bảng điều khiển để chạy các lệnh shell cụ thể mà không gặp phải bất kỳ sự phức tạp nào. Tôi cảm thấy thật không công bằng khi mong đợi họ sử dụng Terminal để thực thi các lệnh. Ngay cả khi tôi hướng dẫn họ qua điện thoại – điều mà tôi đã từng thử – thì việc đó vẫn rất khó khăn cho cả hai bên.
Giao diện OliveTin được neo vào bảng điều khiển Heimdall, hiển thị các nút lệnh đơn giản giúp người dùng không chuyên dễ dàng thao tác với các dịch vụ tự host.
Ngoài giao diện trực quan, tôi còn yêu thích OliveTin vì một vài lý do khác: nó có thể tự host, tương thích với nhiều hệ điều hành và hoàn toàn không có phí thuê bao. Quan trọng nhất, nó loại bỏ hoàn toàn nhu cầu sử dụng terminal hoặc giao diện dòng lệnh. Đó là lý do tại sao các tùy chọn như Script-Server và RunDesk không đáp ứng được yêu cầu của tôi. Để tiện lợi, tôi đã nhờ gia đình mình đánh dấu URL của OliveTin trên thiết bị yêu thích của họ, và từ đó, họ có thể khắc phục sự cố hoặc khởi động lại hầu hết mọi thứ chỉ bằng vài lần chạm.
Chọn cài đặt trực tiếp thay vì Docker
Mục tiêu giữ mọi thứ đơn giản
OliveTin có thể được cài đặt trên Linux, Windows, macOS và FreeBSD. Mặc dù Docker đang là xu hướng và giúp “container hóa” nhiều ứng dụng để chúng hoạt động trơn tru, nhưng nếu bạn là người mới làm quen với Docker, bạn có thể sẽ gặp phải các vấn đề với hệ thống, chẳng hạn như giải quyết lỗi quyền truy cập và định vị các thư mục cấu hình cụ thể. Đó là lý do tại sao tôi chọn cài đặt gói Linux của OliveTin trực tiếp trên Raspberry Pi 4B của mình, vốn đang chạy Pi OS Lite (64-bit).
Để thực hiện, tôi đã tải xuống tệp .deb cho kiến trúc arm64 của Raspberry Pi bằng lệnh sau:
wget https://github.com/OliveTin/OliveTin/releases/latest/download/OliveTin_linux_arm64.deb
Sau đó, tôi cài đặt tệp .deb đã tải xuống bằng dpkg:
dpkg -i OliveTin_linux_arm64.deb
Bạn có thể truy cập trang GitHub Releases của OliveTin để tải xuống các tệp phù hợp với bản phân phối Linux cụ thể của mình.
Sau khi cài đặt gói OliveTin .deb, tôi đã mở http://hostname:1337 trong trình duyệt. Bạn có thể đã đoán được rằng 1337 là số cổng mà dịch vụ OliveTin đang chạy.
Hình ảnh render sắc nét của Raspberry Pi 5, một bo mạch chủ đơn mạnh mẽ lý tưởng để chạy các ứng dụng tự host và OliveTin.
Máy tính Raspberry Pi 4 Model B, một nền tảng phổ biến và đáng tin cậy để cài đặt OliveTin và quản lý các dịch vụ tự host.
Thêm nút lệnh shell vào bảng điều khiển OliveTin
Chỉnh sửa file cấu hình YAML
Nhà phát triển OliveTin cung cấp nhiều ví dụ đầy đủ về cú pháp đơn giản để thêm các hành động cho lệnh shell. May mắn thay, giao diện mặc định của nó đã tải sẵn một vài nút. Tệp cấu hình YAML có sẵn một loạt các nút lệnh shell mặc định để giúp tôi bắt đầu và thêm một số lệnh để thử nghiệm. Tôi tìm thấy các “actions” ở đầu tệp cấu hình YAML và biết rằng chúng là các lệnh mà OliveTin thực thi và xuất hiện dưới dạng nút trên giao diện người dùng web. Tôi muốn tạo các nút để khởi động, dừng hoặc khởi động lại các ứng dụng đa phương tiện cụ thể, vì vậy tôi chủ yếu sao chép các ví dụ có sẵn.
Bạn sẽ cần sử dụng quyền root để chỉnh sửa tệp config.yaml, vì vậy bạn có thể dùng sudo
để mở nó trong trình soạn thảo văn bản hoặc thay đổi quyền của thư mục /etc/OliveTin.
Các tùy chọn mặc định đủ hữu ích để giữ lại một số tính năng giá trị, chẳng hạn như kiểm tra kết nối mạng (ping), kiểm tra dung lượng lưu trữ, sao lưu hoặc xác minh rằng ngày giờ của hệ thống đã được đồng bộ. Việc tinh chỉnh tệp YAML khá thú vị, vì giao diện người dùng web của ứng dụng đã áp dụng các thay đổi ngay lập tức. Để tránh làm mọi thứ phức tạp, tôi cố ý không bao gồm các lệnh shell liên quan đến SSH hoặc yêu cầu quyền root.
Tránh tùy chỉnh quá mức và các lệnh phức tạp
Ưu tiên sự đơn giản
Một trong những điều đầu tiên thu hút tôi đến với OliveTin là giao diện nhẹ nhàng, sạch sẽ và có khả năng tùy chỉnh cao. Mặc dù chỉ sử dụng trong nhà, tôi đã kết hợp nó với một reverse proxy và kích hoạt HTTPS để tăng cường bảo mật. Mặc dù chủ đề mặc định khá tốt, nhưng văn bản không dễ đọc. Do đó, tôi đã chuyển sang chủ đề “Olive”, và văn bản viết hoa đã dễ đọc hơn nhiều. Nếu bạn không thích các chủ đề có sẵn, bạn có thể tự tạo một chủ đề từ đầu để phù hợp với nhu cầu của mình. Điều duy nhất tôi cảm thấy thiếu là một tùy chọn để thêm văn bản hoặc một bảng với các hướng dẫn ngắn gọn về các nút trên giao diện người dùng web.
Ý tưởng của tôi là giữ cho bảng điều khiển OliveTin gọn gàng và không làm lộn xộn nó với quá nhiều thông tin. Vì các thành viên trong gia đình tôi chủ yếu truy cập OliveTin từ điện thoại di động hoặc một máy tính bảng dùng chung, giao diện người dùng web cần phải nhẹ nhàng và dễ hiểu. Để đảm bảo sự thoải mái cho họ và cho chính tôi, tôi đã bỏ qua việc thêm các lệnh hoặc văn bản phức tạp.
Giao diện Uptime Kuma đang theo dõi trạng thái các container, minh họa việc quản lý và giám sát hiệu quả các dịch vụ trong phòng lab tại nhà.
Gia đình bạn có thể chạy lệnh shell mà không cần mở Terminal
Tôi đã hoàn thành việc cài đặt và thiết lập OliveTin chỉ trong vòng chưa đầy một giờ. Điều này có được từ kinh nghiệm làm việc với các tệp cấu hình YAML. Tôi đã vượt qua phần khó khăn nhất – đó là nhận được sự đồng ý và thuyết phục gia đình sử dụng nó. May mắn thay, gia đình tôi đã quen với việc chạm vào các nút trong giao diện của OliveTin, chạy trên iPad, khi cần thiết.
Cuối cùng, tôi đã trao quyền cho gia đình mình, những người không quá am hiểu công nghệ, có thể chạy các lệnh shell mà không cần phải đối mặt với một giao diện dòng lệnh đáng sợ. Họ rất yêu thích các tùy chọn trực quan, tương tác này. Trong khi đó, tôi vẫn tiếp tục sử dụng Cockpit để quản lý và giám sát tình trạng hệ thống Raspberry Pi của mình, đảm bảo mọi thứ luôn hoạt động ổn định.