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 lợi ích, nhưng khắc phục sự cố khi tôi vắng nhà lại là một thách thức lớn. Thật phi lý khi yêu cầu mẹ tôi chạy các lệnh shell mỗi khi Jellyfin, Navidrome, hay Audiobookshelf gặp trục trặc. Mặc dù việc sử dụng các file batch hay script là không khả thi, tôi đã thử nhiều lựa 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.
Mục tiêu của tôi là cho phép người thân chạy các lệnh cơ bản mà không cần sử dụng giao diện dòng lệnh (Terminal) trên bất kỳ thiết bị nào. OliveTin cung cấp một giao diện web đơn giản để thực hiện điều đó một cách dễ dàng. Phần mềm này mang đến một bảng điều khiển web với các nút bấm tương ứng với các lệnh đã được cấu hình trước. Dưới đây là cách tôi đã giúp gia đình mình có thể chạy các lệnh shell từ một giao diện web, từ đó thực hiện các bước khắc phục sự cố cơ bản một cách độc lập.
Mô hình máy tính nhúng Raspberry Pi, nền tảng lý tưởng cho các ứng dụng tự host
Vì Sao OliveTin Trở Thành Lựa Chọn Lý Tưởng Để Chạy Lệnh Shell?
Khắc Phục Khó Khăn Cho Người Ít Am Hiểu Công Nghệ
Gia đình tôi không quá am hiểu về công nghệ, đó là lý do tôi thường xuyên phải hỗ trợ khắc phục hầu hết mọi vấn đề. May mắn thay, họ khá thoải mái 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à. Từ đó, tôi đã quyết định chọn OliveTin, cho phép họ sử dụng một giao diện giống 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 qua điện thoại – điều tôi đã từng thử nhưng vẫn rất khó khăn cho tất cả mọi người.
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 khác nhau và không yêu cầu bất kỳ khoản phí đăng ký nào. Quan trọng nhất, OliveTin 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 lựa chọn như Script-Server và RunDesk không thể đáp ứng được yêu cầu của tôi. Để tiện lợi hơn, tôi đã yêu cầu gia đình mình đánh dấu URL của OliveTin trên thiết bị yêu thích của họ, và đó là cách họ khắc phục sự cố hoặc khởi động lại hầu hết mọi thứ chỉ với vài lần chạm.
Ưu Tiên Cài Đặt Trực Tiếp Thay Vì Docker Để Tối Giản Hệ Thống
Giữ Mọi Thứ Thật Đơn Giản
OliveTin có thể được cài đặt trên Linux, Windows, macOS và FreeBSD. Mặc dù Docker là một xu hướng phổ biến, giúp đóng gói 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 đề như giải quyết lỗi quyền truy cập hoặc đị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, thiết bị đ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 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 vừa 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 cụ thể cho bản phân phối Linux của mình.
Sau khi cài đặt gói .deb của OliveTin, tôi đã mở địa chỉ http://hostname:1337 trong trình duyệt. Như bạn có thể đoán, 1337 là số cổng mà dịch vụ OliveTin đang chạy.
Hình ảnh mô phỏng Raspberry Pi 5, một lựa chọn mạnh mẽ cho các dự án tự host
Raspberry Pi 5
CPU Arm Cortex-A76 (quad-core, 2.4GHz)
Memory Up to 8GB LPDDR4X SDRAM
Giá tham khảo: $60 tại Adafruit $80 tại Micro Center $60 tại SparkFun Electronics $80 tại CanaKit $90 tại Amazon (8GB)
Máy tính bo mạch đơn Raspberry Pi 4, phổ biến để chạy các server mini
Raspberry Pi 4
Storage MicroSD card slot
CPU Arm Cortex-a72 (quad-core, 1.8GHz)
Giá tham khảo: $75 tại CanaKit $45 tại SparkFun Electronics $45 tại Micro Center $45 tại Adafruit $85 tại Amazon
Thêm Các Nút Lệnh Vào Bảng Điều Khiển Với File Cấu Hình YAML
Điều Chỉnh Với File YAML
Nhà phát triển của OliveTin cung cấp các 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ó đã có sẵn một vài nút. Tệp cấu hình YAML có một loạt các nút lệnh mẫu với các lệnh shell 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 hành động ở đầ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 dự định 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 quyền root để chỉnh sửa tệp config.yaml, vì vậy bạn có thể sử 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ư ping một máy chủ, kiểm tra kết nối internet, kiểm tra dung lượng lưu trữ, tạo bản sao lưu hoặc xác minh rằng ngày và giờ của hệ thống được đồng bộ. Việc điều 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 phức tạp mọi thứ, tôi cố tình loại trừ các lệnh shell liên quan đến SSH hoặc yêu cầu quyền cấp root.
Tránh Tùy Biến Quá Mức Và Các Lệnh Phức Tạp Để Đảm Bảo Tính Dễ Sử Dụng
Tập Trung Vào 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, gọn gàng và có khả năng tùy biến 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 cho nó. Mặc dù chủ đề mặc định khá tốt, văn bản không dễ đọc. Do đó, tôi đã chuyển sang chủ đề “Olive”, và văn bản viết hoa trở nên 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 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 chiếc máy tính bảng chung, giao diện người dùng web cần phải nhẹ và đơn giản. Vì sự an toàn của họ và cả của tôi, tôi đã bỏ qua việc thêm các lệnh hoặc văn bản phức tạp.
Gia Đình Bạn Có Thể Chạy Lệnh Shell Mà Không Cần Mở Terminal
Tôi đã cài đặt và thiết lập OliveTin chỉ trong vòng chưa đầy một giờ. Điều này xuất phát từ kinh nghiệm mày mò với các tệp cấu hình YAML. Tôi đã vượt qua phần khó khăn nhất – tìm kiếm sự đồng ý của gia đình và thuyết phục họ sử dụng nó. May mắn thay, gia đình tôi chỉ cần chạm vào các nút trong giao diện của OliveTin, chạy trên iPad, khi thực sự cần thiết.
Cuối cùng, tôi đã giúp 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 phải lo sợ giao diện dòng lệnh, và họ thực sự 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 của Raspberry Pi của mình.
Logo ứng dụng OliveTin, giải pháp đơn giản hóa việc chạy lệnh shell