Trước đây, mình đã từng chia sẻ cách khởi động máy tính từ xa sử dụng Raspberry và Python. Tuy nhiên cách này đòi hỏi phải chỉnh sửa code Python và tạo service trên hệ thống khá phức tạp. Ngoài ra, còn bị hạn chế chỉ điều khiển được 1 máy tính duy nhất.
Bài viết hôm nay sẽ giới thiệu với mọi người công cụ mới để quản lý và khởi động máy tính qua mạng với tên gọi UpSnap. Nó được phát triển bằng SvelteKit, Go, PocketBase và nmap, với nhiều tính năng hữu ích:
- Giao diện web thân thiện, ra lệnh khởi động máy tính chỉ với 1 cái click chuột
- Ra lệnh khởi động hoặc tắt máy tính bằng cron
- Chỉnh sửa port theo ý muốn để ping đến máy tính.
- Tìm thiết bị trong mạng nội bộ bằng tính năng scan network
- Tuỳ biến giao diện dark / light
- Có sẵn Docker images dành cho amd64, arm64, arm/v7
Mục Lục
I. Cài đặt UpSnap
UpSnap có sẵn Docker image nên việc cài đặt cực kỳ đơn giản.
Tạo thư mục upsnap và file docker-compose.yml
mkdir ~/upsnap
cd ~/upsnap
nano docker-compose.yml
Code language: Bash (bash)
Nhập vào nội dung sau và lưu lại
version: "3"
services:
upsnap:
image: ghcr.io/seriousm4x/upsnap:3
network_mode: host
restart: unless-stopped
volumes:
- ./data:/app/pb_data
Code language: YAML (yaml)
Kích hoạt Docker-compose
docker-compose up -d
2. Thêm thiết bị vào Dashboard
Truy cập UpSnap theo địa chỉ http://<IP-Server>:8090
. Bấm vào Go to settings to add devices… để thêm thiết bị
Nếu đã biết IP và MAC Address của máy tính cần khởi động từ xa, bạn cố thể nhập trực tiếp vào mục Add new device và bấm Add device.
Hoặc có thể sử dụng tính năng Network scan để dò tìm thiết bị trong mạng nội bộ và thêm vào Dashbooard.
Bấm nút Scan để dò tìm thiết bị
Tìm máy tính tương ứng cần quản lý và bấm Add +
3. Khởi động máy tính từ Dashboard
Dashbooard của UpSnap sau khi thêm thiết bị sẽ hiện ra như sau. Bạn có thể bấm vào biểu tượng 3 dấu chấm để thay đổi tên của thiết bị.
UpSnap sẽ liên tục ping đến các thiết bị trong danh sách để kiểm tra tình trạng tắt mở. Nếu không nhận được phản hồi, máy tính sẽ hiện logo power màu đỏ, nghĩa là đang tắt.
Bấm vào logo màu đỏ của GAMING-PC để khởi động máy. Sau vài giây, máy tính GAMING-PC đã khởi động thành công. Logo đã được chuyển sang xanh lá – đang mở.
4. Khởi động máy tính bằng API
UpSnap còn hỗ trợ sử dụng API để khởi động máy tính từ xa.
Truy cập vào Backend bằng địa chỉ http://<IP-Server>:8090/_/
. Trong lần truy cập đầu tiên, bạn cần phải nhập email và password để tạo tài khoản admin.
Truy cập vào mục devices để tìm id của máy tính cần mở
Copy lại id của máy tính.
API Endpoint để khởi động máy tính từ xa như sau
[GET] /api/upsnap/wake/:id
Mình sử dụng Terminal trong Windows để kiểm tra thử bằng lệnh curl
curl -v http://<IP-Server>:8090/api/upsnap/wake/jixxxxxxxxxxxx
Code language: JavaScript (javascript)
Kết quả trả về như sau. Đồng thời máy tính GAMING-PC cũng được khởi dộng thành công.
Mình có thể dụng API này để ra lệnh khởi động máy tính từ xa bằng giọng nói thông qua Google Assistant. Hẹn khi nào rãnh sẽ có bài hướng dẫn.
Chúc bài cài đặt UpSnap thành công!
Anh ơi cho em hỏi có phần mềm nào quản lý các máy tính trong mạng local. Có thể điều khiển máy tự shutdown vào 1 giờ định trước và tự shutdown khi không dùng máy tính ko ạ?
Bác ơi cho e hỏi sao e sử dụng lệnh curl
curl -v http://:8090/api/upsnap/wake/jixxxxxxxxxxxx
Mà nó lại báo thế này
* Trying 192.168.1.100:8090…
* Connected to 192.168.1.100 (192.168.1.100) port 8090 (#0)
> GET /api/upsnap/wake/4sinc5y9oxk4jc3 HTTP/1.1
> Host: 192.168.1.100:8090
> User-Agent: curl/8.0.1
> Accept: */*
>
< HTTP/1.1 401 Unauthorized
< Content-Type: application/json; charset=UTF-8
< Vary: Origin
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< X-Xss-Protection: 1; mode=block
< Date: Thu, 18 May 2023 04:54:03 GMT
< Content-Length: 103
<
{"code":401,"message":"The request requires admin or record authorization token to be set.","data":{}}
* Connection #0 to host 192.168.1.100 left intact
Không biết chỉnh sao để kh bị lỗi requires admin nhỉ bác. thanks bác trước
Lỗi này nhiều khả năng là do Firewall hay Rule gì đó chặn lại, không cho phép truy xuất trực tiếp vào UpSnap. Bạn kiểm tra lại cấu hình nhé.
E wake bằng web thì được mà dùng api thì kh được. Khả năng là do phải trình gì liên quan đến trong pocketbase. E cài xong kh đụng chạm gì trong đó mà vẫn kh được. Check log trong đó cũng báo như bên trên. Tiếc ghê. Có gì bác tìm hiểu r cho e xin hướng cài đặt. Thanks bác nhiều
em có con nas ,cài vào nas được không anh
Con nào cài Docker được cài được nhé. Có sẵn NAS tại chỗ thì cài thử đi em ơi, lên đây hỏi chi nữa 🙂