logo
0
0
WeChat Login

OneClickVirt Virtualization Management Platform

Build and Release oneclickvirt

Build and Push Docker Images

Integration Tests

FOSSA Status FOSSA Status

An extensible universal virtualization management platform that supports LXD, Incus, Docker, Podman, Containerd, Proxmox VE, QEMU/KVM, and KubeVirt.

Language

English Docs | 中文文档

Detailed Description

www.spiritlhl.net

Integration Test Report

The automated integration test report is available at: oneclickvirt.github.io/oneclickvirt

The report supports bilingual display (Chinese/English) and light/dark theme switching, covering 200+ API endpoint tests including functional, permission, boundary, and security tests. See action_tests/ for details.

Supported Virtualization Platforms

Type IDPlatformInstance TypesRepository
lxdLXDcontainer, vmoneclickvirt/lxd
incusIncuscontainer, vmoneclickvirt/incus
dockerDockercontaineroneclickvirt/docker
podmanPodmancontaineroneclickvirt/podman
containerdContainerd (nerdctl)containeroneclickvirt/containerd
proxmoxProxmox VEcontainer, vmoneclickvirt/pve
qemuQEMUvmoneclickvirt/qemu
kubevirtKubeVirtvmoneclickvirt/kubevirt

Quick Deployment

Avoid compiling from source whenever possible. We recommend deploying using separate binary files or directly pulling the Docker image for deployment.

Method 1: Using Pre-built Images

Use pre-built multi-architecture images that automatically downloads the appropriate version for your system architecture.

Image Tags:

Image TagDescriptionUse Case
spiritlhl/oneclickvirt:latestAll-in-one version (built-in database)Quick deployment
spiritlhl/oneclickvirt:20260417All-in-one version with specific dateFixed version requirement
spiritlhl/oneclickvirt:no-dbStandalone database versionWithout database
spiritlhl/oneclickvirt:no-db-20260417Standalone database version with dateWithout database

All images support both linux/amd64 and linux/arm64 architectures.

View All-in-One Version (Built-in Database)

Basic Usage (without domain configuration):

docker run -d \ --name oneclickvirt \ -p 80:80 \ -v oneclickvirt-data:/var/lib/mysql \ -v oneclickvirt-storage:/app/storage \ --restart unless-stopped \ spiritlhl/oneclickvirt:latest

Configure Domain Access:

If you need to configure a domain, set the FRONTEND_URL environment variable:

docker run -d \ --name oneclickvirt \ -p 80:80 \ -e FRONTEND_URL="https://your-domain.com" \ -v oneclickvirt-data:/var/lib/mysql \ -v oneclickvirt-storage:/app/storage \ --restart unless-stopped \ spiritlhl/oneclickvirt:latest

Or using GitHub Container Registry:

docker run -d \ --name oneclickvirt \ -p 80:80 \ -e FRONTEND_URL="https://your-domain.com" \ -v oneclickvirt-data:/var/lib/mysql \ -v oneclickvirt-storage:/app/storage \ --restart unless-stopped \ ghcr.io/oneclickvirt/oneclickvirt:latest
View Standalone Database Version

Use external database for smaller image size and faster startup:

docker run -d \ --name oneclickvirt \ -p 80:80 \ -e FRONTEND_URL="https://your-domain.com" \ -e DB_HOST="your-mysql-host" \ -e DB_PORT="3306" \ -e DB_NAME="oneclickvirt" \ -e DB_USER="root" \ -e DB_PASSWORD="your-password" \ -v oneclickvirt-storage:/app/storage \ --restart unless-stopped \ spiritlhl/oneclickvirt:no-db

Environment Variables:

  • FRONTEND_URL: Frontend access URL (required, supports http/https)
  • DB_HOST: Database host address
  • DB_PORT: Database port (default 3306)
  • DB_NAME: Database name
  • DB_USER: Database username
  • DB_PASSWORD: Database password

Note: FRONTEND_URL is used to configure the frontend access address, affecting features like CORS and OAuth2 callbacks. The system will automatically detect HTTP/HTTPS protocol and adjust configurations accordingly. The protocol prefix can be either http or https.

Method 2: Using Docker Compose

View Docker Compose Deployment

Use Docker Compose to deploy the complete development environment with one command, using multi-container deployment architecture with separate frontend, backend, and database containers:

git clone https://github.com/oneclickvirt/oneclickvirt.git cd oneclickvirt docker-compose up -d --build || docker compose up -d --build

Default Configuration:

  • Frontend service: http://localhost:8888
  • Backend API: Accessed via frontend proxy
  • MySQL Database: Port 3306, database name oneclickvirt, no password
  • Data persistence:
    • Database data: ./data/mysql
    • Application storage: ./data/app/

Initialization Configuration:

When accessing for the first time, you will enter the initialization interface. Please fill in the database configuration as follows:

  • Database Host: mysql (container name, not 127.0.0.1)
  • Database Port: 3306
  • Database Name: oneclickvirt
  • Database User: root
  • Database Password: Leave empty (no password)

Custom Port (Optional):

To modify the frontend access port, edit the ports configuration in docker-compose.yaml:

services: web: ports: - "your-port:80" # e.g., "80:80" or "8080:80"

Stop Services:

docker-compose down

View Logs:

docker-compose logs -f

Clean Data:

docker-compose down rm -rf ./data

Method 3: Build from Source

View Build Instructions

If you need to modify the source code or build custom images:

All-in-One Version (Built-in Database):

git clone https://github.com/oneclickvirt/oneclickvirt.git cd oneclickvirt docker build -t oneclickvirt . docker run -d \ --name oneclickvirt \ -p 80:80 \ -v oneclickvirt-data:/var/lib/mysql \ -v oneclickvirt-storage:/app/storage \ --restart unless-stopped \ oneclickvirt

Standalone Database Version:

git clone https://github.com/oneclickvirt/oneclickvirt.git cd oneclickvirt docker build -f Dockerfile.no-db -t oneclickvirt:no-db . docker run -d \ --name oneclickvirt \ -p 80:80 \ -e FRONTEND_URL="https://your-domain.com" \ -e DB_HOST="your-mysql-host" \ -e DB_PORT="3306" \ -e DB_NAME="oneclickvirt" \ -e DB_USER="root" \ -e DB_PASSWORD="your-password" \ -v oneclickvirt-storage:/app/storage \ --restart unless-stopped \ oneclickvirt:no-db

Development and Testing

View Development Setup

Environment Requirements

  • Go 1.24.5
  • Node.js 22+
  • MySQL 5.7+
  • npm or yarn

Environment Deployment

  1. Build frontend
cd web npm i npm run serve
  1. Build backend
cd server go mod tidy go run main.go
  1. In development mode, there's no need to proxy the backend, as Vite already includes backend proxy requests.

  2. Create an empty database named oneclickvirt in MySQL, and record the corresponding account and password.

  3. Access the frontend address, which will automatically redirect to the initialization interface. Fill in the database information and related details, then click initialize.

  4. After completing initialization, it will automatically redirect to the homepage, and you can start development and testing.

Local Development

Default Accounts

After system initialization, the following default accounts will be generated:

  • Administrator account: admin / Admin123!@#

Tip: Please change the default passwords immediately after first login.

Configuration File

The main configuration file is located at server/config.yaml

Thanks

Thank the following platforms for providing testing:

zmto fossvps ibm

LICENSE

FOSSA Status

Demo Screenshots