Skip to content

massbug/next-vnc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Next.js VNC Container Management Platform

This is a web application built with Next.js for managing and accessing Docker-based VNC containers. The platform allows users to create, manage, and remotely access Ubuntu desktop environment containers.

Features

  • Create VNC containers based on Ubuntu XFCE desktop environment
  • Manage container lifecycle (start, stop, remove)
  • Access container desktop environments directly through browser
  • Responsive web interface supporting both desktop and mobile devices

Tech Stack

System Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    HTTP    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Web Browser   โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  Next.js Server โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                WebSocketโ”‚
                                        โ–ผ
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚ WebSocket Proxy โ”‚
                              โ”‚ (websockify.ts) โ”‚
                              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                TCP/VNCโ”‚
                                        โ–ผ
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚ Docker Containerโ”‚
                              โ”‚ (Ubuntu XFCE)   โ”‚
                              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Project Structure

.
โ”œโ”€โ”€ server/                 # Server-side code
โ”‚   โ””โ”€โ”€ websockify.ts       # WebSocket to TCP proxy service
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ app/
โ”‚       โ”œโ”€โ”€ [container]/    # Container detail page (dynamic route)
โ”‚       โ”‚   โ””โ”€โ”€ page.tsx    # VNC connection page
โ”‚       โ”œโ”€โ”€ actions/        # Server Actions
โ”‚       โ”‚   โ””โ”€โ”€ docker.ts   # Docker container operations
โ”‚       โ”œโ”€โ”€ globals.css     # Global styles
โ”‚       โ”œโ”€โ”€ layout.tsx      # Root layout
โ”‚       โ””โ”€โ”€ page.tsx        # Homepage (container management)
โ”œโ”€โ”€ next.config.ts          # Next.js configuration
โ”œโ”€โ”€ package.json            # Project dependencies and scripts
โ””โ”€โ”€ tsconfig.json           # TypeScript configuration

Quick Start

Requirements

  • Node.js (Recommended 18.x or higher)
  • Docker (for running containers)
  • npm, yarn, pnpm or bun (for dependency management)

Install Dependencies

npm install
# or
yarn install
# or
pnpm install
# or
bun install

Run Development Server

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You also need to start the WebSocket proxy service:

npx tsx server/websockify.ts

Build for Production

npm run build
# or
yarn build
# or
pnpm build
# or
bun build

Start Production Server

npm run start
# or
yarn start
# or
pnpm start
# or
bun start

Usage

  1. Enter a container name on the homepage and click "Create Container"
  2. Wait for the container to be created and started (may take some time)
  3. Click on the container name to enter the VNC connection page
  4. The system will automatically connect to the container's desktop environment
  5. Use the buttons at the bottom of the page to disconnect or reconnect

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

License

This project is licensed under the MIT License - see the LICENSE file for details.


Next.js VNC ๅฎนๅ™จ็ฎก็†ๅนณๅฐ

่ฟ™ๆ˜ฏไธ€ไธชๅŸบไบŽ Next.js ๆž„ๅปบ็š„ Web ๅบ”็”จ๏ผŒ็”จไบŽ็ฎก็†ๅ’Œ่ฎฟ้—ฎๅŸบไบŽ Docker ็š„ VNC ๅฎนๅ™จใ€‚่ฏฅๅนณๅฐๅ…่ฎธ็”จๆˆทๅˆ›ๅปบใ€็ฎก็†ๅ’Œ่ฟœ็จ‹่ฎฟ้—ฎ Ubuntu ๆกŒ้ข็Žฏๅขƒๅฎนๅ™จใ€‚

ๅŠŸ่ƒฝ็‰นๆ€ง

  • ๅˆ›ๅปบๅŸบไบŽ Ubuntu XFCE ๆกŒ้ข็Žฏๅขƒ็š„ VNC ๅฎนๅ™จ
  • ็ฎก็†ๅฎนๅ™จ็”Ÿๅ‘ฝๅ‘จๆœŸ๏ผˆๅฏๅŠจใ€ๅœๆญขใ€ๅˆ ้™ค๏ผ‰
  • ้€š่ฟ‡ๆต่งˆๅ™จ็›ดๆŽฅ่ฎฟ้—ฎๅฎนๅ™จๅ†…็š„ๆกŒ้ข็Žฏๅขƒ
  • ๅ“ๅบ”ๅผ Web ็•Œ้ข๏ผŒๆ”ฏๆŒๆกŒ้ขๅ’Œ็งปๅŠจ่ฎพๅค‡

ๆŠ€ๆœฏๆ ˆ

็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    HTTP    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Web ๆต่งˆๅ™จ     โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  Next.js ๆœๅŠก   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                WebSocketโ”‚
                                        โ–ผ
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚ WebSocket ไปฃ็†  โ”‚
                              โ”‚ (websockify.ts) โ”‚
                              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                        โ”‚
                                TCP/VNCโ”‚
                                        โ–ผ
                              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚ Docker ๅฎนๅ™จ    โ”‚
                              โ”‚ (Ubuntu XFCE)  โ”‚
                              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

้กน็›ฎ็ป“ๆž„

.
โ”œโ”€โ”€ server/                 # ๆœๅŠกๅ™จ็ซฏไปฃ็ 
โ”‚   โ””โ”€โ”€ websockify.ts       # WebSocket ๅˆฐ TCP ็š„ไปฃ็†ๆœๅŠก
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ app/
โ”‚       โ”œโ”€โ”€ [container]/    # ๅฎนๅ™จ่ฏฆๆƒ…้กต้ข๏ผˆๅŠจๆ€่ทฏ็”ฑ๏ผ‰
โ”‚       โ”‚   โ””โ”€โ”€ page.tsx    # VNC ่ฟžๆŽฅ้กต้ข
โ”‚       โ”œโ”€โ”€ actions/        # Server Actions
โ”‚       โ”‚   โ””โ”€โ”€ docker.ts   # Docker ๅฎนๅ™จๆ“ไฝœ
โ”‚       โ”œโ”€โ”€ globals.css     # ๅ…จๅฑ€ๆ ทๅผ
โ”‚       โ”œโ”€โ”€ layout.tsx      # ๆ นๅธƒๅฑ€
โ”‚       โ””โ”€โ”€ page.tsx        # ไธป้กต๏ผˆๅฎนๅ™จ็ฎก็†๏ผ‰
โ”œโ”€โ”€ next.config.ts          # Next.js ้…็ฝฎ
โ”œโ”€โ”€ package.json            # ้กน็›ฎไพ่ต–ๅ’Œ่„šๆœฌ
โ””โ”€โ”€ tsconfig.json           # TypeScript ้…็ฝฎ

ๅฟซ้€Ÿๅผ€ๅง‹

็Žฏๅขƒ่ฆๆฑ‚

  • Node.js (ๆŽจ่ 18.x ๆˆ–ๆ›ด้ซ˜็‰ˆๆœฌ)
  • Docker (็”จไบŽ่ฟ่กŒๅฎนๅ™จ)
  • npm, yarn, pnpm ๆˆ– bun (็”จไบŽไพ่ต–็ฎก็†)

ๅฎ‰่ฃ…ไพ่ต–

npm install
# ๆˆ–
yarn install
# ๆˆ–
pnpm install
# ๆˆ–
bun install

่ฟ่กŒๅผ€ๅ‘ๆœๅŠกๅ™จ

npm run dev
# ๆˆ–
yarn dev
# ๆˆ–
pnpm dev
# ๆˆ–
bun dev

ๆ‰“ๅผ€ http://localhost:3000 ๆŸฅ็œ‹ๅบ”็”จใ€‚

ๅŒๆ—ถ้œ€่ฆๅฏๅŠจ WebSocket ไปฃ็†ๆœๅŠก๏ผš

npx tsx server/websockify.ts

ๆž„ๅปบ็”Ÿไบง็‰ˆๆœฌ

npm run build
# ๆˆ–
yarn build
# ๆˆ–
pnpm build
# ๆˆ–
bun build

ๅฏๅŠจ็”ŸไบงๆœๅŠกๅ™จ

npm run start
# ๆˆ–
yarn start
# ๆˆ–
pnpm start
# ๆˆ–
bun start

ไฝฟ็”จ่ฏดๆ˜Ž

  1. ๅœจไธป้กตไธŠ่พ“ๅ…ฅๅฎนๅ™จๅ็งฐๅนถ็‚นๅ‡ป"ๅˆ›ๅปบๅฎนๅ™จ"
  2. ็ญ‰ๅพ…ๅฎนๅ™จๅˆ›ๅปบๅ’ŒๅฏๅŠจๅฎŒๆˆ๏ผˆๅฏ่ƒฝ้œ€่ฆไธ€ไบ›ๆ—ถ้—ด๏ผ‰
  3. ็‚นๅ‡ปๅฎนๅ™จๅ็งฐ่ฟ›ๅ…ฅ VNC ่ฟžๆŽฅ้กต้ข
  4. ็ณป็ปŸๅฐ†่‡ชๅŠจ่ฟžๆŽฅๅˆฐๅฎนๅ™จ็š„ๆกŒ้ข็Žฏๅขƒ
  5. ๅฏไปฅไฝฟ็”จ้กต้ขๅบ•้ƒจ็š„ๆŒ‰้’ฎๆ–ญๅผ€ๆˆ–้‡ๆ–ฐ่ฟžๆŽฅ

ๅญฆไน ่ต„ๆบ

ไฝ ๅฏไปฅๆŸฅ็œ‹ GitHub ไป“ๅบ“ - ๆฌข่ฟŽๆไพ›ๅ้ฆˆๅ’Œ่ดก็Œฎ๏ผ

่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎไฝฟ็”จ MIT ่ฎธๅฏ่ฏ๏ผŒ่ฏฆๆƒ…่ฏทๆŸฅ็œ‹ LICENSE ๆ–‡ไปถใ€‚

Releases

No releases published

Packages

 
 
 

Contributors