mirror of
https://github.com/oneclickvirt/oneclickvirt.github.io.git
synced 2026-05-24 11:31:24 +08:00
76 lines
89 KiB
HTML
76 lines
89 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>WebVirtCloud 安装指南 | 一键虚拟化项目</title>
|
||
<meta name="description" content="开源、易于使用的服务器虚拟化项目">
|
||
<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/incomplete_webvirtcloud.md.D781gDtL.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="/" 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>一键虚拟化项目</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="/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>一键虚拟化项目</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/incomplete/index.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>其他虚拟化项目</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/case/index.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>其他实用项目</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>常用镜像</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余量监控</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测试存档</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>简体中文</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/en/incomplete/webvirtcloud.html" data-v-35975db6><!--[--><span data-v-35975db6>English</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>简体中文</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/en/incomplete/webvirtcloud.html" data-v-35975db6><!--[--><span data-v-35975db6>English</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>其他虚拟化项目</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="/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="/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="/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="/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="/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="/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="/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="/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="/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 _incomplete_webvirtcloud" data-v-39a288b8><div><h1 id="webvirtcloud-安装指南" tabindex="-1">WebVirtCloud 安装指南 <a class="header-anchor" href="#webvirtcloud-安装指南" aria-label="Permalink to "WebVirtCloud 安装指南""></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>仓库地址: <a href="https://github.com/oneclickvirt/webvirtcloud" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/webvirtcloud</a></p><p>原官方删除了项目不再维护了,这里只能用我个人修复和更改后的代码进行部署。</p><h2 id="效果图展示" tabindex="-1">效果图展示 <a class="header-anchor" href="#效果图展示" aria-label="Permalink to "效果图展示""></a></h2><p><img src="/assets/admin.DfyN1XBs.png" alt="admin"></p><p><img src="/assets/user.CWGLyZGM.png" alt="user"></p><h2 id="_1-控制端安装" tabindex="-1">1. 控制端安装 <a class="header-anchor" href="#_1-控制端安装" aria-label="Permalink to "1. 控制端安装""></a></h2><h3 id="系统要求" tabindex="-1">系统要求 <a class="header-anchor" href="#系统要求" aria-label="Permalink to "系统要求""></a></h3><p><strong>最低配置要求:</strong></p><ul><li>CPU: 1 核</li><li>内存: 1 GB RAM</li><li>硬盘: 空余 10 GB</li><li>系统:Debian11+,Ubuntu20.04+, Centos8+, AlmaLinux8+, RockyLinux8+</li></ul><h3 id="默认登录信息" tabindex="-1">默认登录信息 <a class="header-anchor" href="#默认登录信息" aria-label="Permalink to "默认登录信息""></a></h3><ul><li>用户名: <code>admin@spiritlhl.net</code></li><li>密码: <code>admin</code></li></ul><h3 id="面板地址" tabindex="-1">面板地址 <a class="header-anchor" href="#面板地址" aria-label="Permalink to "面板地址""></a></h3><ul><li>用户面板: <code>https://192-168-0-114.nip.io</code></li><li>管理后台: <code>https://192-168-0-114.nip.io/admin</code></li></ul><blockquote><p><strong>注意:</strong> 请将 <code>192.168.0.114</code> 替换为你的公网 IP,以获取真实可访问地址。</p></blockquote><h3 id="安装命令" tabindex="-1">安装命令 <a class="header-anchor" href="#安装命令" aria-label="Permalink to "安装命令""></a></h3><p>国际版本:</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_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;">&& </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;">&& </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><p>国内版本:</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://cdn.spiritlhl.net/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;">&& </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;">&& </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>执行过程中可能会卡在clone仓库后一直不动,此时按ctrl+c退出执行后,重新执行安装脚本就行了,系Docker安装后卡在build项目的阶段了。</p></div><h2 id="_2-计算节点安装" tabindex="-1">2. 计算节点安装 <a class="header-anchor" href="#_2-计算节点安装" aria-label="Permalink to "2. 计算节点安装""></a></h2><blockquote><p><strong>重要提示:</strong> Hypervisor 和 Controller 不能在同一虚拟机上安装,否则网络会出现冲突。</p></blockquote><h3 id="系统要求-1" tabindex="-1">系统要求 <a class="header-anchor" href="#系统要求-1" aria-label="Permalink to "系统要求""></a></h3><p><strong>建议配置:</strong></p><ul><li>CPU: 2 核</li><li>内存: 4 GB RAM</li><li>硬盘: 空余 40 GB</li><li>系统:AlmaLinux8+,RockyLinux8+</li></ul><blockquote><p><strong>额外说明:</strong></p><ul><li>实际使用建议更高配置,测试环境只够开 4 台最小的虚拟机。</li><li>服务器推荐支持 KVM 嵌套虚拟化的,若<code>VM-x/AMD-V/Hyper-V</code>未启用也可以,会自动切换为QEMU使用TCG仿真开设虚拟机,只不过性能会有所损耗。</li><li>跳过 env 检测安装,直接使用二进制文件,无需安装依赖。</li></ul></blockquote><h3 id="环境检测" tabindex="-1">环境检测 <a class="header-anchor" href="#环境检测" aria-label="Permalink to "环境检测""></a></h3><p>检测服务器是否支持 KVM 嵌套虚拟化:</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;"> && </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;"> && </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;"> && </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">goecs</span></span></code></pre></div><p>选择硬件单项测试</p><h3 id="计算节点安装步骤" tabindex="-1">计算节点安装步骤 <a class="header-anchor" href="#计算节点安装步骤" aria-label="Permalink to "计算节点安装步骤""></a></h3><ol><li><p>下载安装脚本:</p><p>国际版本:</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;">&& </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><p>国内版本:</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://cdn.spiritlhl.net/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;">&& </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>执行安装(替换为你的 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>请将 <code>x.x.x.x</code> 替换为你的 Controller 控制端的实际 IP 地址。</p></blockquote></li><li><p>面板纳管节点<br> 执行完毕后会有提示需要在Controller面板端需要填写的内容。<br> 面板端要填入Hostname的是当前计算节点的IPV4地址,还有要填入Token识别节点。</p></li></ol><h3 id="networkmanager-版本问题" tabindex="-1">NetworkManager 版本问题 <a class="header-anchor" href="#networkmanager-版本问题" aria-label="Permalink to "NetworkManager 版本问题""></a></h3><p>安装过程中可能会出现以下错误:</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 'eth0' (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't match. Restarting NetworkManager is advised.</span></span>
|
||
<span class="line"><span>Error: Failed to add 'br-ext' connection: connection.autoconnect-ports: unknown property</span></span></code></pre></div><p><strong>解决方法:</strong> 重启服务器后重新执行安装命令。</p><h3 id="安装耗时提示" tabindex="-1">安装耗时提示 <a class="header-anchor" href="#安装耗时提示" aria-label="Permalink to "安装耗时提示""></a></h3><ul><li>整个过程大约耗时 <strong>10~25 分钟</strong>。</li><li>大部分时间用于下载 <code>finnix-125.iso</code> 至 <code>/var/lib/libvirt/isos/finnix-125.iso</code>。</li><li>该部分无法加速,<strong>建议使用 tmux 或 screen</strong> 等工具防止中断。</li></ul><h3 id="添加计算节点到控制面板" tabindex="-1">添加计算节点到控制面板 <a class="header-anchor" href="#添加计算节点到控制面板" aria-label="Permalink to "添加计算节点到控制面板""></a></h3><p>安装完成后会生成一个 <strong>Token</strong>,用于在控制端(Admin 面板)中添加计算节点:</p><p>路径: <code>Admin Panel > Computers > Add Computer</code></p><ul><li><code>HostName</code> 需要填写计算节点的公网IPV4地址</li><li><code>Token</code> 填在计算节点上获取到的token密钥</li></ul><h2 id="_3-公网ipv4端口映射" tabindex="-1">3. 公网IPV4端口映射 <a class="header-anchor" href="#_3-公网ipv4端口映射" aria-label="Permalink to "3. 公网IPV4端口映射""></a></h2><h3 id="_3-1-自动映射" tabindex="-1">3.1 自动映射 <a class="header-anchor" href="#_3-1-自动映射" aria-label="Permalink to "3.1 自动映射""></a></h3><p>自动映射功能特点:</p><ul><li><strong>自动监控</strong>:实时监控虚拟机状态变化,自动应用或清理端口映射规则</li><li><strong>智能端口分配</strong>:根据虚拟机IP地址自动计算和分配不冲突的端口</li><li><strong>规则持久化</strong>:使用firewall-cmd确保端口映射规则在宿主机重启后依然有效</li><li><strong>映射记录</strong>:自动维护映射信息记录文件,便于查看和管理</li><li><strong>冲突防护</strong>:智能检测并避免端口冲突,确保每个虚拟机都有唯一的端口映射</li></ul><h4 id="安装方法" tabindex="-1">安装方法 <a class="header-anchor" href="#安装方法" aria-label="Permalink to "安装方法""></a></h4><ol><li><p>下载脚本到临时目录:</p><p>国际版本:</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><p>国内版本:</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://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/webvirtcloud/refs/heads/main/extra_scripts/vm_port_mapping_daemon.sh</span></span></code></pre></div></li><li><p>添加执行权限:</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>运行安装程序:</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>脚本会自动完成以下操作:</p><ul><li>将自身复制到系统目录 <code>/usr/local/sbin/vm_port_mapping_daemon.sh</code></li><li>创建systemd服务单元文件</li><li>启用并启动服务</li></ul><h4 id="端口映射规则" tabindex="-1">端口映射规则 <a class="header-anchor" href="#端口映射规则" aria-label="Permalink to "端口映射规则""></a></h4><p>守护进程会为每个虚拟机分配以下端口:</p><ol><li><p><strong>SSH端口</strong>:</p><ul><li>计算公式:<code>(IP最后一段) × 100 + 22 + 10000</code></li><li>示例:对于IP地址 192.168.33.114,映射的SSH端口为 114×100+22+10000 = 21422</li></ul></li><li><p><strong>额外端口</strong>:</p><ul><li>每个虚拟机分配10个额外端口</li><li>起始端口:20000 + (IP最后一段) × 100</li><li>结束端口:起始端口 + 9</li><li>示例:对于IP地址 192.168.33.114,额外端口范围为 20000+(114×100) 至 20000+(114×100)+9</li></ul></li></ol><p>如果计算出的端口已被占用,程序会自动寻找下一个可用端口,确保不发生冲突。</p><h4 id="映射文件" tabindex="-1">映射文件 <a class="header-anchor" href="#映射文件" aria-label="Permalink to "映射文件""></a></h4><p>所有端口映射信息保存在 <code>/etc/vm_port_mapping/mapping.txt</code> 文件中,格式为:</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>虚拟机名字 IP地址 MAC地址 SSH映射端口 额外端口起始 额外端口结束</span></span></code></pre></div><p>可使用以下命令进行查看</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>显示示例:</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="服务管理" tabindex="-1">服务管理 <a class="header-anchor" href="#服务管理" aria-label="Permalink to "服务管理""></a></h4><ul><li><p><strong>查看服务状态</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>启动服务</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>停止服务</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>禁用自启动</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>查看日志</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;"># 或</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>手动触发规则更新</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="常见问题" tabindex="-1">常见问题 <a class="header-anchor" href="#常见问题" aria-label="Permalink to "常见问题""></a></h4><h5 id="端口映射不生效" tabindex="-1">端口映射不生效 <a class="header-anchor" href="#端口映射不生效" aria-label="Permalink to "端口映射不生效""></a></h5><p>检查以下内容:</p><ul><li>确认服务正在运行:<code>systemctl status vm-port-mapping</code></li><li>检查日志文件:<code>cat /var/log/vm_port_mapping.log</code></li><li>确认防火墙服务正常:<code>systemctl status firewalld</code></li><li>验证虚拟机网络接口配置:<code>virsh domiflist 虚拟机名称</code></li></ul><h5 id="手动添加映射规则" tabindex="-1">手动添加映射规则 <a class="header-anchor" href="#手动添加映射规则" aria-label="Permalink to "手动添加映射规则""></a></h5><p>通常不需要手动添加规则,但如果需要,可以这样操作:</p><ol><li><p>停止服务:</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>编辑映射文件:</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>启动服务:</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="清理所有规则" tabindex="-1">清理所有规则 <a class="header-anchor" href="#清理所有规则" aria-label="Permalink to "清理所有规则""></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;">"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;">"</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;"><=</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;">"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;">"</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="安全建议" tabindex="-1">安全建议 <a class="header-anchor" href="#安全建议" aria-label="Permalink to "安全建议""></a></h5><ul><li>定期检查映射文件和日志,确保没有未授权的映射</li><li>不要手动修改 <code>/etc/vm_port_mapping/</code> 目录下的文件,除非你完全了解其影响</li><li>确保 <code>firewalld</code> 服务正常运行,以便规则能够正确持久化</li></ul><h4 id="卸载方法" tabindex="-1">卸载方法 <a class="header-anchor" href="#卸载方法" aria-label="Permalink to "卸载方法""></a></h4><p>如需卸载此服务:</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-手动映射" tabindex="-1">3.2 手动映射 <a class="header-anchor" href="#_3-2-手动映射" aria-label="Permalink to "3.2 手动映射""></a></h3><p>假设此时你的虚拟机在用户端控制面板显示为</p><p><img src="/assets/wv1.8ARiSJ9x.png" alt="wv1"></p><p>且宿主机的命令执行<code>ip a | head -n 15</code>结果为</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;"> <</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;">></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;"> <</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;">></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;"> 你的公网IPV4地址/对应的子网掩码</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>可见公网IPV4地址绑定的接口是<code>ens3</code>,所以后面的命令这里用<code>ens3</code></p><p>那么映射当前虚拟机的22端口到公网IPV4的3322端口的命令为:</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;"># 添加 DNAT 规则:将公网3322流量转发到宿主机本地的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;"># 添加 POSTROUTING:本机 NAT 伪装,以便连接正常返回</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;"># 需要允许 INPUT 的3322端口通过(firewalld 默认是开启了的)</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>这样内网的虚拟机就被映射出来,可以直接远程登录使用了。</p><h2 id="_4-问题排查" tabindex="-1">4. 问题排查 <a class="header-anchor" href="#_4-问题排查" aria-label="Permalink to "4. 问题排查""></a></h2><h3 id="添加计算节点错误排查" tabindex="-1">添加计算节点错误排查 <a class="header-anchor" href="#添加计算节点错误排查" aria-label="Permalink to "添加计算节点错误排查""></a></h3><p>在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;"> <</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;">></span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 8884</span></span></code></pre></div><p>在计算节点执行:</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>如果以上都查不出问题,那么就需要到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>将 <code>DEBUG=False</code> 改成 <code>DEBUG=True</code>,然后保存文件后,容器内执行:</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>然后<code>exit</code>退出容器后,执行:</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>然后前端去触发错误的位置,这块日志实时加载就会看到对应的报错了。</p><h3 id="controller-重启后-docker-容器不自重启" tabindex="-1">Controller 重启后 Docker 容器不自重启 <a class="header-anchor" href="#controller-重启后-docker-容器不自重启" aria-label="Permalink to "Controller 重启后 Docker 容器不自重启""></a></h3><p>如果 Docker 容器在系统重启后没有自动重启,执行以下命令:</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-缺点" tabindex="-1">5. 缺点 <a class="header-anchor" href="#_5-缺点" aria-label="Permalink to "5. 缺点""></a></h2><p><s>系统镜像是写死的,没法使用自己制作的自定义镜像,也没办法导出使用。</s></p><p>目前系统镜像是本人推送到Github仓库的那些镜像,具体自定义的镜像可导入PVE的qcow2格式的镜像,但需要在配置中填写哈希码。</p><p>同 <a href="https://github.com/retspen/webvirtcloud" target="_blank" rel="noreferrer">https://github.com/retspen/webvirtcloud</a> 不是同一个项目,不要搞混淆了。</p><p><img src="/assets/webvirtcloud.DNieKxNE.png" alt="webvirtcloud"></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/incomplete/webvirtcloud.md" target="_blank" rel="noreferrer" data-v-e257564d><!--[--><span class="vpi-square-pen edit-link-icon" data-v-e257564d></span> 在GitHub中编辑<!--]--></a></div><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>上次更新: <time datetime="2025-08-25T11:36:59.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="/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\":\"QCw3vCum\",\"case_case2.md\":\"D-N_5IyV\",\"case_case3.md\":\"DsMrcp8g\",\"case_case4.md\":\"Rjup-fG4\",\"case_case5.md\":\"D2onQviD\",\"case_case6.md\":\"DnknI0cB\",\"case_case7.md\":\"Cplo_7h-\",\"case_index.md\":\"Dyic-TZB\",\"developer_index.md\":\"D6G6WkH5\",\"developer_l10n.md\":\"vJO1deq6\",\"en_developer_index.md\":\"BBDQAo-i\",\"en_developer_l10n.md\":\"U_AW-rCZ\",\"en_guide_block_block_docker.md\":\"BNWJqy7c\",\"en_guide_block_block_incus.md\":\"wfJfeW-X\",\"en_guide_block_block_iptables.md\":\"CkKX43WG\",\"en_guide_block_block_lxd.md\":\"CS225dRm\",\"en_guide_block_block_pve.md\":\"C5GIYZfw\",\"en_guide_dashboard.md\":\"CoPXQKYp\",\"en_guide_dashboardq.md\":\"D9rbq_RH\",\"en_guide_docker_docker_android.md\":\"CD_FyeL0\",\"en_guide_docker_docker_build.md\":\"iJMqDSJF\",\"en_guide_docker_docker_custom.md\":\"B_wsfaWi\",\"en_guide_docker_docker_install.md\":\"DwLnhh5p\",\"en_guide_docker_docker_macos.md\":\"BpajpVfa\",\"en_guide_docker_docker_precheck.md\":\"V5LHCQyN\",\"en_guide_docker_docker_qa.md\":\"H7ZPFLy2\",\"en_guide_docker_docker_thanks.md\":\"DhW-g4GV\",\"en_guide_docker_docker_windows.md\":\"DQDzfGsY\",\"en_guide_incus_incus_custom.md\":\"E_asbeCw\",\"en_guide_incus_incus_extra_config.md\":\"B5XkWNow\",\"en_guide_incus_incus_install.md\":\"DIlXX2ph\",\"en_guide_incus_incus_lxc.md\":\"C_QX4oey\",\"en_guide_incus_incus_precheck.md\":\"B5ckhoNv\",\"en_guide_incus_incus_qa.md\":\"L9GZgJZD\",\"en_guide_incus_incus_thanks.md\":\"D9kOBjGM\",\"en_guide_incus_incus_windows.md\":\"CqGrE45j\",\"en_guide_lxd_lxd_custom.md\":\"CjWN2cVk\",\"en_guide_lxd_lxd_extra_config.md\":\"Bl5Z3_I4\",\"en_guide_lxd_lxd_install.md\":\"CdzpdxRN\",\"en_guide_lxd_lxd_lxc.md\":\"x5Nd3YEY\",\"en_guide_lxd_lxd_precheck.md\":\"DT-85UWn\",\"en_guide_lxd_lxd_qa.md\":\"sCEW4I9W\",\"en_guide_lxd_lxd_thanks.md\":\"BoduABmP\",\"en_guide_lxd_lxd_windows.md\":\"CE_TOBeZ\",\"en_guide_pve_images_readme.md\":\"DZfLTPtX\",\"en_guide_pve_pve_android.md\":\"ZW0m0P5y\",\"en_guide_pve_pve_custom.md\":\"DOrI7j2M\",\"en_guide_pve_pve_install.md\":\"Dm1H8V1T\",\"en_guide_pve_pve_kvm.md\":\"BWy89qFV\",\"en_guide_pve_pve_lxc.md\":\"YFVmBfgH\",\"en_guide_pve_pve_macos.md\":\"ERocA8H7\",\"en_guide_pve_pve_precheck.md\":\"C6a_G_Jy\",\"en_guide_pve_pve_qa.md\":\"CXCdOEmO\",\"en_guide_pve_pve_thanks.md\":\"DU4aFpxB\",\"en_guide_pve_pve_windows.md\":\"Bym4HK_7\",\"en_incomplete_bashvm.md\":\"DFG7m4TY\",\"en_incomplete_cockpit.md\":\"wxUl1cJe\",\"en_incomplete_convoy.md\":\"By2pRJqA\",\"en_incomplete_index.md\":\"5As4OCnY\",\"en_incomplete_pterodactyl.md\":\"mmXDXf_0\",\"en_incomplete_virtfusion.md\":\"Dor0-5nj\",\"en_incomplete_virtualizor-docker.md\":\"3GKNv7Rt\",\"en_incomplete_webvirtcloud.md\":\"BzqvHl8J\",\"en_incomplete_webvirtcloud_retspen.md\":\"CoN4SyT1\",\"en_incomplete_webvirtmgr.md\":\"ShQXDOLI\",\"en_index.md\":\"m2TwdHhZ\",\"guide_block_block_docker.md\":\"DWi5EGI9\",\"guide_block_block_incus.md\":\"C88KHfvV\",\"guide_block_block_iptables.md\":\"E_1VFpAG\",\"guide_block_block_lxd.md\":\"DkhRGUz6\",\"guide_block_block_pve.md\":\"DAGSUWt3\",\"guide_dashboard.md\":\"BB1iidCR\",\"guide_dashboardq.md\":\"CTyWtFwe\",\"guide_docker_docker_android.md\":\"D2IpxFcj\",\"guide_docker_docker_build.md\":\"D0HCrpBR\",\"guide_docker_docker_custom.md\":\"BdoMksZm\",\"guide_docker_docker_install.md\":\"BauRmAzH\",\"guide_docker_docker_macos.md\":\"1nzuydl8\",\"guide_docker_docker_precheck.md\":\"Wga7B7Tn\",\"guide_docker_docker_qa.md\":\"CNezXd7Z\",\"guide_docker_docker_thanks.md\":\"BAy7vhZQ\",\"guide_docker_docker_windows.md\":\"CJkoRf6n\",\"guide_incus_incus_custom.md\":\"DM5GVyXf\",\"guide_incus_incus_extra_config.md\":\"CKmmqnVk\",\"guide_incus_incus_install.md\":\"DpKhuUNw\",\"guide_incus_incus_lxc.md\":\"D8oZPTHJ\",\"guide_incus_incus_precheck.md\":\"DoKW7f3_\",\"guide_incus_incus_qa.md\":\"DL3-7LII\",\"guide_incus_incus_qemu.md\":\"BVvYeZXm\",\"guide_incus_incus_thanks.md\":\"DgaCBC7C\",\"guide_incus_incus_windows.md\":\"N23F_ODn\",\"guide_lxd_lxd_custom.md\":\"BqBS0iFQ\",\"guide_lxd_lxd_extra_config.md\":\"BoHbKi9X\",\"guide_lxd_lxd_install.md\":\"CcsjReAt\",\"guide_lxd_lxd_lxc.md\":\"CIcgM6SU\",\"guide_lxd_lxd_precheck.md\":\"BHnypqnY\",\"guide_lxd_lxd_qa.md\":\"BZS88HJ_\",\"guide_lxd_lxd_thanks.md\":\"C1lKO-j2\",\"guide_lxd_lxd_windows.md\":\"Dj6yBVt8\",\"guide_pve_images_readme.md\":\"BE2n0KWI\",\"guide_pve_pve_android.md\":\"BU8Q-0ol\",\"guide_pve_pve_custom.md\":\"D15qpeji\",\"guide_pve_pve_install.md\":\"DbbTbDvp\",\"guide_pve_pve_kvm.md\":\"DbbW3m-L\",\"guide_pve_pve_lxc.md\":\"DBQcT5Ov\",\"guide_pve_pve_macos.md\":\"B-d8_og-\",\"guide_pve_pve_precheck.md\":\"yNMO3rHm\",\"guide_pve_pve_qa.md\":\"CPBuO54z\",\"guide_pve_pve_thanks.md\":\"BbKshTY6\",\"guide_pve_pve_windows.md\":\"BZmvwm4A\",\"incomplete_bashvm.md\":\"VFttIy5w\",\"incomplete_cockpit.md\":\"Ba7IQ_0t\",\"incomplete_convoy.md\":\"D7SBwRld\",\"incomplete_index.md\":\"DMFLuKmo\",\"incomplete_pterodactyl.md\":\"BnLYr-C4\",\"incomplete_virtfusion.md\":\"fZmFl8gX\",\"incomplete_virtualizor-docker.md\":\"BI4rp1yg\",\"incomplete_webvirtcloud.md\":\"D781gDtL\",\"incomplete_webvirtcloud_retspen.md\":\"Bd6WDPPc\",\"incomplete_webvirtmgr.md\":\"jg76GIY2\",\"index.md\":\"CJEdYYOc\"}");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\":\"常用镜像\",\"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虚拟机(QEMU)\",\"link\":\"/guide/incus/incus_qemu.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虚拟机(QEMU)\",\"link\":\"/guide/incus/incus_qemu.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\":\"Common Images\",\"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> |