From 1dc0f1203c985c4cb4ea7e92db9e9b462ec37bcf Mon Sep 17 00:00:00 2001
From: spiritlhl <103393591+spiritLHLS@users.noreply.github.com>
Date: Sun, 31 May 2026 17:51:14 +0800
Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BC=98=E5=8C=96=E6=95=B4?=
=?UTF-8?q?=E4=BD=93=E5=86=85=E5=AE=B9=E8=AF=B4=E6=98=8E=E5=92=8C=E6=A0=87?=
=?UTF-8?q?=E5=87=86=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 12 +-
docs/.vitepress/config.mts | 102 +++++---
docs/.vitepress/theme/index.ts | 1 +
docs/.vitepress/theme/style.css | 37 +++
docs/case/case1.md | 24 +-
docs/en/case/case1.md | 230 ++++++++++++++++--
docs/en/case/case6.md | 8 -
docs/en/case/case7.md | 8 -
docs/en/case/index.md | 2 +-
docs/en/developer/l10n.md | 18 +-
docs/en/guide/block/block_docker.md | 6 +-
docs/en/guide/block/block_pve.md | 2 +-
docs/en/guide/containerd/containerd_build.md | 21 +-
.../en/guide/containerd/containerd_install.md | 16 --
docs/en/guide/containerd/containerd_qa.md | 21 +-
docs/en/guide/dashboard.md | 4 +-
docs/en/guide/docker/docker_android.md | 2 +-
docs/en/guide/docker/docker_build.md | 6 +-
docs/en/guide/docker/docker_custom.md | 6 +-
docs/en/guide/docker/docker_install.md | 28 +--
docs/en/guide/docker/docker_precheck.md | 18 +-
docs/en/guide/docker/docker_qa.md | 15 --
docs/en/guide/docker/docker_windows.md | 8 +-
docs/en/guide/incus/incus_custom.md | 70 +++---
docs/en/guide/incus/incus_extra_config.md | 14 +-
docs/en/guide/incus/incus_install.md | 14 +-
docs/en/guide/incus/incus_lxc.md | 2 +-
docs/en/guide/incus/incus_precheck.md | 12 +-
docs/en/guide/incus/incus_qa.md | 27 +-
docs/en/guide/incus/incus_qemu.md | 12 +-
docs/en/guide/incus/incus_windows.md | 6 +-
docs/en/guide/kubevirt/kubevirt_qa.md | 18 --
docs/en/guide/lxd/lxd_custom.md | 64 ++---
docs/en/guide/lxd/lxd_extra_config.md | 14 +-
docs/en/guide/lxd/lxd_install.md | 16 +-
docs/en/guide/lxd/lxd_lxc.md | 2 +-
docs/en/guide/lxd/lxd_precheck.md | 8 +-
docs/en/guide/lxd/lxd_qa.md | 18 +-
docs/en/guide/lxd/lxd_qemu.md | 12 +-
docs/en/guide/lxd/lxd_windows.md | 6 +-
.../oneclickvirt/oneclickvirt_install.md | 4 +-
docs/en/guide/oneclickvirt/oneclickvirt_qa.md | 15 --
.../guide/oneclickvirt/oneclickvirt_usage.md | 55 ++---
docs/en/guide/podman/podman_build.md | 21 +-
docs/en/guide/podman/podman_install.md | 16 --
docs/en/guide/podman/podman_qa.md | 16 --
docs/en/guide/pve/images/readme.md | 2 +-
docs/en/guide/pve/pve_android.md | 8 +-
docs/en/guide/pve/pve_custom.md | 14 +-
docs/en/guide/pve/pve_install.md | 83 +++----
docs/en/guide/pve/pve_kvm.md | 76 +++---
docs/en/guide/pve/pve_lxc.md | 16 +-
docs/en/guide/pve/pve_macos.md | 24 +-
docs/en/guide/pve/pve_precheck.md | 36 +--
docs/en/guide/pve/pve_qa.md | 31 +--
docs/en/guide/pve/pve_windows.md | 2 +-
docs/en/guide/qemu/qemu_qa.md | 16 --
docs/en/incomplete/index.md | 8 +-
docs/en/incomplete/webvirtcloud.md | 2 +-
docs/en/incomplete/webvirtcloud_retspen.md | 4 +-
docs/en/index.md | 8 +-
docs/guide/oneclickvirt/oneclickvirt_usage.md | 14 +-
package-lock.json | 86 -------
package.json | 1 -
64 files changed, 668 insertions(+), 800 deletions(-)
create mode 100644 docs/.vitepress/theme/style.css
diff --git a/README.md b/README.md
index 886da3ac4a..7c3b8c9775 100644
--- a/README.md
+++ b/README.md
@@ -10,13 +10,11 @@
[https://www.spiritlhl.net/en/](https://www.spiritlhl.net/en/)
-一键虚拟化项目(One click virtualization)
+一键虚拟化项目文档站点(OneClickVirt documentation site)
-Documentation for one-click virtualization
+提供 Proxmox VE、Incus、LXD、Docker 等虚拟化项目的一键安装与使用说明,同时收录相关工具与扩展项目文档。
-一键安装与使用 Proxmox-VE、incus、LXD、Docker 的说明文档,同时包含其他项目指南
-
-Documentation for one-click installation and use of Proxmox-VE, incus, LXD, Docker, and other project guides
+Documentation for one-click installation and usage of Proxmox VE, Incus, LXD, Docker, and related tools in the OneClickVirt ecosystem.
```
webvirtcloud
@@ -30,9 +28,9 @@ bashvm
webvirtmgr
```
-支持中英双语
+支持中英双语。
-Supports both Chinese and English
+Chinese and English are both supported.
## OneClickVirt
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index 821b627286..b3973713a2 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -1,36 +1,69 @@
-import { createWriteStream } from 'node:fs';
-import { resolve } from 'node:path';
-import { SitemapStream } from 'sitemap';
import { defineConfig } from 'vitepress';
-const links: { url: string; lastmod: number }[] = [];
+const SITE_URL = 'https://www.spiritlhl.net';
+
+function toSitePath(relativePath: string) {
+ return `/${relativePath}`
+ .replace(/\/index\.md$/, '/')
+ .replace(/\.md$/, '.html');
+}
+
+function toCanonicalUrl(relativePath: string) {
+ return new URL(toSitePath(relativePath), `${SITE_URL}/`).toString();
+}
+
+function getDefaultTitle(relativePath: string) {
+ return relativePath.startsWith('en/')
+ ? 'OneClickVirt'
+ : '一键虚拟化项目';
+}
+
+function getLocaleCode(relativePath: string) {
+ return relativePath.startsWith('en/') ? 'en_US' : 'zh_CN';
+}
export default defineConfig({
lastUpdated: true,
lang: 'zh-CN',
+ sitemap: {
+ hostname: SITE_URL,
+ transformItems(items) {
+ return items.filter((item) => !/\/404(?:\.html)?$/.test(item.url));
+ },
+ },
markdown: {
lineNumbers: true,
image: {
lazyLoading: true,
},
},
- transformHtml: (_, id, { pageData }) => {
- if (!/[\\/]404\.html$/.test(id)) {
- links.push({
- url: pageData.relativePath.replace(/\/index\.md$/, '/').replace(/\.md$/, '.html'),
- lastmod: pageData.lastUpdated ?? Date.now(),
- });
+ transformPageData(pageData) {
+ if (pageData.relativePath === '404.md') {
+ return;
+ }
+
+ const canonicalUrl = toCanonicalUrl(pageData.relativePath);
+ const title = pageData.title || getDefaultTitle(pageData.relativePath);
+ const description = pageData.description || '';
+
+ pageData.frontmatter.head ??= [];
+ pageData.frontmatter.head.push(
+ ['link', { rel: 'canonical', href: canonicalUrl }],
+ ['meta', { property: 'og:type', content: 'article' }],
+ ['meta', { property: 'og:site_name', content: getDefaultTitle(pageData.relativePath) }],
+ ['meta', { property: 'og:locale', content: getLocaleCode(pageData.relativePath) }],
+ ['meta', { property: 'og:title', content: title }],
+ ['meta', { property: 'og:url', content: canonicalUrl }],
+ ['meta', { name: 'twitter:card', content: 'summary_large_image' }],
+ ['meta', { name: 'twitter:title', content: title }],
+ );
+
+ if (description) {
+ pageData.frontmatter.head.push(
+ ['meta', { property: 'og:description', content: description }],
+ ['meta', { name: 'twitter:description', content: description }],
+ );
}
- },
- buildEnd: async ({ outDir }) => {
- const sitemap = new SitemapStream({
- hostname: 'https://www.spiritlhl.net/'
- });
- const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml'));
- sitemap.pipe(writeStream);
- links.forEach((link) => sitemap.write(link));
- sitemap.end();
- await new Promise((r) => writeStream.on('finish', r));
},
head: [
['link', { rel: 'icon', href: 'https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png' }],
@@ -125,7 +158,7 @@ export default defineConfig({
en: {
lang: 'en-US',
label: 'English',
- title: 'One Click Virtualization',
+ title: 'OneClickVirt',
description: 'Open source, easy to use server virtualization project',
link: '/en/',
themeConfig: {
@@ -142,7 +175,7 @@ export default defineConfig({
externalLinkIcon: true,
nav: [
{
- text: 'Virtualization Platforms',
+ text: 'Platforms',
activeMatch: '^/en/guide/',
items: [
{ text: 'OneClickVirt', link: '/en/guide/oneclickvirt/oneclickvirt_precheck.html' },
@@ -158,7 +191,7 @@ export default defineConfig({
]
},
{
- text: 'Other Virtualization Projects',
+ text: 'Other Projects',
activeMatch: '^/en/incomplete/',
items: [
{ text: 'webvirtcloud', link: '/en/incomplete/webvirtcloud.html' },
@@ -173,7 +206,7 @@ export default defineConfig({
]
},
{
- text: 'Utility Projects',
+ text: 'Utilities',
activeMatch: '^/en/case/',
items: [
{ text: '1. ECS benchmark script for VPS', link: '/en/case/case1.html' },
@@ -207,14 +240,17 @@ export default defineConfig({
},
themeConfig: {
outline: 'deep',
+ search: {
+ provider: 'algolia',
+ options: {
+ appId: 'K1R85MDU0C',
+ apiKey: '9375787ec1c00e2b813683fbbde25ae2',
+ indexName: 'virt-spiritlhl'
+ }
+ },
socialLinks: [
{ icon: 'github', link: 'https://github.com/oneclickvirt' }
],
- algolia: {
- appId: 'K1R85MDU0C',
- apiKey: '9375787ec1c00e2b813683fbbde25ae2',
- indexName: 'virt-spiritlhl'
- },
footer: {
message: 'Under (CC BY-NC-SA 4.0) License.
Also thanks to Cloudflare and tanglu.me for the CDN.',
copyright: 'Copyright © 2022-present oneclickvirt'
@@ -282,7 +318,7 @@ function getGuideSidebarZhCN() {
{ 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: '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' },
@@ -479,7 +515,7 @@ function getGuideSidebarEnUS() {
{ 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: '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' },
@@ -551,9 +587,9 @@ function getGuideSidebarEnUS() {
items: [
{ text: 'via iptables', link: '/en/guide/block/block_iptables.html' },
{ text: 'In PVE', link: '/en/guide/block/block_pve.html' },
- { text: 'In INCUS', link: '/en/guide/block/block_incus.html' },
+ { text: 'In Incus', link: '/en/guide/block/block_incus.html' },
{ text: 'In LXD', link: '/en/guide/block/block_lxd.html' },
- { text: 'In DOCKER', link: '/en/guide/block/block_docker.html' },
+ { text: 'In Docker', link: '/en/guide/block/block_docker.html' },
]
},
{
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
index 7a5e81fa1e..b2f98d86a8 100644
--- a/docs/.vitepress/theme/index.ts
+++ b/docs/.vitepress/theme/index.ts
@@ -1,6 +1,7 @@
import DefaultTheme from 'vitepress/theme'
import { h } from 'vue'
import ComponentInHeader from '../../components/ComponentInHeader.vue'
+import './style.css'
export default {
extends: DefaultTheme,
diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css
new file mode 100644
index 0000000000..dbbd5121d5
--- /dev/null
+++ b/docs/.vitepress/theme/style.css
@@ -0,0 +1,37 @@
+@media (min-width: 768px) {
+ html[lang^='en'] .VPNavBar .content,
+ html[lang^='en'] .VPNavBar .menu,
+ html[lang^='en'] .VPNavBar .menu > * {
+ min-width: 0;
+ }
+
+ html[lang^='en'] .VPNavBar .content-body,
+ html[lang^='en'] .VPNavBar .menu {
+ overflow: hidden;
+ }
+
+ html[lang^='en'] .VPNavBar .menu {
+ flex: 1 1 auto;
+ justify-content: flex-end;
+ }
+
+ html[lang^='en'] .VPNavBar .translations,
+ html[lang^='en'] .VPNavBar .appearance,
+ html[lang^='en'] .VPNavBar .social-links,
+ html[lang^='en'] .VPNavBar .extra {
+ flex-shrink: 0;
+ }
+
+ html[lang^='en'] .VPNavBar .VPNavBarMenuLink,
+ html[lang^='en'] .VPNavBar .VPNavBarMenuGroup .button {
+ min-width: 0;
+ max-width: clamp(96px, 11vw, 168px);
+ overflow: hidden;
+ }
+
+ html[lang^='en'] .VPNavBar .VPNavBarMenuLink > span,
+ html[lang^='en'] .VPNavBar .VPNavBarMenuGroup .button .text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
\ No newline at end of file
diff --git a/docs/case/case1.md b/docs/case/case1.md
index 1eea619fcf..3a87c7be6d 100644
--- a/docs/case/case1.md
+++ b/docs/case/case1.md
@@ -10,9 +10,9 @@ outline: deep
[](https://hits.spiritlhl.net) [](https://github.com/oneclickvirt/ecs/releases)
-融合怪测评项目 - GO版本
+融合怪测评项目 - Go 版本
-(仅环境安装[非必须]使用shell外无额外shell文件依赖,环境安装只是为了测的更准,极端情况下无环境依赖安装也可全测项目)
+除可选的环境安装步骤仍会调用 shell 外,项目本体不依赖额外 shell 文件。环境安装只是为了提升测试准确度,极端情况下即使不安装这些依赖,也依然可以完成大部分测试。
如有问题请 [issues](https://github.com/oneclickvirt/ecs/issues) 反馈。
@@ -43,7 +43,7 @@ Shell 版本:[https://github.com/spiritLHLS/ecs](https://github.com/spiritLHLS
| 系统 | 说明 |
|----------------|---------------------------|
-| OpenBSD/NetBSD | 部分Goalng的官方库未支持本系统(尤其是net相关项目) |
+| OpenBSD/NetBSD | 部分Golang的官方库暂未支持本系统(尤其是 net 相关项目) |
---
@@ -58,7 +58,7 @@ Shell 版本:[https://github.com/spiritLHLS/ecs](https://github.com/spiritLHLS
- 邮件端口测试:[portchecker](https://github.com/oneclickvirt/portchecker)
- 上游及回程路由线路检测:借鉴 [zhanghanyun/backtrace](https://github.com/zhanghanyun/backtrace),二次开发至 [oneclickvirt/backtrace](https://github.com/oneclickvirt/backtrace)
- 三网路由测试:基于 [NTrace-core](https://github.com/nxtrace/NTrace-core),二次开发至 [nt3](https://github.com/oneclickvirt/nt3)
-- 网速测试:基于 [speedtest.net](https://github.com/spiritLHLS/speedtest.net-CN-ID) 和 [speedtest.cn](https://github.com/spiritLHLS/speedtest.cn-CN-ID) 数据,开发至 [oneclickvirt/speedtest](https://github.com/oneclickvirt/speedtest)
+- 网速测试:基于 [speedtest.net](https://github.com/spiritLHLS/speedtest.net-CN-ID) 和 [speedtest.cn](https://github.com/spiritLHLS/speedtest.cn-CN-ID) 数据,开发至 [oneclickvirt/speedtest](https://github.com/oneclickvirt/speedtest),同时融合私有国内测速节点
- 三网 Ping 值测试:借鉴 [ecsspeed](https://github.com/spiritLHLS/ecsspeed),二次开发至 [pingtest](https://github.com/oneclickvirt/pingtest)
- 支持root或admin环境下测试,支持非root或非admin环境下测试,支持离线环境下进行测试,**暂未**支持无DNS的在线环境下进行测试
@@ -89,7 +89,7 @@ Shell 版本:[https://github.com/spiritLHLS/ecs](https://github.com/spiritLHLS
- **国内用户使用 CNB 加速:**
```bash
- export noninteractive=true && curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs
+ export noninteractive=true && export CN=true && curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs
```
- **短链接:**
@@ -130,7 +130,7 @@ Shell 版本:[https://github.com/spiritLHLS/ecs](https://github.com/spiritLHLS
**国内用户使用 CNB 加速:**
```bash
- curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh && chmod +x goecs.sh
+ export CN=true && curl -L https://cnb.cool/oneclickvirt/ecs/-/git/raw/main/goecs.sh -o goecs.sh && chmod +x goecs.sh
```
2. **更新包管理器(可选择)并安装环境**
@@ -268,8 +268,8 @@ Usage: goecs [options]
1. 下载带 exe 文件的压缩包:[Releases](https://github.com/oneclickvirt/ecs/releases)
2. 解压后,右键以管理员模式运行。
-PS:如果是虚拟机环境,不以管理员模式运行也行,因为虚拟机无原生的测试工具,将自动启用替代方法测试。
-PPS: 暂时不要下载带GUI标签的exe文件,未完整适配,CI版本的压缩包是没问题的。
+PS:如果是在虚拟机环境中运行,不以管理员模式启动通常也可以,因为虚拟机缺少部分原生测试工具时会自动启用替代方案。
+PPS:暂时不要下载带 GUI 标签的 exe 文件,相关适配还不完整,优先使用常规 CI 产物压缩包。
---
@@ -312,7 +312,7 @@ docker run --rm --privileged --network host crpi-8tmognxgyb86bm61.cn-guangzhou.p
docker run --rm crpi-8tmognxgyb86bm61.cn-guangzhou.personal.cr.aliyuncs.com/oneclickvirt/ecs:latest -menu=false -l zh
```
-实际上还有CNB镜像地址 https://cnb.cool/oneclickvirt/ecs/-/packages/docker/ecs 但很可惜组织空间不足无法推送了,更推荐使用阿里云镜像加速
+实际上还有 CNB 镜像地址 https://cnb.cool/oneclickvirt/ecs/-/packages/docker/ecs ,但由于组织空间不足,目前无法继续推送,因此更推荐直接使用阿里云镜像加速。
@@ -331,7 +331,7 @@ cd ecs
2. 安装 Go 环境(如已安装可跳过)
-选择 go 1.25.3 的版本进行安装
+选择 Go 1.25.4 版本进行安装
```bash
curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritLHLS/one-click-installation-script/main/install_scripts/go.sh -o go.sh && chmod +x go.sh && bash go.sh
@@ -394,11 +394,11 @@ GOOS=darwin GOARCH=amd64 go build -o goecs_darwin
#### Q: 测试进行到一半如何手动终止?
-#### A: 按ctrl键和c键终止程序,终止后依然会在当前目录下生成goecs.txt文件和分享链接,里面是已经测试到的信息。
+#### A: 按 `Ctrl+C` 终止程序。终止后依然会在当前目录下生成 `goecs.txt` 文件和分享链接,里面会保留已经完成的测试结果。
#### Q: 非Root环境如何进行测试?
-#### A: 手动执行安装命令,实在装不上也没问题,直接在release中下载对应架构的压缩包解压后执行即可,只要你能执行的了文件。或者你能使用docker的话用docker执行。
+#### A: 可以先尝试手动执行安装命令。若确实无法安装依赖,也没关系,直接去 release 页面下载对应架构的压缩包,解压后执行即可,只要当前环境允许运行该文件。若可用 Docker,也可以直接通过 Docker 运行。
## 致谢
diff --git a/docs/en/case/case1.md b/docs/en/case/case1.md
index ac45b512dc..8ab60c7b76 100644
--- a/docs/en/case/case1.md
+++ b/docs/en/case/case1.md
@@ -2,42 +2,232 @@
outline: deep
---
-# Repository
-
-https://github.com/oneclickvirt/ecs
-
-[](https://github.com/oneclickvirt/ecs/actions/workflows/build_binary.yaml)
-[](https://app.fossa.com/projects/git%2Bgithub.com%2Foneclickvirt%2Fecs?ref=badge_shield)
-[](https://hits.spiritlhl.net)
-[](https://github.com/oneclickvirt/ecs/releases)
-
# ECS
-A VPS benchmark project (Go edition).
+[](https://github.com/oneclickvirt/ecs/actions/workflows/build_binary.yaml)
-If you run into issues, please report them here:
-https://github.com/oneclickvirt/ecs/issues
+[](https://app.fossa.com/projects/git%2Bgithub.com%2Foneclickvirt%2Fecs?ref=badge_shield)
+
+[](https://hits.spiritlhl.net) [](https://github.com/oneclickvirt/ecs/releases)
+
+ECS is the Go-based benchmark and diagnostics suite from the oneclickvirt project.
+
+Repository: https://github.com/oneclickvirt/ecs
+
+Issue tracker: https://github.com/oneclickvirt/ecs/issues
+
+Shell edition: https://github.com/spiritLHLS/ecs/blob/main/README_EN.md
+
+## Overview
+
+- Collects system and network basics through [basics](https://github.com/oneclickvirt/basics) and [gostun](https://github.com/oneclickvirt/gostun)
+- Runs CPU, memory, and disk tests through [cputest](https://github.com/oneclickvirt/cputest), [memorytest](https://github.com/oneclickvirt/memorytest), and [disktest](https://github.com/oneclickvirt/disktest)
+- Checks media unlock status with [UnlockTests](https://github.com/oneclickvirt/UnlockTests)
+- Queries IP quality and security details through [securityCheck](https://github.com/oneclickvirt/securityCheck)
+- Tests mail ports with [portchecker](https://github.com/oneclickvirt/portchecker)
+- Runs route and network tests through [backtrace](https://github.com/oneclickvirt/backtrace), [nt3](https://github.com/oneclickvirt/nt3), [speedtest](https://github.com/oneclickvirt/speedtest), and [pingtest](https://github.com/oneclickvirt/pingtest)
+- Supports root/admin environments, non-root/non-admin environments, and offline execution
+- Online testing without DNS is still not supported
+
+First-time users should read the upstream getting-started guide first:
+
+https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md
+
+## Supported Systems And Architectures
+
+| Supported for Compilation | Tested on | Supported OS for Compilation | Tested OS |
+|---------------------------|-----------|------------------------------|-----------|
+| amd64 | amd64 | Linux | Linux |
+| arm64 | arm64 | Windows | Windows |
+| arm | | macOS (Darwin) | macOS |
+| 386 | | FreeBSD | |
+| mips, mipsle | | Android | |
+| mips64, mips64le | | | |
+| ppc64, ppc64le | | | |
+| s390x | s390x | | |
+| riscv64 | | | |
+
+Systems still pending support:
+
+| OS | Notes |
+|----|-------|
+| OpenBSD / NetBSD | Some official Golang libraries are still unsupported there, especially network-related ones. |
## Quick Start
-The one-click command below defaults to:
+The one-line installer below defaults to:
+
- no dependency installation
- no package manager update
- non-interactive mode
```bash
-export noninteractive=true && curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs
+export noninteractive=true && curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs -l en
```
-CDN mirror:
+Short link:
```bash
-export noninteractive=true && curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs
+export noninteractive=true && curl -L https://bash.spiritlhl.net/goecs -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs -l en
```
+## Step-By-Step Usage
+
+1. Download the installer script:
+
+```bash
+curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh
+```
+
+2. Optionally install dependencies and prepare the environment:
+
+```bash
+./goecs.sh env
+```
+
+Non-interactive mode:
+
+```bash
+export noninteractive=true && ./goecs.sh env
+```
+
+3. Install the `goecs` binary:
+
+```bash
+./goecs.sh install
+```
+
+4. Upgrade `goecs`:
+
+```bash
+./goecs.sh upgrade
+```
+
+5. Uninstall `goecs`:
+
+```bash
+./goecs.sh uninstall
+```
+
+6. Show installer help:
+
+```bash
+./goecs.sh -h
+```
+
+7. Launch the menu directly:
+
+```bash
+goecs -l en
+```
+
+## Common Runtime Flags
+
+Use `goecs -h` to view the full parameter list. The most commonly used options are:
+
+- `-menu=false`: run without the interactive menu
+- `-l en` or `-l zh`: set the interface language
+- `-cpu-method sysbench|geekbench|winsat`: choose the CPU test backend
+- `-cpu-thread single|multi`: switch between single-core and multi-core CPU tests
+- `-memory-method stream|sysbench|dd|winsat|auto`: choose the memory test method
+- `-disk-method fio|dd|winsat`: choose the disk test method
+- `-diskp /path/to/test`: choose the disk test path
+- `-speed=false`, `-security=false`, `-ut=false`: disable individual modules when needed
+- `-spnum 2`: set the number of speed test servers per carrier
+- `-upload=false`: do not upload the share result
+
+## Windows
+
+1. Download the release archive that contains the `.exe` binary: [Releases](https://github.com/oneclickvirt/ecs/releases)
+2. Extract it, then run it as Administrator.
+
+Notes:
+
+- In virtual machines, running without Administrator privileges is often still acceptable because ECS will fall back to substitute test methods when native tools are unavailable.
+- Avoid the builds labeled with `GUI` for now. The standard CI release archives are the stable choice.
+
+## Docker
+
+Docker image: https://hub.docker.com/r/spiritlhl/goecs
+
+Make sure Docker is already installed before running the examples below.
+
+Privileged mode with host networking:
+
+```shell
+docker run --rm --privileged --network host spiritlhl/goecs:latest -menu=false -l=en
+```
+
+Unprivileged mode without host networking:
+
+```shell
+docker run --rm spiritlhl/goecs:latest -menu=false -l=en
+```
+
+Docker-based runs are convenient, but hardware-related results and virtualization detection can be less accurate. Direct execution on the host remains the recommended approach.
+
+## Build From Source
+
+1. Clone the public branch:
+
+```bash
+git clone -b public https://github.com/oneclickvirt/ecs.git
+cd ecs
+```
+
+2. Install Go 1.25.4 or newer.
+
+3. Build the binary:
+
+```bash
+go build -o goecs
+```
+
+4. Run a non-interactive English test:
+
+```bash
+./goecs -menu=false -l=en
+```
+
+Supported compile targets:
+
+- `GOOS`: `linux`, `windows`, `darwin`, `freebsd`, `openbsd`
+- `GOARCH`: `amd64`, `arm`, `arm64`, `386`, `mips`, `mipsle`, `s390x`, `riscv64`
+
+Cross-compile examples:
+
+```bash
+GOOS=windows GOARCH=amd64 go build -o goecs.exe
+GOOS=darwin GOARCH=amd64 go build -o goecs_darwin
+```
+
+## FAQ
+
+#### Why does ECS use sysbench by default instead of geekbench?
+
+`sysbench` is lighter, more stable across environments, and easier to compare historically. `geekbench` is still supported, but it requires a heavier online environment and its scores vary more across major versions.
+
+#### Why was the project rewritten in Golang instead of Rust?
+
+Most upstream tooling and surrounding ecosystem components are already maintained in Golang, so it is the more practical choice for this project.
+
+#### Why not continue with the Shell edition only?
+
+Prebuilt binaries are much easier to run across inconsistent environments. That reduces environment-specific failures and makes the tool easier to distribute.
+
+#### Are there explanations for every individual test item?
+
+Yes. Each test module has its own upstream repository. Follow the component links in the overview section for implementation details and project-specific notes.
+
+#### How do I stop a running test?
+
+Press `Ctrl+C`. ECS will still keep the already collected results in the current directory and retain the generated share link information.
+
+#### How can I use ECS in a non-root environment?
+
+Try the manual installation flow first. If dependency installation is not possible, download the matching release archive, extract it, and run the binary directly. Docker is another fallback when it is available.
+
## Notes
-- For complete architecture/system support and all command flags, check the upstream README:
- https://github.com/oneclickvirt/ecs
-- Shell edition is available at:
- https://github.com/spiritLHLS/ecs
+- The upstream repository remains the source of truth for the latest release assets and low-level usage details: https://github.com/oneclickvirt/ecs
+- The shell implementation remains available separately: https://github.com/spiritLHLS/ecs
diff --git a/docs/en/case/case6.md b/docs/en/case/case6.md
index 6de0093b85..44a765e6ea 100644
--- a/docs/en/case/case6.md
+++ b/docs/en/case/case6.md
@@ -12,18 +12,10 @@ Add swap space (virtual memory) to Linux servers on OpenVZ/KVM environments.
## Install
-Global:
-
```bash
curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o addswap.sh && chmod +x addswap.sh && bash addswap.sh
```
-CN mirror:
-
-```bash
-curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o addswap.sh && chmod +x addswap.sh && bash addswap.sh
-```
-
## Notes
- Input `1024` to create about `1G` swap.
diff --git a/docs/en/case/case7.md b/docs/en/case/case7.md
index 7940f90e9e..26a2eaa4c5 100644
--- a/docs/en/case/case7.md
+++ b/docs/en/case/case7.md
@@ -12,18 +12,10 @@ Enable zram (compressed memory) on Linux servers.
## Install
-Global:
-
```bash
curl -L https://raw.githubusercontent.com/spiritLHLS/addzram/main/addzram.sh -o addzram.sh && chmod +x addzram.sh && bash addzram.sh
```
-CN mirror:
-
-```bash
-curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritLHLS/addzram/main/addzram.sh -o addzram.sh && chmod +x addzram.sh && bash addzram.sh
-```
-
## Notes
- zram and swap both consume CPU resources in different ways.
diff --git a/docs/en/case/index.md b/docs/en/case/index.md
index d9ad2fca4c..32729dbe05 100644
--- a/docs/en/case/index.md
+++ b/docs/en/case/index.md
@@ -7,7 +7,7 @@ titleTemplate: Practical Linux-related tools
hero:
name: Utility Projects
text: Practical Linux-related tools
- image: https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png
+ image: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png
actions:
- theme: brand
text: Explore Projects →
diff --git a/docs/en/developer/l10n.md b/docs/en/developer/l10n.md
index 4de5103ad7..2c990b72e7 100644
--- a/docs/en/developer/l10n.md
+++ b/docs/en/developer/l10n.md
@@ -1,10 +1,14 @@
-**You can follow these steps to support localization when developing new features**
+---
+outline: deep
+---
+
+**You can follow these steps to support localization when developing new features**
## Introduction
-1. You can directly use the text configuration already available in `/resource/l10n/en-US.toml` to replace the text in the new feature.
-2. If there is new text in the new feature, please refer to the configuration text in `en-US.toml`, pull the new text into the configuration files of other languages such as `en-US.toml`, and add translations.
+1. Reuse the existing text entries in `/resource/l10n/zh-CN.toml` when replacing hard-coded strings in a new feature.
+2. If a new feature introduces new text, add the source entry to `zh-CN.toml` first, then add the same key to other language files and provide the corresponding translations.
-## Adding a new localized text file
-1. Add a new language text configuration in `/resource/l10n/`.
-2. Pull existing text configurations from other languages in the new language text configuration.
-3. Add translations for the new language text configuration.
\ No newline at end of file
+## Adding a New Localized Text File
+1. Add the new language text file under `/resource/l10n/`.
+2. Copy the existing keys from the other language files into the new language file.
+3. Fill in the translations for the new language file.
\ No newline at end of file
diff --git a/docs/en/guide/block/block_docker.md b/docs/en/guide/block/block_docker.md
index 82c3eb37a7..ebd79cd15b 100644
--- a/docs/en/guide/block/block_docker.md
+++ b/docs/en/guide/block/block_docker.md
@@ -2,4 +2,8 @@
outline: deep
---
-# To be developed, stay tuned
\ No newline at end of file
+# Under Development
+
+This page has not been published yet.
+
+The Chinese documentation currently marks the Docker-specific anti-abuse workflow as pending, so the English page follows the same status for now.
\ No newline at end of file
diff --git a/docs/en/guide/block/block_pve.md b/docs/en/guide/block/block_pve.md
index 996e8cca08..bcaa9fbc12 100644
--- a/docs/en/guide/block/block_pve.md
+++ b/docs/en/guide/block/block_pve.md
@@ -12,7 +12,7 @@ Create the following file under the PVE's host machine
xxx.xxx.xxx.xxx
```
-`````` is replaced with the VMID number of the virtual machine, `````` is replaced with the corresponding alias in the network device (which generally doesn't need to be changed unless you're restricted to IPV6), and ```xxx.xxx.xxx.xxx``` is replaced with the public IP address, noting that this IP corresponds to the network device in front of it.
+`````` is replaced with the VMID number of the virtual machine, `````` is replaced with the corresponding alias in the network device (which generally doesn't need to be changed unless you're restricted to IPv6), and ```xxx.xxx.xxx.xxx``` is replaced with the public IP address, noting that this IP corresponds to the network device in front of it.
The idea here is that net0 can only use the IP xxx.xxx.xxx.xxx, if you use any other IP the data will be dropped, thus restricting the VM to only use this IP.
diff --git a/docs/en/guide/containerd/containerd_build.md b/docs/en/guide/containerd/containerd_build.md
index 655a49ab12..ffc048487a 100644
--- a/docs/en/guide/containerd/containerd_build.md
+++ b/docs/en/guide/containerd/containerd_build.md
@@ -8,26 +8,17 @@ Two methods for provisioning containers.
## Single Container Provisioning
-- Creates a single containerd container, automatically detects international or China mainland server
+- Creates a single containerd container
- Can configure binding of an independent IPv6 address (requires host with public IPv6 and containerd-ipv6 network configured during installation)
- Supports x86_64 and ARM64 architecture servers
### Download Script
-International
-
```shell
curl -sSLO https://raw.githubusercontent.com/oneclickvirt/containerd/main/scripts/onecontainerd.sh
chmod +x onecontainerd.sh
```
-China Mainland
-
-```shell
-curl -sSLO https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/containerd/main/scripts/onecontainerd.sh
-chmod +x onecontainerd.sh
-```
-
### Example
Supported variables for running:
@@ -109,22 +100,12 @@ nerdctl logs ct1
### Run
-International
-
```shell
curl -sSLO https://raw.githubusercontent.com/oneclickvirt/containerd/main/scripts/create_containerd.sh
chmod +x create_containerd.sh
./create_containerd.sh
```
-China Mainland
-
-```shell
-curl -sSLO https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/containerd/main/scripts/create_containerd.sh
-chmod +x create_containerd.sh
-./create_containerd.sh
-```
-
### Query Batch Container Information
```shell
diff --git a/docs/en/guide/containerd/containerd_install.md b/docs/en/guide/containerd/containerd_install.md
index 2766e419ca..92f3865462 100644
--- a/docs/en/guide/containerd/containerd_install.md
+++ b/docs/en/guide/containerd/containerd_install.md
@@ -29,18 +29,10 @@ curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o
- Installs DNS liveness check service (check-dns.service)
- Supports x86_64 and ARM64 architecture servers
-International
-
```shell
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/containerd/main/containerdinstall.sh)
```
-China Mainland
-
-```shell
-bash <(curl -sSL https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/containerd/main/containerdinstall.sh)
-```
-
:::tip
After installation, run `nerdctl ps -a` to verify the containerd environment is working correctly.
:::
@@ -49,18 +41,10 @@ After installation, run `nerdctl ps -a` to verify the containerd environment is
One-click uninstall of the entire containerd environment, including all containers, images, CNI networks, systemd services, and nerdctl/containerd binaries:
-International
-
```shell
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/containerd/main/containerduninstall.sh)
```
-China Mainland
-
-```shell
-bash <(curl -sSL https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/containerd/main/containerduninstall.sh)
-```
-
:::warning
The script requires entering `yes` to confirm before execution. This operation is irreversible. Deleted content includes all containers, images, and CNI network configurations.
Retest workflow: Run uninstall first, then run install to verify the entire installation process from scratch.
diff --git a/docs/en/guide/containerd/containerd_qa.md b/docs/en/guide/containerd/containerd_qa.md
index 8524b87f4e..dcdd076b1e 100644
--- a/docs/en/guide/containerd/containerd_qa.md
+++ b/docs/en/guide/containerd/containerd_qa.md
@@ -68,11 +68,7 @@ nerdctl ps | grep ndpresponder
## Image pull failed
-The script includes built-in CDN detection. You can also manually test CDN availability:
-
-```shell
-curl -4 -sL -k "https://cdn0.spiritlhl.top/https://raw.githubusercontent.com/spiritLHLS/ecs/main/back/test" --max-time 6
-```
+Check whether the host can reach GitHub and GitHub Releases normally. If network access is unstable, retry later or switch to a more stable outbound network.
## How to completely reset the containerd environment
@@ -98,19 +94,4 @@ Disk limits require xfs or btrfs snapshotter support. The default overlay snapsh
For disk limits, refer to the docker or incus solution documentation.
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
diff --git a/docs/en/guide/dashboard.md b/docs/en/guide/dashboard.md
index b7f141cf98..b45a4caf10 100644
--- a/docs/en/guide/dashboard.md
+++ b/docs/en/guide/dashboard.md
@@ -6,7 +6,7 @@ outline: deep
To virtualize a server, you will need:
-1. A server (VPS or Dedicated Server) that can connect to the public internet. It's preferable if this server can access GitHub's RAW pages perfectly, as some projects and components might not use CDN acceleration.
+1. A server (VPS or dedicated server) that can connect to the public internet. Stable access to GitHub-hosted resources is recommended.
2. A stable SSH connection from your local machine. If the connection isn't stable, you can use the ```screen``` command to create a window and execute commands within that window.
@@ -24,7 +24,7 @@ The PVE project might cause problems on the host machine. If you're not familiar
## Project Repository
-Welcome Star and Fork, all resources are open source, no non-open source parts, reproduced as well as the use of please write on the source of this site, thank you!
+Stars and forks are welcome. Everything listed here is open source. If you redistribute or reuse the content, please keep the original source attribution.
## OneClickVirt
diff --git a/docs/en/guide/docker/docker_android.md b/docs/en/guide/docker/docker_android.md
index 446b030ceb..0f9350dcfa 100644
--- a/docs/en/guide/docker/docker_android.md
+++ b/docs/en/guide/docker/docker_android.md
@@ -39,7 +39,7 @@ For remote desktop, click on ```H264 Converter``` to initiate the redirection.
**Please note that currently only one Android container can be generated. Do not generate duplicates. If you need to replace the version, please execute the subsequent commands after deletion.**
-**Temporarily only support the opening has been used, can not restart the server, reboot may not be able to restart after the mapping success, self-test**
+**Current limitation: after deployment, host reboot behavior is not guaranteed. In some environments, Android port mappings may fail to recover automatically after reboot. Validate this in your own environment before production use.**
**Deletion:**
diff --git a/docs/en/guide/docker/docker_build.md b/docs/en/guide/docker/docker_build.md
index 4a4192f25d..72925a1937 100644
--- a/docs/en/guide/docker/docker_build.md
+++ b/docs/en/guide/docker/docker_build.md
@@ -9,7 +9,7 @@ There are two methods of building
## Setting Up Standalone
- Generate only one docker
-- Can be configured to bind a separate IPV6 address, but requires a docker previously installed using the environment installation command of this set of scripts, and requires the host to be bound to at least the /112 IPV6 subnet
+- Can be configured to bind a separate IPv6 address, but requires a docker previously installed using the environment installation command of this set of scripts, and requires the host to be bound to at least the /112 IPv6 subnet
- Support for x86_64 and ARM architecture servers
### Download the Script
@@ -57,7 +57,7 @@ The following is the information for the created example container:
| SSH Port | 25000 |
| Port Range for Internal and External Mapping | 34975 to 35000 |
| Operating System | debian |
-| Whether to bind a separate IPV6 address| N |
+| Whether to bind a separate IPv6 address| N |
| Disk Size | 5G |
### Related operations
@@ -120,7 +120,7 @@ One line corresponds to information about a container, the docker's ipv6 address
## Uninstall all Docker containers and images
-The following command offload ignores ndpresponder to prevent IPV6 configuration failure
+The following command offload ignores ndpresponder to prevent IPv6 configuration failure
```shell
docker ps -a --format '{{.Names}}' | grep -vE '^ndpresponder' | xargs -r docker rm -f
diff --git a/docs/en/guide/docker/docker_custom.md b/docs/en/guide/docker/docker_custom.md
index 1f6b2d0a8b..9bba039a9f 100644
--- a/docs/en/guide/docker/docker_custom.md
+++ b/docs/en/guide/docker/docker_custom.md
@@ -62,9 +62,9 @@ If no custom username is set, the default username after opening is ```oneclick`
If no custom password is set, the default password after opening is ```oneclick```.
-The default http port is ```3004```, open ```http://IPV4:3004``` after opening.
+The default http port is ```3004```, open ```http://IPv4:3004``` after opening.
-The default https port is ```3005```, open ```https://IPV4:3005``` after opening.
+The default https port is ```3005```, open ```https://IPv4:3005``` after opening.
```shell
curl -L https://raw.githubusercontent.com/oneclickvirt/docker/main/scripts/onechromium.sh -o onechromium.sh && chmod +x onechromium.sh && bash onechromium.sh
@@ -100,7 +100,7 @@ A complete Linux desktop on which you can use a browser
After setup, the default username is ```onew``` and the password is ```oneclick```. The default maximum memory usage is 2 GB.
-The default web port for HTTP protocol is ```3004```, and for HTTPS protocol is ```3005```. After setup, open the corresponding protocol with ```localhost's IPV4:port``` in your web browser.
+The default web port for HTTP protocol is ```3004```, and for HTTPS protocol is ```3005```. After setup, open the corresponding protocol with ```localhost's IPv4:port``` in your web browser.
Run the following command to download and execute the setup script:
diff --git a/docs/en/guide/docker/docker_install.md b/docs/en/guide/docker/docker_install.md
index 814f28dffc..58e13ad35b 100644
--- a/docs/en/guide/docker/docker_install.md
+++ b/docs/en/guide/docker/docker_install.md
@@ -6,7 +6,7 @@ outline: deep
Support for running Docker virtualization on various systems, including Linux, Android, and Windows.
-If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the ``Customize`` partition in the ``LXD`` module for the ``Attach a free IPV6 address segment`` to the host, and attach an IPV6 subnet to the host before installing the environment.
+If your host does not have an IPv6 subnet and you want to assign IPv6 addresses to containers, then please check the ``Customize`` partition in the ``LXD`` module for the ``Attach a free IPv6 address segment`` to the host, and attach an IPv6 subnet to the host before installing the environment.
## Setting Up Virtual Memory
@@ -26,14 +26,14 @@ curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o
## Environment Setup
-- Supported systems: Ubuntu, Debian, RockyLinux 9+, AlmaLinux 9+, Centos 9+, Alpine(After installing bash on your own), Arch
-- Detect the system environment and install the corresponding components
-- Install docker and docker-compose.
-- Download some configuration scripts required by default
-- Detect if there is an IPV6 address, check if it is greater than or equal to /112, and if so, configure the docker's ipv6 network.
-- If all the above conditions are met, create ndpresponder docker and radvd so that IPV6 allocation supports ndp broadcasting and auto-allocation.
-- Support for x86_64 and ARM architecture servers
-- The installation process will ask you to enter some options, select the Docker installation path, select whether the Docker installation can limit the hard disk
+- Supported systems: Ubuntu, Debian, RockyLinux 9+, AlmaLinux 9+, CentOS 9+, Alpine (install bash first), Arch
+- Detects system environment and installs required components
+- Installs Docker and Docker Compose
+- Downloads required helper scripts
+- Detects IPv6 availability; if subnet size is >= /112, configures Docker IPv6 networking
+- If requirements are met, deploys `ndpresponder` and `radvd` for IPv6 NDP and auto-allocation behavior
+- Supports x86_64 and ARM servers
+- Installer prompts include Docker install path and optional disk-limit capability
Command:
@@ -57,7 +57,7 @@ The environment installation process may require you to reboot the server and th
curl -L https://raw.githubusercontent.com/oneclickvirt/docker/refs/heads/main/extra_scripts/disk_test.sh -o disk_test.sh && chmod +x disk_test.sh && bash disk_test.sh
```
-Or specify a different storage limit size (in MB), the default test of the 500MB limit of the container whether the limit is successful
+Or specify a different storage limit size (in MB). By default, the script tests whether a 500MB container disk limit works.
```shell
# 1GB Limit
@@ -68,18 +68,10 @@ bash disk_test.sh 1000
One-click uninstall of the entire Docker environment, including all containers, images, networks, systemd services, and binaries:
-International
-
```shell
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/docker/main/dockeruninstall.sh)
```
-China Mainland
-
-```shell
-bash <(curl -sSL https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/docker/main/dockeruninstall.sh)
-```
-
:::warning
The script requires entering `yes` to confirm before execution. This operation is irreversible. Deleted content includes all containers, images, and network configurations.
Retest workflow: Run uninstall first, then run install to verify the entire installation process from scratch.
diff --git a/docs/en/guide/docker/docker_precheck.md b/docs/en/guide/docker/docker_precheck.md
index 38e1bca17a..df6c8bb99d 100644
--- a/docs/en/guide/docker/docker_precheck.md
+++ b/docs/en/guide/docker/docker_precheck.md
@@ -2,10 +2,10 @@
The following is an introduction to the non-customized sections. Please ensure that you don't confuse them with the customized parts.
-If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the ``Customize`` partition in the ``incus`` module for the ``Attach a free IPV6 address segment`` to the host, and attach an IPV6 subnet to the host before installing the environment.
+If your host does not have an IPv6 subnet and you want to assign IPv6 addresses to containers, then please check the ``Customize`` partition in the ``incus`` module for the ``Attach a free IPv6 address segment`` to the host, and attach an IPv6 subnet to the host before installing the environment.
:::warning
-If the host has an IPV6 network, the installation will change the network structure of the host, please make sure that the host can reset the system at any time and that there is no important data on the host before running.
+If the host has an IPv6 network, the installation will change the network structure of the host, please make sure that the host can reset the system at any time and that there is no important data on the host before running.
:::
Feel free to give the project a ```Star``` for free support!-->[https://github.com/oneclickvirt/docker](https://github.com/oneclickvirt/docker)
@@ -13,11 +13,11 @@ Feel free to give the project a ```Star``` for free support!-->[https://github.c
## Project Features
-Bulk or individual NAT server provisioning via docker
+Bulk or individual NAT server provisioning via Docker.
-Default use of debian system optional alpine system, each container comes with 1 external ssh port, 25 internal and external network ports, you can choose whether to bind IPV6 address
+Uses Debian by default (Alpine optional). Each container includes 1 external SSH port plus 25 matched internal/external ports, with optional IPv6 binding.
-The default creation of unprivileged containers, and does not mount and host docker daemon communication, so ** host created docker virtualization NAT servers can not be nested within the virtualization docker **
+Containers are created as unprivileged by default, and Docker daemon sockets are not mounted from the host. Therefore, **Docker-in-Docker nested virtualization is not supported inside these NAT containers**.
By default, lxcfs is installed and enabled, so that when querying resources within a container, CPU and memory use the configured view instead of the host's view.
@@ -25,10 +25,10 @@ By default, you can choose whether or not to share the hard disk of the host mac
## Configuration requirements
-The system can be installed docker can be used, the network can connect to the Github raw interface can be used, hardware configuration as long as not pull across the line, free hard disk has 3G on it!
+Any system that can install Docker can use this solution. The host should be able to access GitHub raw content, and at least 3 GB of free disk space is recommended.
-(If you need to bind an IPV6 address, then please make sure to use the installation script of this set of scripts for docker installation, you need it to automatically preset some of the settings)
+(If you need IPv6 binding, install Docker through this project's installer so the required network presets are applied automatically.)
-If the hardware resources are just a little bit better, need to limit more things and need to limit the size of the hard disk, you can use the incus partition of the script batch open LXC virtualization containers
+If your hardware is moderate and you need stricter resource controls (especially disk limits), use the Incus module to create LXC containers in batch.
-If the hardware is very good and you have a lot of resources, you can use the PVE partition script to batch open KVM virtualized VMs.
\ No newline at end of file
+If your hardware has strong capacity and you need larger-scale VM workloads, use the PVE module to create KVM VMs in batch.
\ No newline at end of file
diff --git a/docs/en/guide/docker/docker_qa.md b/docs/en/guide/docker/docker_qa.md
index 582d482a21..7d47174410 100644
--- a/docs/en/guide/docker/docker_qa.md
+++ b/docs/en/guide/docker/docker_qa.md
@@ -65,19 +65,4 @@ Remove a specific image
```
docker rmi
```
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
diff --git a/docs/en/guide/docker/docker_windows.md b/docs/en/guide/docker/docker_windows.md
index c4ff72ecf0..454f6768f3 100644
--- a/docs/en/guide/docker/docker_windows.md
+++ b/docs/en/guide/docker/docker_windows.md
@@ -10,7 +10,7 @@ outline: deep
- Shares IP; Docker's NAT mapping is employed. You can choose whether to map to the external network or just the internal network.
- The configured Windows system is set to use a maximum of 1 core, 2GB RAM, and 50GB hard disk by default. Actual usage may vary based on usage patterns.
- No need for iptables for NAT mapping; port mappings are automatically deleted when containers are removed, making maintenance easier.
-- Ensure that the host machine supports nested virtualization, and currently, only X86_64 architecture systems are supported. I haven't compiled corresponding images for ARM devices at the moment.
+- Ensure that the host supports nested virtualization. Currently only x86_64 systems are supported; ARM images are not provided in this workflow.
**The host machine needs to support nested virtualization and currently only supports systems based on the X86_64 architecture; I don't have an ARM machine on hand to compile the corresponding image at the moment.**
@@ -67,7 +67,7 @@ Before initiating the setup, ensure that the host machine has a disk size at lea
During the creation process, the peak disk usage will be ```host_system_size + image_size + container_size```.
-For example, to set up a container with the name ```test```, the container with the lowest occupancy ```Windows 2019``` system, map the extranet RDP port ```13389``` and set it to ```extranet mapping``` (mapping to your server's extranet IPV4 address)
+For example, to set up a container with the name ```test```, the container with the lowest occupancy ```Windows 2019``` system, map the extranet RDP port ```13389``` and set it to ```extranet mapping``` (mapping to your server's extranet IPv4 address)
```shell
./onewindows.sh test 2019 13389 Y
@@ -75,7 +75,7 @@ For example, to set up a container with the name ```test```, the container with
After it, the default usernames are ```Administrator``` and ```vagrant```, with the default password being ```vagrant```.
-If you choose to open a mapped extranet port, be sure to log in and change the password of the corresponding account (both accounts may have, try it yourself), otherwise it may be abused by someone blasting
+If you expose an external mapped port, log in immediately and change passwords for all default accounts; otherwise the service may be abused by brute-force attacks.
**Deletion**
@@ -166,7 +166,7 @@ We also offer a ready-to-use image with the system and configuration already int
#### Download and Merge Split Files
```bash
-curl https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/docker/refs/heads/main/extra_scripts/mergew.sh -o mergew.sh
+curl https://raw.githubusercontent.com/oneclickvirt/docker/refs/heads/main/extra_scripts/mergew.sh -o mergew.sh
chmod +x mergew.sh
bash mergew.sh
```
diff --git a/docs/en/guide/incus/incus_custom.md b/docs/en/guide/incus/incus_custom.md
index 232abf8627..5e39236a71 100644
--- a/docs/en/guide/incus/incus_custom.md
+++ b/docs/en/guide/incus/incus_custom.md
@@ -2,33 +2,21 @@
outline: deep
---
-# Custom
+# Custom Configuration
-## Adding a customized mirror source
+## Attach free IPv6 address segments to host machines
-https://incusimages.spiritlhl.net/
+Some machines don't have an IPv6 /64 subnet on the machine itself, here is a method given to attach an IPv6 subnet for free.
-This mirror source is obtained by me through daily patching, and will be updated daily, what exactly is patched can be found at https://github.com/oneclickvirt/incus_images for details.
-
-```shell
-incus remote remove spiritlhl
-incus remote add spiritlhl https://incusimages.spiritlhl.net --protocol simplestreams --public
-incus image list spiritlhl:debian
-```
-
-## Attach free IPV6 address segments to host machines
-
-Some machines don't have an IPV6 /64 subnet on the machine itself, here is a method given to attach an IPV6 subnet for free.
-
-Here is a solution using the 6in4 method for a host machine that doesn't have an IPV6 address on its own.
+Here is a solution using the 6in4 method for a host machine that doesn't have an IPv6 address on its own.
:::tip
The operations on this page must be performed on the original system, and ensure that no other scripts from this project are installed(Except for PVE, which needs to be installed first), as this may lead to environment conflicts.
:::
-Here are the platforms that are currently running in 2023 that offer IPV6 subnets for free.
+Here are the platforms that are currently running in 2023 that offer IPv6 subnets for free.
-| Supported Platforms | Corresponding Required Installation Packages | Protocols | Number of Channels/Subnets
+| Supported Platforms | Corresponding Required Installation Packages | Protocols | Number of Channels/Subnets |
|---------------------------|----------------|----------------|----------------|
| tunnelbroker.net | ifupdown OR ifupdown2 | v4tunnel OR sit | 3✖/64 OR 5✖/64 |
| tunnelbroker.ch | ifupdown OR ifupdown2 | v4tunnel OR sit | 3✖/64 |
@@ -36,7 +24,7 @@ Here are the platforms that are currently running in 2023 that offer IPV6 subnet
| netassist.ua | ifupdown OR ifupdown2 | v4tunnel OR sit | 1✖/64 |
| https://github.com/oneclickvirt/6in4 | ifupdown2 | sit、gre、ipip | custom |
-The free platform only solves the problem that IPV6 is not available, it does not provide premium IPV6 bandwidth.
+The free platform only solves the problem that IPv6 is not available, it does not provide premium IPv6 bandwidth.
If you need high quality bandwidth, please build your own tunnel. When both ifupdown and ifupdown2 are available, try ifupdown first to see if it can be installed successfully, otherwise install ifupdown2.
@@ -95,7 +83,7 @@ Then restart the server, check whether the machine's network will be rebooted du
If it is inactive and active, there is no need to switch the network management program and you can proceed directly to the next step.
-Since some servers have default intranet IPV6 routes that will conflict with the tunnel, you can use the following command to remove the default IPV6 routes
+Since some servers have default intranet IPv6 routes that will conflict with the tunnel, you can use the following command to remove the default IPv6 routes
```
default_route=$(ip -6 route show | awk '/default via/{print $3}') && [ -n "$default_route" ] && ip -6 route del default via $default_route dev eth0
@@ -108,7 +96,7 @@ This assumes that your client's server's default NIC is ```eth0```, you can use
#### tunnelbroker_net
-Combined with a script that opens containers with IPV6 addresses with a single click, you can attach an IPV6 address from he to each container
+Combined with a script that opens containers with IPv6 addresses with a single click, you can attach an IPv6 address from he to each container
The downside is that the addresses are dark/dirty, and cloudflare's cdn will most likely not be able to latch on, test it yourself
@@ -120,7 +108,7 @@ The downside is that the addresses are dark/dirty, and cloudflare's cdn will mos

-2. Fill in your server's IPV4 address in the red box, choose a connection point that is physically close to your server, for example, if your machine is in Los Angeles, choose a connection point on the west coast of the United States, and then click```Create Tunnel```to create the tunnel when you are prompted by the green box!
+2. Fill in your server's IPv4 address in the red box, choose a connection point that is physically close to your server, for example, if your machine is in Los Angeles, choose a connection point on the west coast of the United States, and then click```Create Tunnel```to create the tunnel when you are prompted by the green box!

@@ -147,11 +135,11 @@ The downside is that the addresses are dark/dirty, and cloudflare's cdn will mos

-5. Exchange the format of the command then add IPV6 settings to your network configuration file.
+5. Exchange the format of the command then add IPv6 settings to your network configuration file.
Then open [https://ipv6tunnel.spiritlhl.top/](https://ipv6tunnel.spiritlhl.top/) and select```Option```for```TunnelBrokerNet```, another drop-down selection box to choose the name of the package you successfully installed previously, then paste what you copied in the input box.
-Then click```Covert```to convert the format, and wait for the page to refresh to show the converted configuration file.
+Then click ```Convert``` to convert the format, and wait for the page to refresh with the converted configuration file.
Then use vim or vi to modify the```/etc/network/interfaces```file to add content, or modify the following command to add new content
@@ -190,7 +178,7 @@ curl ipv6.ip.sb
```
-Returns the IPV6 address you bound to
+Returns the IPv6 address you bound to
8. Additional settings for NAT VPS
@@ -213,7 +201,7 @@ route -A inet6 add ::/0 dev he-ipv6
```
-9. If the IPV6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.
+9. If the IPv6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.
If you want to delete the he-ipv6 network interface configuration (if not, it will be enabled automatically after reboot), remember to modify the```/etc/network/interfaces```file to remove the content added in the red box before.
@@ -227,7 +215,7 @@ Then reboot the server to remove the
Similar to the above, first register an account at [https://www.tunnelbroker.ch/](https://www.tunnelbroker.ch/) and click on the activation email after registering.
-Then you have to fill in the IPV4 address of your server.
+Then you have to fill in the IPv4 address of your server.

@@ -283,9 +271,9 @@ Make sure the environment is OK before you do anything else
#### ip4market_ru
-Similar to the above, first register an account at [https://tb.ip4market.ru](https://tb.ip4market.ru/), the registered email address must be an unseen email address, the phone number can be written randomly without verification, and the IP address should be the IPV4 address of the host you want to attach.
+Similar to the above, first register an account at [https://tb.ip4market.ru](https://tb.ip4market.ru/), the registered email address must be an unseen email address, the phone number can be written randomly without verification, and the IP address should be the IPv4 address of the host you want to attach.
-The IP address is the IPV4 address of the host computer you are attaching to
+The IP address is the IPv4 address of the host computer you are attaching to

@@ -341,13 +329,13 @@ Make sure the environment is OK before you do anything else
Similar to the above operation, first in [https://tb.netassist.ua/](https://tb.netassist.ua/) register an account first, after registration, click on the activation of the mail, the activation page will have a password display, remember to record!
-Then fill in the IPV4 address of your server, you can change it later, just fill in a random one first.
+Then fill in the IPv4 address of your server, you can change it later, just fill in a random one first.
Then you will get to this page

-The first red box is the location of your host's IPV4 address, if you want to modify it, modify it there, and then click change to save.
+The first red box is the location of your host's IPv4 address, if you want to modify it, modify it there, and then click change to save.
The second red box is for```Linux``, and then click on show
@@ -378,26 +366,26 @@ systemctl restart networking
Make sure the environment is OK before you do anything else
-## Transfer IPV6 subnets between different servers
+## Transfer IPv6 subnets between different servers
Related repository: [https://github.com/oneclickvirt/6in4](https://github.com/oneclickvirt/6in4)
-This method will provide a way to split a /80 out of the IPV6 segment on A and attach it to B to use.
+This method will provide a way to split a /80 out of the IPv6 segment on A and attach it to B to use.
### Features
- Self-built IPv6 tunnel for sit/gre/ipip protocols
-- Support to customize the IPV6 subnet size to be cut out, and the appropriate IPV6 subnet information in CIDR format will be calculated automatically.
-- Automatically recognizes the IPV6 subnet size of the server side
+- Support to customize the IPv6 subnet size to be cut out, and the appropriate IPv6 subnet information in CIDR format will be calculated automatically.
+- Automatically recognizes the IPv6 subnet size of the server side
- will automatically set up the tunnel server and print the commands that the client needs to execute
-- Setting up the IPV6 tunnel is easy to understand and easy to remove
+- Setting up the IPv6 tunnel is easy to understand and easy to remove
### Environmental Preparation
| VPS(A) | VPS(B) |
| --------|--------|
-| one IPV4 address (server_ipv4) | one IPV4 address (clinet_ipv4) |
-| one IPV6 subnet | no IPV6 address |
+| one IPv4 address (server_ipv4) | one IPv4 address (clinet_ipv4) |
+| one IPv6 subnet | no IPv6 address |
| Hereafter referred to as server | Hereafter referred to as client |
### Usage
@@ -423,7 +411,7 @@ Execute it
`````` as long as it is larger than the original system subnet mask, and is a multiple of 8, if you don't fill it in, it defaults to ```80```.
-Remember to replace ```client_ipv4``` with the IPV4 address of the machine you want to attach IPV6 to, and the command you need to execute on the client side will be sent back to you after execution, see the instructions after execution for details.
+Remember to replace ```client_ipv4``` with the IPv4 address of the machine you want to attach IPv6 to, and the command you need to execute on the client side will be sent back to you after execution, see the instructions after execution for details.
To prevent you from forgetting to copy the commands, the commands themselves will be written to the ```6in4.log``` file under the current path, you can use ```cat 6in4.log``` to query the commands that need to be executed on the client side
@@ -486,11 +474,11 @@ The above deletion is only temporary, for permanent deletion you must modify and
### one more thing
-In fact [https://tunnelbroker.net/](https://tunnelbroker.net/) supports the application of IPV6 subnets of size ```/48```
+In fact [https://tunnelbroker.net/](https://tunnelbroker.net/) supports the application of IPv6 subnets of size ```/48```

-Make the request here, then when converting the format change the original ```/64``` IPV6 address to a ```/48``` IPV6 address and you'll get a larger IPV6 subnet!
+Make the request here, then when converting the format change the original ```/64``` IPv6 address to a ```/48``` IPv6 address and you'll get a larger IPv6 subnet!
## Supplemental CloudFlare WARP IPv4 / IPv6 outbound
diff --git a/docs/en/guide/incus/incus_extra_config.md b/docs/en/guide/incus/incus_extra_config.md
index 28697179ff..765c8a3d4b 100644
--- a/docs/en/guide/incus/incus_extra_config.md
+++ b/docs/en/guide/incus/incus_extra_config.md
@@ -8,11 +8,11 @@ outline: deep
The following configurations may increase the load on the server. Only install them if necessary.
:::
-## Automatic IPV6 Address Configuration
+## Automatic IPv6 Address Configuration
- (Optional, not required if not using)
-- **This script is only suitable for servers that have an ```IPV6``` subnet with a prefix, and the server has bound the ```first IP``` of the subnet as its ```IPV6 address or IPV6 gateway```.**
-- Automatically configures ```IPV6``` addresses for incus containers created with incus.
+- **This script is only suitable for servers that have an ```IPv6``` subnet with a prefix, and the server has bound the ```first IP``` of the subnet as its ```IPv6 address or IPv6 gateway```.**
+- Automatically configures ```IPv6``` addresses for incus containers created with incus.
- Integrated into ```buildct.sh``` and can be controlled by variables without needing to be downloaded beforehand. You don't need to manually use this script; when using ```buildct.sh```, configure with variable Y to enable it.
Download Script
@@ -23,7 +23,7 @@ Command:
curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh && chmod +x build_ipv6_network.sh
```
-Automatically configure IPV6 mapped addresses for containers
+Automatically configure IPv6 mapped addresses for containers
```bash
bash build_ipv6_network.sh Container_Name(change_me)
@@ -31,7 +31,7 @@ bash build_ipv6_network.sh Container_Name(change_me)
A message is printed when the mapping is complete (Default mapping without iptables)
-Example (automatically configure the test container with an IPV6 address, a test_v6 file is written when the configuration is complete)
+Example (automatically configure the test container with an IPv6 address, a test_v6 file is written when the configuration is complete)
```bash
bash build_ipv6_network.sh test
@@ -45,7 +45,7 @@ Use ip6tables for mapping
bash build_ipv6_network.sh Container_name Y
```
-If ip6tables is used for mapping, remove all IPV6 mapped rules available:
+If ip6tables is used for mapping, remove all IPv6 mapped rules available:
```bash
ip6tables -t nat -F PREROUTING
@@ -56,7 +56,7 @@ netfilter-persistent reload
service netfilter-persistent restart
```
-Uninstall the IPV6 address binding daemon and corresponding files
+Uninstall the IPv6 address binding daemon and corresponding files
```shell
systemctl stop add-ipv6.service
diff --git a/docs/en/guide/incus/incus_install.md b/docs/en/guide/incus/incus_install.md
index a5c74e6123..89832cc2b9 100644
--- a/docs/en/guide/incus/incus_install.md
+++ b/docs/en/guide/incus/incus_install.md
@@ -4,19 +4,19 @@ outline: deep
# Incus
-If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the ```Customize``` partition in the ```incus``` module for the ```Attach a free IPV6 address segment``` to the host, and attach an IPV6 subnet to the host before installing the environment.
+If your host has no IPv6 subnet but you want to assign IPv6 addresses to containers, check the ```Customize``` section in the ```Incus``` module for ```Attach a free IPv6 address segment to the host```, then attach an IPv6 subnet before installation.
## Setting up virtual memory (SWAP) (optional, not required)
:::tip
-Memory to open some swap lest the machine blow up, if your host computer does not have enough memory and a lot of free hard disk.
+If your host has limited memory and enough free disk space, add swap to reduce the risk of OOM crashes.
:::
Unit conversion: Enter 1024 to generate 1G SWAP-virtual memory, virtual memory occupies hard disk space.
When the actual memory is not enough, the virtual memory will be automatically used for memory usage, but it will bring high IO usage and CPU performance.
-Refer to the description of the organization's related project [Jump](https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md) This opens the size of virtual memory
+For swap sizing guidance, refer to [this guide](https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md).
| Physical Memory Size | Recommended SWAP Size |
| -------------------- | --------------------- |
@@ -37,7 +37,7 @@ curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o
If this is a new server, make sure that both ```update``` and ```curl``` are working properly before executing this script.
:::
-- Prerequisites: Ubuntu 20+(Not recommended to use Incus, please use LXD), Debian 11+(Recommended), RockyLinux 9+, AlmaLinux 9+, Centos 9+, Alpine(After installing bash on your own), Arch
+- Prerequisites: Ubuntu 20+ (LXD is usually preferred there), Debian 11+ (recommended), RockyLinux 9+, AlmaLinux 9+, CentOS 9+, Alpine (install bash first), Arch
- During installation, you will be prompted to enter the storage pool creation path as well as the size, and all the VMs or containers you want to open end up taking up space in the storage pool
- The server needs to be restarted after the environment installation process to load some default configurations
- By default, lxcfs-related configuration is enabled, so that in-container querying of container information changes to information about the container itself rather than the host
@@ -68,7 +68,7 @@ The execution process **may** require a **manual reboot** to load the storage ty
:::
:::warning
-If you need to open more than 200 Incus containers on a single server, then it is not recommended to use this project, there may be problems with lxcfs access drift, which generates IO occupancy that cannot be released. (This is a native LXC problem that can't be fixed.)
+If you plan to run more than 200 Incus containers on one server, this solution is not recommended. `lxcfs` drift can cause persistent I/O load that is hard to recover from. (This is an upstream LXC limitation.)
:::
## Uninstall Incus Environment
@@ -81,7 +81,7 @@ bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/incus/main/scrip
## Manual Installation (optional)
-Not recommended, just to install for some oddball environments where one-click scripts won't run, or if you want to understand the most basic Incus installation process.
+Not recommended for normal usage. Use it only when one-click scripts cannot run in your environment, or when you want to learn the base Incus installation process.
### Disable Firewall
@@ -103,7 +103,7 @@ Command:
curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/swap.sh -o swap.sh && chmod +x swap.sh && bash swap.sh
```
-### Installing incus
+### Installing Incus
```
sudo -i
diff --git a/docs/en/guide/incus/incus_lxc.md b/docs/en/guide/incus/incus_lxc.md
index b68a34a6fd..25a06134d4 100644
--- a/docs/en/guide/incus/incus_lxc.md
+++ b/docs/en/guide/incus/incus_lxc.md
@@ -47,7 +47,7 @@ curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/buildc
. /buildct.sh name Cpu_num Memory_size Hard_disk_size SSH_port Extranet_start_port Extranet_stop_port Download_speed Upload_speed Whether_IPV6_is_enabled(Y or N) System(leave blank for debian11)
```
-Memory size is calculated in MB, hard disk size is calculated in GB, download speed upload speed is calculated in Mbit, whether to enable IPV6 does not have to fill in Y or N, no this parameter can also be left blank default does not enable IPV6
+Memory size is calculated in MB, hard disk size is calculated in GB, download speed upload speed is calculated in Mbit, whether to enable IPv6 does not have to fill in Y or N, no this parameter can also be left blank default does not enable IPv6
If ```external start port`` and ```external stop port`` are both set to 0, then we don't do interval port mapping, only the basic SSH port is mapped, note that ```can't be null``, and it needs to be set to 0 if it's not to be mapped.
diff --git a/docs/en/guide/incus/incus_precheck.md b/docs/en/guide/incus/incus_precheck.md
index 1f7c690e1c..9f0130bff9 100644
--- a/docs/en/guide/incus/incus_precheck.md
+++ b/docs/en/guide/incus/incus_precheck.md
@@ -4,9 +4,9 @@ outline: deep
# Preface
-The following is the introduction of the non-customized part, the customized part has its own corresponding introduction, do not get confused!
+This page covers the non-customized workflow. Custom sections are documented separately.
-If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the ``Customize`` partition in the ``incus`` module for the ``Attach a free IPV6 address segment`` to the host, and attach an IPV6 subnet to the host before installing the environment.
+If your host has no IPv6 subnet but you want to assign IPv6 addresses to containers, check the ``Customize`` section in the ``Incus`` module for ``Attach a free IPv6 address segment to the host``, then attach an IPv6 subnet before installation.
Feel free to give the project a ```Star``` for free support!-->[https://github.com/oneclickvirt/incus](https://github.com/oneclickvirt/incus)
@@ -18,7 +18,7 @@ Hardware requirements.
- CPU: The number of cores should be greater than or equal to 2, otherwise there may be a kernel idling slice cycle resulting in 100% occupancy
- Memory: At least 512MB of RAM
- Hard disk: hard disk (system disk) at least 10G
-- Network: Independent IPV4 address, IPV6 is optional, bandwidth can download scripts on the line, the network can connect to the Github raw page on the line
+- Network: dedicated IPv4 address recommended; IPv6 optional; outbound access to GitHub raw content required.
PS: If the hardware is very good and has a lot of resources, you can use PVE to batch open KVM virtualized VMs [Jump](https://github.com/oneclickvirt/pve)
@@ -34,9 +34,9 @@ PS: If the hardware resources are even worse, virtualization is not supported, y
- lxcfs has been set to be enabled by default, so that querying resources within a container uses the configured view rather than the host's view
-- Have blocked the container may be used to abuse the toolkit and IPV4 network TCP/UDP protocol ports ( 3389 8888 54321 65432 ), to prevent the container is used for scanning and blasting, and can be external process checking for problems automatically shut down
+- Includes default restrictions for abuse-prone toolchains and TCP/UDP ports (3389, 8888, 54321, 65432) to reduce scanning/bruteforce misuse risk.
-- Has supported one-click configuration of IPV6 addresses for incus containers (provided that the mother hen has an IPV6 subnet, no IPV6 address is not configured), automatically adapted to the size of the subnet
+- Supports one-click IPv6 configuration for Incus containers when the host has a valid IPv6 subnet; subnet size is auto-detected.
- Ensure that the disk you want to open is the default system disk (sda or sda1) and not the mounted disk (sdb and so on), if you are not sure, use ``fdisk -l`` and ``df`` to check.
@@ -46,7 +46,7 @@ PS: If the hardware resources are even worse, virtualization is not supported, y
## Detecting the environment
-**Use the subsequent script must execute this command to detect the hen whether it meets the requirements**
+**Before running subsequent scripts, execute this check to confirm the host meets requirements.**
Command:
diff --git a/docs/en/guide/incus/incus_qa.md b/docs/en/guide/incus/incus_qa.md
index aafb4a4cad..e79556ac95 100644
--- a/docs/en/guide/incus/incus_qa.md
+++ b/docs/en/guide/incus/incus_qa.md
@@ -8,9 +8,9 @@ outline: deep
Enable CGroup V1: To enable CGroup V1 on an Ubuntu system, you need to edit the kernel boot parameters.
-Please note that before changing kernel boot parameters, make sure to backup important data and settings to prevent unexpected problems.
+Please note that before changing kernel boot parameters, make sure to back up important data and settings to prevent unexpected problems.
-Edit the ```/etc/default/grub`` file and add ``systemd.unified_cgroup_hierarchy=0`` to the end of the parameters in ``GRUB_CMDLINE_LINUX_DEFAULT``, just like:
+Edit the ```/etc/default/grub``` file and add ``systemd.unified_cgroup_hierarchy=0`` to the end of ``GRUB_CMDLINE_LINUX_DEFAULT``, like this:
```
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash systemd.unified_cgroup_hierarchy=0"
@@ -24,11 +24,11 @@ sudo update-grub
Reboot the system for the changes to take effect
-If the above changes still do not support the opening of centos7, try using a different host system.
+If CentOS 7 still cannot start after this change, try a different host system.
## Requires both Incus and Docker compatibility to exist
-If left unaddressed, docker will override the iptables setting and cause Incus to have no network link
+If left unaddressed, Docker can override iptables rules and break Incus networking.
You need to install a scheduled task to detect and fix this issue
@@ -45,7 +45,7 @@ You need to install a timed task to detect and fix the problem, and check the us
* Download
```shell
-curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/extra_scripts/incus_fixed_restart.sh -o incus_fixed_restart. sh && chmod +x incus_fixed_restart.sh && bash incus_fixed_restart.sh
+curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/extra_scripts/incus_fixed_restart.sh -o incus_fixed_restart.sh && chmod +x incus_fixed_restart.sh && bash incus_fixed_restart.sh
```
* Installation
@@ -70,24 +70,9 @@ Removes ```cron``` tasks, script files, log files, and count files.
/usr/local/bin/incus_fixed_restart.sh
```
-## Currently verified VPS vendors that can open containers with separate IPV6 addresses.
+## Currently verified VPS vendors that can open containers with separate IPv6 addresses.
[kuroit](https://my.kuroit.com/aff.php?aff=5) Phoenix, USA regular
[datalix](https://t.me/+UHVoo2U4VyA5NTQ1/338) German AMD Promotions
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
diff --git a/docs/en/guide/incus/incus_qemu.md b/docs/en/guide/incus/incus_qemu.md
index c9e6b7253a..ad0e9df318 100644
--- a/docs/en/guide/incus/incus_qemu.md
+++ b/docs/en/guide/incus/incus_qemu.md
@@ -29,25 +29,17 @@ Here are some of the available system parameters for your reference:
### Download Script
-International:
-
```shell
curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh && dos2unix buildvm.sh
```
-Domestic (China):
-
-```shell
-curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/incus/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh && dos2unix buildvm.sh
-```
-
### Usage
```
./buildvm.sh ServerName CPUCores MemorySize DiskSize SSHPort ExternalStartPort ExternalEndPort DownloadSpeed UploadSpeed EnableIPV6(Y or N) System(leave empty for debian11)
```
-CPU cores must be less than or equal to the host machine's cores. Memory size is calculated in MB, disk size in GB, download and upload speeds in Mbit. EnableIPV6 doesn't necessarily need to be Y or N - it can be omitted, defaulting to disabled IPV6.
+CPU cores must be less than or equal to the host machine's cores. Memory size is calculated in MB, disk size in GB, download and upload speeds in Mbit. EnableIPV6 doesn't necessarily need to be Y or N - it can be omitted, defaulting to disabled IPv6.
If both ```ExternalStartPort``` and ```ExternalEndPort``` are set to 0, no external port range mapping will be performed - only the basic SSH port will be mapped. Note that these ```cannot be empty``` - set them to 0 if no mapping is needed.
@@ -70,7 +62,7 @@ Here's the information for the example server being created:
| Internal/External Port Mapping Range | 20002 to 20025 |
| Upload Bandwidth | 500Mbit |
| Download Bandwidth | 500Mbit |
-| Auto-configure External IPV6 | N |
+| Auto-configure External IPv6 | N |
| System | debian13 |
```shell
diff --git a/docs/en/guide/incus/incus_windows.md b/docs/en/guide/incus/incus_windows.md
index 5340f8e0a0..61a32f9e65 100644
--- a/docs/en/guide/incus/incus_windows.md
+++ b/docs/en/guide/incus/incus_windows.md
@@ -111,7 +111,7 @@ Once the spinning stops, you'll enter the normal Windows VM installation process

-Here the hard disk can not be selected, choose to view the yellow tips in the lower left corner, and then follow the prompts will be offline hard disk online point to confirm the button, you can select the hard disk.
+If the disk is not selectable at this step, follow the yellow hint in the lower-left corner and set the disk from offline to online, then confirm. The disk will become selectable afterward.

@@ -119,7 +119,7 @@ Here the hard disk can not be selected, choose to view the yellow tips in the lo

-Once the installation is complete, the virtual machine will automatically reboot a few times to update the network, and the web side of spice will show up in the user setup interface, while in the background you can use the ```incus list``` to see that the network is automatically attached.
+After installation, the VM may reboot several times while network setup is finalized. In the SPICE web console you should see the user setup screen. In parallel, run ```incus list``` to confirm network attachment.

@@ -137,7 +137,7 @@ The following image can be seen after startup (test visit a website)

-No need to configure your own network, incus will automatically assign IPV4 addresses and connect to the network.
+No need to configure your own network, incus will automatically assign IPv4 addresses and connect to the network.
## Remove the remote component to restart the browser mapping
diff --git a/docs/en/guide/kubevirt/kubevirt_qa.md b/docs/en/guide/kubevirt/kubevirt_qa.md
index edbfe9c81b..cf94cd72d7 100644
--- a/docs/en/guide/kubevirt/kubevirt_qa.md
+++ b/docs/en/guide/kubevirt/kubevirt_qa.md
@@ -94,26 +94,8 @@ cat vmlog
Uninstall first, then reinstall:
-International
-
```shell
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/kubevirt/main/scripts/kubevirtuninstall.sh)
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/kubevirt/main/kubevirtinstall.sh)
```
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
-
diff --git a/docs/en/guide/lxd/lxd_custom.md b/docs/en/guide/lxd/lxd_custom.md
index 1f8bed1898..756e6b6339 100644
--- a/docs/en/guide/lxd/lxd_custom.md
+++ b/docs/en/guide/lxd/lxd_custom.md
@@ -4,29 +4,17 @@ outline: deep
# Custom
-## Adding a customized mirror source
+## Attach free IPv6 address segments to host machines
-https://lxdimages.spiritlhl.net/
+Some machines don't have an IPv6 /64 subnet on the machine itself, here is a method given to attach an IPv6 subnet for free.
-This mirror source is obtained by me through daily patching, and will be updated daily, what exactly is patched can be found at https://github.com/oneclickvirt/lxd_images for details.
-
-```shell
-lxc remote remove spiritlhl
-lxc remote add spiritlhl https://lxdimages.spiritlhl.net --protocol simplestreams --public
-lxc image list spiritlhl:debian
-```
-
-## Attach free IPV6 address segments to host machines
-
-Some machines don't have an IPV6 /64 subnet on the machine itself, here is a method given to attach an IPV6 subnet for free.
-
-Here is a solution using the 6in4 method for a host machine that doesn't have an IPV6 address on its own.
+Here is a solution using the 6in4 method for a host machine that doesn't have an IPv6 address on its own.
:::tip
The operations on this page must be performed on the original system, and ensure that no other scripts from this project are installed(Except for PVE, which needs to be installed first), as this may lead to environment conflicts.
:::
-Here are the platforms that are currently running in 2023 that offer IPV6 subnets for free.
+Here are the platforms that are currently running in 2023 that offer IPv6 subnets for free.
| Supported Platforms | Corresponding Required Installation Packages | Protocols | Number of Channels/Subnets
|---------------------------|----------------|----------------|----------------|
@@ -36,7 +24,7 @@ Here are the platforms that are currently running in 2023 that offer IPV6 subnet
| netassist.ua | ifupdown OR ifupdown2 | v4tunnel OR sit | 1✖/64 |
| https://github.com/oneclickvirt/6in4 | ifupdown2 | sit、gre、ipip | custom |
-The free platform only solves the problem that IPV6 is not available, it does not provide premium IPV6 bandwidth.
+The free platform only solves the problem that IPv6 is not available, it does not provide premium IPv6 bandwidth.
If you need high quality bandwidth, please build your own tunnel. When both ifupdown and ifupdown2 are available, try ifupdown first to see if it can be installed successfully, otherwise install ifupdown2.
@@ -95,7 +83,7 @@ Then restart the server, check whether the machine's network will be rebooted du
If it is inactive and active, there is no need to switch the network management program and you can proceed directly to the next step.
-Since some servers have default intranet IPV6 routes that will conflict with the tunnel, you can use the following command to remove the default IPV6 routes
+Since some servers have default intranet IPv6 routes that will conflict with the tunnel, you can use the following command to remove the default IPv6 routes
```
default_route=$(ip -6 route show | awk '/default via/{print $3}') && [ -n "$default_route" ] && ip -6 route del default via $default_route dev eth0
@@ -108,7 +96,7 @@ This assumes that your client's server's default NIC is ```eth0```, you can use
#### tunnelbroker_net
-Combined with a script that opens containers with IPV6 addresses with a single click, you can attach an IPV6 address from he to each container
+Combined with a script that opens containers with IPv6 addresses with a single click, you can attach an IPv6 address from he to each container
The downside is that the addresses are dark/dirty, and cloudflare's cdn will most likely not be able to latch on, test it yourself
@@ -120,7 +108,7 @@ The downside is that the addresses are dark/dirty, and cloudflare's cdn will mos

-2. Fill in your server's IPV4 address in the red box, choose a connection point that is physically close to your server, for example, if your machine is in Los Angeles, choose a connection point on the west coast of the United States, and then click```Create Tunnel```to create the tunnel when you are prompted by the green box!
+2. Fill in your server's IPv4 address in the red box, choose a connection point that is physically close to your server, for example, if your machine is in Los Angeles, choose a connection point on the west coast of the United States, and then click```Create Tunnel```to create the tunnel when you are prompted by the green box!

@@ -147,7 +135,7 @@ The downside is that the addresses are dark/dirty, and cloudflare's cdn will mos

-5. Exchange the format of the command then add IPV6 settings to your network configuration file.
+5. Exchange the format of the command then add IPv6 settings to your network configuration file.
Then open [https://ipv6tunnel.spiritlhl.top/](https://ipv6tunnel.spiritlhl.top/) and select```Option```for```TunnelBrokerNet```, another drop-down selection box to choose the name of the package you successfully installed previously, then paste what you copied in the input box.
@@ -190,7 +178,7 @@ curl ipv6.ip.sb
```
-Returns the IPV6 address you bound to
+Returns the IPv6 address you bound to
8. Additional settings for NAT VPS
@@ -213,7 +201,7 @@ route -A inet6 add ::/0 dev he-ipv6
```
-9. If the IPV6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.
+9. If the IPv6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.
If you want to delete the he-ipv6 network interface configuration (if not, it will be enabled automatically after reboot), remember to modify the```/etc/network/interfaces```file to remove the content added in the red box before.
@@ -227,7 +215,7 @@ Then reboot the server to remove the
Similar to the above, first register an account at [https://www.tunnelbroker.ch/](https://www.tunnelbroker.ch/) and click on the activation email after registering.
-Then you have to fill in the IPV4 address of your server.
+Then you have to fill in the IPv4 address of your server.

@@ -283,9 +271,9 @@ Make sure the environment is OK before you do anything else
#### ip4market_ru
-Similar to the above, first register an account at [https://tb.ip4market.ru](https://tb.ip4market.ru/), the registered email address must be an unseen email address, the phone number can be written randomly without verification, and the IP address should be the IPV4 address of the host you want to attach.
+Similar to the above, first register an account at [https://tb.ip4market.ru](https://tb.ip4market.ru/), the registered email address must be an unseen email address, the phone number can be written randomly without verification, and the IP address should be the IPv4 address of the host you want to attach.
-The IP address is the IPV4 address of the host computer you are attaching to
+The IP address is the IPv4 address of the host computer you are attaching to

@@ -341,13 +329,13 @@ Make sure the environment is OK before you do anything else
Similar to the above operation, first in [https://tb.netassist.ua/](https://tb.netassist.ua/) register an account first, after registration, click on the activation of the mail, the activation page will have a password display, remember to record!
-Then fill in the IPV4 address of your server, you can change it later, just fill in a random one first.
+Then fill in the IPv4 address of your server, you can change it later, just fill in a random one first.
Then you will get to this page

-The first red box is the location of your host's IPV4 address, if you want to modify it, modify it there, and then click change to save.
+The first red box is the location of your host's IPv4 address, if you want to modify it, modify it there, and then click change to save.
The second red box is for```Linux``, and then click on show
@@ -378,26 +366,26 @@ systemctl restart networking
Make sure the environment is OK before you do anything else
-## Transfer IPV6 subnets between different servers
+## Transfer IPv6 subnets between different servers
Related repository: [https://github.com/oneclickvirt/6in4](https://github.com/oneclickvirt/6in4)
-This method will provide a way to split a /80 out of the IPV6 segment on A and attach it to B to use.
+This method will provide a way to split a /80 out of the IPv6 segment on A and attach it to B to use.
### Features
- Self-built IPv6 tunnel for sit/gre/ipip protocols
-- Support to customize the IPV6 subnet size to be cut out, and the appropriate IPV6 subnet information in CIDR format will be calculated automatically.
-- Automatically recognizes the IPV6 subnet size of the server side
+- Support to customize the IPv6 subnet size to be cut out, and the appropriate IPv6 subnet information in CIDR format will be calculated automatically.
+- Automatically recognizes the IPv6 subnet size of the server side
- will automatically set up the tunnel server and print the commands that the client needs to execute
-- Setting up the IPV6 tunnel is easy to understand and easy to remove
+- Setting up the IPv6 tunnel is easy to understand and easy to remove
### Environmental Preparation
| VPS(A) | VPS(B) |
| --------|--------|
-| one IPV4 address (server_ipv4) | one IPV4 address (clinet_ipv4) |
-| one IPV6 subnet | no IPV6 address |
+| one IPv4 address (server_ipv4) | one IPv4 address (clinet_ipv4) |
+| one IPv6 subnet | no IPv6 address |
| Hereafter referred to as server | Hereafter referred to as client |
### Usage
@@ -423,7 +411,7 @@ Execute it
`````` as long as it is larger than the original system subnet mask, and is a multiple of 8, if you don't fill it in, it defaults to ```80```.
-Remember to replace ```client_ipv4``` with the IPV4 address of the machine you want to attach IPV6 to, and the command you need to execute on the client side will be sent back to you after execution, see the instructions after execution for details.
+Remember to replace ```client_ipv4``` with the IPv4 address of the machine you want to attach IPv6 to, and the command you need to execute on the client side will be sent back to you after execution, see the instructions after execution for details.
To prevent you from forgetting to copy the commands, the commands themselves will be written to the ```6in4.log``` file under the current path, you can use ```cat 6in4.log``` to query the commands that need to be executed on the client side
@@ -486,11 +474,11 @@ The above deletion is only temporary, for permanent deletion you must modify and
### one more thing
-In fact [https://tunnelbroker.net/](https://tunnelbroker.net/) supports the application of IPV6 subnets of size ```/48```
+In fact [https://tunnelbroker.net/](https://tunnelbroker.net/) supports the application of IPv6 subnets of size ```/48```

-Make the request here, then when converting the format change the original ```/64``` IPV6 address to a ```/48``` IPV6 address and you'll get a larger IPV6 subnet!
+Make the request here, then when converting the format change the original ```/64``` IPv6 address to a ```/48``` IPv6 address and you'll get a larger IPv6 subnet!
## Supplemental CloudFlare WARP IPv4 / IPv6 outbound
diff --git a/docs/en/guide/lxd/lxd_extra_config.md b/docs/en/guide/lxd/lxd_extra_config.md
index 6aa4a0d739..b6975b9aa1 100644
--- a/docs/en/guide/lxd/lxd_extra_config.md
+++ b/docs/en/guide/lxd/lxd_extra_config.md
@@ -8,11 +8,11 @@ outline: deep
The following configurations may increase the load on the server. Only install them if necessary.
:::
-## Automatic IPV6 Address Configuration
+## Automatic IPv6 Address Configuration
- (Optional, not required if not using)
-- **This script is only suitable for servers that have an ```IPV6``` subnet with a prefix, and the server has bound the ```first IP``` of the subnet as its ```IPV6 address or IPV6 gateway```.**
-- Automatically configures ```IPV6``` addresses for LXC containers created with LXD.
+- **This script is only suitable for servers that have an ```IPv6``` subnet with a prefix, and the server has bound the ```first IP``` of the subnet as its ```IPv6 address or IPv6 gateway```.**
+- Automatically configures ```IPv6``` addresses for LXC containers created with LXD.
- Integrated into ```buildct.sh``` and can be controlled by variables without needing to be downloaded beforehand. You don't need to manually use this script; when using ```buildct.sh```, configure with variable Y to enable it.
Download Script
@@ -23,7 +23,7 @@ Command:
curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/build_ipv6_network.sh -o build_ipv6_network.sh && chmod +x build_ipv6_network.sh
```
-Automatically configure IPV6 mapped addresses for containers
+Automatically configure IPv6 mapped addresses for containers
```bash
bash build_ipv6_network.sh Container_Name(change_me)
@@ -31,7 +31,7 @@ bash build_ipv6_network.sh Container_Name(change_me)
A message is printed when the mapping is complete (Default mapping without iptables)
-Example (automatically configure the test container with an IPV6 address, a test_v6 file is written when the configuration is complete)
+Example (automatically configure the test container with an IPv6 address, a test_v6 file is written when the configuration is complete)
```bash
bash build_ipv6_network.sh test
@@ -45,7 +45,7 @@ Use ip6tables for mapping
bash build_ipv6_network.sh Container_name Y
```
-If ip6tables is used for mapping, remove all IPV6 mapped rules available:
+If ip6tables is used for mapping, remove all IPv6 mapped rules available:
```bash
ip6tables -t nat -F PREROUTING
@@ -56,7 +56,7 @@ netfilter-persistent reload
service netfilter-persistent restart
```
-Uninstall the IPV6 address binding daemon and corresponding files
+Uninstall the IPv6 address binding daemon and corresponding files
```shell
systemctl stop add-ipv6.service
diff --git a/docs/en/guide/lxd/lxd_install.md b/docs/en/guide/lxd/lxd_install.md
index 714267c8f3..59ad1beb94 100644
--- a/docs/en/guide/lxd/lxd_install.md
+++ b/docs/en/guide/lxd/lxd_install.md
@@ -4,7 +4,7 @@ outline: deep
# LXD
-If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the ```Customize``` partition in the ```LXD``` module for the ```Attach a free IPV6 address segment``` to the host, and attach an IPV6 subnet to the host before installing the environment.
+If your host does not have an IPv6 subnet and you want to assign IPv6 addresses to containers, then please check the ```Customize``` partition in the ```LXD``` module for the ```Attach a free IPv6 address segment``` to the host, and attach an IPv6 subnet to the host before installing the environment.
## Setting up virtual memory (SWAP) (optional, not required)
@@ -69,22 +69,22 @@ If you need to specify the path of a non-system disk as the default pool, then y
If the corresponding disk has 18 Gigabytes of free hard disk space in addition to the occupied space and you want to open a 15 Gigabyte storage pool, follow the command line prompts to enter ```15```.
:::warning
-If you need to open more than 200 LXD containers on a single server, then it is not recommended to use this project, there may be problems with lxcfs access drift, which generates IO occupancy that cannot be released. (This is a native LXC problem that can't be fixed.)
+If you plan to run more than 200 LXD containers on one server, this solution is not recommended. `lxcfs` drift can cause persistent I/O load that is hard to recover from. (This is an upstream LXC limitation.)
:::
## Installation of WEB Control Panel
-Customization There are tutorials on how to enable the official panel, but here do not choose to use the official panel, because the official panel in order to security, at the expense of a lot of user experience, this piece of using the
+The customization section also includes guidance for enabling the official panel. Here we recommend a third-party panel instead, because the official panel prioritizes security over user experience in several workflows.
https://github.com/turtle0x1/LxdMosaic
-third-party panels
+Third-party panel:
```shell
sudo snap install lxdmosaic
```
-Do a straightforward one-click install, then open the current host's ```https:///``` and force access to it to get to the setup page
+Run the one-click installation, then open ```https:///``` on the host. Accept the browser warning if needed to enter the setup page.

@@ -92,15 +92,15 @@ Do a straightforward one-click install, then open the current host's ```https://

-This piece can be changed if you need to set up the site name
+You can change this section if you want to customize the site name.

-Better than nothing can only mean that there is no RBAC access control for sub-user segregation
+This panel is practical, but it does not provide complete RBAC-style sub-user isolation.
## Manual installation (optional)
-Not recommended, just to install for some oddball environments where one-click scripts won't run, or if you want to understand the most basic LXD installation process.
+Not recommended for normal usage. Use it only when one-click scripts cannot run in your environment, or when you want to learn the base LXD installation process.
### Disable Firewall
diff --git a/docs/en/guide/lxd/lxd_lxc.md b/docs/en/guide/lxd/lxd_lxc.md
index 6235ed5496..d06a88c39f 100644
--- a/docs/en/guide/lxd/lxd_lxc.md
+++ b/docs/en/guide/lxd/lxd_lxc.md
@@ -22,7 +22,7 @@ curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/buildct.
. /buildct.sh name Cpu_num Memory_size Hard_disk_size SSH_port Extranet_start_port Extranet_stop_port Download_speed Upload_speed Whether_IPV6_is_enabled(Y or N) System(leave blank for debian12)
```
-Memory size is calculated in MB, hard disk size is calculated in GB, download speed upload speed is calculated in Mbit, whether to enable IPV6 does not have to fill in Y or N, no this parameter can also be left blank default does not enable IPV6
+Memory size is calculated in MB, hard disk size is calculated in GB, download speed upload speed is calculated in Mbit, whether to enable IPv6 does not have to fill in Y or N, no this parameter can also be left blank default does not enable IPv6
If ```external start port`` and ```external stop port`` are both set to 0, then we don't do interval port mapping, only the basic SSH port is mapped, note that ```can't be null``, and it needs to be set to 0 if it's not to be mapped.
diff --git a/docs/en/guide/lxd/lxd_precheck.md b/docs/en/guide/lxd/lxd_precheck.md
index 38bc638bb4..7eb24a19fc 100644
--- a/docs/en/guide/lxd/lxd_precheck.md
+++ b/docs/en/guide/lxd/lxd_precheck.md
@@ -6,7 +6,7 @@ outline: deep
The following is the introduction of the non-customized part, the customized part has its own corresponding introduction, do not get confused!
-If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the ``Customize`` partition in the ``LXD`` module for the ``Attach a free IPV6 address segment`` to the host, and attach an IPV6 subnet to the host before installing the environment.
+If your host does not have an IPv6 subnet and you want to assign IPv6 addresses to containers, then please check the ``Customize`` partition in the ``LXD`` module for the ``Attach a free IPv6 address segment`` to the host, and attach an IPv6 subnet to the host before installing the environment.
Feel free to give the project a ```Star``` for free support!-->[https://github.com/oneclickvirt/lxd](https://github.com/oneclickvirt/lxd)
@@ -17,7 +17,7 @@ Hardware requirements.
- Virtualization: KVM, VMWARE recommended.
- Memory: At least 512MB of RAM
- Hard disk: hard disk (system disk) at least 10G
-- Network: Independent IPV4 address, IPV6 is optional, bandwidth can download scripts on the line, the network can connect to the public network.
+- Network: Independent IPv4 address, IPv6 is optional, bandwidth can download scripts on the line, the network can connect to the public network.
PS: If the hardware is very good and has a lot of resources, you can use PVE to batch open KVM virtualized VMs [Jump](https://github.com/oneclickvirt/pve)
@@ -33,9 +33,9 @@ PS: If the hardware resources are even worse, virtualization is not supported, y
- lxcfs has been set to be enabled by default, so that querying resources within a container uses the configured view rather than the host's view
-- Have blocked the container may be used to abuse the toolkit and IPV4 network TCP/UDP protocol ports ( 3389 8888 54321 65432 ), to prevent the container is used for scanning and blasting, and can be external process checking for problems automatically shut down
+- Have blocked the container may be used to abuse the toolkit and IPv4 network TCP/UDP protocol ports ( 3389 8888 54321 65432 ), to prevent the container is used for scanning and blasting, and can be external process checking for problems automatically shut down
-- Has supported one-click configuration of IPV6 addresses for LXC containers (provided that the mother hen has an IPV6 subnet, no IPV6 address is not configured), automatically adapted to the size of the subnet
+- Has supported one-click configuration of IPv6 addresses for LXC containers (provided that the mother hen has an IPv6 subnet, no IPv6 address is not configured), automatically adapted to the size of the subnet
- Ensure that the disk you want to open is the default system disk (sda or sda1) and not the mounted disk (sdb and so on), if you are not sure, use ``fdisk -l`` and ``df`` to check.
diff --git a/docs/en/guide/lxd/lxd_qa.md b/docs/en/guide/lxd/lxd_qa.md
index 2317310e87..558c043bc3 100644
--- a/docs/en/guide/lxd/lxd_qa.md
+++ b/docs/en/guide/lxd/lxd_qa.md
@@ -51,25 +51,9 @@ You need to install a scheduled task to detect and fix this issue
curl -L https://raw.githubusercontent.com/oneclickvirt/incus/main/extra_scripts/docker-coexistence.sh -o docker-coexistence.sh && chmod +x docker-coexistence.sh && bash docker-coexistence.sh
```
-## Currently verified VPS vendors that can open containers with separate IPV6 addresses.
+## Currently verified VPS vendors that can open containers with separate IPv6 addresses.
[kuroit](https://my.kuroit.com/aff.php?aff=5) Phoenix, USA regular
[datalix](https://t.me/+UHVoo2U4VyA5NTQ1/338) German AMD Promotions
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
-
diff --git a/docs/en/guide/lxd/lxd_qemu.md b/docs/en/guide/lxd/lxd_qemu.md
index 3705bf6ae3..e960965535 100644
--- a/docs/en/guide/lxd/lxd_qemu.md
+++ b/docs/en/guide/lxd/lxd_qemu.md
@@ -29,25 +29,17 @@ Here are some of the available system parameters for your reference:
### Download Script
-International:
-
```shell
curl -L https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh && dos2unix buildvm.sh
```
-Domestic (China):
-
-```shell
-curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh && dos2unix buildvm.sh
-```
-
### Usage
```
./buildvm.sh ServerName CPUCores MemorySize DiskSize SSHPort ExternalStartPort ExternalEndPort DownloadSpeed UploadSpeed EnableIPV6(Y or N) System(leave empty for debian11)
```
-CPU cores must be less than or equal to the host machine's cores. Memory size is calculated in MB, disk size in GB, download and upload speeds in Mbit. EnableIPV6 doesn't necessarily need to be Y or N - it can be omitted, defaulting to disabled IPV6.
+CPU cores must be less than or equal to the host machine's cores. Memory size is calculated in MB, disk size in GB, download and upload speeds in Mbit. EnableIPV6 doesn't necessarily need to be Y or N - it can be omitted, defaulting to disabled IPv6.
If both ```ExternalStartPort``` and ```ExternalEndPort``` are set to 0, no external port range mapping will be performed - only the basic SSH port will be mapped. Note that these ```cannot be empty``` - set them to 0 if no mapping is needed.
@@ -70,7 +62,7 @@ Here's the information for the example server being created:
| Internal/External Port Mapping Range | 20002 to 20025 |
| Upload Bandwidth | 500Mbit |
| Download Bandwidth | 500Mbit |
-| Auto-configure External IPV6 | N |
+| Auto-configure External IPv6 | N |
| System | debian13 |
```shell
diff --git a/docs/en/guide/lxd/lxd_windows.md b/docs/en/guide/lxd/lxd_windows.md
index 3395ab21f3..cc0dd52386 100644
--- a/docs/en/guide/lxd/lxd_windows.md
+++ b/docs/en/guide/lxd/lxd_windows.md
@@ -99,7 +99,7 @@ Once the spinning stops, you'll enter the normal Windows VM installation process

-Here the hard disk can not be selected, choose to view the yellow tips in the lower left corner, and then follow the prompts will be offline hard disk online point to confirm the button, you can select the hard disk.
+If the disk is not selectable at this step, follow the yellow hint in the lower-left corner and set the disk from offline to online, then confirm. The disk will become selectable afterward.

@@ -107,7 +107,7 @@ Here the hard disk can not be selected, choose to view the yellow tips in the lo

-Once the installation is complete, the virtual machine will automatically reboot a few times to update the network, and the web side of spice will show up in the user setup interface, while in the background you can use the ```lxc list``` to see that the network is automatically attached.
+After installation, the VM may reboot several times while network setup is finalized. In the SPICE web console you should see the user setup screen. In parallel, run ```lxc list``` to confirm network attachment.

@@ -125,7 +125,7 @@ The following image can be seen after startup (test visit a website)

-No need to configure your own network, lxd will automatically assign IPV4 addresses and connect to the network.
+No need to configure your own network, lxd will automatically assign IPv4 addresses and connect to the network.
## Remove the remote component to restart the browser mapping
diff --git a/docs/en/guide/oneclickvirt/oneclickvirt_install.md b/docs/en/guide/oneclickvirt/oneclickvirt_install.md
index f1c52188b8..4ce01061a0 100644
--- a/docs/en/guide/oneclickvirt/oneclickvirt_install.md
+++ b/docs/en/guide/oneclickvirt/oneclickvirt_install.md
@@ -2,7 +2,7 @@
outline: deep
---
-# OneClickVirt
+# OneClickVirt Installation
Distinguish between the panel side and the controlled side. The controlled side needs to have the corresponding virtualization environment installed in advance. You can use the main installation of other virtualization in one-click virtualization for environment installation. The control side is actually just a panel, with no virtualization environment requirements.
@@ -42,8 +42,6 @@ Two methods are distinguished here:
###### Download Script
-International
-
```shell
curl -L https://raw.githubusercontent.com/oneclickvirt/oneclickvirt/refs/heads/main/install.sh -o install.sh && chmod +x install.sh
```
diff --git a/docs/en/guide/oneclickvirt/oneclickvirt_qa.md b/docs/en/guide/oneclickvirt/oneclickvirt_qa.md
index e0938964d2..93caa9e227 100644
--- a/docs/en/guide/oneclickvirt/oneclickvirt_qa.md
+++ b/docs/en/guide/oneclickvirt/oneclickvirt_qa.md
@@ -154,19 +154,4 @@ If traffic is flowing in or out, inspect actual connection states with:
```shell
conntrack -L | grep
```
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
diff --git a/docs/en/guide/oneclickvirt/oneclickvirt_usage.md b/docs/en/guide/oneclickvirt/oneclickvirt_usage.md
index 93e37352f1..dcf013a8ef 100644
--- a/docs/en/guide/oneclickvirt/oneclickvirt_usage.md
+++ b/docs/en/guide/oneclickvirt/oneclickvirt_usage.md
@@ -26,11 +26,11 @@ Administrators can click on the avatar in the upper right corner, where the drop
## Managing Nodes
-First, you need to ensure that the node to be managed has one of the four major virtualization technologies installed.
+Before adding a node, make sure at least one supported virtualization stack is already installed on that node.
-Ping the node's IP from the machine where this panel is deployed. Ideally, the latency should be within 300ms and the packet loss rate should not be too high, otherwise connection failures may occur, resulting in missed command execution in control.
+From the panel host, test connectivity to the node IP first. A latency below 300 ms with low packet loss is recommended. Otherwise, SSH/API operations may fail intermittently.
-Below are the steps for setting up nodes. Required and mandatory steps must be followed, while optional steps depend on your needs.
+The setup process below is divided into required and optional sections. Complete all required sections first, then apply optional settings as needed.
### Basic Information (Required)
@@ -38,43 +38,43 @@ Below are the steps for setting up nodes. Required and mandatory steps must be f

-The server name should preferably use only English letters and numbers, avoid special characters, and ideally be within 6 characters. When creating containers or virtual machines later, this server name will be automatically added as a prefix.
+Use only letters and numbers for the server name, avoid special characters, and keep it short (recommended within 6 characters). This name is used as the default prefix when new instances are created.
-Select the virtualization technology name you actually installed for the server type. Docker can only create containers by default, while other virtualization technologies can create virtual machines.
+For server type, select the virtualization technology that is actually installed on the node. Docker nodes create containers only by default; other types can create virtual machines.
-For SSH address, fill in the node's public IPv4 address or internal SSH connection address. This address will be used for SSH connections and API connections.
+For SSH address, enter the node's public IPv4 address or reachable private SSH address. This value is used for both SSH and API access.
-NAT port mapping prioritizes using the port IP for mapping. If no specific port IP is provided, the SSH address IP will be used for mapping. Neither needs to be a public IPv4 address.
+For NAT port mapping, port IP has higher priority. If port IP is empty, the SSH address IP is used. Neither field must be a public IPv4 address.
-Node mode can be set to either a clean node or a node with existing instances. If you choose the latter, the system will automatically detect the existing instances on that node and generate the corresponding redemption codes in Redemption Code Management, bound to the current administrator by default. After switching to the regular user view, the imported existing instances will be visible.
+Node mode can be either a clean node or a node with existing instances. For existing-instance mode, the system detects current instances automatically and generates redemption codes in Redemption Code Management. They are bound to the current admin by default and become visible in regular-user view.
In the port field, fill in the port for SSH connection to the node.
-Description can note some information about the current node, visible only to administrators.
+Description is optional metadata for admins only.
-Status is enabled by default, allowing regular users to apply and claim instances after health checks.
+Status is enabled by default. After health check passes, regular users can apply for and claim instances.
-Architecture is the node's own architecture. Currently supports managing amd64 and arm64 architecture nodes, select accordingly.
+Architecture must match the node architecture. Currently supported: amd64 and arm64.
-(Nodes with existing instances are temporarily not supported for management. The feature to synchronize and manage existing instances has not yet been developed)
+(Management for nodes that already contain instances is still limited. Full synchronization and unified management for pre-existing instances is not fully implemented yet.)
### Connection Configuration (Required)

-Username is recommended to be root user, as automatic API configuration later requires downloading some dependencies. Non-root users may encounter permission issues.
+Using the root account is recommended because automatic API setup installs required dependencies. Non-root accounts may hit permission issues.
-Password is the password used for SSH login. Of course, if you don't use a password and use key-based login, that's also acceptable.
+Password is the SSH login password. Key-based login is also supported.
-SSH timeout configuration is designed to test connectivity and optimize fault tolerance, and can also be used to check connectivity.
+SSH timeout values are used for connectivity probing and fault tolerance tuning.

-After filling in the previous information, click test and corresponding prompt values will appear. Click apply to proceed. Of course, not applying is also fine, with higher fault tolerance.
+After filling the fields above, click Test to get recommended values, then click Apply if you want to use them.
-The latency here is the latency of actually executing commands on the corresponding node via ping, so it's generally around 2s or more, which is normal latency.
+The latency displayed here reflects command execution round-trip time, not just ICMP ping, so values around 2 seconds can still be normal.
-This design is to accommodate nodes with extremely poor connectivity to the panel machine. Increasing these parameter values means higher fault tolerance.
+These settings are designed to support nodes with unstable links to the panel host. Higher values mean higher fault tolerance.
Execution timeout generally doesn't need modification unless your node's performance is particularly weak and command execution takes a long time.
@@ -378,25 +378,6 @@ Graphic verification code generation and verification configuration, used for se
- `length`: Verification code character length
- `width`: Verification code image width in pixels
-### cdn Content Delivery Network Configuration
-
-```yaml
-cdn:
- base-endpoint: https://cdn.spiritlhl.net/
- endpoints:
- - https://cdn0.spiritlhl.top/
- - http://cdn3.spiritlhl.net/
- - http://cdn1.spiritlhl.net/
- - http://cdn2.spiritlhl.net/
-```
-
-CDN acceleration node configuration used when downloading system images.
-
-- `base-endpoint`: Primary CDN node address, used first
-- `endpoints`: Backup CDN node list, retried in order. The system will automatically select available nodes for image download
-
-Generally, this configuration doesn't need modification. Preloaded system images are all hosted in this organization's repository, and default CDN nodes can already provide good download acceleration.
-
### mysql Database Configuration
```yaml
diff --git a/docs/en/guide/podman/podman_build.md b/docs/en/guide/podman/podman_build.md
index fe1ecfb719..ba18d19a11 100644
--- a/docs/en/guide/podman/podman_build.md
+++ b/docs/en/guide/podman/podman_build.md
@@ -8,26 +8,17 @@ Two methods for provisioning containers.
## Single Container Provisioning
-- Creates a single Podman container, automatically detects international or China mainland server
+- Creates a single Podman container
- Can configure binding of an independent IPv6 address (requires host with public IPv6 and podman-ipv6 network configured during installation)
- Supports x86_64 and ARM64 architecture servers
### Download Script
-International
-
```shell
curl -sSLO https://raw.githubusercontent.com/oneclickvirt/podman/main/scripts/onepodman.sh
chmod +x onepodman.sh
```
-China Mainland
-
-```shell
-curl -sSLO https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/podman/main/scripts/onepodman.sh
-chmod +x onepodman.sh
-```
-
### Example
Supported variables for running:
@@ -109,22 +100,12 @@ podman logs ct1
### Run
-International
-
```shell
curl -sSLO https://raw.githubusercontent.com/oneclickvirt/podman/main/scripts/create_podman.sh
chmod +x create_podman.sh
./create_podman.sh
```
-China Mainland
-
-```shell
-curl -sSLO https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/podman/main/scripts/create_podman.sh
-chmod +x create_podman.sh
-./create_podman.sh
-```
-
### Query Batch Container Information
```shell
diff --git a/docs/en/guide/podman/podman_install.md b/docs/en/guide/podman/podman_install.md
index 3f68daba7e..c997058f7d 100644
--- a/docs/en/guide/podman/podman_install.md
+++ b/docs/en/guide/podman/podman_install.md
@@ -29,18 +29,10 @@ curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o
- Installs DNS liveness check service (check-dns-podman.service)
- Supports x86_64 and ARM64 architecture servers
-International
-
```shell
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/podman/main/podmaninstall.sh)
```
-China Mainland
-
-```shell
-bash <(curl -sSL https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/podman/main/podmaninstall.sh)
-```
-
:::tip
After installation, run `podman ps -a` to verify the Podman environment is working correctly.
:::
@@ -49,18 +41,10 @@ After installation, run `podman ps -a` to verify the Podman environment is worki
One-click uninstall of the entire Podman environment, including all containers, images, networks, and auxiliary files:
-International
-
```shell
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/podman/main/podmanuninstall.sh)
```
-China Mainland
-
-```shell
-bash <(curl -sSL https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/podman/main/podmanuninstall.sh)
-```
-
:::warning
The script requires entering `yes` to confirm before execution. This operation is irreversible. Deleted content includes all containers, images, and Podman network configurations.
Retest workflow: Run uninstall first, then run install to verify the entire installation process from scratch.
diff --git a/docs/en/guide/podman/podman_qa.md b/docs/en/guide/podman/podman_qa.md
index 02efd09d85..5b4ce1976c 100644
--- a/docs/en/guide/podman/podman_qa.md
+++ b/docs/en/guide/podman/podman_qa.md
@@ -100,19 +100,3 @@ echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 1.1.1.1" >> /etc/resolv.conf
```
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
-
diff --git a/docs/en/guide/pve/images/readme.md b/docs/en/guide/pve/images/readme.md
index 56a78ce62f..87837faeb8 100644
--- a/docs/en/guide/pve/images/readme.md
+++ b/docs/en/guide/pve/images/readme.md
@@ -1 +1 @@
-暂存图片
+Temporary image placeholder.
diff --git a/docs/en/guide/pve/pve_android.md b/docs/en/guide/pve/pve_android.md
index 7a393c42e8..a30029ce1b 100644
--- a/docs/en/guide/pve/pve_android.md
+++ b/docs/en/guide/pve/pve_android.md
@@ -8,16 +8,10 @@ outline: deep
Download links for Android system version 9 and earlier:
-International
-
https://www.fosshub.com/Android-x86.html
https://sourceforge.net/projects/android-x86/files/
-Domestic (China)
-
-https://mirrors.tuna.tsinghua.edu.cn/osdn/android-x86/
-
Download links for Android system version 10 and later:
https://blissos.org/index.html#download
@@ -30,7 +24,7 @@ https://sourceforge.net/projects/blissos-x86/files/Official/
This guide demonstrates using:
-https://mirrors.tuna.tsinghua.edu.cn/osdn/android-x86/71931/android-x86_64-9.0-rc2.iso
+https://sourceforge.net/projects/android-x86/files/Release%209.0/android-x86_64-9.0-rc2.iso/download
as an example
diff --git a/docs/en/guide/pve/pve_custom.md b/docs/en/guide/pve/pve_custom.md
index 5ace08209b..b883ea5d9a 100644
--- a/docs/en/guide/pve/pve_custom.md
+++ b/docs/en/guide/pve/pve_custom.md
@@ -2,7 +2,7 @@
outline: deep
---
-# Customized partitions
+# Custom Sections
## Installing Proxmox VE 7 on a non-Debian system
@@ -21,9 +21,9 @@ Then use ```uname -m``` to query the architecture and use the command correspond
The opened PVE panel information is:
-Login username and password are both ``root``, after logging in be sure to use web SSH to change the password to avoid being blown up.
+The default login username and password are both ``root``. After login, change the password immediately in web SSH to avoid brute-force risk.
-When using host SSH, be sure to log into the corresponding ``https://IPV4:8006`` to use SSH on the web panel, do not use the host's port 22 to manipulate the PVE.
+When using host SSH, be sure to log into the corresponding ``https://IPv4:8006`` to use SSH on the web panel, do not use the host's port 22 to manipulate the PVE.
Because the SSH on the web panel is inside Docker, it does not support subsequent one-click configurations, so please configure your own gateway, etc. to use it.
@@ -49,11 +49,11 @@ docker run -idt --network host \
spiritlhl/pve:7_aarch64
```
-The web panel is actually opened in the container, but the network has used the host mode, the port of the PVE is about the same as the port of the host used.
+The web panel runs inside the container, but networking uses host mode, so PVE ports are exposed on host network interfaces.
But here the login username and password become ```root``` and ```root```, if you need to change it please ```docker exec -it pve /bin/bash``` enter and change the password of root, then press ```ctrl``` key and ```A+D``` to exit.
-There are many bugs need to be fixed, welcome to PR to solve the problem, the actual test on the Ubuntu system host machine to install ```Proxmox VE``` panel success, solved the problem of installing ```Proxmox VE``` over the network can only be used to use the Debian system as a host machine!
+This path is experimental and may contain unresolved bugs. PRs are welcome. It has been validated on Ubuntu hosts to provide an alternative to Debian-only host assumptions in standard workflows.
## Optimizing the memory footprint of Proxmox-VE on low-configuration systems
@@ -102,7 +102,7 @@ systemctl stop pve-firewall.service
systemctl disable pve-firewall.service
```
-### Discontinuation of cheduler service
+### Discontinuation of scheduler service
If you don't need scheduled tasks, such as backups and synchronizations, you can deactivate the service by executing the following command:
@@ -147,7 +147,7 @@ Use the ```nano``` or ```vim``` command to modify the file to add port mapping:
/etc/iptables/rules.v4
```
-For example, if I have a KVM VM with an intranet IP of ```172.16.1.152``` (VMs can view the intranet IP address on the web side no matter what system they are on), and MYSQL has been set up to listen to ```3306```, and I need to use the ```tcp``` protocol to map out to the ```33306``` port on the host IP, I would add the following line to the ```COMMIT``` line in the file above, then add the following line
+For example, assume a KVM VM has internal IP ```172.16.1.152```, MySQL listens on ```3306```, and you want to map host port ```33306``` over ```tcp```. Add the following rule above the ```COMMIT``` line in the file:
```
-A PREROUTING -i vmbr0 -p tcp -m tcp -dport 33306 -j DNAT --to-destination 172.16.1.152:3306
diff --git a/docs/en/guide/pve/pve_install.md b/docs/en/guide/pve/pve_install.md
index 7748f3c529..95c3375e58 100644
--- a/docs/en/guide/pve/pve_install.md
+++ b/docs/en/guide/pve/pve_install.md
@@ -2,9 +2,9 @@
outline: deep
---
-# PVE Body Installation
+# Main PVE Installation
-If you don't know how to choose an option during installation, just press enter.
+If you are not sure how to answer an installation prompt, pressing Enter for the default option is usually fine.
:::tip
For low-configuration hosts, it is recommended to check the contents of the ```Custom``` partition after all the content has been installed to perform memory tuning and reduce the memory footprint.
@@ -17,37 +17,32 @@ Proxmox installed by this method can subsequently use all scripts of this projec
### One-click PVE installation
:::tip
-Suggest debian12+, the actual test part of the independent server debian11 system will appear a reboot network will be lost, debian12 does not have such a problem!
+Debian 12 or newer is recommended. In real tests, some Debian 11 hosts lost network connectivity after reboot, while Debian 12 did not show this issue.
:::
-- The installation is the latest PVE from the apt source at the moment.
-- For example, debian10 is pve6.4, debian11 is pve7.x, debian12 is pve8.x, debian13 is pve9.x
-- Changes to the ```/etc/hosts``` file (to fix the wrong hostname setting for merchants and to add the required content for PVE)
-- ```/etc/cloud/cloud.cfg``` file modification (to avoid overwriting modified hostname etc.)
-- ```/etc/network/interfaces``` file modification (fix auto, dhcp type to static, add vmbr0 gateway)
-- Detect whether it is China IP, if it is China IP use Tsinghua mirror source, otherwise use the official source, and at the same time deal with the source of apt and the corresponding nameserver, to avoid disconnections
-- Create vmbr0 (independent IP gateway), the host allows addr and gateway for intranet IP or extranet IP, has been automatically recognized
-- vmbr0 creation support to open pure IPV4, pure IPV6, dual-stack virtual machine, automatic identification of IPV4 address and IPV6 address, automatic identification of the corresponding IP interval
-- Installation of the necessary toolkit for PVE to open a virtual machine
-- x86_64 replace enterprise subscriptions in apt sources with community sources, arm sources built using third-party patches for fixes
-- Print query Linux system kernel and PVE kernel installed or not
-- Setting up DNS detection ```8.8.8.8.8``` for boot add DNS systemd service
-- Download PVE and printout of login information after adding APT source link for PVE
+- Installs the latest available PVE package set from apt sources.
+- Example mapping: Debian 10 -> PVE 6.4, Debian 11 -> PVE 7.x, Debian 12 -> PVE 8.x, Debian 13 -> PVE 9.x.
+- Updates ```/etc/hosts``` to fix host naming issues and inject required PVE entries.
+- Updates ```/etc/cloud/cloud.cfg``` to avoid cloud-init overwriting modified host settings.
+- Updates ```/etc/network/interfaces``` to convert DHCP-style defaults to static layout and add vmbr0 gateway config.
+- Automatically adjusts package source handling and DNS settings during installation to reduce avoidable network failures
+- Creates vmbr0 (independent IP gateway) and auto-detects whether host address/gateway are private or public.
+- vmbr0 setup supports IPv4-only, IPv6-only, and dual-stack VM networking with automatic subnet recognition.
+- Installs required toolkits for VM provisioning on PVE.
+- On x86_64, replaces enterprise apt subscription sources with community sources; ARM paths use maintained patch workflows.
+- Prints Linux kernel and PVE kernel installation status for quick verification.
+- Enables boot-time DNS health checks through systemd service.
+- Adds PVE apt sources and prints login access details after installation.
All modified files have been set to read-only mode to avoid overwriting after reboot.
-If you want to modify the file, please use` ```chattr -i file path``` to cancel the read-only lock, and run ```chattr +i file path``` to lock the read-only lock when you finish modifying the file.
+If you need to edit these files later, run ```chattr -i ``` first to remove read-only protection, then run ```chattr +i ``` after editing.
You will be prompted to reboot your system once during the execution process, **After rebooting, be sure to wait at least 20 seconds to make sure the system does not reboot automatically again**.
-Because the original environment may be missing ```ifupdown``` or ```ifupdown2``` environment, there is a self-installation daemon loaded for the installation, after the installation of the system will automatically reboot the system again, wait for 20 seconds without reboot to ensure that the installation has been run.
-
-If the host itself exists SLAAC assigned IPV6 address, will be able to choose whether to use the largest IPV6 subnet range, the default carriage return does not use the largest IPV6 subnet range only use the local IPV6, if you subsequently need to attach a separate IPV6 address to the virtual machine/container, the option must be selected ```y```.
-
-:::tip
-If you are installing on an ARM architecture (such as a server running the Oracle platform), after installing Debian via DD, be sure to switch to the [linuxmirrors](https://linuxmirrors.cn/) repository. Use the Alibaba Cloud repository to avoid missing dependencies in the native environment, and then use the following command to install PVE.
-:::
+Some source environments are missing ```ifupdown``` or ```ifupdown2```. The installer may deploy helper components and trigger an additional reboot. Wait about 20 seconds after boot to confirm no further automatic reboot is pending.
+If the host already has an SLAAC-assigned IPv6 address, you can choose whether to use the largest detected IPv6 subnet range. The default Enter option keeps local IPv6 only. If you plan to assign independent IPv6 addresses to VMs/containers later, choose ```y```.
Command:
@@ -62,7 +57,7 @@ bash install_pve.sh
```
:::tip
-After successful installation, the web page may not be safe to open, click on Advanced or More Options and insist on accessing it!
+After installation, the browser may show a certificate warning. Click Advanced (or equivalent) and continue if you trust the host.
:::
The login information is your SSH account and password.
@@ -73,8 +68,8 @@ The login information is your SSH account and password.
- Remove the subscription popup
- Attempt to enable hardware passthrough
- Detect and auto-install AppArmor modules.
-- Before rebooting the system, it is recommended to hook up [nezha probe](https://github.com/naiba/nezha) to facilitate the use of the command line in the background without SSH, to avoid the possibility that SSH may lead to the loss of the root password after the reboot due to the merchant's strange presets.
-- Before executing ```reboot```, you need to wait for the background task to finish executing, some host system apt command execution is very slow, you have to wait for a while to finish executing, of course, most of the machines are not so bad!
+- Before rebooting, consider deploying [nezha probe](https://github.com/naiba/nezha) so you still have emergency command-line access if SSH becomes unavailable.
+- Before running ```reboot```, make sure all background apt tasks are finished. Some hosts process apt jobs slowly.
Command:
@@ -85,29 +80,29 @@ bash <(curl -sSLk https://raw.githubusercontent.com/oneclickvirt/pve/main/script
### Automatically configure the host's gateway
:::warning
-Before using this command, please make sure that you have restarted the server and that PVE can use the WEB terminal normally before executing this command. Do not execute this command immediately after restarting the machine, wait for at least 1 minute after the WEB terminal is successfully started before executing this command.
-If the WEB side doesn't start, run ```systemctl status pveproxy``` to see if it starts, if it's stuck, run ```systemctl start pveproxy``` to start the WEB side.
+Before using this command, make sure the server has rebooted and the PVE web terminal is working. Do not run it immediately after reboot; wait at least 1 minute after the web terminal is available.
+If the web service does not start, run ```systemctl status pveproxy``` to check status. If it is stuck, run ```systemctl start pveproxy```.
:::
:::tip
-This step is most likely to cause SSH disconnections, the reason is to modify the network without waiting for the PVE kernel to start, which will result in setting conflicts, so wait at least a few minutes until the kernel is started, that is, the WEB side is started successfully before execution.
+This step can cause SSH disconnections if networking changes are applied before the PVE kernel stack is fully ready. Wait a few minutes and confirm the web UI is healthy before execution.
:::
:::tip
-If the host needs to attach an IPV6 tunnel (add an IPV6 subnet to a host that does not have an IPV6 address) before executing this command, please check the [IPV6 free subnet attachment](https://www.spiritlhl.net/en/guide/incus/incus_custom.html#attach-free-ipv6-address-segments-to-host-machines) section to attach to the corresponding configuration file, but please **ignore** 'initial environment modifications' and attach directly, and then execute the following one-click gateway configuration commands after verifying that you have an IPV6 address.
+If the host needs to attach an IPv6 tunnel (add an IPv6 subnet to a host that does not have an IPv6 address) before executing this command, please check the [IPv6 free subnet attachment](https://www.spiritlhl.net/en/guide/incus/incus_custom.html#attach-free-ipv6-address-segments-to-host-machines) section to attach to the corresponding configuration file, but please **ignore** 'initial environment modifications' and attach directly, and then execute the following one-click gateway configuration commands after verifying that you have an IPv6 address.
:::
- If vmbr0 is not created, it is automatically created with the same logic as the main installation
-- Create vmbr1 (NAT gateway) to support IPV4 servers that open NAT for IPV6 networks with NAT.
-- Create vmbr2 (standalone IPV6 gateway), use ndppd to solve the problem of MAC verification of IPV6 addresses by the host, support the opening of servers with standalone IPV6 networks.
-- If you want to see the complete settings, you can execute ```cat /etc/network/interfaces``` to see, if you need to modify the gateway you need to modify the file, the web site can not be modified!
+- Create vmbr1 (NAT gateway) to support IPv4 servers that open NAT for IPv6 networks with NAT.
+- Create vmbr2 (standalone IPv6 gateway). `ndppd` is used to handle host-side MAC verification for IPv6 addresses so standalone IPv6 server networking can work correctly.
+- To review full network settings, run ```cat /etc/network/interfaces```. If you need to change gateway settings, edit this file directly; the web UI cannot apply those changes reliably.
- Load iptables and set back to source and allow NAT port forwarding.
In short, ```vmbr0``` is responsible for v4 standalone IPs, and ```vmbr1``` is responsible for complex v4/v6 NATs, ```vmbr2``` is responsible for v6 standalone IPs.
-Open independent IPV4 virtual machine using vmbr0, gateway with the host, IPV4/CIDR using the same network segment address and the same subnet mask, using the host's unbound IPV4 address for IPV4/CIDR, of course, if the subsequent use of this script does not need to pay attention to this point of the nuances of the thing
+For independent IPv4 VMs on `vmbr0`, use the same subnet and netmask as the host, and assign an unbound host-side IPv4 as the VM IPv4/CIDR. If you always use the provided scripts, you usually do not need to handle this manually.
-Use vmbr1 for IPV4 VM with NAT, ```172.16.1.1``` for gateway, ```172.16.1.x/24``` for IPV4/CIDR, where x can't be 1, but of course you don't need to pay attention to this minutia if you use this script later.
+For NAT IPv4 VMs on `vmbr1`, use gateway ```172.16.1.1``` and subnet ```172.16.1.x/24``` (where `x` must not be `1`). Script-based workflows handle this automatically.
Command:
@@ -132,9 +127,9 @@ bash <(curl -sSLk https://raw.githubusercontent.com/oneclickvirt/pve/main/script
## Installation on a physical machine
-Proxmox installed by this method **NOT** to be used subsequently with all scripts of this project.
+Proxmox installed through this physical-machine path is **not** guaranteed to be compatible with all automation scripts in this project.
-This method has not been tested and adapted on a large scale, only I installed PVE8.4 on the local machine, the router itself is not ```automatically obtain an IP address``` but ```fixed IP address connection``` way, if there is a problem corresponding to the warehouse open issues.
+This method has not been widely validated. Current validation is based on local PVE 8.4 installs in fixed-IP router environments. If issues occur, please open an issue in the repository.
### U disk burning official ISO
@@ -166,17 +161,17 @@ Find out how to get into the BIOS on the host itself, and modify two things afte
Then save the settings, then insert the USB flash drive, reboot the system, and choose to use the graphical interface for installation.
-FQDN need to fill in a URL, you can fill in something like pve.spiritlhl.net, preferably a sub-domain of the domain name you own, not the actual domain name if you write it as something like pve.localsite.com will also work, the subsequent may not be used!
+For FQDN, enter a hostname such as `pve.example.com`. A subdomain of your own domain is recommended. It does not have to resolve publicly during initial setup.
-After the installation will automatically shut down and restart, reboot after the black screen can be unplugged USB, to avoid restarting the installation from the USB flash drive, of course, if you forget to reboot to the installation page, shut down the machine after unplugging the USB flash drive and then start up is also OK!
+After installation, the machine reboots automatically. When the screen goes black, unplug the USB drive to avoid booting into installer again. If you forget, shut down, unplug USB, and start again.
### Wireless Network Configuration
Download the required zip file and shell scripts
-https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/pve/refs/heads/main/extra_scripts/wireless/wireless.zip
+https://raw.githubusercontent.com/oneclickvirt/pve/refs/heads/main/extra_scripts/wireless/wireless.zip
-https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/pve/refs/heads/main/extra_scripts/wireless/wireless.sh
+https://raw.githubusercontent.com/oneclickvirt/pve/refs/heads/main/extra_scripts/wireless/wireless.sh
After downloading, unzip the zip file, drag the ```wireless``` folder into the root directory of a new USB flash drive, and the ```wireless.sh``` file has to be put into the root directory as well.
@@ -201,6 +196,6 @@ During the execution of the configuration script, you will be prompted to enter
### Cautions
-Physical machine after the installation of unlimited modules can not use NAT to connect directly to the virtual machine to access the network, so the subsequent tutorials of this project does not support this method of access to the bridge, the subsequent scripts of this project does not support this method of installation of Proxmox.
+For physical-machine installs with wireless modules, direct NAT bridge access to guest VMs may not work as expected. This network path is not the primary supported route for the follow-up automation scripts in this project.
-Currently feasible wireless module used on the PVE success stories, are required to WIFI router access to the network is ```automatically obtain an IP address (DHCP)``` (the subsequent use of openwrt or ikuai or directly nat after the network available within the virtual machine), or can be modified in the router static routing table, if the WIFI router to use a ```fixed IP address Connection to the network```, for the time being did not find success stories.
+Known successful wireless-module setups on PVE require router-side DHCP (`automatically obtain an IP address`) or equivalent static-route adjustments. For Wi-Fi routers using strict fixed-IP uplink mode, there are currently no stable success cases.
diff --git a/docs/en/guide/pve/pve_kvm.md b/docs/en/guide/pve/pve_kvm.md
index a63fb028f3..676abf43b2 100644
--- a/docs/en/guide/pve/pve_kvm.md
+++ b/docs/en/guide/pve/pve_kvm.md
@@ -16,15 +16,15 @@ If the default username **is not ```root```, the default unset root password is
bash <(curl -sSL https://raw.githubusercontent.com/fscarmen/tools/main/root.sh) [PASSWORD]
```
-## Considerations for opening a virtual machine with an IPV6 address
+## Considerations for opening a virtual machine with an IPv6 address
-Due to long-term inactivity IPV6 does not use may lead to NDP broadcast cache invalidation reset, generally idle for about 50 minutes will appear IPV6 unavailable, commonly known as "IPV6 cutoff", at this time it is necessary to set up a timer task.
+Due to long-term inactivity IPv6 does not use may lead to NDP broadcast cache invalidation reset, generally idle for about 50 minutes will appear IPv6 unavailable, commonly known as "IPv6 cutoff", at this time it is necessary to set up a timer task.
```shell
echo '*/1 * * * * curl -m 6 -s ipv6.ip.sb || curl -m 6 -s ipv6.ip.sb' | crontab -
```
-Executing the above commands in the opened virtual machine ensures that the IPV6 network is always used and does not fail over.
+Executing the above commands in the opened virtual machine ensures that the IPv6 network is always used and does not fail over.
## Images available for creating virtual machines
@@ -47,8 +47,8 @@ Executing the above commands in the opened virtual machine ensures that the IPV6
- Automatic internal and external port mapping, including ports 22, 80, 443, and 25 other port numbers shared between internal and external networks.
- After generation, there's a wait time for the virtual machine's internal cloud-init configuration to establish network and login information. This process takes approximately 5 minutes.
- Pertinent virtual machine information will be stored in the NOTES section of the corresponding VM on the web interface, accessible for viewing through the web portal.
-- If the host machine has an IPV6 subnet, IPV6 networking will be automatically added. However, there won't be any public IPV6 addresses.
-- Optionally enable or disable standalone IPV6, requires the host to have at least one /64 subnet
+- If the host machine has an IPv6 subnet, IPv6 networking will be automatically added. However, there won't be any public IPv6 addresses.
+- Optionally enable or disable standalone IPv6, requires the host to have at least one /64 subnet
### Usage Instructions
@@ -96,7 +96,7 @@ Below is the information for the example VM that has been set up:
| Port Range for NAT | 50000 to 50025 |
| Operating System | debian11 |
| Host Storage Disk | local |
-| IPV6 address | N |
+| IPv6 address | N |
:::tip
Note that only VMIDs from 100 to 256 can be used here, no other numbers can be used.
@@ -144,7 +144,7 @@ Before initiating the batch creation process, please use the 'screen' command to
- You can customize the number of CPU cores, memory size, disk size, and which storage disk on the host machine to use for batch creation. Ensure you calculate available resources before proceeding.
- Relevant information about the virtual machines will be stored in the 'NOTES' section of the corresponding VM on the web interface, where you can view them.
- If the host machine comes with an IPv6 subnet, an IPv6 network will be automatically attached, although there will be no public IPv6 addresses available.
-- Optionally enable or disable standalone IPV6, requires the host to have at least one /64 subnet.
+- Optionally enable or disable standalone IPv6, requires the host to have at least one /64 subnet.
Command:
@@ -200,27 +200,27 @@ Before modifying the VM configuration for PVE, you must shut it down first. Afte
Three scripts, each with its own advantages and disadvantages.
-The first two scripts **don't** require an additional IPV4 address to be bound to the ```vmbr0``` interface beforehand, and the opened VM will **directly** bind the additional IPV4 address.
+The first two scripts **don't** require an additional IPv4 address to be bound to the ```vmbr0``` interface beforehand, and the opened VM will **directly** bind the additional IPv4 address.
-The last script **requires** additional IPV4 addresses to be bound to the ```vmbr0``` interface beforehand, and the opened VM will do **NAT full port mapping** to the intranet IPV4 address, **without **directly** binding additional IPV4 addresses.
+The last script **requires** additional IPv4 addresses to be bound to the ```vmbr0``` interface beforehand, and the opened VM will do **NAT full port mapping** to the intranet IPv4 address, **without **directly** binding additional IPv4 addresses.
-### Automatically selects additional IPV4 addresses on the same subnet as the host machine to open the virtual machine
+### Automatically selects additional IPv4 addresses on the same subnet as the host machine to open the virtual machine
:::warning
Before use, ensure that the current host machine has at least 2 available IP addresses within its IP range, and there are unallocated IP addresses. These unallocated IP addresses should not be bound to the host machine.
:::
:::tip
-At this point, the IPV4 address appended is the address following the host's current IPV4 address in sequence.
+At this point, the IPv4 address appended is the address following the host's current IPv4 address in sequence.
For example, if the current host address is ```1.1.1.32``` and then ```1.1.1.33``` there is already a virtual machine, then this script appends an IP address of ```1.1.1.34```.
:::
- Automatically detect available IP ranges. Use ping to identify unallocated IP addresses and select one to bind to the virtual machine.
- If the host machine has an accompanying IPv6 subnet, there will be an option to attach an IPv6 address.
- Relevant system information will be stored in the corresponding virtual machine's NOTE section, accessible for viewing on the web interface.
-- Optionally enable or disable standalone IPV6, requires the host to have at least one /64 subnet.
-- The automatically appended IPV4 address is within the **same subnet** as the host's IPV4 address (IP address prefix is the same)
-- Inbound and outbound traffic in and out of the VM goes to the additional IPV4 address of the binding
+- Optionally enable or disable standalone IPv6, requires the host to have at least one /64 subnet.
+- The automatically appended IPv4 address is within the **same subnet** as the host's IPv4 address (IP address prefix is the same)
+- Inbound and outbound traffic in and out of the VM goes to the additional IPv4 address of the binding
#### Usage Instructions
@@ -264,21 +264,21 @@ The above command is used to create a virtual machine with a dedicated IPv4 addr
Note that only VMIDs from 100 to 256 can be used here, no other numbers can be used.
:::
-### Manually Assign Additional IPV4 Addresses to Open Virtual Machines
+### Manually Assign Additional IPv4 Addresses to Open Virtual Machines
-- Manual specification of IPV4 address with subnet length in the command is required.
-- If the host machine comes with an IPV6 subnet, you can choose whether to add an IPV6 address additionally.
-- If the vendor has provided an IPV4 address and subnet length, please carefully compare and write the parameters in the command format shown below.
+- Manual specification of IPv4 address with subnet length in the command is required.
+- If the host machine comes with an IPv6 subnet, you can choose whether to add an IPv6 address additionally.
+- If the vendor has provided an IPv4 address and subnet length, please carefully compare and write the parameters in the command format shown below.
- Relevant system information will be stored in the NOTE of the corresponding virtual machine and can be viewed on the WEB end.
-- Optionally enable or disable standalone IPV6, requires the host to have at least one /64 subnet.
-- Manually appended IPV4 addresses that are in **different subnets** from the host's IPV4 address (different IP address prefixes) will use the host's IP address as the gateway
-- Manually appended IPV4 addresses that are within the **same subnet** as the host's IPV4 address (same IP address prefix) will use the host's gateway as the gateway
+- Optionally enable or disable standalone IPv6, requires the host to have at least one /64 subnet.
+- Manually appended IPv4 addresses that are in **different subnets** from the host's IPv4 address (different IP address prefixes) will use the host's IP address as the gateway
+- Manually appended IPv4 addresses that are within the **same subnet** as the host's IPv4 address (same IP address prefix) will use the host's gateway as the gateway
- Optionally specify the MAC address of the virtual machine
-- Inbound and outbound traffic in and out of the VM goes to the additional IPV4 address of the binding
+- Inbound and outbound traffic in and out of the VM goes to the additional IPv4 address of the binding
:::tip
If IP addresses within **different subnets** are appended without a MAC address, the router will not recognize the source MAC address, and the traffic will be flagged as “misuse” and “may” cause the server to be blocked.
-(If you are using a Hetzner standalone server, it is recommended that you provide the MAC address of the attached IPV4 address to prevent abuse from being reported.)
+(If you are using a Hetzner standalone server, it is recommended that you provide the MAC address of the attached IPv4 address to prevent abuse from being reported.)
:::
#### Usage Instructions
@@ -305,7 +305,7 @@ Note that the PASSWORD here should be a mix of English and numbers only, and sta
./buildvm_manual_ip.sh 152 root oneclick123 1 1024 10 debian12 local a.b.c.d/24 N
```
-The above command is used to create a virtual machine with an independent IPV4 address.
+The above command is used to create a virtual machine with an independent IPv4 address.
| Attribute | Value |
| ---------------- | ------------------------ |
@@ -317,23 +317,23 @@ The above command is used to create a virtual machine with an independent IPV4 a
| Disk | 10GB |
| Operating System | debian12 |
| Storage Disk | Local Disk (System Disk) |
-| IPV4 Address | a.b.c.d |
+| IPv4 Address | a.b.c.d |
| Subnet | /24 Subnet |
-| IPV6 | None |
+| IPv6 | None |
| MAC_ADDRESS | None |
:::tip
Note that only VMIDs from 100 to 256 can be used here, no other numbers can be used.
:::
-### Host manually appends an additional IPV4 address and then specifies the IPV4 address to open the virtual machine
+### Host manually appends an additional IPv4 address and then specifies the IPv4 address to open the virtual machine
-- You need to add the extra IPV4 address to ```vmbr0``` in ```/etc/network/interfaces``` (note that ```chattr -i``` unlocks the file and then ```chattr +i``` locks it back).
-- Other features are similar to opening a NAT-enabled VM, except that here the mapping is no longer partial port mapping or mapping to the host's IPV4 address, but full-port one-by-one mapping to additional IPV4 addresses
-- Traffic coming into the VM from outside the VM goes to the bound additional IPV4 address, and traffic going out of the VM goes to the original host's IPV4 address
+- You need to add the extra IPv4 address to ```vmbr0``` in ```/etc/network/interfaces``` (note that ```chattr -i``` unlocks the file and then ```chattr +i``` locks it back).
+- Other features are similar to opening a NAT-enabled VM, except that here the mapping is no longer partial port mapping or mapping to the host's IPv4 address, but full-port one-by-one mapping to additional IPv4 addresses
+- Traffic coming into the VM from outside the VM goes to the bound additional IPv4 address, and traffic going out of the VM goes to the original host's IPv4 address
:::tip
-Make sure you can SSH into the host with the extra IPV4 address before opening, but ```curl ip.sb``` still shows the original host IPV4 address.
+Make sure you can SSH into the host with the extra IPv4 address before opening, but ```curl ip.sb``` still shows the original host IPv4 address.
:::
#### Usage Instructions
@@ -359,7 +359,7 @@ Note that the PASSWORD here should be a mix of English and numbers only, and sta
./buildvm_fullnat_ip.sh 152 root oneclick123 1 1024 10 debian12 local a.b.c.d N
```
-The above command is used to create a virtual machine with an independent IPV4 address.
+The above command is used to create a virtual machine with an independent IPv4 address.
| Attribute | Value |
| ---------------- | ------------------------ |
@@ -371,15 +371,15 @@ The above command is used to create a virtual machine with an independent IPV4 a
| Disk | 10GB |
| Operating System | debian12 |
| Storage Disk | Local Disk (System Disk) |
-| IPV4 Address | a.b.c.d |
-| IPV6 | None |
+| IPv4 Address | a.b.c.d |
+| IPv6 | None |
| MAC_ADDRESS | None |
:::tip
Note that only VMIDs from 100 to 256 can be used here, no other numbers can be used.
:::
-#### Incoming and outgoing traffic goes to the bound IPV4 address
+#### Incoming and outgoing traffic goes to the bound IPv4 address
execute
@@ -389,9 +389,9 @@ sed -i "\|$line|d" /etc/iptables/rules.v4
service netfilter-persistent restart
```
-This will cause the host to lose the ability to open VMs/containers with NAT that do not have a separate IPV4 address, so be careful!
+This will cause the host to lose the ability to open VMs/containers with NAT that do not have a separate IPv4 address, so be careful!
-After this, You will only be able to open VMs with separate IPV4 addresses.
+After this, You will only be able to open VMs with separate IPv4 addresses.
## Creating Virtual Machines with Pure IPv6 Addresses
@@ -399,7 +399,7 @@ The prerequisite is that the host provides an IPv6 subnet instead of just a stan
### Automatic Selection of IPv6 Addresses without Manual Specification
-- Pure IPV6 refers to a bound public IPV6 address, where the actual VM still has the host's IPV4 network but no external IPV4 port
+- Pure IPv6 refers to a bound public IPv6 address, where the actual VM still has the host's IPv4 network but no external IPv4 port
- Automatically detect available IPv6 ranges and bind the corresponding V6 address, based on the virtual machine's number, to the virtual machine.
- System-related information will be stored in the NOTES section of the respective virtual machine, accessible for viewing on the web interface.
diff --git a/docs/en/guide/pve/pve_lxc.md b/docs/en/guide/pve/pve_lxc.md
index 8a5237b6fd..f25d04783b 100644
--- a/docs/en/guide/pve/pve_lxc.md
+++ b/docs/en/guide/pve/pve_lxc.md
@@ -5,7 +5,7 @@ outline: deep
# LXC Virtualization
:::warning
-If you need to open more than 200 LXC containers on a single server, then it is not recommended to use this project, there may be problems with lxcfs access drift, which generates IO occupancy that cannot be released. (This is a native LXC problem that can't be fixed.)
+If you plan to run more than 200 LXC containers on one server, this solution is not recommended. `lxcfs` drift can cause persistent I/O load that is hard to recover from. (This is an upstream LXC limitation.)
:::
## Images available for creating LXC Containers
@@ -68,8 +68,8 @@ Before creating containers, use the 'screen' command to run them in the backgrou
- Optionally specify the storage disk location in the command. When not specified, it defaults to the local disk, which is the system disk. Alternatively, you can specify a mount disk as displayed in PVE.
- The created containers are enabled with SSH by default, allowing root login. They are also configured to support nested virtualization for Docker.
- Relevant container information will be stored in the respective container's notes, accessible through the web interface.
-- If the host machine has an IPV6 subnet, IPV6 networking will be automatically attached, but no public IPV6 addresses will be provided.
-- Optionally enable or disable standalone IPV6, requires the host to have at least one /64 subnet
+- If the host machine has an IPv6 subnet, IPv6 networking will be automatically attached, but no public IPv6 addresses will be provided.
+- Optionally enable or disable standalone IPv6, requires the host to have at least one /64 subnet
### Usage Instructions
@@ -95,8 +95,6 @@ After setting up, you can execute `cat ct111` to view the information, or check
Here is the information for the created example CT:
-Please note that "CT" and other technical terms might have specific meanings in different contexts. If "CT" stands for something specific in your domain, you might want to provide additional context for accurate translation.
-
| Attribute | Value |
| ------------------- | -------------- |
| CTID | 111 |
@@ -111,7 +109,7 @@ Please note that "CT" and other technical terms might have specific meanings in
| Port Range for NAT | 30000 to 30025 |
| Operating System | debian11 |
| Host Storage Disk | local |
-| IPV6 address | N |
+| IPv6 address | N |
:::tip
Note that only CTIDs from 100 to 256 can be used here, no other numbers can be used.
@@ -157,7 +155,7 @@ Before initiating the creation process, it's recommended to use the 'screen' com
- The created containers have SSH enabled by default, allowing root login. Additionally, they are configured to support nested virtualization for Docker usage.
- Relevant information about the containers will be stored in the corresponding container's notes, which can be viewed on the web interface.
- If the host machine has an IPv6 subnet, it will be automatically assigned to the containers. However, public IPv6 addresses will not be provided.
-- Optionally enable or disable standalone IPV6, requires the host to have at least one /64 subnet.
+- Optionally enable or disable standalone IPv6, requires the host to have at least one /64 subnet.
### Usage Instructions
@@ -213,7 +211,7 @@ The premise is that the host provides an IPv6 subnet rather than a standalone IP
### Automatic Selection of IPv6 Addresses, No Manual Configuration Needed
-- Pure IPV6 refers to a bound public IPV6 address, where the actual container still has the host's IPV4 network but no external IPV4 port
+- Pure IPv6 refers to a bound public IPv6 address, where the actual container still has the host's IPv4 network but no external IPv4 port
- Automatically detect available IPv6 ranges and bind the corresponding V6 address based on the container number to the container.
- Relevant system information will be stored in the NOTES of the corresponding container, accessible for viewing on the web interface.
@@ -235,7 +233,7 @@ curl -L https://raw.githubusercontent.com/oneclickvirt/pve/main/scripts/buildct_
./buildct_onlyv6.sh 152 oneclick123 1 1024 10 debian13 local
```
-The above command signifies the creation of a container with a pure IPV6 address.
+The above command signifies the creation of a container with a pure IPv6 address.
| Attribute | Value |
| ---------------- | ------------------------ |
diff --git a/docs/en/guide/pve/pve_macos.md b/docs/en/guide/pve/pve_macos.md
index c5c15a9b39..cafa4518f6 100644
--- a/docs/en/guide/pve/pve_macos.md
+++ b/docs/en/guide/pve/pve_macos.md
@@ -2,13 +2,13 @@
outline: deep
---
-# Setting Up MacOS Virtual Machine
+# Setting Up macOS Virtual Machine
## Prerequisites
-System and hardware configuration requirements left bar --> Configuration requirements
+See the left sidebar section `Configuration requirements` for system and hardware prerequisites.
-You can only set up a MacOS virtual machine when the environment detection confirms that the host machine supports KVM nested virtualization. Otherwise, it will be detected by hardware and cannot be set up.
+You can set up a macOS VM only when environment checks confirm nested KVM support on the host.
## Setting Up the Prerequisites
@@ -65,10 +65,10 @@ sonoma.iso.7z (Size: 14.41GB)
sequoia.iso.7z (Size: 15.02GB)
```
-## MACOS Virtual Machine Template Setup
+## macOS Virtual Machine Template Setup
- Systems ```high-sierra```, ```mojave```, ```catalina``` require at least 2 cores, 4G of RAM and 40G of hard disk to run.
-- ```big-sur``` and newer MACOS systems require at least 6 cores, 6G RAM and 50G hard disk.
+- ```big-sur``` and newer macOS versions require at least 6 cores, 6G RAM and 50G disk.
- The newer the version of the system (the later the serial number of the download), the more hardware is required.
- All images are boot disk images without any personal data, so disk allocation, login information setup, and network settings need to be manually configured according to the instructions.
- You need to manually start the virtual machine from the web interface. Before starting, you can check if all templates meet your expectations.
@@ -115,13 +115,13 @@ Here is the information for the example VM:
| VNC port | 45901 |
| System | high-sierra |
| Host storage disk | local |
-| Independent IPV6 | N |
+| Independent IPv6 | N |
:::tip
Note that VMID can only use numbers from 100 to 256, other numbers are not available
:::
-## MACOS System Boot and Installation
+## macOS System Boot and Installation
After completing the previous steps, you can see a gray virtual machine waiting to be started in the panel.
@@ -203,15 +203,15 @@ After entering the settings interface, click the `Advanced` button to enter the
Fill in the static network configuration in the `TCP/IP` tab.
-Configure IPV4: `Manually`
+Configure IPv4: `Manually`
-IPV4 Address: `172.16.1.xxx` (replace xxx with the IP you want to bind, my vmid is 100, so I wrote 100 for convenience)
+IPv4 Address: `172.16.1.xxx` (replace xxx with the IP you want to bind, my vmid is 100, so I wrote 100 for convenience)
Subnet Mask: `255.255.255.0`
Router: `172.16.1.1`
-If you need to configure an IPV6 network, similar to the IPV4 settings above, you will need to fill in the public IPV6 address bound to the virtual machine (written in the Note box in the PVE panel), subnet mask 128, and the default gateway obtained by executing `cat /usr/local/bin/pve_check_ipv6` on the host.
+If you need to configure an IPv6 network, similar to the IPv4 settings above, you will need to fill in the public IPv6 address bound to the virtual machine (written in the Note box in the PVE panel), subnet mask 128, and the default gateway obtained by executing `cat /usr/local/bin/pve_check_ipv6` on the host.

@@ -229,10 +229,10 @@ Now, opening the default browser and visiting any website will allow you to acce
## Remove ISO
-Manually click on the corresponding ```CD``` in the ```Hardware``` on the web side of ProxmoxVE and select ```Remove```, then restart the VM and you can use it directly.
+In Proxmox VE, open the VM ```Hardware``` tab, select the corresponding ```CD``` device, click ```Remove```, then restart the VM.

-Macos system is to uninstall ```opencore.iso``` and ```xxxx (the system image used for installation).iso```, similar to the Windows system uninstallation of win image and virtio image in the example picture above.
+For macOS VMs, remove ```opencore.iso``` and ```.iso```, similar to how Windows examples remove installer/driver ISO devices.
diff --git a/docs/en/guide/pve/pve_precheck.md b/docs/en/guide/pve/pve_precheck.md
index 6e7af56bc9..e329d5d621 100644
--- a/docs/en/guide/pve/pve_precheck.md
+++ b/docs/en/guide/pve/pve_precheck.md
@@ -4,19 +4,19 @@ outline: deep
# Preface
-The following is the introduction of the non-customized part, the customized part has its own corresponding introduction, do not get confused!
+This page describes the standard (non-customized) workflow. Custom workflows are documented separately.
-If there are unadapted merchants or machines welcome to contact [@spiritlhl_bot](https://t.me/spiritlhl_bot), will try to support it sometime!
+If your provider or machine is not yet supported, contact [@spiritlhl_bot](https://t.me/spiritlhl_bot); support may be added in a future update.
:::warning
-Will change the network structure of the host, please make sure that the host can reset the system at any time and that there is no important data on the host before running it.
+This process modifies host networking. Ensure the host can be reinstalled/recovered at any time and avoid running on hosts with critical data.
:::
Feel free to give the project a ```Star``` for free support!-->[https://github.com/oneclickvirt/pve](https://github.com/oneclickvirt/pve)
## Various requirements
-It is recommended that debian try to use the latest stable version of the system before use.
+Use the latest stable Debian release whenever possible.
**Warning: This project only supports servers with a dedicated public IPv4 address**
@@ -27,33 +27,33 @@ This project relies on a fixed IPv4 address for network allocation and does not
If your server does not have a publicly routable static IPv4 address, please do not use this project.
-The one-click installation script of this project only adapts to Debian systems, non-Debian can not be installed through the APT source, the official only gives the image of Debian, other systems can only use the ISO installation, or use custom partitions and other ways to solve the problem in the FAQ partition.
+The one-click installation script currently targets Debian systems only. Non-Debian systems are not supported through the APT workflow in this project. For other systems, use ISO installation or the manual/custom methods described in the FAQ section.
- System requirements: Debian 8+
:::tip
-It is recommended to install debian11 instead of debian12+, because the latter is a beta version, and the debian11 installation is the stable version.
+Debian 11 was historically the most conservative choice for this workflow. If your environment supports it, newer stable Debian releases can also be used.
:::
-- Hardware requirements: 2 cores 2G RAM ``x86_64`` or ``arm`` architecture server hard disk at least 20G
+- Hardware requirements: >= 2 CPU cores, >= 2 GB RAM, >= 20 GB disk on ``x86_64`` or ``arm`` architecture
- Hardware requirements for KVM: VM-X or AMD-V support (some VPS and all Dedicated servers support).
- If hardware or system requirements are not met, you can use ```incus``` to batch open LXC containers [Jump](https://github.com/oneclickvirt/incus)
-If you use IPV6 tunnels for IPV6 subnet attachment on the host, be sure to add the contents in the corresponding file when PVE is successfully installed but the gateway is not automatically set, and do not add IPV6 tunnels at the very beginning (without installing PVE).
+If you use IPv6 tunnels for IPv6 subnet attachment on the host, be sure to add the contents in the corresponding file when PVE is successfully installed but the gateway is not automatically set, and do not add IPv6 tunnels at the very beginning (without installing PVE).
-**Warning: If the host is a standalone server without IPMI can not reinstall the system themselves, do not use this script, please directly entrust the technician to manually ISO install PVE, do not use this project, otherwise it may result in loss of connectivity (some of the standalone servers network settings do not support hot-plugging)**
+**Warning: If your dedicated server has no IPMI or other remote rescue channel, and you cannot reinstall the system yourself, do not use this script. Ask your provider/technician to perform a manual ISO installation of PVE. Otherwise, you may lose connectivity on hosts that do not support safe hot network changes.**
## Setting up virtual memory (SWAP) (optional, not required)
:::tip
-Memory to open some swap lest the machine blow up, if your host computer does not have enough memory and a lot of free hard disk.
+If your host has limited memory and enough free disk, adding swap can reduce OOM risk.
:::
Unit conversion: Enter 1024 to generate 1G SWAP-virtual memory, virtual memory occupies hard disk space.
When the actual memory is not enough, the virtual memory will be automatically used for memory usage, but it will bring high IO usage and CPU performance.
-Refer to the description of the organization's related project [Jump](https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md) This opens the size of virtual memory
+For swap sizing reference, see [this guide](https://github.com/oneclickvirt/ecs/blob/master/README_NEW_USER.md).
| Physical Memory Size | Recommended SWAP Size |
| -------------------- | --------------------- |
@@ -72,12 +72,12 @@ curl -L https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh -o
## Detecting the environment
-- This project related scripts must be executed before the execution of this script to detect the environment, if it does not meet the requirements of the installation of PVE will not be able to use the subsequent scripts
-- Detection of the local IPV6 network configuration (with or without IPV6 can be installed, just query)
-- Detection of the hardware configuration meets the minimum requirements
-- Detection of the hardware environment can be nested virtualization KVM type of servers, can not be nested virtualization KVM can also open QEMU TCG server, performance is poor
-- Detect whether the system environment can be nested virtualization KVM type of server, can not be nested virtualization KVM can also open QEMU TCG server, performance is poor
-- can not be nested virtualization KVM servers do not recommend the installation of the PVE, it is better to use [incus](https://github.com/oneclickvirt/incus) for better performance.
+- This pre-check must be run before other related scripts. If prerequisites are not met, later PVE scripts may fail.
+- Detects local IPv6 network status (informational; install itself does not require IPv6)
+- Verifies whether hardware meets minimum requirements
+- Detects whether the hardware supports nested KVM virtualization. If KVM is unavailable, VMs can still run with QEMU TCG emulation, but performance will be poor.
+- Detects whether the current system environment is suitable for nested KVM usage.
+- If nested KVM is unavailable, PVE is usually not recommended; [incus](https://github.com/oneclickvirt/incus) is often a better fit for performance and stability.
Command:
@@ -85,7 +85,7 @@ Command:
bash <(curl -sSLk https://raw.githubusercontent.com/oneclickvirt/pve/main/scripts/check_kernal.sh)
```
-If you need to update the IPV6 information before querying, then execute the following command before querying
+If you need to update the IPv6 information before querying, then execute the following command before querying
```bash
rm -rf /usr/local/bin/pve_ipv6*
diff --git a/docs/en/guide/pve/pve_qa.md b/docs/en/guide/pve/pve_qa.md
index 0c768ea026..2f12f87e89 100644
--- a/docs/en/guide/pve/pve_qa.md
+++ b/docs/en/guide/pve/pve_qa.md
@@ -12,9 +12,9 @@ Original system execution
systemctl restart networking
```
-See if it is not directly offline, if so that is the machine native problem, hot plug or dhcp caused by the network can not restart, it is recommended to replace the host system or DD a new system to try!
+Check whether the machine goes offline immediately. If it does, the root cause is usually host-level network behavior (hot-plug incompatibility or DHCP restart issues). In that case, switch host OS image or reinstall with DD and test again.
-Generally speaking, this situation occurs in the exclusive service Debian11 system, switch to Debian12+ system will not be a problem!
+In many cases this issue appears on provider-specific Debian 11 images. Switching to a newer image (for example Debian 12+) often resolves it.
## Installation of PVE fails with an error saying that some packages do not exist.
@@ -58,9 +58,9 @@ fi
Then report the rebooted disconnected machine to [@spiritlhl_bot](https://t.me/spiritlhl_bot) for the script to be updated and repaired automatically.
-## Successful PVE Installation but can not resolve host after reboot
+## Successful PVE Installation but cannot resolve host after reboot
-Common in low version of Debian system (cloud server) after installing PVE reboot no matter what URL to visit the report error
+Common on older Debian cloud images: after reboot, all URL requests fail with a resolver error.
```
curl: (6) Could not resolve host:
@@ -136,7 +136,7 @@ systemctl restart networking.service
cat /etc/iptables/rules.v4 | iptables-restore
```
-## Detect whether the merchant has falsely declared the IPV6 subnet size, resulting in the inability to set up virtual machines/containers with independent IPV6 addresses.
+## Detect whether the merchant has falsely declared the IPv6 subnet size, resulting in the inability to set up virtual machines/containers with independent IPv6 addresses.
Use the following command to test the actual subnet mask size on a clean machine that does not have Proxmox VE installed.
@@ -144,9 +144,9 @@ Use the following command to test the actual subnet mask size on a clean machine
curl -L https://raw.githubusercontent.com/spiritLHLS/ecs/main/archive/eo6s.sh -o eo6s.sh && chmod +x eo6s.sh && bash eo6s.sh
```
-If the test result is 128, it proves that the merchant has falsely labelled the subnet size, and only one IPV6 address cannot be additionally allocated to virtual machines/containers.
+If the test result is 128, it proves that the merchant has falsely labelled the subnet size, and only one IPv6 address cannot be additionally allocated to virtual machines/containers.
-Another situation is that the merchant only gives permission to add, but does not actually give the complete IPV6 subnet to the machine. A typical example is virtfusion, which requires adding IPV6 IPs one by one in the background. In this case, it is also impossible to open.
+Another situation is that the merchant only gives permission to add, but does not actually give the complete IPv6 subnet to the machine. A typical example is virtfusion, which requires adding IPv6 IPs one by one in the background. In this case, it is also impossible to open.
virtfusion's customer service explanation for this situation:
@@ -273,20 +273,3 @@ curl -sSLk 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_rei
[Google cloud platform - GCP](https://console.cloud.google.com/) AMD servers
-
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
-
diff --git a/docs/en/guide/pve/pve_windows.md b/docs/en/guide/pve/pve_windows.md
index 3b8c62f145..8499bb97c4 100644
--- a/docs/en/guide/pve/pve_windows.md
+++ b/docs/en/guide/pve/pve_windows.md
@@ -142,7 +142,7 @@ Click `OK` and `Yes` for any other dialog boxes, and your virtual machine will n
### 5. Unmounting the CD Drive
-Manually click on the corresponding ```CD``` in the ```Hardware``` on the web side of ProxmoxVE and select ```Remove```, then restart the VM and you can use it directly.
+In Proxmox VE, open the VM ```Hardware``` tab, select the corresponding ```CD``` device, click ```Remove```, then restart the VM.

diff --git a/docs/en/guide/qemu/qemu_qa.md b/docs/en/guide/qemu/qemu_qa.md
index f4cfb09ba4..269b06db08 100644
--- a/docs/en/guide/qemu/qemu_qa.md
+++ b/docs/en/guide/qemu/qemu_qa.md
@@ -87,19 +87,3 @@ bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/qemu/main/script
bash <(curl -sSL https://raw.githubusercontent.com/oneclickvirt/qemu/main/qemuinstall.sh)
```
-## No-CDN mode (WITHOUTCDN)
-
-If your network is stable and useful, or you want to fully disable CDN acceleration, set this before running scripts:
-
-```shell
-export WITHOUTCDN=TRUE
-```
-
-You can also apply it to a single command only:
-
-```shell
-WITHOUTCDN=TRUE
-```
-
-When enabled, scripts will no longer try CDN acceleration URLs during execution.
-
diff --git a/docs/en/incomplete/index.md b/docs/en/incomplete/index.md
index 0abbe43acb..56f0231445 100644
--- a/docs/en/incomplete/index.md
+++ b/docs/en/incomplete/index.md
@@ -7,7 +7,7 @@ titleTemplate: Other Incomplete Virtualization Projects
hero:
name: Other Virtualization Projects
text: Some incomplete virtualization projects
- image: https://cdn.spiritlhl.net/https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png
+ image: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png
actions:
- theme: brand
text: View Projects →
@@ -15,9 +15,9 @@ hero:
features:
- title: Notes
- details: Each item in this block has a corresponding drawback, and each item is not as easy to use as the previous ones, and has a certain learning cost.
+ details: Each project in this section has known trade-offs and a higher learning curve.
- title: Degree of difficulty
- details: Based on the difficulty of using the program itself, sorted from easiest to hardest, the further back you go the less guidance you'll get with this guide.
+ details: Projects are sorted from easier to harder. Later entries usually have less automation and less guidance.
- title: Project disadvantages
- details: Each project has some drawbacks that result in it not being considered a complete one-click project, and there are some operations that require manual execution of commands that cannot be one-clicked.
+ details: These projects are not fully one-click. Some deployment and maintenance steps still require manual commands.
---
diff --git a/docs/en/incomplete/webvirtcloud.md b/docs/en/incomplete/webvirtcloud.md
index fd478b8e59..67857545dc 100644
--- a/docs/en/incomplete/webvirtcloud.md
+++ b/docs/en/incomplete/webvirtcloud.md
@@ -69,7 +69,7 @@ The execution process may be stuck in the clone repository has not been moving,
Check if the server supports KVM nested virtualization:
```bash
-curl -L https://cdn.spiritlhl.net/https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs
+curl -L https://raw.githubusercontent.com/oneclickvirt/ecs/master/goecs.sh -o goecs.sh && chmod +x goecs.sh && ./goecs.sh install && goecs
```
Select hardware individual test
diff --git a/docs/en/incomplete/webvirtcloud_retspen.md b/docs/en/incomplete/webvirtcloud_retspen.md
index 6f7db66886..61d48ca17b 100644
--- a/docs/en/incomplete/webvirtcloud_retspen.md
+++ b/docs/en/incomplete/webvirtcloud_retspen.md
@@ -106,7 +106,7 @@ The default login for the image is:
After booting, you will find that the hard disk is only the size of the original image, at this time you need to adjust the size of the hard disk, you need to shut down the computer again, at this time, you can see the buttons on the following page is available and the size of the hard disk is also recognized.
-Without the first boot, the size of the hard disk is not recognized, recognition can not be modified, so the first switch is necessary.
+Without the first boot, the virtual disk size is not fully recognized and cannot be resized correctly. So this first boot step is required.

@@ -118,7 +118,7 @@ Check the disk path and remaining blank space unallocated:
lsblk
```
-Then use the following command to resizeen the disk
+Then use the following command to resize the disk
```shell
fdisk /dev/vda
diff --git a/docs/en/index.md b/docs/en/index.md
index 172a7f296f..60149d2bbd 100644
--- a/docs/en/index.md
+++ b/docs/en/index.md
@@ -2,11 +2,11 @@
layout: home
title: K'thun
-titleTemplate: One Click Virtualization
+titleTemplate: OneClickVirt
tagline: Open source, easy to use server virtualization project
hero:
- name: One Click Virtualization
+ name: OneClickVirt
text: Open source, easy to use server virtualization project
image: https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png
actions:
@@ -20,11 +20,11 @@ features:
- title: Based on mainstream systems development
details: Based on long-term maintenance releases of Debian, Ubuntu, Centos, etc., there is always a way to virtualize containers or virtual machines, no matter what the system is.
- title: Port forwarding and IP assignment automation
- details: Self-contained internal and external port forwarding and automatic IP address allocation (including IPV6、IPV4), including TCP, UDP, VNC, RDP and other protocols, without manual management
+ details: Self-contained internal and external port forwarding and automatic IP address allocation (including IPv4 and IPv6), including TCP, UDP, VNC, RDP and other protocols, without manual management
- title: Batch Virtualization
details: Supports batch opening of containers or virtual machines using KVM, LXC, Docker virtualization
- title: Multi-system and multi-environment support
- details: Open containers or virtual machines that support mainstream systems, including Linux, Windows, MacOS, Android as well as pure browser or desktop environments.
+ details: Open containers or virtual machines that support mainstream systems, including Linux, Windows, macOS, Android as well as pure browser or desktop environments.
- title: Self-limiting abuse
details: Some virtualized containers or VMs support the setting of masks and loading limits to avoid being used for abuse.
---
diff --git a/docs/guide/oneclickvirt/oneclickvirt_usage.md b/docs/guide/oneclickvirt/oneclickvirt_usage.md
index 89d52baaeb..cf77fe54a7 100644
--- a/docs/guide/oneclickvirt/oneclickvirt_usage.md
+++ b/docs/guide/oneclickvirt/oneclickvirt_usage.md
@@ -26,11 +26,11 @@ outline: deep
## 纳管节点
-首先,需要确保要纳管的节点已经安装了四大虚拟化技术的其中之一。
+首先,请确保要纳管的节点已经安装了至少一种受支持的虚拟化技术。
-部署了本面板的机器上ping对应的节点的IP,最好延迟在300ms以内且丢包率不要太高,否则可能出现无法连接导致控制中遗漏命令执行的情况。
+请在部署面板的机器上先 ping 节点 IP,建议延迟在 300ms 以内且丢包率较低,否则可能出现连接不稳定,进而导致控制命令执行失败或遗漏。
-以下是设置节点的设置步骤,必填和必需的步骤必须要走,非必填非必需的步骤走不走看你需求。
+下面将按“必填”和“可选”说明节点配置流程。请先完成全部必填项,再按需调整可选项。
### 基本信息(必填)
@@ -48,7 +48,7 @@ NAT端口映射优先使用端口IP进行映射,如果不提供具体的端口
端口框填写SSH连接节点的端口。
-节点模式可选择纯净节点还是有实例的节点,如果选择后者将自动检索节点机器上当前已有的实例,然后对应的在兑换码管理处生成对应的兑换码,默认绑定到当前的管理员的权限下,切换到普通用户视图可见对应的已有实例已导入。
+节点模式可选择“纯净节点”或“已有实例节点”。选择后者后,系统会自动检索该节点现有实例,并在兑换码管理中生成对应兑换码,默认绑定到当前管理员账号。切换到普通用户视图后,可看到已导入的对应实例。
描述可备注当前节点的一些信息,仅管理员可见。
@@ -62,7 +62,7 @@ NAT端口映射优先使用端口IP进行映射,如果不提供具体的端口

-用户名推荐使用root用户,因为后面自动配置api的时候需要对应下载一些依赖,非root用户看你访问问题。
+用户名推荐使用 root。后续自动配置 API 时需要安装依赖,非 root 用户可能会遇到权限问题。
密码就是SSH登录用的密码,当然如果你不使用密码,使用密钥登录也是可以的。
@@ -70,9 +70,9 @@ SSH超时配置是设计测试连通性和优化容错率的,也可以用来

-前面信息填写完毕后,点击测试,会出现对应的提示值,点击应用即可,当然不进行应用也行,容错率更高一些行。
+前面信息填写完毕后,点击“测试”会出现推荐值;如需采用推荐配置,点击“应用”即可。
-这里的延迟部署ping的延迟,是实际在对应的节点上执行命令的延迟,所以一般会在2s左右或以上,这是正常的延迟。
+这里显示的延迟不是纯 ICMP ping,而是实际在节点上执行命令的往返耗时,因此在 2 秒左右甚至更高都可能是正常现象。
这么设计是为了适配一些与面板机器连通性极差的节点,这些参数的数值增加意味着更高的容错率。
diff --git a/package-lock.json b/package-lock.json
index fb38482be6..e4f55613a5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,6 @@
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
- "sitemap": "^7.1.1",
"vitepress": "^1.6.4"
}
},
@@ -1190,21 +1189,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@types/node": {
- "version": "17.0.45",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
- "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
- "dev": true
- },
- "node_modules/@types/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/unist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
@@ -1502,12 +1486,6 @@
"node": ">= 14.0.0"
}
},
- "node_modules/arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "dev": true
- },
"node_modules/birpc": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz",
@@ -2085,12 +2063,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- },
"node_modules/search-insights": {
"version": "2.17.3",
"resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz",
@@ -2116,25 +2088,6 @@
"@types/hast": "^3.0.4"
}
},
- "node_modules/sitemap": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz",
- "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==",
- "dev": true,
- "dependencies": {
- "@types/node": "^17.0.5",
- "@types/sax": "^1.2.1",
- "arg": "^5.0.0",
- "sax": "^1.2.4"
- },
- "bin": {
- "sitemap": "dist/cli.js"
- },
- "engines": {
- "node": ">=12.0.0",
- "npm": ">=5.6.0"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -3166,21 +3119,6 @@
"integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
"dev": true
},
- "@types/node": {
- "version": "17.0.45",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
- "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
- "dev": true
- },
- "@types/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
"@types/unist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
@@ -3388,12 +3326,6 @@
"@algolia/requester-node-http": "5.25.0"
}
},
- "arg": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
- "dev": true
- },
"birpc": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/birpc/-/birpc-2.3.0.tgz",
@@ -3760,12 +3692,6 @@
"fsevents": "~2.3.2"
}
},
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- },
"search-insights": {
"version": "2.17.3",
"resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz",
@@ -3789,18 +3715,6 @@
"@types/hast": "^3.0.4"
}
},
- "sitemap": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz",
- "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==",
- "dev": true,
- "requires": {
- "@types/node": "^17.0.5",
- "@types/sax": "^1.2.1",
- "arg": "^5.0.0",
- "sax": "^1.2.4"
- }
- },
"source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
diff --git a/package.json b/package.json
index ca7dd92f0e..6c33a95370 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,6 @@
},
"homepage": "https://github.com/oneclickvirt/oneclickvirt.github.io#readme",
"devDependencies": {
- "sitemap": "^7.1.1",
"vitepress": "^1.6.4"
}
}