LINUXNETWORKSELF HOSTING

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 đó eth0Network 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

Có thể bạn chưa biết

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận