จัดการคอมพิวเตอร์ระยะไกลหลายเครื่องผ่าน http5
ภาษาอังกฤษ中文
ซอฟต์แวร์ที่ชำระเงินเช่น TeamViewer ช่วยให้คุณควบคุมคอมพิวเตอร์หลายเครื่องจากระยะไกล WebPC ทำฟังก์ชั่นที่คล้ายกันให้สมบูรณ์และฟรีและโอเพ่นซอร์สอย่างสมบูรณ์ ในเวลาเดียวกัน WebPC ใช้ประโยชน์จากเบราว์เซอร์ที่ทันสมัยอย่างเต็มที่และจำเป็นต้องใช้เบราว์เซอร์เพื่อควบคุมคอมพิวเตอร์ของคุณจากระยะไกลโดยไม่ต้องติดตั้งโปรแกรมควบคุมเพิ่มเติม
WebPC ส่วนใหญ่มีลักษณะดังต่อไปนี้:



ความนิยมของอุปกรณ์คอมพิวเตอร์และการพัฒนาอย่างรวดเร็วของเครือข่ายทำให้การทำงานระยะไกลของคอมพิวเตอร์มีความจำเป็นและเป็นเรื่องธรรมดามากขึ้นเรื่อย ๆ SSH และ RDP สามารถควบคุมอุปกรณ์ที่มี IP เครือข่ายภายนอกอิสระเท่านั้นและแต่ละคนมีข้อดีและข้อเสียของตัวเอง บริการที่ให้บริการการจัดการระยะไกลและการควบคุมอุปกรณ์หลายเครื่องเช่น TeamViewer มักจะไม่เหมาะสำหรับผู้ใช้ที่ไม่ใช่เชิงพาณิชย์ และโดยปกติจะให้เฉพาะเดสก์ท็อประยะไกล แต่เชลล์ระยะไกลสำหรับ Linux และอุปกรณ์อื่น ๆ มักจะมีประโยชน์และมีประสิทธิภาพมากกว่า นอกจากนี้ยังน่ารำคาญที่จะติดตั้งโปรแกรมรีโมทคอนโทรลที่น่ารำคาญ ดังนั้นฉันจึงแยกแยะความต้องการข้างต้นและตระหนักถึงฟังก์ชั่นลูกค้าทั้งหมดไปยังเบราว์เซอร์คือโครงการนี้ WebPC
ขั้นแรกจำเป็นต้องมีเซิร์ฟเวอร์เพื่อรับคำขอของผู้ใช้และการลงทะเบียนของการควบคุมสิ้นสุด เราเรียกเซิร์ฟเวอร์นี้ว่ามาสเตอร์และปลายที่ควบคุมทั้งหมดเป็นทาส
ทาสจะลงทะเบียนตัวเองด้วยต้นแบบและรักษาช่องเครือข่ายเสมือนไปยังต้นแบบ SALVE ให้บริการ GRPC แก่ Master ในช่องทางเครือข่ายเสมือนนี้เพื่อรองรับฟังก์ชั่นการควบคุมระยะไกลต่างๆ
เมื่อต้นแบบได้รับคำขอผู้ใช้จะพบทาสที่ลงทะเบียนและส่งต่อคำขอไปยังทาส
สำหรับ Linux-AMD64 และ Windows-AMD64 มีการจัดทำโปรแกรมไว้ล่วงหน้าแล้วโปรดดาวน์โหลดและติดตั้งโดยตรง สำหรับแพลตฟอร์มอื่น ๆ คุณต้องรวบรวมด้วยตัวเองและอ้างอิงถึงการติดตั้งต่อไปนี้
ดาวน์โหลดโปรแกรมล่าสุดและคลายซิปเป็น/opt/webpc/webpc
Copy /opt/webpc/webpc-master.service ถึง /etc/systemd/system/webpc-master.service เพื่อติดตั้งบริการหลักสำหรับ SystemD
sudo cp /opt/webpc/webpc-master.service /etc/systemd/system/webpc-master.service
หากคุณแก้ไขไดเรกทอรีการติดตั้งโปรดอย่าลืมแก้ไขเส้นทางที่สอดคล้องกันใน webpc-master.service
สร้างผู้ใช้ WebPC
sudo useradd webpc -Mrs /sbin/nologin
เรียกใช้บริการ
sudo systemctl start webpc-master.service
ชื่อผู้ใช้แบบสุ่มและรหัสผ่านที่สร้างโดยระบบสามารถรับได้จาก ./var/logs/master/webpc.log หลังจากการรันครั้งแรก:
$ cat ./var/logs/master/webpc.log
...
{"level":"info","ts":1630285898.3816726,"msg":"init user","user":"king","password":"08ab28ebb369dc15cc2c95dc972348ee"}
...
ดาวน์โหลดโปรแกรมล่าสุดและคลายซิปเป็น/opt/webpc/webpc
Copy /opt/webpc/webpc-slave.service ถึง /etc/systemd/system/webpc-slave.service เพื่อติดตั้งบริการทาสสำหรับ SystemD
sudo cp /opt/webpc/webpc-slave.service /etc/systemd/system/webpc-slave.service
หากคุณแก้ไขไดเรกทอรีการติดตั้งโปรดอย่าลืมแก้ไขเส้นทางที่เกี่ยวข้องใน webpc-slave.service
สร้างผู้ใช้ WebPC
sudo useradd webpc -Mrs /sbin/nologin
เรียกใช้บริการ
sudo systemctl start webpc-slave.service
ชื่อผู้ใช้แบบสุ่มและรหัสผ่านที่สร้างโดยระบบสามารถรับได้จาก ./var/logs/master/webpc.log หลังจากการรันครั้งแรก:
$ cat ./var/logs/master/webpc.log
...
{"level":"info","ts":1630285898.3816726,"msg":"init user","user":"king","password":"08ab28ebb369dc15cc2c95dc972348ee"}
...
http.libsonnet กำหนดวิธีการที่ Master ให้บริการเว็บไซต์
local def = import "def.libsonnet";
local size = def.Size;
local duration = def.Duration;
{
// http addr
Addr: ':9000',
// if not empty use https
CertFile: '',
KeyFile: '',
// enable swagger-ui on /document/
Swagger: true,
// grpc server option
Option: {
WriteBufferSize: 32*size.KB,
ReadBufferSize: 32*size.KB,
InitialWindowSize: 0*size.KB, // < 64k ignored
InitialConnWindowSize: 0*size.KB, // < 64k ignored
MaxRecvMsgSize: 0, // <1 6mb
MaxSendMsgSize: 0, // <1 math.MaxInt32
MaxConcurrentStreams: 0,
ConnectionTimeout: 120 * duration.Second,
Keepalive: {
MaxConnectionIdle: 0,
MaxConnectionAge: 0,
MaxConnectionAgeGrace: 0,
Time: 0,
Timeout: 0,
},
},
}
System.libsonNet กำหนดตัวหลักเองเป็นทาสในการลงทะเบียนกับตัวเองเพื่อให้การควบคุมระยะไกลและเฉพาะผู้ใช้ที่มีรูทหรือการอนุญาตเซิร์ฟเวอร์เท่านั้นที่สามารถควบคุมต้นแบบได้
Connect.libsonNet ตั้งค่าซึ่งเทอร์มินัลควบคุมสามารถลงทะเบียนได้ คุณต้องเพิ่มอุปกรณ์การควบคุมระยะไกลไปยังบริการเว็บก่อนและคัดลอกที่อยู่ที่ลงทะเบียนและกรอกแอตทริบิวต์ URL ของไฟล์นี้
local def = import "def.libsonnet";
local size = def.Size;
local duration = def.Duration;
{
// http addr
URL: 'ws://127.0.0.1:9000/api/v1/dialer/64048031f73a11eba3890242ac120064',
// if true allow insecure server connections when using SSL
// Insecure: true,
// grpc server option
Option: {
WriteBufferSize: 32*size.KB,
ReadBufferSize: 32*size.KB,
InitialWindowSize: 0*size.KB, // < 64k ignored
InitialConnWindowSize: 0*size.KB, // < 64k ignored
MaxRecvMsgSize: 0, // <1 6mb
MaxSendMsgSize: 0, // <1 math.MaxInt32
MaxConcurrentStreams: 0,
ConnectionTimeout: 120 * duration.Second,
Keepalive: {
MaxConnectionIdle: 0,
MaxConnectionAge: 0,
MaxConnectionAgeGrace: 0,
Time: 0,
Timeout: 0,
},
},
}
System.libsonNet ตั้งค่าฟังก์ชั่นที่ทาสจะให้
{
//Shell : "shell-linux", // if empty, linux default value shell-linux.sh
//Shell : "shell-windows.bat", // if empty, windows default value shell-windows.bat
// vnc server address
VNC: "127.0.0.1:5900",
// mount path to web
Mount: [
{
// web display name
Name: "s_movie",
// local filesystem path
Root: "/home/dev/movie",
// Set the directory to be readable. Users with read/write permissions can read files
Read: true,
// Set the directory to be writable. Users with write permission can write files
// If Write is true, Read will be forcibly set to true
Write: true,
// Set as a shared directory to allow anyone to read the file
// If Shared is true, Read will be forcibly set to true
Shared: true,
},
{
Name: "s_home",
Root: "/home/dev",
Write: true,
Read: true,
Shared: false,
},
{
Name: "s_root",
Root: "/",
Write: false,
Read: true,
Shared: false,
},
{
Name: "s_media",
Root: "/media/dev/",
Write: false,
Read: true,
Shared: false,
},
],
}
WebPC back-end ใช้การพัฒนา Golang และ GRPC, Front-end ใช้การพัฒนาเชิงมุมและจำเป็นต้องรวบรวมแยกต่างหาก
ติดตั้งเส้นด้าย TypeScript สภาพแวดล้อมการพัฒนาที่จำเป็น
ดาวน์โหลดโครงการและสลับไดเรกทอรีการทำงานเป็น webpc/view
git clone [email protected]:powerpuffpenguin/webpc.git && cd webpc/view
ติดตั้งการพึ่งพาโครงการ
yarn install
หรือ
npm install
รวบรวมรหัสส่วนหน้า
../build.sh view
ติดตั้งสภาพแวดล้อมการพัฒนาที่จำเป็น GCC Golang Proto3 GRPC Protoc-Gen-Go Protoc-Gen-GRPC-GATEWAY PROTOC-GEN-OPENAPIV2
ดาวน์โหลดโครงการและสลับไดเรกทอรีการทำงานเป็น webpc
git clone [email protected]:powerpuffpenguin/webpc.git && cd webpc
สร้างรหัส GRPC
./build.sh grpc
ฝังรหัสส่วนหน้าและไฟล์คงที่ลงในรหัส Golang
./build.sh view -s
Compile Go Code
./build.sh go
ผู้ใช้ทั้งหมดและเทอร์มินัลควบคุมใน WebPC มีอยู่ภายใต้โหนดของกลุ่มต้นไม้ เมื่อกลุ่มของผู้ใช้เป็นโหนดบรรพบุรุษของกลุ่มที่เทอร์มินัลควบคุมอยู่ผู้ใช้สามารถควบคุมเทอร์มินัลควบคุมได้
สิทธิ์กำหนดการดำเนินการที่ผู้ใช้สามารถดำเนินการรวมถึงคำจำกัดความต่อไปนี้: