mirror of
https://github.com/sipeed/NanoKVM.git
synced 2026-09-11 00:22:56 -05:00
Layer the frontend toolchain on top of the existing release builder image so a single container covers Go, C support-layer and web development, with the builder image remaining the single source of truth for the cross toolchain, Go and MaixCDK. - Mount the workspace at /home/build/NanoKVM, where the Makefile and support/sg2002/build expect it, and resync MaixCDK components via update_lib on create so C builds never use stale sources - Install Node from official dist tarballs (integrity-checked, pinned to the major used by CI), with NODE_DIST_MIRROR / NPM_REGISTRY / BASE_IMAGE build args for restrictive or mirrored corporate networks - Export the MaixCDK virtualenv via remoteEnv so non-interactive processes (tasks, extensions, exec) get it too; make updateRemoteUserUID explicit since the published builder image bakes the CI runner's uid - Run pnpm non-interactively during post-create (no TTY) and give the skeleton-less home a standard ~/.profile -> ~/.bashrc chain - Make the web toolchain convention explicit via package.json engines (Node >= 22, pnpm >= 11, matching CI) and document it in web/README - Document the dev container in the README, point server/README at the container flow that works on any host OS, and ignore .pnpm-store/
66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# NanoKVM Frontend
|
||
|
||
This is NanoKVM web project. For more documentation, please refer to the [Wiki](https://wiki.sipeed.com/nanokvm).
|
||
|
||
## Structure
|
||
|
||
```shell
|
||
src
|
||
├── api // backend api
|
||
├── assets // static resources
|
||
├── components // public components
|
||
├── i18n // language resources
|
||
├── jotai // Global jotai variables
|
||
├── lib // util libs
|
||
├── pages // web pages
|
||
│ ├── auth // login and password
|
||
│ ├── desktop // remote desktop
|
||
│ └── terminal // web terminal
|
||
├── router.tsx // routers
|
||
└── types // types
|
||
```
|
||
|
||
## Local Development
|
||
|
||
Requirements: Node.js >= 22 and pnpm >= 11 (the versions CI uses; enforced via the `engines` field in `package.json`).
|
||
|
||
> Development requires SSH. You can enable it in the Web Settings: `Settings > SSH`.
|
||
|
||
Due to CORS restrictions, authentication needs to be disabled during local development.
|
||
|
||
To develop authentication features, you need to build the project and test in NanoKVM.
|
||
|
||
1. Log in to NanoKVM via SSH: `ssh root@your-nanokvm-ip` (default password is root).
|
||
2. Open the configuration file `/etc/kvm/server.yaml/` and add `authentication: disable`. ⚠️CAUTION: This option disables all authentication and should NOT be enabled in production environment!
|
||
3. Restart the service: `/etc/init.d/S95nanokvm restart`.
|
||
4. Edit the `.env.development` file and change `VITE_SERVER_IP` to your NanoKVM IP address.
|
||
5. Run `pnpm dev` to start the server and visit http://localhost:3001/ in browser.
|
||
|
||
|
||
It's recommended to disable browser caching to avoid access issues during development:
|
||
|
||
1. Open the browser Developer Tools;
|
||
2. Go to the `Network` tab;
|
||
3. Check `Disable cache` option;
|
||
4. Refresh the page.
|
||
|
||
## Deployment
|
||
|
||
Build:
|
||
|
||
```shell
|
||
cd web
|
||
pnpm install
|
||
pnpm build
|
||
```
|
||
|
||
1. After the compilation is complete, the `dist` folder will be generated.
|
||
2. Rename the folder to `web`.
|
||
3. Upload `web` to `/kvmapp/server/` in NanoKVM.
|
||
4. Restart the service by executing `/etc/init.d/S95nanokvm restart` in NanoKVM.
|
||
|
||
Tips:
|
||
|
||
1. File uploads requires SSH. You can enable it in the Web Settings: `Settings > SSH`.
|
||
2. Browser may have old version cache. If you can't open the page, try a force refresh or clear the cache.
|