Files
oneclickvirt.github.io/en/incomplete/webvirtcloud.html
2025-06-07 16:16:21 +00:00

73 lines
86 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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">
<meta name="generator" content="VitePress v1.6.3">
<link rel="preload stylesheet" href="/assets/style.DFTx90Kk.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.D4kLJnX4.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.DJQtrHna.js">
<link rel="modulepreload" href="/assets/chunks/framework.CSeR4K32.js">
<link rel="modulepreload" href="/assets/en_incomplete_webvirtcloud.md.3Ddo0Z1Y.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-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/en/" data-v-1168a8e4><!--[--><!--]--><!--[--><img class="VPImage logo" src="https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png" alt data-v-8426fc1a><!--]--><span data-v-1168a8e4>One Click Virtualization</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><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-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/en/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>One Click Virtualization</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/en/incomplete/index.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Other Virtualization Projects</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://storage.spiritlhl.net/" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>AList</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://spiders.spiritlhl.net/" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>VPS Stock Monitor</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://beta.spiritlhl.net/" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>VPS Test Archive</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>English</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/incomplete/webvirtcloud.html" data-v-35975db6><!--[--><span data-v-35975db6>简体中文</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aa21345 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-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>English</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/incomplete/webvirtcloud.html" data-v-35975db6><!--[--><span data-v-35975db6>简体中文</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><div class="group" data-v-bb2aa2f0><div class="item social-links" data-v-bb2aa2f0><div class="VPSocialLinks social-links-list" data-v-bb2aa2f0 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-bd121fe5><span class="vpi-social-github"></span></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-6aa21345 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><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Other Virtualization Projects</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/webvirtcloud.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>webvirtcloud</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/webvirtcloud_retspen.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>webvirtcloud_retspen</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/pterodactyl.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>pterodactyl</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/convoy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>convoy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/cockpit.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>cockpit</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/virtfusion.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>virtfusion</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/virtualizor-docker.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>virtualizor-docker</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/bashvm.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>bashvm</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/en/incomplete/webvirtmgr.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>webvirtmgr</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _en_incomplete_webvirtcloud" data-v-39a288b8><div><h1 id="webvirtcloud-installation-guide" tabindex="-1">WebVirtCloud Installation Guide <a class="header-anchor" href="#webvirtcloud-installation-guide" aria-label="Permalink to &quot;WebVirtCloud Installation Guide&quot;"></a></h1><p><a href="https://hits.spiritlhl.net" target="_blank" rel="noreferrer"><img src="https://hits.spiritlhl.net/webvirtcloud.svg?action=hit&amp;title=hits&amp;title_bg=%23555555&amp;count_bg=%233aebee&amp;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>The original official deleted the project is no longer maintained, here can only be deployed with my personal fixes and changes to the code.</p><h2 id="_1-controller-installation" tabindex="-1">1. Controller Installation <a class="header-anchor" href="#_1-controller-installation" aria-label="Permalink to &quot;1. Controller Installation&quot;"></a></h2><h3 id="system-requirements" tabindex="-1">System Requirements <a class="header-anchor" href="#system-requirements" aria-label="Permalink to &quot;System Requirements&quot;"></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 &quot;Default Login Information&quot;"></a></h3><ul><li>Username: <code>admin@spiritlhl.net</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 &quot;Panel Access&quot;"></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 &quot;Installation Command&quot;"></a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -slk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://raw.githubusercontent.com/oneclickvirt/webvirtcloud/main/scripts/install_webvirt_cloud.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install_webvirt_cloud.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> +x</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install_webvirt_cloud.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bash</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 &quot;2. Compute Node Installation&quot;"></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 &quot;System Requirements&quot;"></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 &quot;Environment Check&quot;"></a></h3><p>Check if the server supports KVM nested virtualization:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -L</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> goecs.sh</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> +x</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> goecs.sh</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">./goecs.sh</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> &amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">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 &quot;Compute Node Installation Steps&quot;"></a></h3><ol><li><p>Download the installation script:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -slk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> https://raw.githubusercontent.com/oneclickvirt/webvirtcloud/main/scripts/install_hypervisor.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install_hypervisor.sh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&amp;&amp; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> +x</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install_hypervisor.sh</span></span></code></pre></div></li><li><p>Execute installation (replace with your Controller IP):</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">bash</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install_hypervisor.sh</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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&#39;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 &quot;NetworkManager Version Issue&quot;"></a></h3><p>During installation, you may encounter the following error:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Connection &#39;eth0&#39; (bed050e9-ff49-4665-8112-24ddf2a1cd3c) successfully deleted.</span></span>
<span class="line"><span>Warning: nmcli (1.48.10) and NetworkManager (1.42.2) versions don&#39;t match. Restarting NetworkManager is advised.</span></span>
<span class="line"><span>Error: Failed to add &#39;br-ext&#39; 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 &quot;Installation Time Note&quot;"></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&#39;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 &quot;Adding Compute Node to Control Panel&quot;"></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 &gt; Computers &gt; Add Computer</code></p><ul><li><code>HostName</code> should be filled with the compute node&#39;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 &quot;3. Public IPv4 Port Mapping&quot;"></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 &quot;3.1 Automatic Mapping&quot;"></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 &quot;Installation Method&quot;"></a></h4><ol><li><p>Download the script to a temporary directory:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">wget</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -O</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /tmp/vm_port_mapping_setup.sh</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> +x</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /tmp/vm_port_mapping_setup.sh</span></span></code></pre></div></li><li><p>Run the installer:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">/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 &quot;Port Mapping Rules&quot;"></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 &quot;Mapping File&quot;"></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- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>VM name IP address MAC address SSH mapped port Extra ports start Extra ports end</span></span></code></pre></div><p>This can be viewed using the following command</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /etc/vm_port_mapping/mapping.txt</span></span></code></pre></div><p>For example:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>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 &quot;Service Management&quot;"></a></h4><ul><li><p><strong>Check service status</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span></code></pre></div></li><li><p><strong>Start service</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span></code></pre></div></li><li><p><strong>Stop service</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stop</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span></code></pre></div></li><li><p><strong>Disable auto-start</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> disable</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span></code></pre></div></li><li><p><strong>View logs</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">journalctl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -u</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># or</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /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 vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> restart</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 &quot;Common Issues&quot;"></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 &quot;Port mapping not working&quot;"></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 &quot;Manually adding mapping rules&quot;"></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 vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stop</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span></code></pre></div></li><li><p>Edit the mapping file:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">nano</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /etc/vm_port_mapping/mapping.txt</span></span></code></pre></div></li><li><p>Start the service:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 &quot;Cleaning all rules&quot;"></a></h5><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stop</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /etc/vm_port_mapping/mapping.txt</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> while</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> read</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -r</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm_name</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ip_address</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> mac</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ssh_port</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> port_start</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> port_end</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> firewall-cmd</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --permanent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --remove-forward-port=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;port=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$ssh_port</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:proto=tcp:toport=22:toaddr=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$ip_address</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ((port</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">port_start; port</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&lt;=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">port_end; port</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">++</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)); </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">do</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> firewall-cmd</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --permanent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --remove-forward-port=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;port=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$port</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:proto=tcp:toport=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$port</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:toaddr=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">$ip_address</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> done</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">done</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">firewall-cmd</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --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 &quot;Security Recommendations&quot;"></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 &quot;Uninstallation Method&quot;"></a></h4><p>To uninstall this service:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> stop</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> disable</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> vm-port-mapping</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">rm</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /etc/systemd/system/vm-port-mapping.service</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">rm</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /usr/local/sbin/vm_port_mapping_daemon.sh</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">rm</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -rf</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /etc/vm_port_mapping</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 &quot;3.2 Manual Mapping&quot;"></a></h3><p>Assume your virtual machine is shown in the user control panel as</p><p><img src="/assets/wv1.8ARiSJ9x.png" alt="wv1"></p><p>and the host machine command <code>ip a | head -n 15</code> result is</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">1:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> lo:</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">LOOPBACK,UP,LOWER_U</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">P</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> mtu</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 65536</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qdisc</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> noqueue</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> state</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> UNKNOWN</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> group</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> default</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qlen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1000</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> link/loopback</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 00:00:00:00:00:00</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> brd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 00:00:00:00:00:00</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> inet</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 127.0.0.1/8</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> scope</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> host</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> lo</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> valid_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> preferred_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> inet6</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ::1/128</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> scope</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> host</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> valid_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> preferred_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">2:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ens3:</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">BROADCAST,MULTICAST,UP,LOWER_U</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">P</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> mtu</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1500</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qdisc</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> fq_codel</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> state</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> UP</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> group</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> default</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> qlen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 1000</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> link/ether</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 52:54:00:f1:d6:8b</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> brd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ff:ff:ff:ff:ff:ff</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> altname</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> enp0s3</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> inet</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> your_public_IPv4_address/corresponding_subnet_mask</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> scope</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> noprefixroute</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ens3</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> valid_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> preferred_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> inet6</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 2a0b:4140:4c60::2/48</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> scope</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> global</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> noprefixroute</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> valid_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> preferred_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> inet6</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> fe80::5054:ff:fef1:d68b/64</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> scope</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> link</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> noprefixroute</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> valid_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> preferred_lft</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> forever</span></span></code></pre></div><p>It&#39;s evident that the public IPv4 address is bound to the <code>ens3</code> interface, so we&#39;ll use <code>ens3</code> in the following commands.</p><p>To map the current VM&#39;s port 22 to the public IPv4&#39;s port 3322, use:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Add DNAT rule: Forward public 3322 traffic to host local 192.168.33.130:22</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">iptables</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> nat</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -A</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> PREROUTING</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ens3</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tcp</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dport</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 3322</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -j</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> DNAT</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --to-destination</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 192.168.33.130:22</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Add POSTROUTING: Local NAT masquerading for normal return connections</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">iptables</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> nat</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -A</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POSTROUTING</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tcp</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 192.168.33.130</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dport</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 22</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -j</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> MASQUERADE</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Need to allow INPUT port 3322 through (firewalld is enabled by default)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">iptables</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -I</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> INPUT</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -p</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> tcp</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dport</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 3322</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -j</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 &quot;4. Troubleshooting&quot;"></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 &quot;Compute Node Addition Error Troubleshooting&quot;"></a></h3><p>Execute on the Controller:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">telnet</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &lt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">node</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> i</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">p</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 8884</span></span></code></pre></div><p>Execute on the compute node:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> webvirtcompute</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> libvirtd</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> prometheus</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">systemctl</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> status</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> exec</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -it</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> webvirtcloud-backend</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /bin/sh</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">vi</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 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 vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">UV_PROJECT_ENVIRONMENT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/usr/local</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> uv</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> sync</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dev</span></span></code></pre></div><p>Then <code>exit</code> the container and execute:</p><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> restart</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> webvirtcloud-backend</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">sleep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 3</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> logs</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> webvirtcloud-backend</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span></span></code></pre></div><p>Then trigger the error in the frontend, and you&#39;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 &quot;Docker Containers Not Auto-Restarting After Controller Reboot&quot;"></a></h3><p>If Docker containers don&#39;t automatically restart after system reboot, execute:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> start</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> $(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ps</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -a</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -q</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><h2 id="_5-drawbacks" tabindex="-1">5. Drawbacks <a class="header-anchor" href="#_5-drawbacks" aria-label="Permalink to &quot;5. Drawbacks&quot;"></a></h2><p>System images are hard-coded; you can&#39;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&#39;t confuse them.</p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><div class="edit-link" data-v-e257564d><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-e257564d><!--[--><span class="vpi-square-pen edit-link-icon" data-v-e257564d></span> Edit this page on GitHub<!--]--></a></div><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>Last Updated: <time datetime="2025-06-07T16:15:47.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><!----></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/en/incomplete/webvirtcloud_retspen.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>webvirtcloud_retspen</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-5d98c3a5 data-v-e315a0ad><div class="container" data-v-e315a0ad><p class="message" data-v-e315a0ad>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-e315a0ad>Copyright © 2022-present oneclickvirt</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"case_case1.md\":\"D9W4eIRh\",\"case_case2.md\":\"bdq89BWC\",\"case_case3.md\":\"D2Gv5U6v\",\"case_case4.md\":\"B5K0Wx1Z\",\"case_case5.md\":\"BaoaAcBh\",\"case_case6.md\":\"C1Hc88ZL\",\"case_case7.md\":\"CJStsS3y\",\"case_index.md\":\"DWQAqB_a\",\"developer_index.md\":\"pJ5_r0k9\",\"developer_l10n.md\":\"DEea_1nW\",\"en_developer_index.md\":\"Dj9ev2VZ\",\"en_developer_l10n.md\":\"BD64m6-Z\",\"en_guide_block_block_docker.md\":\"CSyjJyLI\",\"en_guide_block_block_incus.md\":\"C2edF0Z9\",\"en_guide_block_block_iptables.md\":\"BhJ1i4TO\",\"en_guide_block_block_lxd.md\":\"CzTXvtOW\",\"en_guide_block_block_pve.md\":\"DlZlZXoh\",\"en_guide_dashboard.md\":\"twfw7I6S\",\"en_guide_dashboardq.md\":\"AROYxYgM\",\"en_guide_docker_docker_android.md\":\"DItBxt_x\",\"en_guide_docker_docker_build.md\":\"wMVc26Cf\",\"en_guide_docker_docker_custom.md\":\"DfcBAdb7\",\"en_guide_docker_docker_install.md\":\"BQWuADo9\",\"en_guide_docker_docker_macos.md\":\"BMkUneiR\",\"en_guide_docker_docker_precheck.md\":\"DQAu0vGq\",\"en_guide_docker_docker_qa.md\":\"D8_NUGZt\",\"en_guide_docker_docker_thanks.md\":\"BGEP3cUm\",\"en_guide_docker_docker_windows.md\":\"RCt9PquZ\",\"en_guide_incus_incus_custom.md\":\"CYVLgh6Y\",\"en_guide_incus_incus_extra_config.md\":\"fiVx8oet\",\"en_guide_incus_incus_install.md\":\"DAMECR7k\",\"en_guide_incus_incus_lxc.md\":\"DXuw2wdG\",\"en_guide_incus_incus_precheck.md\":\"Bm0lQLRE\",\"en_guide_incus_incus_qa.md\":\"7fgcHq-B\",\"en_guide_incus_incus_thanks.md\":\"Dl3fO6Nw\",\"en_guide_incus_incus_windows.md\":\"DBKUi8ef\",\"en_guide_lxd_lxd_custom.md\":\"-1CDJapB\",\"en_guide_lxd_lxd_extra_config.md\":\"DF9mq9nX\",\"en_guide_lxd_lxd_install.md\":\"C4XxicQc\",\"en_guide_lxd_lxd_lxc.md\":\"r0k7DOF-\",\"en_guide_lxd_lxd_precheck.md\":\"3RVoFd4X\",\"en_guide_lxd_lxd_qa.md\":\"B6iTp4zy\",\"en_guide_lxd_lxd_thanks.md\":\"q2ZG6Vnw\",\"en_guide_lxd_lxd_windows.md\":\"MjWJuKcz\",\"en_guide_pve_images_readme.md\":\"Dw-pjy4s\",\"en_guide_pve_pve_android.md\":\"B5s7MNmX\",\"en_guide_pve_pve_custom.md\":\"DVIxu9l4\",\"en_guide_pve_pve_install.md\":\"Bd_3VjPO\",\"en_guide_pve_pve_kvm.md\":\"D5cpgHDj\",\"en_guide_pve_pve_lxc.md\":\"C_8OfDzZ\",\"en_guide_pve_pve_macos.md\":\"Dhw4QkuB\",\"en_guide_pve_pve_precheck.md\":\"hcutpy_S\",\"en_guide_pve_pve_qa.md\":\"4_DR55jz\",\"en_guide_pve_pve_thanks.md\":\"DfknWXoY\",\"en_guide_pve_pve_windows.md\":\"BPe0HG51\",\"en_incomplete_bashvm.md\":\"DiQr69xJ\",\"en_incomplete_cockpit.md\":\"BeXmGnDf\",\"en_incomplete_convoy.md\":\"BOzajI8e\",\"en_incomplete_index.md\":\"BE_KSOlx\",\"en_incomplete_pterodactyl.md\":\"C1s8w1eS\",\"en_incomplete_virtfusion.md\":\"FZBAT_Hn\",\"en_incomplete_virtualizor-docker.md\":\"3BlYMX76\",\"en_incomplete_webvirtcloud.md\":\"3Ddo0Z1Y\",\"en_incomplete_webvirtcloud_retspen.md\":\"BRF83wxf\",\"en_incomplete_webvirtmgr.md\":\"Cta-2PPI\",\"en_index.md\":\"Du91bHvp\",\"guide_block_block_docker.md\":\"BsB5HqeH\",\"guide_block_block_incus.md\":\"CnhYj8S7\",\"guide_block_block_iptables.md\":\"B154mpnZ\",\"guide_block_block_lxd.md\":\"CY0pgLx4\",\"guide_block_block_pve.md\":\"JXPjLhW4\",\"guide_dashboard.md\":\"BL6E-Uhu\",\"guide_dashboardq.md\":\"CU2xbht6\",\"guide_docker_docker_android.md\":\"_pGQshx8\",\"guide_docker_docker_build.md\":\"DbbqUI0L\",\"guide_docker_docker_custom.md\":\"5PiZi_gk\",\"guide_docker_docker_install.md\":\"9vRqxwMa\",\"guide_docker_docker_macos.md\":\"DrEousq_\",\"guide_docker_docker_precheck.md\":\"BfyN_N0P\",\"guide_docker_docker_qa.md\":\"CNmXj6q7\",\"guide_docker_docker_thanks.md\":\"CivDf4Ob\",\"guide_docker_docker_windows.md\":\"C8yqFLvz\",\"guide_incus_incus_custom.md\":\"GHz9Jkgc\",\"guide_incus_incus_extra_config.md\":\"CD7pffug\",\"guide_incus_incus_install.md\":\"BeQsIRKz\",\"guide_incus_incus_lxc.md\":\"CCz7leOs\",\"guide_incus_incus_precheck.md\":\"woSQGWFg\",\"guide_incus_incus_qa.md\":\"CH5carMm\",\"guide_incus_incus_thanks.md\":\"BQ4a4UTn\",\"guide_incus_incus_windows.md\":\"D3C6Pxbu\",\"guide_lxd_lxd_custom.md\":\"BcXnhrA3\",\"guide_lxd_lxd_extra_config.md\":\"DVuEu2YE\",\"guide_lxd_lxd_install.md\":\"X5JmGmGn\",\"guide_lxd_lxd_lxc.md\":\"DPJ4zFlo\",\"guide_lxd_lxd_precheck.md\":\"C0DMFkWt\",\"guide_lxd_lxd_qa.md\":\"Ca5CPl7O\",\"guide_lxd_lxd_thanks.md\":\"BS8GC66D\",\"guide_lxd_lxd_windows.md\":\"B5gws0Nb\",\"guide_pve_images_readme.md\":\"CxjzfMgb\",\"guide_pve_pve_android.md\":\"CWHGptQn\",\"guide_pve_pve_custom.md\":\"DbZTfgLC\",\"guide_pve_pve_install.md\":\"HoIoBqsC\",\"guide_pve_pve_kvm.md\":\"B6emWB9w\",\"guide_pve_pve_lxc.md\":\"BtbDJNEe\",\"guide_pve_pve_macos.md\":\"HHcllTOc\",\"guide_pve_pve_precheck.md\":\"iK4hQCIj\",\"guide_pve_pve_qa.md\":\"DMVpKWRV\",\"guide_pve_pve_thanks.md\":\"C0V9Gktn\",\"guide_pve_pve_windows.md\":\"uAC_a9Su\",\"incomplete_bashvm.md\":\"BfatCHwq\",\"incomplete_cockpit.md\":\"OpA3Af1U\",\"incomplete_convoy.md\":\"TMZnVOF6\",\"incomplete_index.md\":\"D190p3JN\",\"incomplete_pterodactyl.md\":\"BHx4Y5GE\",\"incomplete_virtfusion.md\":\"Bu1jLEbD\",\"incomplete_virtualizor-docker.md\":\"CPDtMuv_\",\"incomplete_webvirtcloud.md\":\"CYdsbEE6\",\"incomplete_webvirtcloud_retspen.md\":\"CzZQAyk_\",\"incomplete_webvirtmgr.md\":\"D0S1uISn\",\"index.md\":\"BqU499Ot\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"zh-CN\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"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\":\"AList\",\"link\":\"https://storage.spiritlhl.net/\"},{\"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\":\"AList\",\"link\":\"https://storage.spiritlhl.net/\"},{\"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\":134,\"cleanUrls\":false}");</script>
</body>
</html>