UpSnap – Công cụ quản lý và khởi động máy tính qua mạng (Wake-On-LAN)
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
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
Nhập vào nội dung sau và lưu lại
version: "3"
services:
upsnap:
container_name: upsnap
image: ghcr.io/seriousm4x/upsnap:4
network_mode: host
restart: unless-stopped
volumes:
- /docker/upsnap/data:/app/pb_data
environment:
- TZ=America/Detroit # Set container timezone for cron schedules
- UPSNAP_INTERVAL=@every 10s # Sets the interval in which the devices are pinged
- UPSNAP_SCAN_RANGE=192.168.1.0/24 # Scan range is used for device discovery on local network
Kích hoạt Docker-compose
docker-compose up -d
Thêm thiết bị vào Dashboard
Truy cập UpSnap theo địa chỉ http://<IP-Server>:8090
. Sử dụng tính năng Network scan.
Sau khi hoàn tất, bạn sẽ thấy danh sách các thiết bị và có thể dễ dàng thêm thiết bị bằng cách click vào Add +
NOTE:
Nếu bạn muốn sử dụng tính năng Wake on LAN, NIC của thiết bị phải hỗ trợ WOL, nếu không nó sẽ không hoạt động.
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.
Bạn cũng có thể sử dụng UpSnap để tắt thiết bị của mình bằng lệnh sau tại mục “Shutdown Cmd“, nhớ thay đổi mật khẩu và thông tin thiết bị của riêng bạn:
sshpass -p r0mhubP@ssw0rd ssh -o "StrictHostKeyChecking=no" user@hostname "sudo poweroff"
Thiết bị của bạn có hỗ trợ WOL không?
NIC của bạn phải hỗ trợ WOL và được phép chấp nhận magic packets. Bạn cũng có thể cần đảm bảo WOL được bật trong BIOS. Mình đang sử dụng cái này trên các máy chủ dựa trên Debian. Theo mặc định, các tính năng này được bật và có thể kiểm tra bằng lệnh sau:
ethtool eth0
trong đó eth0
là Network Interface Card hoặc NIC.
Nó sẽ trả về thông tin tương tự như sau:
Settings for eth0:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: external
Auto-negotiation: on
Supports Wake-on: g
Wake-on: g
Link detected: yes
Trong đó có dòng Wake-on: g
, tức là WOL đang được enabled
Cách dễ dàng nhất để liệt kê các Network Interface Card là sử dụng lệnh IP. Lệnh này cung cấp một loạt thông tin về Network Interface Card của hệ thống của bạn:
ip addr
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ở.
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
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.
Chia sẻ: thuanbui.me