mirror of
https://github.com/oneclickvirt/oneclickvirt.github.io.git
synced 2026-05-30 23:36:12 +08:00
70 lines
90 KiB
HTML
70 lines
90 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>WebVirtCloud Installation Guide | One Click Virtualization</title>
|
||
<meta name="description" content="Open source, easy to use server virtualization project">
|
||
<link rel="preload stylesheet" href="/assets/style.e150f059.css" as="style">
|
||
|
||
<script type="module" src="/assets/app.7da1868b.js"></script>
|
||
<link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
|
||
<link rel="modulepreload" href="/assets/chunks/framework.70afa331.js">
|
||
<link rel="modulepreload" href="/assets/chunks/theme.b9d97670.js">
|
||
<link rel="modulepreload" href="/assets/en_incomplete_webvirtcloud.md.03c21299.lean.js">
|
||
<link rel="icon" href="https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png">
|
||
<meta name="google-site-verification" content="wdrGBim_2XmtMrqxivze70saMiPQAiOhpmN3KAWb0Sw">
|
||
<meta name="msvalidate.01" content="FC9B6B8BEB3D3B56844ADA69766DBB24">
|
||
<script src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5991535488582679" crossorigin="anonymous"></script>
|
||
<script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||
</head>
|
||
<body>
|
||
<div id="app"><div class="Layout" data-v-255ec12d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-ae3e3f51></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-ae3e3f51> Skip to content </a><!--]--><!----><header class="VPNav" data-v-255ec12d data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-faa4ef78><div class="container" data-v-faa4ef78><div class="title" data-v-faa4ef78><div class="VPNavBarTitle has-sidebar" data-v-faa4ef78 data-v-8bbac535><a class="title" href="/en/" data-v-8bbac535><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png" alt data-v-6db2186b><!--]--><!--[-->One Click Virtualization<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-faa4ef78><div class="curtain" data-v-faa4ef78></div><div class="content-body" data-v-faa4ef78><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:'Meta';" data-v-faa4ef78><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-faa4ef78 data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/" tabindex="0" data-v-7f418b0f data-v-5e623618><!--[-->One Click Virtualization<!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en/incomplete/index.html" tabindex="0" data-v-7f418b0f data-v-5e623618><!--[-->Other Virtualization Projects<!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://spiders.spiritlhl.net/" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-5e623618><!--[-->VPS Stock Monitor<!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://beta.spiritlhl.net/" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-5e623618><!--[-->VPS Test Archive<!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-faa4ef78 data-v-74abcbb9 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-764effdf><span class="text" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="option-icon" data-v-764effdf><path d="M0 0h24v24H0z" fill="none"></path><path d=" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z " class="css-c4d79v"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-764effdf><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="items" data-v-74abcbb9><p class="title" data-v-74abcbb9>English</p><!--[--><div class="VPMenuLink" data-v-74abcbb9 data-v-2f2cfafc><a class="VPLink link" href="/incomplete/webvirtcloud.html" data-v-2f2cfafc><!--[-->简体中文<!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-faa4ef78 data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-faa4ef78 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/oneclickvirt/oneclickvirt.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-faa4ef78 data-v-40855f84 data-v-764effdf><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-764effdf><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-764effdf><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-764effdf><div class="VPMenu" data-v-764effdf data-v-e7ea1737><!----><!--[--><!--[--><div class="group translations" data-v-40855f84><p class="trans-title" data-v-40855f84>English</p><!--[--><div class="VPMenuLink" data-v-40855f84 data-v-2f2cfafc><a class="VPLink link" href="/incomplete/webvirtcloud.html" data-v-2f2cfafc><!--[-->简体中文<!--]--></a></div><!--]--></div><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-40855f84 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-40855f84><div class="item social-links" data-v-40855f84><div class="VPSocialLinks social-links-list" data-v-40855f84 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/oneclickvirt/oneclickvirt.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-faa4ef78 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-255ec12d data-v-5cfd5582><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-5cfd5582><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-5cfd5582><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-5cfd5582>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-5cfd5582 data-v-d5bb9d56><button data-v-d5bb9d56>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-255ec12d data-v-845b8fc6><div class="curtain" data-v-845b8fc6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-845b8fc6><span class="visually-hidden" id="sidebar-aria-label" data-v-845b8fc6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 has-active" data-v-845b8fc6 data-v-4fbabd82><div class="item" role="button" tabindex="0" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><h2 class="text" data-v-4fbabd82>Other Virtualization Projects</h2><!----></div><div class="items" data-v-4fbabd82><!--[--><div class="VPSidebarItem level-1 is-link is-active has-active" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/webvirtcloud.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>webvirtcloud</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/webvirtcloud_retspen.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>webvirtcloud_retspen</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/pterodactyl.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>pterodactyl</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/convoy.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>convoy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/cockpit.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>cockpit</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/virtfusion.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>virtfusion</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/virtualizor-docker.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>virtualizor-docker</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/bashvm.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>bashvm</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-4fbabd82 data-v-4fbabd82><div class="item" data-v-4fbabd82><div class="indicator" data-v-4fbabd82></div><a class="VPLink link link" href="/en/incomplete/webvirtmgr.html" data-v-4fbabd82><!--[--><p class="text" data-v-4fbabd82>webvirtmgr</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-255ec12d data-v-3107c4ee><div class="VPDoc has-sidebar has-aside" data-v-3107c4ee data-v-6b87e69f><!--[--><!--]--><div class="container" data-v-6b87e69f><div class="aside" data-v-6b87e69f><div class="aside-curtain" data-v-6b87e69f></div><div class="aside-container" data-v-6b87e69f><div class="aside-content" data-v-6b87e69f><div class="VPDocAside" data-v-6b87e69f data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-b0ff2abe><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-6b87e69f><div class="content-container" data-v-6b87e69f><!--[--><!--]--><!----><main class="main" data-v-6b87e69f><div style="position:relative;" class="vp-doc _en_incomplete_webvirtcloud" data-v-6b87e69f><div><h1 id="webvirtcloud-installation-guide" tabindex="-1">WebVirtCloud Installation Guide <a class="header-anchor" href="#webvirtcloud-installation-guide" aria-label="Permalink to "WebVirtCloud Installation Guide""></a></h1><p><a href="https://hits.spiritlhl.net" target="_blank" rel="noreferrer"><img src="https://hits.spiritlhl.net/webvirtcloud.svg?action=hit&title=hits&title_bg=%23555555&count_bg=%233aebee&edge_flat=false" alt="hits"></a></p><p>Repository: <a href="https://github.com/oneclickvirt/webvirtcloud" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/webvirtcloud</a></p><p>Original project repository: <a href="https://github.com/webvirtcloud/webvirtcloud" target="_blank" rel="noreferrer">https://github.com/webvirtcloud/webvirtcloud</a></p><h2 id="_1-controller-installation" tabindex="-1">1. Controller Installation <a class="header-anchor" href="#_1-controller-installation" aria-label="Permalink to "1. Controller Installation""></a></h2><h3 id="system-requirements" tabindex="-1">System Requirements <a class="header-anchor" href="#system-requirements" aria-label="Permalink to "System Requirements""></a></h3><p><strong>Minimum Requirements:</strong></p><ul><li>CPU: 1 core</li><li>Memory: 1 GB RAM</li><li>Storage: 10 GB free space</li><li>System: Debian11+, Ubuntu20.04+, Centos8+, AlmaLinux8+, RockyLinux8+</li></ul><h3 id="default-login-information" tabindex="-1">Default Login Information <a class="header-anchor" href="#default-login-information" aria-label="Permalink to "Default Login Information""></a></h3><ul><li>Username: <code>admin@webvirt.cloud</code></li><li>Password: <code>admin</code></li></ul><h3 id="panel-access" tabindex="-1">Panel Access <a class="header-anchor" href="#panel-access" aria-label="Permalink to "Panel Access""></a></h3><ul><li>User Panel: <code>https://192-168-0-114.nip.io</code></li><li>Admin Backend: <code>https://192-168-0-114.nip.io/admin</code></li></ul><blockquote><p><strong>Note:</strong> Replace <code>192.168.0.114</code> with your public IP to get the actual accessible address.</p></blockquote><h3 id="installation-command" tabindex="-1">Installation Command <a class="header-anchor" href="#installation-command" aria-label="Permalink to "Installation Command""></a></h3><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-slk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/webvirtcloud/main/scripts/install_webvirt_cloud.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install_webvirt_cloud.sh</span><span style="color:#A6ACCD;"> \</span></span>
|
||
<span class="line"><span style="color:#89DDFF;">&&</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install_webvirt_cloud.sh</span><span style="color:#A6ACCD;"> \</span></span>
|
||
<span class="line"><span style="color:#89DDFF;">&&</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install_webvirt_cloud.sh</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>The execution process may be stuck in the clone repository has not been moving, at this time, press ctrl + c to exit the implementation, re-execution of the installation script on the line, the Department of Docker installation is stuck in the stage of the build project.</p></div><h2 id="_2-compute-node-installation" tabindex="-1">2. Compute Node Installation <a class="header-anchor" href="#_2-compute-node-installation" aria-label="Permalink to "2. Compute Node Installation""></a></h2><blockquote><p><strong>Important:</strong> Hypervisor and Controller cannot be installed on the same virtual machine, otherwise network conflicts will occur.</p></blockquote><h3 id="system-requirements-1" tabindex="-1">System Requirements <a class="header-anchor" href="#system-requirements-1" aria-label="Permalink to "System Requirements""></a></h3><p><strong>Recommended Configuration:</strong></p><ul><li>CPU: 2 cores</li><li>Memory: 4 GB RAM</li><li>Storage: 40 GB free space</li><li>System: AlmaLinux8+, RockyLinux8+</li></ul><blockquote><p><strong>Additional Notes:</strong></p><ul><li>Higher configurations are recommended for actual use; the test environment is only sufficient for running 4 minimal virtual machines.</li><li>Servers with KVM nested virtualization support are recommended. If <code>VM-x/AMD-V/Hyper-V</code> is not enabled, it will automatically switch to QEMU using TCG emulation to set up virtual machines, though performance will be reduced.</li><li>The installation skips environment checks and uses binary files directly, so no dependencies need to be installed.</li></ul></blockquote><h3 id="environment-check" tabindex="-1">Environment Check <a class="header-anchor" href="#environment-check" aria-label="Permalink to "Environment Check""></a></h3><p>Check if the server supports KVM nested virtualization:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">goecs.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&&</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">goecs.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&&</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">./goecs.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&&</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">goecs</span></span></code></pre></div><p>Select hardware individual test</p><h3 id="compute-node-installation-steps" tabindex="-1">Compute Node Installation Steps <a class="header-anchor" href="#compute-node-installation-steps" aria-label="Permalink to "Compute Node Installation Steps""></a></h3><ol><li><p>Download the installation script:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-slk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/webvirtcloud/main/scripts/install_hypervisor.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install_hypervisor.sh</span><span style="color:#A6ACCD;"> \</span></span>
|
||
<span class="line"><span style="color:#89DDFF;">&&</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install_hypervisor.sh</span></span></code></pre></div></li><li><p>Execute installation (replace with your Controller IP):</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install_hypervisor.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">x.x.x.x</span></span></code></pre></div><blockquote><p>Replace <code>x.x.x.x</code> with the actual IP address of your Controller.</p></blockquote></li><li><p>Node Management in Panel<br> After execution, there will be prompts for information needed in the Controller panel.<br> In the panel, the Hostname to be entered is the current compute node's IPv4 address, and you need to enter the Token to identify the node.</p></li></ol><h3 id="networkmanager-version-issue" tabindex="-1">NetworkManager Version Issue <a class="header-anchor" href="#networkmanager-version-issue" aria-label="Permalink to "NetworkManager Version Issue""></a></h3><p>During installation, you may encounter the following error:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Connection 'eth0' (bed050e9-ff49-4665-8112-24ddf2a1cd3c) successfully deleted.</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">Warning: nmcli (1.48.10) and NetworkManager (1.42.2) versions don't match. Restarting NetworkManager is advised.</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;">Error: Failed to add 'br-ext' connection: connection.autoconnect-ports: unknown property</span></span></code></pre></div><p><strong>Solution:</strong> Restart the server and re-execute the installation command.</p><h3 id="installation-time-note" tabindex="-1">Installation Time Note <a class="header-anchor" href="#installation-time-note" aria-label="Permalink to "Installation Time Note""></a></h3><ul><li>The entire process takes approximately <strong>10-25 minutes</strong>.</li><li>Most of the time is spent downloading <code>finnix-125.iso</code> to <code>/var/lib/libvirt/isos/finnix-125.iso</code>.</li><li>This part cannot be accelerated, so it's <strong>recommended to use tmux or screen</strong> to prevent interruption.</li></ul><h3 id="adding-compute-node-to-control-panel" tabindex="-1">Adding Compute Node to Control Panel <a class="header-anchor" href="#adding-compute-node-to-control-panel" aria-label="Permalink to "Adding Compute Node to Control Panel""></a></h3><p>After installation, a <strong>Token</strong> will be generated for adding the compute node in the control panel (Admin panel):</p><p>Path: <code>Admin Panel > Computers > Add Computer</code></p><ul><li><code>HostName</code> should be filled with the compute node's public IPv4 address</li><li><code>Token</code> should be filled with the token key obtained on the compute node</li></ul><h2 id="_3-public-ipv4-port-mapping" tabindex="-1">3. Public IPv4 Port Mapping <a class="header-anchor" href="#_3-public-ipv4-port-mapping" aria-label="Permalink to "3. Public IPv4 Port Mapping""></a></h2><h3 id="_3-1-automatic-mapping" tabindex="-1">3.1 Automatic Mapping <a class="header-anchor" href="#_3-1-automatic-mapping" aria-label="Permalink to "3.1 Automatic Mapping""></a></h3><p>Automatic mapping features:</p><ul><li><strong>Automatic Monitoring</strong>: Real-time monitoring of virtual machine status changes, automatically applying or cleaning up port mapping rules</li><li><strong>Intelligent Port Allocation</strong>: Automatically calculating and allocating non-conflicting ports based on VM IP addresses</li><li><strong>Rule Persistence</strong>: Using firewall-cmd to ensure port mapping rules remain effective after host restart</li><li><strong>Mapping Records</strong>: Automatically maintaining mapping information records for easy viewing and management</li><li><strong>Conflict Prevention</strong>: Intelligently detecting and avoiding port conflicts, ensuring each VM has unique port mappings</li></ul><h4 id="installation-method" tabindex="-1">Installation Method <a class="header-anchor" href="#installation-method" aria-label="Permalink to "Installation Method""></a></h4><ol><li><p>Download the script to a temporary directory:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-O</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/tmp/vm_port_mapping_setup.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/webvirtcloud/refs/heads/main/extra_scripts/vm_port_mapping_daemon.sh</span></span></code></pre></div></li><li><p>Add execution permission:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/tmp/vm_port_mapping_setup.sh</span></span></code></pre></div></li><li><p>Run the installer:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">/tmp/vm_port_mapping_setup.sh</span></span></code></pre></div></li></ol><p>The script will automatically complete the following operations:</p><ul><li>Copy itself to the system directory <code>/usr/local/sbin/vm_port_mapping_daemon.sh</code></li><li>Create a systemd service unit file</li><li>Enable and start the service</li></ul><h4 id="port-mapping-rules" tabindex="-1">Port Mapping Rules <a class="header-anchor" href="#port-mapping-rules" aria-label="Permalink to "Port Mapping Rules""></a></h4><p>The daemon will assign the following ports for each virtual machine:</p><ol><li><p><strong>SSH Port</strong>:</p><ul><li>Calculation formula: <code>(Last segment of IP) × 100 + 22 + 10000</code></li><li>Example: For IP address 192.168.33.114, the mapped SSH port is 114×100+22+10000 = 21422</li></ul></li><li><p><strong>Extra Ports</strong>:</p><ul><li>10 additional ports are allocated for each VM</li><li>Starting port: 20000 + (Last segment of IP) × 100</li><li>Ending port: Starting port + 9</li><li>Example: For IP address 192.168.33.114, extra port range is 20000+(114×100) to 20000+(114×100)+9</li></ul></li></ol><p>If the calculated port is already occupied, the program will automatically find the next available port to ensure no conflicts occur.</p><h4 id="mapping-file" tabindex="-1">Mapping File <a class="header-anchor" href="#mapping-file" aria-label="Permalink to "Mapping File""></a></h4><p>All port mapping information is saved in the <code>/etc/vm_port_mapping/mapping.txt</code> file, in the format:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">VM name IP address MAC address SSH mapped port Extra ports start Extra ports end</span></span></code></pre></div><p>For example:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Virtance-1 192.168.33.114 52:54:00:5f:77:92 21422 31400 31409</span></span></code></pre></div><h4 id="service-management" tabindex="-1">Service Management <a class="header-anchor" href="#service-management" aria-label="Permalink to "Service Management""></a></h4><ul><li><p><strong>Check service status</strong>:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">status</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li><li><p><strong>Start service</strong>:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li><li><p><strong>Stop service</strong>:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li><li><p><strong>Disable auto-start</strong>:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li><li><p><strong>View logs</strong>:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">journalctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-u</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span>
|
||
<span class="line"><span style="color:#676E95;font-style:italic;"># or</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/var/log/vm_port_mapping.log</span></span></code></pre></div></li><li><p><strong>Manually trigger rule update</strong>:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restart</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li></ul><h4 id="common-issues" tabindex="-1">Common Issues <a class="header-anchor" href="#common-issues" aria-label="Permalink to "Common Issues""></a></h4><h5 id="port-mapping-not-working" tabindex="-1">Port mapping not working <a class="header-anchor" href="#port-mapping-not-working" aria-label="Permalink to "Port mapping not working""></a></h5><p>Check the following:</p><ul><li>Confirm the service is running: <code>systemctl status vm-port-mapping</code></li><li>Check the log file: <code>cat /var/log/vm_port_mapping.log</code></li><li>Ensure the firewall service is normal: <code>systemctl status firewalld</code></li><li>Verify VM network interface configuration: <code>virsh domiflist VM-name</code></li></ul><h5 id="manually-adding-mapping-rules" tabindex="-1">Manually adding mapping rules <a class="header-anchor" href="#manually-adding-mapping-rules" aria-label="Permalink to "Manually adding mapping rules""></a></h5><p>Usually, manual addition of rules is not needed, but if necessary:</p><ol><li><p>Stop the service:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li><li><p>Edit the mapping file:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">nano</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/vm_port_mapping/mapping.txt</span></span></code></pre></div></li><li><p>Start the service:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span></code></pre></div></li></ol><h5 id="cleaning-all-rules" tabindex="-1">Cleaning all rules <a class="header-anchor" href="#cleaning-all-rules" aria-label="Permalink to "Cleaning all rules""></a></h5><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/vm_port_mapping/mapping.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">while</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">read</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm_name</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ip_address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mac</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ssh_port</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">port_start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">port_end</span><span style="color:#89DDFF;">;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">do</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">firewall-cmd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--permanent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--remove-forward-port=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">port=</span><span style="color:#A6ACCD;">$ssh_port</span><span style="color:#C3E88D;">:proto=tcp:toport=22:toaddr=</span><span style="color:#A6ACCD;">$ip_address</span><span style="color:#89DDFF;">"</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">((</span><span style="color:#A6ACCD;">port</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">port_start; port</span><span style="color:#89DDFF;"><=</span><span style="color:#A6ACCD;">port_end; port</span><span style="color:#89DDFF;">++));</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">do</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">firewall-cmd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--permanent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--remove-forward-port=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">port=</span><span style="color:#A6ACCD;">$port</span><span style="color:#C3E88D;">:proto=tcp:toport=</span><span style="color:#A6ACCD;">$port</span><span style="color:#C3E88D;">:toaddr=</span><span style="color:#A6ACCD;">$ip_address</span><span style="color:#89DDFF;">"</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">done</span></span>
|
||
<span class="line"><span style="color:#89DDFF;font-style:italic;">done</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">firewall-cmd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--reload</span></span></code></pre></div><h5 id="security-recommendations" tabindex="-1">Security Recommendations <a class="header-anchor" href="#security-recommendations" aria-label="Permalink to "Security Recommendations""></a></h5><ul><li>Regularly check mapping files and logs to ensure there are no unauthorized mappings</li><li>Do not manually modify files in the <code>/etc/vm_port_mapping/</code> directory unless you fully understand the impact</li><li>Make sure the <code>firewalld</code> service is running properly so that rules can be correctly persisted</li></ul><h4 id="uninstallation-method" tabindex="-1">Uninstallation Method <a class="header-anchor" href="#uninstallation-method" aria-label="Permalink to "Uninstallation Method""></a></h4><p>To uninstall this service:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vm-port-mapping</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/systemd/system/vm-port-mapping.service</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/usr/local/sbin/vm_port_mapping_daemon.sh</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-rf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/vm_port_mapping</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">daemon-reload</span></span></code></pre></div><h3 id="_3-2-manual-mapping" tabindex="-1">3.2 Manual Mapping <a class="header-anchor" href="#_3-2-manual-mapping" aria-label="Permalink to "3.2 Manual Mapping""></a></h3><p>Assume your virtual machine is shown in the user control panel as</p><p><img src="/assets/wv1.5ac4a026.png" alt="wv1"></p><p>and the host machine command <code>ip a | head -n 15</code> result is</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">1:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lo:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;"><</span><span style="color:#C3E88D;">LOOPBACK,UP,LOWER_U</span><span style="color:#A6ACCD;">P</span><span style="color:#89DDFF;">></span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mtu</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">65536</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">qdisc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">noqueue</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">state</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">UNKNOWN</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">group</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">default</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">qlen</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1000</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">link/loopback</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">00</span><span style="color:#C3E88D;">:00:00:00:00:00</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">brd</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">00</span><span style="color:#C3E88D;">:00:00:00:00:00</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">inet</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">127.0</span><span style="color:#C3E88D;">.0.1/8</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">scope</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">host</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lo</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">valid_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">preferred_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">inet6</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">::1/128</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">scope</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">host</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">valid_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">preferred_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">2:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ens3:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;"><</span><span style="color:#C3E88D;">BROADCAST,MULTICAST,UP,LOWER_U</span><span style="color:#A6ACCD;">P</span><span style="color:#89DDFF;">></span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mtu</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1500</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">qdisc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">fq_codel</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">state</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">UP</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">group</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">default</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">qlen</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1000</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">link/ether</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">52</span><span style="color:#C3E88D;">:54:00:f1:d6:8b</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">brd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ff:ff:ff:ff:ff:ff</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">altname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enp0s3</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">inet</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">your_public_IPv4_address/corresponding_subnet_mask</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">scope</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">global</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">noprefixroute</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ens3</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">valid_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">preferred_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">inet6</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span><span style="color:#C3E88D;">a0b:4140:4c60::2/48</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">scope</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">global</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">noprefixroute</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">valid_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">preferred_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">inet6</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">fe80::5054:ff:fef1:d68b/64</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">scope</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">link</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">noprefixroute</span></span>
|
||
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">valid_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">preferred_lft</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">forever</span></span></code></pre></div><p>It's evident that the public IPv4 address is bound to the <code>ens3</code> interface, so we'll use <code>ens3</code> in the following commands.</p><p>To map the current VM's port 22 to the public IPv4's port 3322, use:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># Add DNAT rule: Forward public 3322 traffic to host local 192.168.33.130:22</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">iptables</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-A</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PREROUTING</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ens3</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">tcp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dport</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3322</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-j</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">DNAT</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--to-destination</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">192.168</span><span style="color:#C3E88D;">.33.130:22</span></span>
|
||
<span class="line"><span style="color:#676E95;font-style:italic;"># Add POSTROUTING: Local NAT masquerading for normal return connections</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">iptables</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-A</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">POSTROUTING</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">tcp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">192.168</span><span style="color:#C3E88D;">.33.130</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dport</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">22</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-j</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">MASQUERADE</span></span>
|
||
<span class="line"><span style="color:#676E95;font-style:italic;"># Need to allow INPUT port 3322 through (firewalld is enabled by default)</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">iptables</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-I</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">INPUT</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">tcp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dport</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3322</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-j</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ACCEPT</span></span></code></pre></div><p>This way, the internal virtual machine is mapped out and can be remotely logged in directly.</p><h2 id="_4-troubleshooting" tabindex="-1">4. Troubleshooting <a class="header-anchor" href="#_4-troubleshooting" aria-label="Permalink to "4. Troubleshooting""></a></h2><h3 id="compute-node-addition-error-troubleshooting" tabindex="-1">Compute Node Addition Error Troubleshooting <a class="header-anchor" href="#compute-node-addition-error-troubleshooting" aria-label="Permalink to "Compute Node Addition Error Troubleshooting""></a></h3><p>Execute on the Controller:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">telnet</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;"><</span><span style="color:#C3E88D;">node</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">i</span><span style="color:#A6ACCD;">p</span><span style="color:#89DDFF;">></span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">8884</span></span></code></pre></div><p>Execute on the compute node:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">status</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">webvirtcompute</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">status</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">libvirtd</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">status</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">prometheus</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">status</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">prometheus-libvirt-exporter</span></span></code></pre></div><p>If none of the above reveals the problem, then you need to execute on the Controller:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">exec</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-it</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">webvirtcloud-backend</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/bin/sh</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">vi</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">webvirtcloud/settings/production.py</span></span></code></pre></div><p>Change <code>DEBUG=False</code> to <code>DEBUG=True</code>, save the file, then execute in the container:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">UV_PROJECT_ENVIRONMENT</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">/usr/local</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">uv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">sync</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--dev</span></span></code></pre></div><p>Then <code>exit</code> the container and execute:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restart</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">webvirtcloud-backend</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">sleep</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span></span>
|
||
<span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">logs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">webvirtcloud-backend</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span></span></code></pre></div><p>Then trigger the error in the frontend, and you'll see the corresponding error in the real-time loaded logs.</p><h3 id="docker-containers-not-auto-restarting-after-controller-reboot" tabindex="-1">Docker Containers Not Auto-Restarting After Controller Reboot <a class="header-anchor" href="#docker-containers-not-auto-restarting-after-controller-reboot" aria-label="Permalink to "Docker Containers Not Auto-Restarting After Controller Reboot""></a></h3><p>If Docker containers don't automatically restart after system reboot, execute:</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">docker</span><span style="color:#C3E88D;"> ps -a -q</span><span style="color:#89DDFF;">)</span></span></code></pre></div><h2 id="_5-drawbacks" tabindex="-1">5. Drawbacks <a class="header-anchor" href="#_5-drawbacks" aria-label="Permalink to "5. Drawbacks""></a></h2><p>System images are hard-coded; you can't use your own custom images, nor export them for use.</p><p>This is not the same project as <a href="https://github.com/retspen/webvirtcloud" target="_blank" rel="noreferrer">https://github.com/retspen/webvirtcloud</a>, don't confuse them.</p><h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to "Acknowledgements""></a></h2><p><a href="https://webvirt.cloud/" target="_blank" rel="noreferrer">https://webvirt.cloud/</a></p></div></div></main><footer class="VPDocFooter" data-v-6b87e69f data-v-37656e44><!--[--><!--]--><div class="edit-info" data-v-37656e44><div class="edit-link" data-v-37656e44><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/oneclickvirt/oneclickvirt.github.io/edit/main/docs/en/incomplete/webvirtcloud.md" target="_blank" rel="noreferrer" data-v-37656e44><!--[--><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" class="edit-link-icon" aria-label="edit icon" data-v-37656e44><path d="M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"></path><path d="M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"></path></svg> Edit this page on GitHub<!--]--></a></div><div class="last-updated" data-v-37656e44><p class="VPLastUpdated" data-v-37656e44 data-v-149a99df>Last Updated: <time datetime="2025-05-21T02:05:12.000Z" data-v-149a99df></time></p></div></div><nav class="prev-next" data-v-37656e44><div class="pager" data-v-37656e44><!----></div><div class="pager" data-v-37656e44><a class="pager-link next" href="/en/incomplete/webvirtcloud_retspen.html" data-v-37656e44><span class="desc" data-v-37656e44>Next page</span><span class="title" data-v-37656e44>webvirtcloud_retspen</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-255ec12d data-v-e03eb2e1><div class="container" data-v-e03eb2e1><p class="message" data-v-e03eb2e1>Under <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">(CC BY-NC-SA 4.0) License.</a><br>Also thanks to <a href="https://www.cloudflare.com/">Cloudflare</a> and <a href="https://blog.tanglu.me/">tanglu.me</a> for the CDN.</p><p class="copyright" data-v-e03eb2e1>Copyright © 2022-present oneclickvirt</p></div></footer><!--[--><!--]--></div></div>
|
||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"developer_index.md\":\"02927e41\",\"case_index.md\":\"6f2be69b\",\"en_developer_l10n.md\":\"cb056302\",\"en_developer_index.md\":\"55f9fe9c\",\"en_guide_docker_docker_android.md\":\"bf6573b3\",\"case_case4.md\":\"44ac5bc0\",\"case_case5.md\":\"32d5ca73\",\"case_case3.md\":\"ad272d4a\",\"case_case2.md\":\"1e409d0f\",\"case_case7.md\":\"8305a1d9\",\"case_case1.md\":\"c29cceeb\",\"en_guide_block_block_iptables.md\":\"8864f5e7\",\"en_guide_block_block_incus.md\":\"db14d34f\",\"en_guide_block_block_lxd.md\":\"eda8ff5b\",\"en_guide_block_block_pve.md\":\"3f988789\",\"en_guide_incus_incus_custom.md\":\"92b6e165\",\"en_guide_block_block_docker.md\":\"7edc4059\",\"en_guide_dashboard.md\":\"a8354f0d\",\"en_guide_dashboardq.md\":\"bd32b3ef\",\"en_guide_docker_docker_thanks.md\":\"c825157e\",\"case_case6.md\":\"b9c67698\",\"en_guide_docker_docker_precheck.md\":\"22e94453\",\"incomplete_bashvm.md\":\"e2bf842d\",\"en_guide_docker_docker_build.md\":\"c58e2cbc\",\"guide_pve_pve_windows.md\":\"42c4ba99\",\"en_guide_docker_docker_install.md\":\"91a9ab92\",\"en_guide_docker_docker_custom.md\":\"dc763805\",\"incomplete_pterodactyl.md\":\"e097801d\",\"en_guide_docker_docker_qa.md\":\"b627a446\",\"incomplete_virtfusion.md\":\"4bf09b3a\",\"incomplete_virtualizor-docker.md\":\"3768fdc6\",\"developer_l10n.md\":\"09642d1f\",\"incomplete_webvirtcloud.md\":\"d7a6f2aa\",\"guide_block_block_pve.md\":\"94aa000f\",\"guide_dashboard.md\":\"55aac238\",\"guide_dashboardq.md\":\"c03f78f9\",\"incomplete_webvirtcloud_retspen.md\":\"50e3f0ee\",\"guide_docker_docker_android.md\":\"c625e52c\",\"incomplete_webvirtmgr.md\":\"dad12a3b\",\"guide_docker_docker_build.md\":\"61710228\",\"guide_docker_docker_custom.md\":\"c783d061\",\"en_incomplete_pterodactyl.md\":\"dc9d7112\",\"index.md\":\"d0f9f740\",\"guide_pve_pve_thanks.md\":\"2e1df72d\",\"incomplete_index.md\":\"5edc1872\",\"guide_block_block_docker.md\":\"b2b3542b\",\"en_guide_incus_incus_install.md\":\"828c43d5\",\"en_guide_incus_incus_lxc.md\":\"9a2ce5ba\",\"en_guide_lxd_lxd_extra_config.md\":\"c1a25d56\",\"incomplete_cockpit.md\":\"95d4cda3\",\"guide_incus_incus_lxc.md\":\"29a94ed3\",\"en_guide_incus_incus_precheck.md\":\"10c2f54c\",\"en_guide_pve_pve_lxc.md\":\"9b231680\",\"en_guide_incus_incus_qa.md\":\"389d80c2\",\"en_guide_incus_incus_thanks.md\":\"0bfd497b\",\"en_incomplete_bashvm.md\":\"3f5f6149\",\"en_guide_incus_incus_windows.md\":\"01314984\",\"en_guide_docker_docker_macos.md\":\"7c70cb88\",\"en_incomplete_cockpit.md\":\"253c2cff\",\"en_incomplete_convoy.md\":\"048eb6c3\",\"en_index.md\":\"b7794eb3\",\"guide_block_block_incus.md\":\"add0ffb9\",\"guide_block_block_lxd.md\":\"f9ceba42\",\"en_incomplete_webvirtmgr.md\":\"8df64769\",\"en_incomplete_webvirtcloud_retspen.md\":\"da0bbf73\",\"en_guide_pve_pve_precheck.md\":\"910b4f69\",\"guide_docker_docker_macos.md\":\"2cfbd96e\",\"en_guide_incus_incus_extra_config.md\":\"780d8e30\",\"en_incomplete_index.md\":\"78316d3b\",\"en_guide_pve_pve_qa.md\":\"58d5386f\",\"en_guide_pve_pve_thanks.md\":\"ab7de5b5\",\"en_incomplete_virtfusion.md\":\"78ca6b39\",\"en_guide_pve_pve_macos.md\":\"0971f8a3\",\"guide_docker_docker_install.md\":\"35fd7572\",\"en_incomplete_virtualizor-docker.md\":\"f28f777c\",\"en_guide_lxd_lxd_thanks.md\":\"1b4eab90\",\"guide_lxd_lxd_install.md\":\"1f6b5e06\",\"guide_lxd_lxd_custom.md\":\"c33f4b02\",\"en_guide_lxd_lxd_qa.md\":\"baaf1ab1\",\"en_guide_lxd_lxd_precheck.md\":\"3a3624ba\",\"guide_docker_docker_qa.md\":\"e5e474cb\",\"guide_lxd_lxd_extra_config.md\":\"8d3748a6\",\"guide_block_block_iptables.md\":\"e36021bc\",\"en_guide_pve_images_readme.md\":\"d01cc42d\",\"guide_lxd_lxd_lxc.md\":\"98033cb0\",\"guide_incus_incus_extra_config.md\":\"ce2b2269\",\"guide_incus_incus_install.md\":\"d404601e\",\"en_guide_pve_pve_android.md\":\"4a459137\",\"guide_lxd_lxd_thanks.md\":\"51e60662\",\"guide_pve_pve_custom.md\":\"daa02012\",\"en_guide_pve_pve_windows.md\":\"34b7add7\",\"guide_incus_incus_custom.md\":\"aa3d8f97\",\"incomplete_convoy.md\":\"2240d8a2\",\"guide_docker_docker_precheck.md\":\"c64d0ca2\",\"en_guide_lxd_lxd_custom.md\":\"59d4ba23\",\"en_guide_docker_docker_windows.md\":\"9384ee2f\",\"guide_incus_incus_precheck.md\":\"a009247b\",\"guide_incus_incus_thanks.md\":\"5e956b7d\",\"guide_docker_docker_windows.md\":\"158c1ad3\",\"guide_incus_incus_qa.md\":\"8952665a\",\"en_incomplete_webvirtcloud.md\":\"03c21299\",\"en_guide_lxd_lxd_install.md\":\"8fd3988f\",\"en_guide_lxd_lxd_lxc.md\":\"24457cbe\",\"guide_incus_incus_windows.md\":\"0e1aae64\",\"en_guide_lxd_lxd_windows.md\":\"4b19d340\",\"guide_pve_pve_android.md\":\"4a795844\",\"guide_pve_pve_macos.md\":\"abe95782\",\"en_guide_pve_pve_kvm.md\":\"3f85a11f\",\"guide_lxd_lxd_precheck.md\":\"a450e785\",\"guide_lxd_lxd_windows.md\":\"2f4c8be8\",\"en_guide_pve_pve_install.md\":\"d942f86c\",\"guide_docker_docker_thanks.md\":\"8acf19a6\",\"guide_pve_pve_install.md\":\"c7b94f71\",\"en_guide_pve_pve_custom.md\":\"8eb7ddcb\",\"guide_pve_pve_lxc.md\":\"44fd50d9\",\"guide_pve_pve_precheck.md\":\"aa68237e\",\"guide_pve_images_readme.md\":\"595e13dc\",\"guide_pve_pve_qa.md\":\"44e5bd60\",\"guide_lxd_lxd_qa.md\":\"6ecdaed4\",\"guide_pve_pve_kvm.md\":\"57daffbf\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/oneclickvirt/oneclickvirt.github.io\"}],\"algolia\":{\"appId\":\"K1R85MDU0C\",\"apiKey\":\"9375787ec1c00e2b813683fbbde25ae2\",\"indexName\":\"virt-spiritlhl\"},\"footer\":{\"message\":\"Under <a rel=\\\"license\\\" href=\\\"http://creativecommons.org/licenses/by-nc-sa/4.0/\\\">(CC BY-NC-SA 4.0) License.</a><br>Also thanks to <a href=\\\"https://www.cloudflare.com/\\\">Cloudflare</a> and <a href=\\\"https://blog.tanglu.me/\\\">tanglu.me</a> for the CDN.\",\"copyright\":\"Copyright © 2022-present oneclickvirt\"}},\"locales\":{\"root\":{\"lang\":\"zh-CN\",\"label\":\"简体中文\",\"title\":\"一键虚拟化项目\",\"description\":\"开源、易于使用的服务器虚拟化项目\",\"link\":\"/\",\"themeConfig\":{\"logo\":{\"src\":\"https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png\"},\"lastUpdatedText\":\"上次更新\",\"editLink\":{\"pattern\":\"https://github.com/oneclickvirt/oneclickvirt.github.io/edit/main/docs/:path\",\"text\":\"在GitHub中编辑\"},\"nav\":[{\"text\":\"一键虚拟化项目\",\"link\":\"/\",\"activeMatch\":\"^/$|^/guide/\"},{\"text\":\"其他虚拟化项目\",\"link\":\"/incomplete/index\",\"activeMatch\":\"^/incomplete/\"},{\"text\":\"其他实用项目\",\"link\":\"/case/index\",\"activeMatch\":\"^/case/\"},{\"text\":\"VPS余量监控\",\"link\":\"https://spiders.spiritlhl.net/\"},{\"text\":\"VPS测试存档\",\"link\":\"https://beta.spiritlhl.net/\"}],\"sidebar\":{\"/\":[{\"text\":\"所有项目的前置条件\",\"items\":[{\"text\":\"准备工作\",\"link\":\"/guide/dashboard.html\"}]},{\"text\":\"Proxmox VE\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/pve/pve_precheck.html\"},{\"text\":\"PVE主体安装\",\"link\":\"/guide/pve/pve_install.html\"},{\"text\":\"Linux虚拟机(KVM/QEMU)\",\"link\":\"/guide/pve/pve_kvm.html\"},{\"text\":\"Linux容器(LXC)\",\"link\":\"/guide/pve/pve_lxc.html\"},{\"text\":\"Windows虚拟机(KVM/QEMU)\",\"link\":\"/guide/pve/pve_windows.html\"},{\"text\":\"MacOS虚拟机(KVM)\",\"link\":\"/guide/pve/pve_macos.html\"},{\"text\":\"Android虚拟机(KVM)\",\"link\":\"/guide/pve/pve_android.html\"},{\"text\":\"自定义\",\"link\":\"/guide/pve/pve_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/pve/pve_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/pve/pve_qa.html\"}]},{\"text\":\"incus\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/incus/incus_precheck.html\"},{\"text\":\"incus主体安装\",\"link\":\"/guide/incus/incus_install.html\"},{\"text\":\"Linux容器(LXC)\",\"link\":\"/guide/incus/incus_lxc.html\"},{\"text\":\"Windows虚拟机(QEMU)\",\"link\":\"/guide/incus/incus_windows.html\"},{\"text\":\"更多配置\",\"link\":\"/guide/incus/incus_extra_config.html\"},{\"text\":\"自定义\",\"link\":\"/guide/incus/incus_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/incus/incus_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/incus/incus_qa.html\"}]},{\"text\":\"Docker\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/docker/docker_precheck.html\"},{\"text\":\"Docker主体安装\",\"link\":\"/guide/docker/docker_install.html\"},{\"text\":\"Linux系统容器(LXC)\",\"link\":\"/guide/docker/docker_build.html\"},{\"text\":\"Windows虚拟机(KVM/QEMU)\",\"link\":\"/guide/docker/docker_windows.html\"},{\"text\":\"Macos虚拟机(KVM)\",\"link\":\"/guide/docker/docker_macos.html\"},{\"text\":\"Android虚拟机(KVM/QEMU)\",\"link\":\"/guide/docker/docker_android.html\"},{\"text\":\"自定义\",\"link\":\"/guide/docker/docker_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/docker/docker_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/docker/docker_qa.html\"}]},{\"text\":\"LXD\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/lxd/lxd_precheck.html\"},{\"text\":\"LXD主体安装\",\"link\":\"/guide/lxd/lxd_install.html\"},{\"text\":\"Linux容器(LXC)\",\"link\":\"/guide/lxd/lxd_lxc.html\"},{\"text\":\"Windows虚拟机(QEMU)\",\"link\":\"/guide/lxd/lxd_windows.html\"},{\"text\":\"更多配置\",\"link\":\"/guide/lxd/lxd_extra_config.html\"},{\"text\":\"自定义\",\"link\":\"/guide/lxd/lxd_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/lxd/lxd_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/lxd/lxd_qa.html\"}]},{\"text\":\"屏蔽滥用\",\"items\":[{\"text\":\"通过iptables\",\"link\":\"/guide/block/block_iptables.html\"},{\"text\":\"在PVE上\",\"link\":\"/guide/block/block_pve.html\"},{\"text\":\"在INCUS上\",\"link\":\"/guide/block/block_incus.html\"},{\"text\":\"在LXD上\",\"link\":\"/guide/block/block_lxd.html\"},{\"text\":\"在DOCKER上\",\"link\":\"/guide/block/block_docker.html\"}]},{\"text\":\"捐赠\",\"items\":[{\"text\":\"捐赠\",\"link\":\"/guide/dashboardq.html\"}]}],\"/guide/\":[{\"text\":\"所有项目的前置条件\",\"items\":[{\"text\":\"准备工作\",\"link\":\"/guide/dashboard.html\"}]},{\"text\":\"Proxmox VE\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/pve/pve_precheck.html\"},{\"text\":\"PVE主体安装\",\"link\":\"/guide/pve/pve_install.html\"},{\"text\":\"Linux虚拟机(KVM/QEMU)\",\"link\":\"/guide/pve/pve_kvm.html\"},{\"text\":\"Linux容器(LXC)\",\"link\":\"/guide/pve/pve_lxc.html\"},{\"text\":\"Windows虚拟机(KVM/QEMU)\",\"link\":\"/guide/pve/pve_windows.html\"},{\"text\":\"MacOS虚拟机(KVM)\",\"link\":\"/guide/pve/pve_macos.html\"},{\"text\":\"Android虚拟机(KVM)\",\"link\":\"/guide/pve/pve_android.html\"},{\"text\":\"自定义\",\"link\":\"/guide/pve/pve_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/pve/pve_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/pve/pve_qa.html\"}]},{\"text\":\"incus\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/incus/incus_precheck.html\"},{\"text\":\"incus主体安装\",\"link\":\"/guide/incus/incus_install.html\"},{\"text\":\"Linux容器(LXC)\",\"link\":\"/guide/incus/incus_lxc.html\"},{\"text\":\"Windows虚拟机(QEMU)\",\"link\":\"/guide/incus/incus_windows.html\"},{\"text\":\"更多配置\",\"link\":\"/guide/incus/incus_extra_config.html\"},{\"text\":\"自定义\",\"link\":\"/guide/incus/incus_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/incus/incus_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/incus/incus_qa.html\"}]},{\"text\":\"Docker\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/docker/docker_precheck.html\"},{\"text\":\"Docker主体安装\",\"link\":\"/guide/docker/docker_install.html\"},{\"text\":\"Linux系统容器(LXC)\",\"link\":\"/guide/docker/docker_build.html\"},{\"text\":\"Windows虚拟机(KVM/QEMU)\",\"link\":\"/guide/docker/docker_windows.html\"},{\"text\":\"Macos虚拟机(KVM)\",\"link\":\"/guide/docker/docker_macos.html\"},{\"text\":\"Android虚拟机(KVM/QEMU)\",\"link\":\"/guide/docker/docker_android.html\"},{\"text\":\"自定义\",\"link\":\"/guide/docker/docker_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/docker/docker_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/docker/docker_qa.html\"}]},{\"text\":\"LXD\",\"items\":[{\"text\":\"系统和硬件配置要求\",\"link\":\"/guide/lxd/lxd_precheck.html\"},{\"text\":\"LXD主体安装\",\"link\":\"/guide/lxd/lxd_install.html\"},{\"text\":\"Linux容器(LXC)\",\"link\":\"/guide/lxd/lxd_lxc.html\"},{\"text\":\"Windows虚拟机(QEMU)\",\"link\":\"/guide/lxd/lxd_windows.html\"},{\"text\":\"更多配置\",\"link\":\"/guide/lxd/lxd_extra_config.html\"},{\"text\":\"自定义\",\"link\":\"/guide/lxd/lxd_custom.html\"},{\"text\":\"致谢\",\"link\":\"/guide/lxd/lxd_thanks.html\"},{\"text\":\"常见问题答疑\",\"link\":\"/guide/lxd/lxd_qa.html\"}]},{\"text\":\"屏蔽滥用\",\"items\":[{\"text\":\"通过iptables\",\"link\":\"/guide/block/block_iptables.html\"},{\"text\":\"在PVE上\",\"link\":\"/guide/block/block_pve.html\"},{\"text\":\"在INCUS上\",\"link\":\"/guide/block/block_incus.html\"},{\"text\":\"在LXD上\",\"link\":\"/guide/block/block_lxd.html\"},{\"text\":\"在DOCKER上\",\"link\":\"/guide/block/block_docker.html\"}]},{\"text\":\"捐赠\",\"items\":[{\"text\":\"捐赠\",\"link\":\"/guide/dashboardq.html\"}]}],\"/case/\":[{\"text\":\"Linux相关\",\"items\":[{\"text\":\"1. VPS融合怪服务器测评脚本\",\"link\":\"/case/case1.html\"},{\"text\":\"2. 一键修复与安装脚本(各种linux系统修复与服务器环境安装脚本)\",\"link\":\"/case/case2.html\"},{\"text\":\"3. 自动更新测试服务器节点列表的网络基准测试脚本\",\"link\":\"/case/case3.html\"},{\"text\":\"4. 三网回程路由线路测试脚本\",\"link\":\"/case/case4.html\"},{\"text\":\"5. 服务器资源占用脚本\",\"link\":\"/case/case5.html\"},{\"text\":\"6. 为linux服务器增加swap分区(虚拟内存)\",\"link\":\"/case/case6.html\"},{\"text\":\"7. 为linux服务器启用zram设备(压缩内存)\",\"link\":\"/case/case7.html\"}]}],\"/incomplete/\":[{\"text\":\"其他虚拟化项目\",\"items\":[{\"text\":\"webvirtcloud\",\"link\":\"/incomplete/webvirtcloud.html\"},{\"text\":\"webvirtcloud_retspen\",\"link\":\"/incomplete/webvirtcloud_retspen.html\"},{\"text\":\"pterodactyl\",\"link\":\"/incomplete/pterodactyl.html\"},{\"text\":\"convoy\",\"link\":\"/incomplete/convoy.html\"},{\"text\":\"cockpit\",\"link\":\"/incomplete/cockpit.html\"},{\"text\":\"virtfusion\",\"link\":\"/incomplete/virtfusion.html\"},{\"text\":\"virtualizor-docker\",\"link\":\"/incomplete/virtualizor-docker.html\"},{\"text\":\"bashvm\",\"link\":\"/incomplete/bashvm.html\"},{\"text\":\"webvirtmgr\",\"link\":\"/incomplete/webvirtmgr.html\"}]}],\"/developer/\":[{\"text\":\"开发手册\",\"items\":[{\"text\":\"l10n\",\"link\":\"/developer/l10n.html\"}]}]}}},\"en\":{\"lang\":\"en-US\",\"label\":\"English\",\"title\":\"One Click Virtualization\",\"description\":\"Open source, easy to use server virtualization project\",\"link\":\"/en/\",\"themeConfig\":{\"logo\":{\"src\":\"https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png\"},\"lastUpdatedText\":\"Last Updated\",\"editLink\":{\"text\":\"Edit this page on GitHub\",\"pattern\":\"https://github.com/oneclickvirt/oneclickvirt.github.io/edit/main/docs/:path\"},\"nav\":[{\"text\":\"One Click Virtualization\",\"link\":\"/en/\",\"activeMatch\":\"^/en/guide/\"},{\"text\":\"Other Virtualization Projects\",\"link\":\"/en/incomplete/index\",\"activeMatch\":\"^/en/incomplete/\"},{\"text\":\"VPS Stock Monitor\",\"link\":\"https://spiders.spiritlhl.net/\"},{\"text\":\"VPS Test Archive\",\"link\":\"https://beta.spiritlhl.net/\"}],\"sidebar\":{\"/en/\":[{\"text\":\"Pre-requisites for all projects\",\"items\":[{\"text\":\"Preparation\",\"link\":\"/en/guide/dashboard.html\"}]},{\"text\":\"Proxmox VE\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/pve/pve_precheck.html\"},{\"text\":\"PVE main installation\",\"link\":\"/en/guide/pve/pve_install.html\"},{\"text\":\"Linux Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/pve/pve_kvm.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/pve/pve_lxc.html\"},{\"text\":\"Windows Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/pve/pve_windows.html\"},{\"text\":\"MacOS Virtual Machine(KVM)\",\"link\":\"/en/guide/pve/pve_macos.html\"},{\"text\":\"Android Virtual Machine(KVM)\",\"link\":\"/en/guide/pve/pve_android.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/pve/pve_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/pve/pve_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/pve/pve_qa.html\"}]},{\"text\":\"incus\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/incus/incus_precheck.html\"},{\"text\":\"incus main installation\",\"link\":\"/en/guide/incus/incus_install.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/incus/incus_lxc.html\"},{\"text\":\"Windows Virtual Machine(QEMU)\",\"link\":\"/en/guide/incus/incus_windows.html\"},{\"text\":\"Extra configuration\",\"link\":\"/en/guide/incus/incus_extra_config.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/incus/incus_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/incus/incus_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/incus/incus_qa.html\"}]},{\"text\":\"Docker\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/docker/docker_precheck.html\"},{\"text\":\"Docker main installation\",\"link\":\"/en/guide/docker/docker_install.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/docker/docker_build.html\"},{\"text\":\"Windows Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/docker/docker_windows.html\"},{\"text\":\"Macos Virtual Machine(KVM)\",\"link\":\"/en/guide/docker/docker_macos.html\"},{\"text\":\"Android Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/docker/docker_android.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/docker/docker_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/docker/docker_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/docker/docker_qa.html\"}]},{\"text\":\"LXD\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/lxd/lxd_precheck.html\"},{\"text\":\"LXD main installation\",\"link\":\"/en/guide/lxd/lxd_install.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/lxd/lxd_lxc.html\"},{\"text\":\"Windows Virtual Machine(QEMU)\",\"link\":\"/en/guide/lxd/lxd_windows.html\"},{\"text\":\"Extra configuration\",\"link\":\"/en/guide/lxd/lxd_extra_config.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/lxd/lxd_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/lxd/lxd_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/lxd/lxd_qa.html\"}]},{\"text\":\"Block Abuse\",\"items\":[{\"text\":\"via iptables\",\"link\":\"/guide/block/block_iptables.html\"},{\"text\":\"In PVE\",\"link\":\"/guide/block/block_pve.html\"},{\"text\":\"In INCUS\",\"link\":\"/guide/block/block_incus.html\"},{\"text\":\"In LXD\",\"link\":\"/guide/block/block_lxd.html\"},{\"text\":\"In DOCKER\",\"link\":\"/guide/block/block_docker.html\"}]},{\"text\":\"Donation\",\"items\":[{\"text\":\"Donation\",\"link\":\"/guide/dashboardq.html\"}]}],\"/en/guide/\":[{\"text\":\"Pre-requisites for all projects\",\"items\":[{\"text\":\"Preparation\",\"link\":\"/en/guide/dashboard.html\"}]},{\"text\":\"Proxmox VE\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/pve/pve_precheck.html\"},{\"text\":\"PVE main installation\",\"link\":\"/en/guide/pve/pve_install.html\"},{\"text\":\"Linux Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/pve/pve_kvm.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/pve/pve_lxc.html\"},{\"text\":\"Windows Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/pve/pve_windows.html\"},{\"text\":\"MacOS Virtual Machine(KVM)\",\"link\":\"/en/guide/pve/pve_macos.html\"},{\"text\":\"Android Virtual Machine(KVM)\",\"link\":\"/en/guide/pve/pve_android.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/pve/pve_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/pve/pve_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/pve/pve_qa.html\"}]},{\"text\":\"incus\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/incus/incus_precheck.html\"},{\"text\":\"incus main installation\",\"link\":\"/en/guide/incus/incus_install.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/incus/incus_lxc.html\"},{\"text\":\"Windows Virtual Machine(QEMU)\",\"link\":\"/en/guide/incus/incus_windows.html\"},{\"text\":\"Extra configuration\",\"link\":\"/en/guide/incus/incus_extra_config.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/incus/incus_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/incus/incus_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/incus/incus_qa.html\"}]},{\"text\":\"Docker\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/docker/docker_precheck.html\"},{\"text\":\"Docker main installation\",\"link\":\"/en/guide/docker/docker_install.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/docker/docker_build.html\"},{\"text\":\"Windows Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/docker/docker_windows.html\"},{\"text\":\"Macos Virtual Machine(KVM)\",\"link\":\"/en/guide/docker/docker_macos.html\"},{\"text\":\"Android Virtual Machine(KVM/QEMU)\",\"link\":\"/en/guide/docker/docker_android.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/docker/docker_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/docker/docker_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/docker/docker_qa.html\"}]},{\"text\":\"LXD\",\"items\":[{\"text\":\"Configuration requirements\",\"link\":\"/en/guide/lxd/lxd_precheck.html\"},{\"text\":\"LXD main installation\",\"link\":\"/en/guide/lxd/lxd_install.html\"},{\"text\":\"Linux Container(LXC)\",\"link\":\"/en/guide/lxd/lxd_lxc.html\"},{\"text\":\"Windows Virtual Machine(QEMU)\",\"link\":\"/en/guide/lxd/lxd_windows.html\"},{\"text\":\"Extra configuration\",\"link\":\"/en/guide/lxd/lxd_extra_config.html\"},{\"text\":\"Custom\",\"link\":\"/en/guide/lxd/lxd_custom.html\"},{\"text\":\"Acknowledgements\",\"link\":\"/en/guide/lxd/lxd_thanks.html\"},{\"text\":\"FAQ\",\"link\":\"/en/guide/lxd/lxd_qa.html\"}]},{\"text\":\"Block Abuse\",\"items\":[{\"text\":\"via iptables\",\"link\":\"/guide/block/block_iptables.html\"},{\"text\":\"In PVE\",\"link\":\"/guide/block/block_pve.html\"},{\"text\":\"In INCUS\",\"link\":\"/guide/block/block_incus.html\"},{\"text\":\"In LXD\",\"link\":\"/guide/block/block_lxd.html\"},{\"text\":\"In DOCKER\",\"link\":\"/guide/block/block_docker.html\"}]},{\"text\":\"Donation\",\"items\":[{\"text\":\"Donation\",\"link\":\"/guide/dashboardq.html\"}]}],\"/en/incomplete/\":[{\"text\":\"Other Virtualization Projects\",\"items\":[{\"text\":\"webvirtcloud\",\"link\":\"/en/incomplete/webvirtcloud.html\"},{\"text\":\"webvirtcloud_retspen\",\"link\":\"/en/incomplete/webvirtcloud_retspen.html\"},{\"text\":\"pterodactyl\",\"link\":\"/en/incomplete/pterodactyl.html\"},{\"text\":\"convoy\",\"link\":\"/en/incomplete/convoy.html\"},{\"text\":\"cockpit\",\"link\":\"/en/incomplete/cockpit.html\"},{\"text\":\"virtfusion\",\"link\":\"/en/incomplete/virtfusion.html\"},{\"text\":\"virtualizor-docker\",\"link\":\"/en/incomplete/virtualizor-docker.html\"},{\"text\":\"bashvm\",\"link\":\"/en/incomplete/bashvm.html\"},{\"text\":\"webvirtmgr\",\"link\":\"/en/incomplete/webvirtmgr.html\"}]}]}}}},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
|
||
|
||
</body>
|
||
</html> |