deploy: 03993ef3ae19d6b9c5cfa67f69c493b364a37a0f

This commit is contained in:
spiritLHLS
2025-03-30 03:35:59 +00:00
parent 74a3515e9a
commit d29b3200a0
275 changed files with 0 additions and 5015 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +0,0 @@
/assets/*
cache-control: max-age=31536000
cache-control: immutable

View File

@@ -1 +0,0 @@
import{u as i,I as o,a2 as p,c as u,A as c,H as l,a3 as f,a4 as d,a5 as m,a6 as A,a7 as h,a8 as g,a9 as P,aa as v,ab as y,ac as C,ad as _,ae as b,af as w,S as D}from"./chunks/framework.70afa331.js";import{t as E}from"./chunks/theme.b9d97670.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=r(E),R=i({name:"VitePressApp",setup(){const{site:e}=u();return c(()=>{l(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),f(),d(),m(),s.setup&&s.setup(),()=>A(s.Layout)}});async function O(){const e=j(),a=T();a.provide(h,e);const t=g(e.route);return a.provide(P,t),a.component("Content",v),a.component("ClientOnly",y),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:C}),{app:a,router:e,data:t}}function T(){return _(R)}function j(){let e=o,a;return b(t=>{let n=w(t);return n?(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),o&&(e=!1),D(()=>import(n),[])):null},s.NotFound)}o&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{O as createApp};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as a,v as e,b as t,R as r}from"./chunks/framework.70afa331.js";const k=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case4.md","filePath":"case/case4.md","lastUpdated":1739016255000}'),c={name:"case/case4.md"},s=r('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/oneclickvirt/backtrace" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/backtrace</a></p><p><a href="https://hits.seeyoufarm.com" target="_blank" rel="noreferrer"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Foneclickvirt%2Fbacktrace&amp;count_bg=%2323E01C&amp;title_bg=%23555555&amp;icon=sonarcloud.svg&amp;icon_color=%23E7E7E7&amp;title=hits&amp;edge_flat=false" alt="Hits"></a></p><h1 id="backtrace" tabindex="-1">backtrace <a class="header-anchor" href="#backtrace" aria-label="Permalink to &quot;backtrace&quot;"></a></h1><p>三网回程路由线路测试</p><p>基于 <a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">https://github.com/zhanghanyun/backtrace</a> 的重构和优化,与原版存在很大不同</p><p>路由的线路判断最终还是得人工判断的才准确,本项目测试结果仅供参考</p><h2 id="功能" tabindex="-1">功能 <a class="header-anchor" href="#功能" aria-label="Permalink to &quot;功能&quot;"></a></h2><ul><li>[x] 检测回程显示IPV4地址时的线路不显示IP地址时显示ASN检测不到原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>也支持</li><li>[x] 支持对<code>4837</code>、<code>9929</code>和<code>163</code>线路的判断,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>也支持</li><li>[x] 支持对<code>CN2GT</code>和<code>CN2GIA</code>线路的判断,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>不支持</li><li>[x] 支持对<code>CMIN2</code>和<code>CMI</code>线路的判断,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>不支持</li><li>[x] 支持对整个回程路由进行线路分析,与原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>仅进行一次判断不同</li><li>[x] 修复原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>对IPV4地址信息获取时json解析失败依然打印信息的问题</li><li>[x] 增加对全平台的编译支持,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>仅支持linux平台的amd64和arm64架构</li></ul><h2 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to &quot;使用&quot;"></a></h2><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/backtrace/main/backtrace_install.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sSf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sh</span></span></code></pre></div><p>更多架构请查看 <a href="https://github.com/oneclickvirt/backtrace/releases/tag/output" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/backtrace/releases/tag/output</a></p><h2 id="概览图" tabindex="-1">概览图 <a class="header-anchor" href="#概览图" aria-label="Permalink to &quot;概览图&quot;"></a></h2><p><img src="https://github.com/oneclickvirt/backtrace/assets/103393591/4688f99f-0f02-486f-8ffc-78d30f2c2f95" alt="图片"></p><p><img src="https://github.com/oneclickvirt/backtrace/assets/103393591/2812a47d-4e6b-4091-9bb9-596af6c3c8bc" alt="图片"></p><p><img src="https://github.com/oneclickvirt/backtrace/assets/103393591/2e5cc625-e0da-41ff-85ff-9d21c01114a3" alt="图片"></p>',16),o=[s];function n(l,h,i,p,b,u){return e(),t("div",null,o)}const g=a(c,[["render",n]]);export{k as __pageData,g as default};

View File

@@ -1 +0,0 @@
import{_ as a,v as e,b as t,R as r}from"./chunks/framework.70afa331.js";const k=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case4.md","filePath":"case/case4.md","lastUpdated":1739016255000}'),c={name:"case/case4.md"},s=r('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/oneclickvirt/backtrace" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/backtrace</a></p><p><a href="https://hits.seeyoufarm.com" target="_blank" rel="noreferrer"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Foneclickvirt%2Fbacktrace&amp;count_bg=%2323E01C&amp;title_bg=%23555555&amp;icon=sonarcloud.svg&amp;icon_color=%23E7E7E7&amp;title=hits&amp;edge_flat=false" alt="Hits"></a></p><h1 id="backtrace" tabindex="-1">backtrace <a class="header-anchor" href="#backtrace" aria-label="Permalink to &quot;backtrace&quot;"></a></h1><p>三网回程路由线路测试</p><p>基于 <a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">https://github.com/zhanghanyun/backtrace</a> 的重构和优化,与原版存在很大不同</p><p>路由的线路判断最终还是得人工判断的才准确,本项目测试结果仅供参考</p><h2 id="功能" tabindex="-1">功能 <a class="header-anchor" href="#功能" aria-label="Permalink to &quot;功能&quot;"></a></h2><ul><li>[x] 检测回程显示IPV4地址时的线路不显示IP地址时显示ASN检测不到原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>也支持</li><li>[x] 支持对<code>4837</code>、<code>9929</code>和<code>163</code>线路的判断,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>也支持</li><li>[x] 支持对<code>CN2GT</code>和<code>CN2GIA</code>线路的判断,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>不支持</li><li>[x] 支持对<code>CMIN2</code>和<code>CMI</code>线路的判断,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>不支持</li><li>[x] 支持对整个回程路由进行线路分析,与原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>仅进行一次判断不同</li><li>[x] 修复原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>对IPV4地址信息获取时json解析失败依然打印信息的问题</li><li>[x] 增加对全平台的编译支持,原版<a href="https://github.com/zhanghanyun/backtrace" target="_blank" rel="noreferrer">backtrace</a>仅支持linux平台的amd64和arm64架构</li></ul><h2 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to &quot;使用&quot;"></a></h2><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/backtrace/main/backtrace_install.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sSf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sh</span></span></code></pre></div><p>更多架构请查看 <a href="https://github.com/oneclickvirt/backtrace/releases/tag/output" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/backtrace/releases/tag/output</a></p><h2 id="概览图" tabindex="-1">概览图 <a class="header-anchor" href="#概览图" aria-label="Permalink to &quot;概览图&quot;"></a></h2><p><img src="https://github.com/oneclickvirt/backtrace/assets/103393591/4688f99f-0f02-486f-8ffc-78d30f2c2f95" alt="图片"></p><p><img src="https://github.com/oneclickvirt/backtrace/assets/103393591/2812a47d-4e6b-4091-9bb9-596af6c3c8bc" alt="图片"></p><p><img src="https://github.com/oneclickvirt/backtrace/assets/103393591/2e5cc625-e0da-41ff-85ff-9d21c01114a3" alt="图片"></p>',16),o=[s];function n(l,h,i,p,b,u){return e(),t("div",null,o)}const g=a(c,[["render",n]]);export{k as __pageData,g as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as a,b as t,R as s}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case5.md","filePath":"case/case5.md","lastUpdated":1739016255000}'),o={name:"case/case5.md"},r=s('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/oneclickvirt/CommonMediaTests" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/CommonMediaTests</a></p><p><a href="https://hits.seeyoufarm.com" target="_blank" rel="noreferrer"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Foneclickvirt%2FCommonMediaTests&amp;count_bg=%2379C83D&amp;title_bg=%23555555&amp;icon=sonarcloud.svg&amp;icon_color=%2345FFC2&amp;title=hits&amp;edge_flat=false" alt="Hits"></a></p><h1 id="commonmediatests" tabindex="-1">CommonMediaTests <a class="header-anchor" href="#commonmediatests" aria-label="Permalink to &quot;CommonMediaTests&quot;"></a></h1><p>御三家流媒体解锁测试</p><p>基于 <a href="https://github.com/sjlleo/netflix-verify" target="_blank" rel="noreferrer">netflix-verify</a> <a href="https://github.com/sjlleo/VerifyDisneyPlus" target="_blank" rel="noreferrer">VerifyDisneyPlus</a> <a href="https://github.com/sjlleo/TubeCheck" target="_blank" rel="noreferrer">TubeCheck</a> 整合代码,优化测试速度</p><h2 id="功能" tabindex="-1">功能 <a class="header-anchor" href="#功能" aria-label="Permalink to &quot;功能&quot;"></a></h2><ul><li>[x] 双栈测试</li><li>[x] 并发测试netflix、youtube、disneyplus是否解锁以及解锁的地区</li><li>[x] 支持双语输出,以<code>-l</code>指定zh或en可指定输出的语言未指定时默认使用中文输出</li><li>[x] 全平台编译支持</li></ul><h2 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to &quot;使用&quot;"></a></h2><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/CommonMediaTests/main/cmt_install.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sSf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sh</span></span></code></pre></div><p>更多架构请查看 <a href="https://github.com/oneclickvirt/CommonMediaTests/releases/tag/output" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/CommonMediaTests/releases/tag/output</a></p>',11),l=[r];function n(i,c,p,h,m,d){return a(),t("div",null,l)}const b=e(o,[["render",n]]);export{f as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as a,b as t,R as s}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case5.md","filePath":"case/case5.md","lastUpdated":1739016255000}'),o={name:"case/case5.md"},r=s('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/oneclickvirt/CommonMediaTests" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/CommonMediaTests</a></p><p><a href="https://hits.seeyoufarm.com" target="_blank" rel="noreferrer"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Foneclickvirt%2FCommonMediaTests&amp;count_bg=%2379C83D&amp;title_bg=%23555555&amp;icon=sonarcloud.svg&amp;icon_color=%2345FFC2&amp;title=hits&amp;edge_flat=false" alt="Hits"></a></p><h1 id="commonmediatests" tabindex="-1">CommonMediaTests <a class="header-anchor" href="#commonmediatests" aria-label="Permalink to &quot;CommonMediaTests&quot;"></a></h1><p>御三家流媒体解锁测试</p><p>基于 <a href="https://github.com/sjlleo/netflix-verify" target="_blank" rel="noreferrer">netflix-verify</a> <a href="https://github.com/sjlleo/VerifyDisneyPlus" target="_blank" rel="noreferrer">VerifyDisneyPlus</a> <a href="https://github.com/sjlleo/TubeCheck" target="_blank" rel="noreferrer">TubeCheck</a> 整合代码,优化测试速度</p><h2 id="功能" tabindex="-1">功能 <a class="header-anchor" href="#功能" aria-label="Permalink to &quot;功能&quot;"></a></h2><ul><li>[x] 双栈测试</li><li>[x] 并发测试netflix、youtube、disneyplus是否解锁以及解锁的地区</li><li>[x] 支持双语输出,以<code>-l</code>指定zh或en可指定输出的语言未指定时默认使用中文输出</li><li>[x] 全平台编译支持</li></ul><h2 id="使用" tabindex="-1">使用 <a class="header-anchor" href="#使用" aria-label="Permalink to &quot;使用&quot;"></a></h2><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/CommonMediaTests/main/cmt_install.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sSf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sh</span></span></code></pre></div><p>更多架构请查看 <a href="https://github.com/oneclickvirt/CommonMediaTests/releases/tag/output" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/CommonMediaTests/releases/tag/output</a></p>',11),l=[r];function n(i,c,p,h,m,d){return a(),t("div",null,l)}const b=e(o,[["render",n]]);export{f as __pageData,b as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as s,v as a,b as p,R as o}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case7.md","filePath":"case/case7.md","lastUpdated":1739016255000}'),e={name:"case/case7.md"},n=o('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/spiritLHLS/addswap" target="_blank" rel="noreferrer">https://github.com/spiritLHLS/addswap</a></p><h1 id="addswap" tabindex="-1">addswap <a class="header-anchor" href="#addswap" aria-label="Permalink to &quot;addswap&quot;"></a></h1><p>为openvz、kvm虚拟化的linux服务器增加swap分区(虚拟内存)</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addswap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addswap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addswap.sh</span></span></code></pre></div><p>已增加openvz架构重启swap自动添加的</p><p>openvz这个添加=掩耳盗铃实际受到虚拟化限制应该是无法添加的只能由虚拟化的宿主机控制同理LXC虚拟化的也只能由宿主机控制都无法自主添加虚拟内存SWAP</p><p>因此,该项目不再更新,除非另有需求</p><p><strong>单位换算:输入 1024 产生 1G SWAP内存</strong></p><h1 id="致谢" tabindex="-1">致谢 <a class="header-anchor" href="#致谢" aria-label="Permalink to &quot;致谢&quot;"></a></h1><p>kvm分区原版脚本源自 <a href="https://www.moerats.com/" target="_blank" rel="noreferrer">https://www.moerats.com/</a></p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://www.moerats.com/usr/shell/swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span></span></code></pre></div><p>openVZ分区原版脚本源自</p><p><a href="http://linux-problem-solver.blogspot.com/2013/08/create-fake-swap-in-openvz-vps-if-you-get-swapon-failed-operation-not-permitted-error.html" target="_blank" rel="noreferrer">http://linux-problem-solver.blogspot.com/2013/08/create-fake-swap-in-openvz-vps-if-you-get-swapon-failed-operation-not-permitted-error.html</a></p><p>感谢 <a href="https://github.com/fscarmen" target="_blank" rel="noreferrer">@fscarmen</a> 提供优化建议</p>',15),t=[n];function l(r,c,C,i,h,d){return a(),p("div",null,t)}const A=s(e,[["render",l]]);export{m as __pageData,A as default};

View File

@@ -1 +0,0 @@
import{_ as s,v as a,b as p,R as o}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case7.md","filePath":"case/case7.md","lastUpdated":1739016255000}'),e={name:"case/case7.md"},n=o('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/spiritLHLS/addswap" target="_blank" rel="noreferrer">https://github.com/spiritLHLS/addswap</a></p><h1 id="addswap" tabindex="-1">addswap <a class="header-anchor" href="#addswap" aria-label="Permalink to &quot;addswap&quot;"></a></h1><p>为openvz、kvm虚拟化的linux服务器增加swap分区(虚拟内存)</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/spiritLHLS/addswap/main/addswap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addswap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addswap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addswap.sh</span></span></code></pre></div><p>已增加openvz架构重启swap自动添加的</p><p>openvz这个添加=掩耳盗铃实际受到虚拟化限制应该是无法添加的只能由虚拟化的宿主机控制同理LXC虚拟化的也只能由宿主机控制都无法自主添加虚拟内存SWAP</p><p>因此,该项目不再更新,除非另有需求</p><p><strong>单位换算:输入 1024 产生 1G SWAP内存</strong></p><h1 id="致谢" tabindex="-1">致谢 <a class="header-anchor" href="#致谢" aria-label="Permalink to &quot;致谢&quot;"></a></h1><p>kvm分区原版脚本源自 <a href="https://www.moerats.com/" target="_blank" rel="noreferrer">https://www.moerats.com/</a></p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://www.moerats.com/usr/shell/swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span></span></code></pre></div><p>openVZ分区原版脚本源自</p><p><a href="http://linux-problem-solver.blogspot.com/2013/08/create-fake-swap-in-openvz-vps-if-you-get-swapon-failed-operation-not-permitted-error.html" target="_blank" rel="noreferrer">http://linux-problem-solver.blogspot.com/2013/08/create-fake-swap-in-openvz-vps-if-you-get-swapon-failed-operation-not-permitted-error.html</a></p><p>感谢 <a href="https://github.com/fscarmen" target="_blank" rel="noreferrer">@fscarmen</a> 提供优化建议</p>',15),t=[n];function l(r,c,C,i,h,d){return a(),p("div",null,t)}const A=s(e,[["render",l]]);export{m as __pageData,A as default};

View File

@@ -1 +0,0 @@
import{_ as a,v as s,b as e,R as r}from"./chunks/framework.70afa331.js";const y=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case8.md","filePath":"case/case8.md","lastUpdated":1739016255000}'),t={name:"case/case8.md"},p=r('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/spiritLHLS/addzram" target="_blank" rel="noreferrer">https://github.com/spiritLHLS/addzram</a></p><h1 id="addzram" tabindex="-1">addzram <a class="header-anchor" href="#addzram" aria-label="Permalink to &quot;addzram&quot;"></a></h1><p>为linux服务器启用zram(压缩内存)</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/spiritLHLS/addzram/main/addzram.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addzram.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addzram.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addzram.sh</span></span></code></pre></div><p>类同前面的addswap项目</p><p>同样是给机器优化内存占用的东西只不过zram是压缩内存占用swap是附加虚拟内存增加内存空间二者都会占用CPU资源zram在CPU性能冗余的机器上使用更优</p><p>(理论上zram会比swap的性能占用低但未实际测试过)</p><p><strong>单位换算:输入 1024 产生 1G 的 zram 设备压缩内存zram 设备大小不能大于实际内存大小</strong></p><h1 id="致谢" tabindex="-1">致谢 <a class="header-anchor" href="#致谢" aria-label="Permalink to &quot;致谢&quot;"></a></h1><p>感谢 <a href="https://github.com/Ella-Alinda" target="_blank" rel="noreferrer">@Ella-Alinda</a> 提供优化建议</p>',11),n=[p];function o(l,c,d,i,h,m){return s(),e("div",null,n)}const A=a(t,[["render",o]]);export{y as __pageData,A as default};

View File

@@ -1 +0,0 @@
import{_ as a,v as s,b as e,R as r}from"./chunks/framework.70afa331.js";const y=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case8.md","filePath":"case/case8.md","lastUpdated":1739016255000}'),t={name:"case/case8.md"},p=r('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/spiritLHLS/addzram" target="_blank" rel="noreferrer">https://github.com/spiritLHLS/addzram</a></p><h1 id="addzram" tabindex="-1">addzram <a class="header-anchor" href="#addzram" aria-label="Permalink to &quot;addzram&quot;"></a></h1><p>为linux服务器启用zram(压缩内存)</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/spiritLHLS/addzram/main/addzram.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addzram.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addzram.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">addzram.sh</span></span></code></pre></div><p>类同前面的addswap项目</p><p>同样是给机器优化内存占用的东西只不过zram是压缩内存占用swap是附加虚拟内存增加内存空间二者都会占用CPU资源zram在CPU性能冗余的机器上使用更优</p><p>(理论上zram会比swap的性能占用低但未实际测试过)</p><p><strong>单位换算:输入 1024 产生 1G 的 zram 设备压缩内存zram 设备大小不能大于实际内存大小</strong></p><h1 id="致谢" tabindex="-1">致谢 <a class="header-anchor" href="#致谢" aria-label="Permalink to &quot;致谢&quot;"></a></h1><p>感谢 <a href="https://github.com/Ella-Alinda" target="_blank" rel="noreferrer">@Ella-Alinda</a> 提供优化建议</p>',11),n=[p];function o(l,c,d,i,h,m){return s(),e("div",null,n)}const A=a(t,[["render",o]]);export{y as __pageData,A as default};

View File

@@ -1 +0,0 @@
import{_ as a,v as e,b as t,R as o}from"./chunks/framework.70afa331.js";const v=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case9.md","filePath":"case/case9.md","lastUpdated":1739016255000}'),n={name:"case/case9.md"},s=o('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/oneclickvirt/convoypanel-scripts" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/convoypanel-scripts</a></p><h1 id="convoypanel-scripts" tabindex="-1">convoypanel-scripts <a class="header-anchor" href="#convoypanel-scripts" aria-label="Permalink to &quot;convoypanel-scripts&quot;"></a></h1><h3 id="one-click-installation-of-convoy-panel" tabindex="-1">One-click installation of convoy panel <a class="header-anchor" href="#one-click-installation-of-convoy-panel" aria-label="Permalink to &quot;One-click installation of convoy panel&quot;"></a></h3><p>Prerequisites for installation:</p><ul><li>PVE is installed</li><li>System is debian 11</li><li>CPU at least 2 cores, hard disk at least 20G, memory at least 4G (memory covers swap)</li></ul><p><strong>I don&#39;t guarantee that this script is error-free, it&#39;s just for my own amusement.</strong></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://github.com/oneclickvirt/convoypanel-scripts/raw/main/installconvoy.sh -o installconvoy.sh &amp;&amp; chmod +x installconvoy.sh &amp;&amp; bash installconvoy.sh</span></span></code></pre></div><h3 id="thanks" tabindex="-1">Thanks <a class="header-anchor" href="#thanks" aria-label="Permalink to &quot;Thanks&quot;"></a></h3><p>Base on <a href="https://github.com/oneclickvirt/pve" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/pve</a></p><p>Base on <a href="https://docs.convoypanel.com/guide/deployment/#installation" target="_blank" rel="noreferrer">https://docs.convoypanel.com/guide/deployment/#installation</a></p><p>Base on <a href="https://github.com/ConvoyPanel/panel" target="_blank" rel="noreferrer">https://github.com/ConvoyPanel/panel</a></p>',12),l=[s];function i(r,c,p,h,d,m){return e(),t("div",null,l)}const y=a(n,[["render",i]]);export{v as __pageData,y as default};

View File

@@ -1 +0,0 @@
import{_ as a,v as e,b as t,R as o}from"./chunks/framework.70afa331.js";const v=JSON.parse('{"title":"仓库","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"case/case9.md","filePath":"case/case9.md","lastUpdated":1739016255000}'),n={name:"case/case9.md"},s=o('<h1 id="仓库" tabindex="-1">仓库 <a class="header-anchor" href="#仓库" aria-label="Permalink to &quot;仓库&quot;"></a></h1><p><a href="https://github.com/oneclickvirt/convoypanel-scripts" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/convoypanel-scripts</a></p><h1 id="convoypanel-scripts" tabindex="-1">convoypanel-scripts <a class="header-anchor" href="#convoypanel-scripts" aria-label="Permalink to &quot;convoypanel-scripts&quot;"></a></h1><h3 id="one-click-installation-of-convoy-panel" tabindex="-1">One-click installation of convoy panel <a class="header-anchor" href="#one-click-installation-of-convoy-panel" aria-label="Permalink to &quot;One-click installation of convoy panel&quot;"></a></h3><p>Prerequisites for installation:</p><ul><li>PVE is installed</li><li>System is debian 11</li><li>CPU at least 2 cores, hard disk at least 20G, memory at least 4G (memory covers swap)</li></ul><p><strong>I don&#39;t guarantee that this script is error-free, it&#39;s just for my own amusement.</strong></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://github.com/oneclickvirt/convoypanel-scripts/raw/main/installconvoy.sh -o installconvoy.sh &amp;&amp; chmod +x installconvoy.sh &amp;&amp; bash installconvoy.sh</span></span></code></pre></div><h3 id="thanks" tabindex="-1">Thanks <a class="header-anchor" href="#thanks" aria-label="Permalink to &quot;Thanks&quot;"></a></h3><p>Base on <a href="https://github.com/oneclickvirt/pve" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/pve</a></p><p>Base on <a href="https://docs.convoypanel.com/guide/deployment/#installation" target="_blank" rel="noreferrer">https://docs.convoypanel.com/guide/deployment/#installation</a></p><p>Base on <a href="https://github.com/ConvoyPanel/panel" target="_blank" rel="noreferrer">https://github.com/ConvoyPanel/panel</a></p>',12),l=[s];function i(r,c,p,h,d,m){return e(),t("div",null,l)}const y=a(n,[["render",i]]);export{v as __pageData,y as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Linux相关项目","titleTemplate":"与Linux相关的一些一键脚本项目","description":"","frontmatter":{"layout":"home","title":"Linux相关项目","titleTemplate":"与Linux相关的一些一键脚本项目","hero":{"name":"Linux相关项目","text":"与Linux相关的一些一键脚本项目","image":"https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png","actions":[{"theme":"brand","text":"查看项目 →","link":"/case/case1"}]},"features":[{"title":"注意事项","details":"注意每个项目说明,部分项目有可能对系统造成不可修复的错误,需要重装系统,请仔细查看说明"}]},"headers":[],"relativePath":"case/index.md","filePath":"case/index.md","lastUpdated":1739016255000}'),i={name:"case/index.md"};function s(n,r,o,c,d,l){return t(),a("div")}const x=e(i,[["render",s]]);export{m as __pageData,x as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Linux相关项目","titleTemplate":"与Linux相关的一些一键脚本项目","description":"","frontmatter":{"layout":"home","title":"Linux相关项目","titleTemplate":"与Linux相关的一些一键脚本项目","hero":{"name":"Linux相关项目","text":"与Linux相关的一些一键脚本项目","image":"https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png","actions":[{"theme":"brand","text":"查看项目 →","link":"/case/case1"}]},"features":[{"title":"注意事项","details":"注意每个项目说明,部分项目有可能对系统造成不可修复的错误,需要重装系统,请仔细查看说明"}]},"headers":[],"relativePath":"case/index.md","filePath":"case/index.md","lastUpdated":1739016255000}'),i={name:"case/index.md"};function s(n,r,o,c,d,l){return t(),a("div")}const x=e(i,[["render",s]]);export{m as __pageData,x as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as a}from"./chunks/framework.70afa331.js";const c=JSON.parse('{"title":"开发手册","titleTemplate":"欢迎使用一键虚拟化项目开发手册欢迎你提出高质量的Pull Request帮助一键虚拟化项目变得更好","description":"","frontmatter":{"layout":"home","title":"开发手册","titleTemplate":"欢迎使用一键虚拟化项目开发手册欢迎你提出高质量的Pull Request帮助一键虚拟化项目变得更好","hero":{"name":"开发手册","text":"开发手册","image":"https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png","actions":[{"theme":"brand","text":"开始使用 →","link":"/developer/l10n"}]}},"headers":[],"relativePath":"developer/index.md","filePath":"developer/index.md","lastUpdated":1739016255000}'),s={name:"developer/index.md"};function n(r,o,i,l,d,p){return t(),a("div")}const u=e(s,[["render",n]]);export{c as __pageData,u as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as a}from"./chunks/framework.70afa331.js";const c=JSON.parse('{"title":"开发手册","titleTemplate":"欢迎使用一键虚拟化项目开发手册欢迎你提出高质量的Pull Request帮助一键虚拟化项目变得更好","description":"","frontmatter":{"layout":"home","title":"开发手册","titleTemplate":"欢迎使用一键虚拟化项目开发手册欢迎你提出高质量的Pull Request帮助一键虚拟化项目变得更好","hero":{"name":"开发手册","text":"开发手册","image":"https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png","actions":[{"theme":"brand","text":"开始使用 →","link":"/developer/l10n"}]}},"headers":[],"relativePath":"developer/index.md","filePath":"developer/index.md","lastUpdated":1739016255000}'),s={name:"developer/index.md"};function n(r,o,i,l,d,p){return t(),a("div")}const u=e(s,[["render",n]]);export{c as __pageData,u as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as o,b as t,R as a}from"./chunks/framework.70afa331.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"developer/l10n.md","filePath":"developer/l10n.md","lastUpdated":1739016255000}'),l={name:"developer/l10n.md"},r=a('<p><strong>你可以在开发新功能时遵循以下步骤来支持本地化</strong></p><h2 id="介绍" tabindex="-1">介绍 <a class="header-anchor" href="#介绍" aria-label="Permalink to &quot;介绍&quot;"></a></h2><ol><li>你可以直接使用 <code>/resource/l10n/zh-CN.toml</code> 中已有的文本配置来替换新功能中的文本</li><li>如果新功能中有新增文本,请参考 <code>zh-CN.toml</code> 的配置文本,将新文本拉取到 <code>zh-CN.toml</code> 等其他语言的配置文件中,并添加翻译</li></ol><h2 id="新本地化文本的添加" tabindex="-1">新本地化文本的添加 <a class="header-anchor" href="#新本地化文本的添加" aria-label="Permalink to &quot;新本地化文本的添加&quot;"></a></h2><ol><li>在 <code>/resource/l10n/</code> 中添加新的语言文本配置</li><li>在新的语言文本配置中拉取其他语言已有的文本配置</li><li>为新的语言文本配置添加翻译</li></ol>',5),s=[r];function d(i,n,c,h,p,_){return o(),t("div",null,s)}const f=e(l,[["render",d]]);export{u as __pageData,f as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as o,b as t,R as a}from"./chunks/framework.70afa331.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"developer/l10n.md","filePath":"developer/l10n.md","lastUpdated":1739016255000}'),l={name:"developer/l10n.md"},r=a('<p><strong>你可以在开发新功能时遵循以下步骤来支持本地化</strong></p><h2 id="介绍" tabindex="-1">介绍 <a class="header-anchor" href="#介绍" aria-label="Permalink to &quot;介绍&quot;"></a></h2><ol><li>你可以直接使用 <code>/resource/l10n/zh-CN.toml</code> 中已有的文本配置来替换新功能中的文本</li><li>如果新功能中有新增文本,请参考 <code>zh-CN.toml</code> 的配置文本,将新文本拉取到 <code>zh-CN.toml</code> 等其他语言的配置文件中,并添加翻译</li></ol><h2 id="新本地化文本的添加" tabindex="-1">新本地化文本的添加 <a class="header-anchor" href="#新本地化文本的添加" aria-label="Permalink to &quot;新本地化文本的添加&quot;"></a></h2><ol><li>在 <code>/resource/l10n/</code> 中添加新的语言文本配置</li><li>在新的语言文本配置中拉取其他语言已有的文本配置</li><li>为新的语言文本配置添加翻译</li></ol>',5),s=[r];function d(i,n,c,h,p,_){return o(),t("div",null,s)}const f=e(l,[["render",d]]);export{u as __pageData,f as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as n}from"./chunks/framework.70afa331.js";const d=JSON.parse('{"title":"Development Manual","titleTemplate":"Welcome to the oneclickvirt Development Manual.","description":"","frontmatter":{"layout":"home","title":"Development Manual","titleTemplate":"Welcome to the oneclickvirt Development Manual.","hero":{"name":"Development Manual","text":"Welcome to the oneclickvirt Development Manual.","image":"https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png","actions":[{"theme":"brand","text":"Start Now →","link":"/en_US/developer/l10n"}]}},"headers":[],"relativePath":"en/developer/index.md","filePath":"en/developer/index.md","lastUpdated":1739016255000}'),a={name:"en/developer/index.md"};function o(l,i,r,p,m,s){return t(),n("div")}const v=e(a,[["render",o]]);export{d as __pageData,v as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as n}from"./chunks/framework.70afa331.js";const d=JSON.parse('{"title":"Development Manual","titleTemplate":"Welcome to the oneclickvirt Development Manual.","description":"","frontmatter":{"layout":"home","title":"Development Manual","titleTemplate":"Welcome to the oneclickvirt Development Manual.","hero":{"name":"Development Manual","text":"Welcome to the oneclickvirt Development Manual.","image":"https://raw.githubusercontent.com/spiritlhls/pages/main/logo.png","actions":[{"theme":"brand","text":"Start Now →","link":"/en_US/developer/l10n"}]}},"headers":[],"relativePath":"en/developer/index.md","filePath":"en/developer/index.md","lastUpdated":1739016255000}'),a={name:"en/developer/index.md"};function o(l,i,r,p,m,s){return t(),n("div")}const v=e(a,[["render",o]]);export{d as __pageData,v as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as n,R as o}from"./chunks/framework.70afa331.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/developer/l10n.md","filePath":"en/developer/l10n.md","lastUpdated":1739016255000}'),a={name:"en/developer/l10n.md"},i=o('<p><strong>You can follow these steps to support localization when developing new features</strong></p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;Introduction&quot;"></a></h2><ol><li>You can directly use the text configuration already available in <code>/resource/l10n/en-US.toml</code> to replace the text in the new feature.</li><li>If there is new text in the new feature, please refer to the configuration text in <code>en-US.toml</code>, pull the new text into the configuration files of other languages such as <code>en-US.toml</code>, and add translations.</li></ol><h2 id="adding-a-new-localized-text-file" tabindex="-1">Adding a new localized text file <a class="header-anchor" href="#adding-a-new-localized-text-file" aria-label="Permalink to &quot;Adding a new localized text file&quot;"></a></h2><ol><li>Add a new language text configuration in <code>/resource/l10n/</code>.</li><li>Pull existing text configurations from other languages in the new language text configuration.</li><li>Add translations for the new language text configuration.</li></ol>',5),l=[i];function r(d,s,c,u,f,h){return t(),n("div",null,l)}const x=e(a,[["render",r]]);export{p as __pageData,x as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as n,R as o}from"./chunks/framework.70afa331.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/developer/l10n.md","filePath":"en/developer/l10n.md","lastUpdated":1739016255000}'),a={name:"en/developer/l10n.md"},i=o('<p><strong>You can follow these steps to support localization when developing new features</strong></p><h2 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;Introduction&quot;"></a></h2><ol><li>You can directly use the text configuration already available in <code>/resource/l10n/en-US.toml</code> to replace the text in the new feature.</li><li>If there is new text in the new feature, please refer to the configuration text in <code>en-US.toml</code>, pull the new text into the configuration files of other languages such as <code>en-US.toml</code>, and add translations.</li></ol><h2 id="adding-a-new-localized-text-file" tabindex="-1">Adding a new localized text file <a class="header-anchor" href="#adding-a-new-localized-text-file" aria-label="Permalink to &quot;Adding a new localized text file&quot;"></a></h2><ol><li>Add a new language text configuration in <code>/resource/l10n/</code>.</li><li>Pull existing text configurations from other languages in the new language text configuration.</li><li>Add translations for the new language text configuration.</li></ol>',5),l=[i];function r(d,s,c,u,f,h){return t(),n("div",null,l)}const x=e(a,[["render",r]]);export{p as __pageData,x as default};

View File

@@ -1 +0,0 @@
import{_ as t,v as o,b as d,F as e,L as a}from"./chunks/framework.70afa331.js";const h=JSON.parse('{"title":"To be developed, stay tuned","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/block/block_docker.md","filePath":"en/guide/block/block_docker.md","lastUpdated":1739016255000}'),s={name:"en/guide/block/block_docker.md"},n=e("h1",{id:"to-be-developed-stay-tuned",tabindex:"-1"},[a("To be developed, stay tuned "),e("a",{class:"header-anchor",href:"#to-be-developed-stay-tuned","aria-label":'Permalink to "To be developed, stay tuned"'},"")],-1),c=[n];function r(l,i,_,p,b,u){return o(),d("div",null,c)}const f=t(s,[["render",r]]);export{h as __pageData,f as default};

View File

@@ -1 +0,0 @@
import{_ as t,v as o,b as d,F as e,L as a}from"./chunks/framework.70afa331.js";const h=JSON.parse('{"title":"To be developed, stay tuned","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/block/block_docker.md","filePath":"en/guide/block/block_docker.md","lastUpdated":1739016255000}'),s={name:"en/guide/block/block_docker.md"},n=e("h1",{id:"to-be-developed-stay-tuned",tabindex:"-1"},[a("To be developed, stay tuned "),e("a",{class:"header-anchor",href:"#to-be-developed-stay-tuned","aria-label":'Permalink to "To be developed, stay tuned"'},"")],-1),c=[n];function r(l,i,_,p,b,u){return o(),d("div",null,c)}const f=t(s,[["render",r]]);export{h as __pageData,f as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +0,0 @@
import{_ as e,v as t,b as s,R as a}from"./chunks/framework.70afa331.js";const b=JSON.parse('{"title":"Avoid theft by setting up a firewall to limit the IPs used by the VMs","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/block/block_pve.md","filePath":"en/guide/block/block_pve.md","lastUpdated":1739016255000}'),n={name:"en/guide/block/block_pve.md"},o=a(`<h1 id="avoid-theft-by-setting-up-a-firewall-to-limit-the-ips-used-by-the-vms" tabindex="-1">Avoid theft by setting up a firewall to limit the IPs used by the VMs <a class="header-anchor" href="#avoid-theft-by-setting-up-a-firewall-to-limit-the-ips-used-by-the-vms" aria-label="Permalink to &quot;Avoid theft by setting up a firewall to limit the IPs used by the VMs&quot;"></a></h1><p>Create the following file under the PVE&#39;s host machine</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">/etc/pve/firewall/&lt;VMID&gt;.fw</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">IPSET ipfilter-</span><span style="color:#89DDFF;">&lt;</span><span style="color:#A6ACCD;">net0</span><span style="color:#89DDFF;">&gt;]</span></span>
<span class="line"><span style="color:#FFCB6B;">xxx.xxx.xxx.xxx</span></span></code></pre></div><p><code>&lt;VMID&gt;</code> is replaced with the VMID number of the virtual machine, <code>&lt;net0&gt;</code> is replaced with the corresponding alias in the network device (which generally doesn&#39;t need to be changed unless you&#39;re restricted to IPV6), and <code>xxx.xxx.xxx.xxx</code> is replaced with the public IP address, noting that this IP corresponds to the network device in front of it.</p><p>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.</p><p>There can be more than one IP, once this rule is enabled the VM can&#39;t use any other IP, if you don&#39;t write an IPv6 address it means the VM can&#39;t use an IPv6 address.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This setting is only recommended when opening <strong>VMs</strong> with separate IPs that are not NAT full port mapped, otherwise it may cause strange issues resulting in the server being without a network.</p></div><p>This method <strong>is not suitable</strong> for use on PVEs that open any NAT VMs/containers.</p>`,8),i=[o];function l(r,p,h,c,d,u){return t(),s("div",null,i)}const g=e(n,[["render",l]]);export{b as __pageData,g as default};

View File

@@ -1,3 +0,0 @@
import{_ as e,v as t,b as s,R as a}from"./chunks/framework.70afa331.js";const b=JSON.parse('{"title":"Avoid theft by setting up a firewall to limit the IPs used by the VMs","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/block/block_pve.md","filePath":"en/guide/block/block_pve.md","lastUpdated":1739016255000}'),n={name:"en/guide/block/block_pve.md"},o=a(`<h1 id="avoid-theft-by-setting-up-a-firewall-to-limit-the-ips-used-by-the-vms" tabindex="-1">Avoid theft by setting up a firewall to limit the IPs used by the VMs <a class="header-anchor" href="#avoid-theft-by-setting-up-a-firewall-to-limit-the-ips-used-by-the-vms" aria-label="Permalink to &quot;Avoid theft by setting up a firewall to limit the IPs used by the VMs&quot;"></a></h1><p>Create the following file under the PVE&#39;s host machine</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">/etc/pve/firewall/&lt;VMID&gt;.fw</span></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">IPSET ipfilter-</span><span style="color:#89DDFF;">&lt;</span><span style="color:#A6ACCD;">net0</span><span style="color:#89DDFF;">&gt;]</span></span>
<span class="line"><span style="color:#FFCB6B;">xxx.xxx.xxx.xxx</span></span></code></pre></div><p><code>&lt;VMID&gt;</code> is replaced with the VMID number of the virtual machine, <code>&lt;net0&gt;</code> is replaced with the corresponding alias in the network device (which generally doesn&#39;t need to be changed unless you&#39;re restricted to IPV6), and <code>xxx.xxx.xxx.xxx</code> is replaced with the public IP address, noting that this IP corresponds to the network device in front of it.</p><p>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.</p><p>There can be more than one IP, once this rule is enabled the VM can&#39;t use any other IP, if you don&#39;t write an IPv6 address it means the VM can&#39;t use an IPv6 address.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This setting is only recommended when opening <strong>VMs</strong> with separate IPs that are not NAT full port mapped, otherwise it may cause strange issues resulting in the server being without a network.</p></div><p>This method <strong>is not suitable</strong> for use on PVEs that open any NAT VMs/containers.</p>`,8),i=[o];function l(r,p,h,c,d,u){return t(),s("div",null,i)}const g=e(n,[["render",l]]);export{b as __pageData,g as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as a,v as s,b as e,R as t}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/dashboardq.md","filePath":"en/guide/dashboardq.md","lastUpdated":1739016255000}'),p={name:"en/guide/dashboardq.md"},o=t('<p>Give me a cup of coffee.</p><p><a href="https://ko-fi.com/spiritlhl" target="_blank" rel="noreferrer">https://ko-fi.com/spiritlhl</a></p><p>WeChat</p><p><img src="https://github.com/user-attachments/assets/0fd5d0c9-837f-45c1-8a56-f23f3d0bdbe7" alt="WeChat"></p><p>USDT-TRC20</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">TNqjaPYAmDsm9pbpLY79pixE8z1ce3Zj1B</span></span></code></pre></div><p>USDT-Polygon/Matic</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">0xb81b44cb00f9e6e084f85e5da604ec479e7ffab6</span></span></code></pre></div>',8),n=[o];function c(i,l,d,r,h,b){return s(),e("div",null,n)}const u=a(p,[["render",c]]);export{m as __pageData,u as default};

View File

@@ -1 +0,0 @@
import{_ as a,v as s,b as e,R as t}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/dashboardq.md","filePath":"en/guide/dashboardq.md","lastUpdated":1739016255000}'),p={name:"en/guide/dashboardq.md"},o=t('<p>Give me a cup of coffee.</p><p><a href="https://ko-fi.com/spiritlhl" target="_blank" rel="noreferrer">https://ko-fi.com/spiritlhl</a></p><p>WeChat</p><p><img src="https://github.com/user-attachments/assets/0fd5d0c9-837f-45c1-8a56-f23f3d0bdbe7" alt="WeChat"></p><p>USDT-TRC20</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">TNqjaPYAmDsm9pbpLY79pixE8z1ce3Zj1B</span></span></code></pre></div><p>USDT-Polygon/Matic</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">0xb81b44cb00f9e6e084f85e5da604ec479e7ffab6</span></span></code></pre></div>',8),n=[o];function c(i,l,d,r,h,b){return s(),e("div",null,n)}const u=a(p,[["render",c]]);export{m as __pageData,u as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as o,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/docker/docker_precheck.md","filePath":"en/guide/docker/docker_precheck.md","lastUpdated":1739016255000}'),n={name:"en/guide/docker/docker_precheck.md"},s=a('<h1 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;Introduction&quot;"></a></h1><p>The following is an introduction to the non-customized sections. Please ensure that you don&#39;t confuse them with the customized parts.</p><p>If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the <code>Customize</code> partition in the <code>incus</code> module for the <code>Attach a free IPV6 address segment</code> to the host, and attach an IPV6 subnet to the host before installing the environment.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>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.</p></div><p>Feel free to give the project a <code>Star</code> for free support!--&gt;<a href="https://github.com/oneclickvirt/docker" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/docker</a></p><h2 id="project-features" tabindex="-1">Project Features <a class="header-anchor" href="#project-features" aria-label="Permalink to &quot;Project Features&quot;"></a></h2><p>Bulk or individual NAT server provisioning via docker</p><p>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</p><p>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 **</p><p>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&#39;s view.</p><p>Since most cloud servers have ext4 filesystems, even xfs filesystems do not enable the pquota option, so <strong>sharing the host&#39;s hard disk by default does not limit the disk size of each container</strong>.</p><h2 id="configuration-requirements" tabindex="-1">Configuration requirements <a class="header-anchor" href="#configuration-requirements" aria-label="Permalink to &quot;Configuration requirements&quot;"></a></h2><p>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!</p><p>(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)</p><p>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</p><p>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.</p>',16),r=[s];function i(c,d,h,u,l,p){return t(),o("div",null,r)}const k=e(n,[["render",i]]);export{m as __pageData,k as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as o,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/docker/docker_precheck.md","filePath":"en/guide/docker/docker_precheck.md","lastUpdated":1739016255000}'),n={name:"en/guide/docker/docker_precheck.md"},s=a('<h1 id="introduction" tabindex="-1">Introduction <a class="header-anchor" href="#introduction" aria-label="Permalink to &quot;Introduction&quot;"></a></h1><p>The following is an introduction to the non-customized sections. Please ensure that you don&#39;t confuse them with the customized parts.</p><p>If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the <code>Customize</code> partition in the <code>incus</code> module for the <code>Attach a free IPV6 address segment</code> to the host, and attach an IPV6 subnet to the host before installing the environment.</p><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>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.</p></div><p>Feel free to give the project a <code>Star</code> for free support!--&gt;<a href="https://github.com/oneclickvirt/docker" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/docker</a></p><h2 id="project-features" tabindex="-1">Project Features <a class="header-anchor" href="#project-features" aria-label="Permalink to &quot;Project Features&quot;"></a></h2><p>Bulk or individual NAT server provisioning via docker</p><p>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</p><p>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 **</p><p>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&#39;s view.</p><p>Since most cloud servers have ext4 filesystems, even xfs filesystems do not enable the pquota option, so <strong>sharing the host&#39;s hard disk by default does not limit the disk size of each container</strong>.</p><h2 id="configuration-requirements" tabindex="-1">Configuration requirements <a class="header-anchor" href="#configuration-requirements" aria-label="Permalink to &quot;Configuration requirements&quot;"></a></h2><p>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!</p><p>(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)</p><p>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</p><p>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.</p>',16),r=[s];function i(c,d,h,u,l,p){return t(),o("div",null,r)}const k=e(n,[["render",i]]);export{m as __pageData,k as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as a,b as s,R as n}from"./chunks/framework.70afa331.js";const h=JSON.parse('{"title":"Solve the puzzle","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/docker/docker_qa.md","filePath":"en/guide/docker/docker_qa.md","lastUpdated":1739016255000}'),o={name:"en/guide/docker/docker_qa.md"},l=n('<h1 id="solve-the-puzzle" tabindex="-1">Solve the puzzle <a class="header-anchor" href="#solve-the-puzzle" aria-label="Permalink to &quot;Solve the puzzle&quot;"></a></h1><h2 id="common-docker-commands" tabindex="-1">Common Docker Commands <a class="header-anchor" href="#common-docker-commands" aria-label="Permalink to &quot;Common Docker Commands&quot;"></a></h2><p>Check real-time resource usage of a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker stats &lt;container_name&gt;</span></span></code></pre></div><p>Enter a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker exec -it &lt;container_name&gt; /bin/bash</span></span></code></pre></div><p>Clean Docker cache, remove unused resources including images, containers, networks, etc.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker system prune -a</span></span></code></pre></div><p>Uninstall all Docker images and containers</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker rm -f $(docker ps -aq); docker rmi $(docker images -aq)</span></span></code></pre></div><p>View logs of a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker logs &lt;container_name_or_ID&gt;</span></span></code></pre></div><p>View overall disk usage of Docker</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker system df</span></span></code></pre></div><p>List all containers</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker ps -a</span></span></code></pre></div><p>List all images</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker images</span></span></code></pre></div><p>Remove a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker rm -f &lt;container_name_or_ID&gt;</span></span></code></pre></div><p>Remove a specific image</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker rmi &lt;image_name_or_ID&gt;</span></span></code></pre></div>',22),t=[l];function c(p,i,r,d,m,g){return a(),s("div",null,t)}const C=e(o,[["render",c]]);export{h as __pageData,C as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as a,b as s,R as n}from"./chunks/framework.70afa331.js";const h=JSON.parse('{"title":"Solve the puzzle","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/docker/docker_qa.md","filePath":"en/guide/docker/docker_qa.md","lastUpdated":1739016255000}'),o={name:"en/guide/docker/docker_qa.md"},l=n('<h1 id="solve-the-puzzle" tabindex="-1">Solve the puzzle <a class="header-anchor" href="#solve-the-puzzle" aria-label="Permalink to &quot;Solve the puzzle&quot;"></a></h1><h2 id="common-docker-commands" tabindex="-1">Common Docker Commands <a class="header-anchor" href="#common-docker-commands" aria-label="Permalink to &quot;Common Docker Commands&quot;"></a></h2><p>Check real-time resource usage of a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker stats &lt;container_name&gt;</span></span></code></pre></div><p>Enter a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker exec -it &lt;container_name&gt; /bin/bash</span></span></code></pre></div><p>Clean Docker cache, remove unused resources including images, containers, networks, etc.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker system prune -a</span></span></code></pre></div><p>Uninstall all Docker images and containers</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker rm -f $(docker ps -aq); docker rmi $(docker images -aq)</span></span></code></pre></div><p>View logs of a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker logs &lt;container_name_or_ID&gt;</span></span></code></pre></div><p>View overall disk usage of Docker</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker system df</span></span></code></pre></div><p>List all containers</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker ps -a</span></span></code></pre></div><p>List all images</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker images</span></span></code></pre></div><p>Remove a specific container</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker rm -f &lt;container_name_or_ID&gt;</span></span></code></pre></div><p>Remove a specific image</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">docker rmi &lt;image_name_or_ID&gt;</span></span></code></pre></div>',22),t=[l];function c(p,i,r,d,m,g){return a(),s("div",null,t)}const C=e(o,[["render",c]]);export{h as __pageData,C as default};

View File

@@ -1 +0,0 @@
import{_ as r,v as e,b as t,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/docker/docker_thanks.md","filePath":"en/guide/docker/docker_thanks.md","lastUpdated":1739016255000}'),o={name:"en/guide/docker/docker_thanks.md"},n=a('<h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to &quot;Acknowledgements&quot;"></a></h2><p><a href="https://hub.docker.com/_/debian" target="_blank" rel="noreferrer">https://hub.docker.com/_/debian</a></p><p><a href="https://hub.docker.com/r/redroid/redroid" target="_blank" rel="noreferrer">https://hub.docker.com/r/redroid/redroid</a></p><p><a href="https://github.com/NetrisTV/ws-scrcpy" target="_blank" rel="noreferrer">https://github.com/NetrisTV/ws-scrcpy</a></p><p><a href="https://guacamole.apache.org/doc/gug/introduction.html" target="_blank" rel="noreferrer">https://guacamole.apache.org/doc/gug/introduction.html</a></p><p><a href="https://blog.imoeq.com/oracle-arm-run-android-by-docker" target="_blank" rel="noreferrer">https://blog.imoeq.com/oracle-arm-run-android-by-docker</a></p><p><a href="https://blog.imoeq.com/scrcpy-run-a-android-web-page" target="_blank" rel="noreferrer">https://blog.imoeq.com/scrcpy-run-a-android-web-page</a></p><p><a href="https://github.com/NetrisTV/ws-scrcpy" target="_blank" rel="noreferrer">https://github.com/NetrisTV/ws-scrcpy</a></p><p><a href="https://www.howtoforge.com/how-to-install-apache-guacamole-as-docker-container-on-ubuntu/" target="_blank" rel="noreferrer">https://www.howtoforge.com/how-to-install-apache-guacamole-as-docker-container-on-ubuntu/</a></p><p><a href="https://releases.hashicorp.com/vagrant/" target="_blank" rel="noreferrer">https://releases.hashicorp.com/vagrant/</a></p><p><a href="https://github.com/hashicorp/vagrant/" target="_blank" rel="noreferrer">https://github.com/hashicorp/vagrant/</a></p><p><a href="https://app.vagrantup.com/peru" target="_blank" rel="noreferrer">https://app.vagrantup.com/peru</a></p><p><a href="https://medium.com/axon-technologies/installing-a-windows-virtual-machine-in-a-linux-docker-container-c78e4c3f9ba1" target="_blank" rel="noreferrer">https://medium.com/axon-technologies/installing-a-windows-virtual-machine-in-a-linux-docker-container-c78e4c3f9ba1</a></p><p><a href="https://forum.garudalinux.org/t/error-while-attempting-to-create-a-virtual-machine-with-virt-manager/18534/4" target="_blank" rel="noreferrer">https://forum.garudalinux.org/t/error-while-attempting-to-create-a-virtual-machine-with-virt-manager/18534/4</a></p><p><a href="https://github.com/jlesage/docker-firefox" target="_blank" rel="noreferrer">https://github.com/jlesage/docker-firefox</a></p><p><a href="https://github.com/linuxserver/docker-webtop" target="_blank" rel="noreferrer">https://github.com/linuxserver/docker-webtop</a></p><p><a href="https://github.com/yoursunny/ndpresponder" target="_blank" rel="noreferrer">https://github.com/yoursunny/ndpresponder</a></p><p><a href="https://github.com/linuxserver/docker-chromium" target="_blank" rel="noreferrer">https://github.com/linuxserver/docker-chromium</a></p><p><a href="https://github.com/SuperManito/LinuxMirrors" target="_blank" rel="noreferrer">https://github.com/SuperManito/LinuxMirrors</a></p><p>Thank <a href="https://github.com/Ella-Alinda" target="_blank" rel="noreferrer">@Ella-Alinda</a> and @CoiaPrant for providing docker guidance.</p>',20),c=[n];function h(p,i,s,l,d,g){return e(),t("div",null,c)}const b=r(o,[["render",h]]);export{m as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as r,v as e,b as t,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/docker/docker_thanks.md","filePath":"en/guide/docker/docker_thanks.md","lastUpdated":1739016255000}'),o={name:"en/guide/docker/docker_thanks.md"},n=a('<h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to &quot;Acknowledgements&quot;"></a></h2><p><a href="https://hub.docker.com/_/debian" target="_blank" rel="noreferrer">https://hub.docker.com/_/debian</a></p><p><a href="https://hub.docker.com/r/redroid/redroid" target="_blank" rel="noreferrer">https://hub.docker.com/r/redroid/redroid</a></p><p><a href="https://github.com/NetrisTV/ws-scrcpy" target="_blank" rel="noreferrer">https://github.com/NetrisTV/ws-scrcpy</a></p><p><a href="https://guacamole.apache.org/doc/gug/introduction.html" target="_blank" rel="noreferrer">https://guacamole.apache.org/doc/gug/introduction.html</a></p><p><a href="https://blog.imoeq.com/oracle-arm-run-android-by-docker" target="_blank" rel="noreferrer">https://blog.imoeq.com/oracle-arm-run-android-by-docker</a></p><p><a href="https://blog.imoeq.com/scrcpy-run-a-android-web-page" target="_blank" rel="noreferrer">https://blog.imoeq.com/scrcpy-run-a-android-web-page</a></p><p><a href="https://github.com/NetrisTV/ws-scrcpy" target="_blank" rel="noreferrer">https://github.com/NetrisTV/ws-scrcpy</a></p><p><a href="https://www.howtoforge.com/how-to-install-apache-guacamole-as-docker-container-on-ubuntu/" target="_blank" rel="noreferrer">https://www.howtoforge.com/how-to-install-apache-guacamole-as-docker-container-on-ubuntu/</a></p><p><a href="https://releases.hashicorp.com/vagrant/" target="_blank" rel="noreferrer">https://releases.hashicorp.com/vagrant/</a></p><p><a href="https://github.com/hashicorp/vagrant/" target="_blank" rel="noreferrer">https://github.com/hashicorp/vagrant/</a></p><p><a href="https://app.vagrantup.com/peru" target="_blank" rel="noreferrer">https://app.vagrantup.com/peru</a></p><p><a href="https://medium.com/axon-technologies/installing-a-windows-virtual-machine-in-a-linux-docker-container-c78e4c3f9ba1" target="_blank" rel="noreferrer">https://medium.com/axon-technologies/installing-a-windows-virtual-machine-in-a-linux-docker-container-c78e4c3f9ba1</a></p><p><a href="https://forum.garudalinux.org/t/error-while-attempting-to-create-a-virtual-machine-with-virt-manager/18534/4" target="_blank" rel="noreferrer">https://forum.garudalinux.org/t/error-while-attempting-to-create-a-virtual-machine-with-virt-manager/18534/4</a></p><p><a href="https://github.com/jlesage/docker-firefox" target="_blank" rel="noreferrer">https://github.com/jlesage/docker-firefox</a></p><p><a href="https://github.com/linuxserver/docker-webtop" target="_blank" rel="noreferrer">https://github.com/linuxserver/docker-webtop</a></p><p><a href="https://github.com/yoursunny/ndpresponder" target="_blank" rel="noreferrer">https://github.com/yoursunny/ndpresponder</a></p><p><a href="https://github.com/linuxserver/docker-chromium" target="_blank" rel="noreferrer">https://github.com/linuxserver/docker-chromium</a></p><p><a href="https://github.com/SuperManito/LinuxMirrors" target="_blank" rel="noreferrer">https://github.com/SuperManito/LinuxMirrors</a></p><p>Thank <a href="https://github.com/Ella-Alinda" target="_blank" rel="noreferrer">@Ella-Alinda</a> and @CoiaPrant for providing docker guidance.</p>',20),c=[n];function h(p,i,s,l,d,g){return e(),t("div",null,c)}const b=r(o,[["render",h]]);export{m as __pageData,b as default};

View File

@@ -1,80 +0,0 @@
import{_ as e,v as s,b as t,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Custom","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/incus/incus_custom.md","filePath":"en/guide/incus/incus_custom.md","lastUpdated":1739016255000}'),n={name:"en/guide/incus/incus_custom.md"},o=a(`<h1 id="custom" tabindex="-1">Custom <a class="header-anchor" href="#custom" aria-label="Permalink to &quot;Custom&quot;"></a></h1><h2 id="attach-free-ipv6-address-segments-to-host-machines" tabindex="-1">Attach free IPV6 address segments to host machines <a class="header-anchor" href="#attach-free-ipv6-address-segments-to-host-machines" aria-label="Permalink to &quot;Attach free IPV6 address segments to host machines&quot;"></a></h2><p>Some machines don&#39;t have an IPV6 /64 subnet on the machine itself, here is a method given to attach an IPV6 subnet for free.</p><p>Here is a solution using the 6in4 method for a host machine that doesn&#39;t have an IPV6 address on its own.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>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.</p></div><p>Here are the platforms that are currently running in 2023 that offer IPV6 subnets for free.</p><table><thead><tr><th>Supported Platforms</th><th>Corresponding Required Installation Packages</th><th>Protocols</th><th>Number of Channels/Subnets</th></tr></thead><tbody><tr><td>tunnelbroker.net</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64 OR 5✖/64</td></tr><tr><td>tunnelbroker.ch</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64</td></tr><tr><td>ip4market.ru</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td>netassist.ua</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td><a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></td><td>ifupdown2</td><td>sit、gre、ipip</td><td>custom</td></tr></tbody></table><p>The free platform only solves the problem that IPV6 is not available, it does not provide premium IPV6 bandwidth.</p><p>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.</p><p>After the installation is complete, select which package is installed behind to convert the format.</p><h3 id="initial-environment-modifications" tabindex="-1">Initial environment modifications <a class="header-anchor" href="#initial-environment-modifications" aria-label="Permalink to &quot;Initial environment modifications&quot;"></a></h3><p>Execute</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">touch /etc/cloud/cloud-init.disabled</span></span></code></pre></div><p>Turn off the automated overwrite of cloud-init first, and then to see what the local machine is using to manage the network, run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active systemd-networkd</span></span></code></pre></div><p>and</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active networking</span></span></code></pre></div><p>See which case this falls into, if it&#39;s the former active and the latter inactive, you need to reinstall/DD a system that isn&#39;t configured this way, or switch the local machine to use ifupdown/ifupdown2 to manage network execution</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Judge for yourself whether you need to disable the original network management or not</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd.socket</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd.socket</span></span></code></pre></div><p>If you want to install <code>ifupdown</code> to control the network, this tool is available on all major linux systems.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown -y</span></span></code></pre></div><p>If you want to install <code>ifupdown2</code> for network management, which is generally only available on debian systems, you can install</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown2 -y</span></span></code></pre></div><p>After the installation is complete, select which package is installed behind to convert the format.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl start networking</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable networking</span></span></code></pre></div><p>Then restart the server, check whether the machine&#39;s network will be rebooted due to the modification of the case of loss of connection, and run<code>uptime</code>to observe that the startup has been more than 1 minute before proceeding to the next steps</p><p>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.</p><p>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</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">default_route=$(ip -6 route show | awk &#39;/default via/{print $3}&#39;) &amp;&amp; [ -n &quot;$default_route&quot; ] &amp;&amp; ip -6 route del default via $default_route dev eth0</span></span></code></pre></div><p>This assumes that your client&#39;s server&#39;s default NIC is <code>eth0</code>, you can use <code>ip -6 route</code> to see the default route and replace it, the default route starts with <code>default via</code>, and uses <code>dev</code> to specify the default NIC, you just need to find it according to this rule</p><h3 id="currently-supported-platforms" tabindex="-1">Currently supported platforms <a class="header-anchor" href="#currently-supported-platforms" aria-label="Permalink to &quot;Currently supported platforms&quot;"></a></h3><h4 id="tunnelbroker-net" tabindex="-1">tunnelbroker_net <a class="header-anchor" href="#tunnelbroker-net" aria-label="Permalink to &quot;tunnelbroker_net&quot;"></a></h4><p>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</p><p>The downside is that the addresses are dark/dirty, and cloudflare&#39;s cdn will most likely not be able to latch on, test it yourself</p><ol><li>Register an account at <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> and click<code>Create Regular Tunnel</code>on the left.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/35923be5-821f-45c8-8401-962ea3f97726" alt="1"></p><ol start="2"><li>Fill in your server&#39;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<code>Create Tunnel</code>to create the tunnel when you are prompted by the green box!</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/cab04113-4d6a-4d6f-9952-d3851057fc4a" alt="2"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/518dc62a-c8d0-48e3-bb13-befc39348990" alt="3"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/6188de3f-e83c-400e-9594-dd3f73aaf46a" alt="4"></p><ol start="3"><li>Wait for the following screen, click<code>Example Configurations</code>and select the corresponding system, for example, the host of incus is definitely Debian/Ubuntu.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9f0045fc-b1ac-4954-9ecd-1fba47d07d8a" alt="5"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/2fb7c951-371c-452c-b775-78f69b980a2c" alt="6"></p><ol start="4"><li>The boxed part is the file to be modified and the content to be filled in.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/c0156902-b4c0-4001-823e-50f611215393" alt="7"></p><ol start="5"><li>Exchange the format of the command then add IPV6 settings to your network configuration file.</li></ol><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerNet</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Here, copy and paste the contents of the configuration file in the red box, and then run this command.</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you can use<code>cat /etc/network/interfaces</code>to see if the configuration file is written correctly.</p><ol start="6"><li>If all of the above is OK, then you need to enable the network interfaces</li></ol><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><ol start="7"><li>Then you can test the IP address of the network interface.</li></ol><p>Execute the<code>ifconfig</code>command, and there should be a he-ipv6 interface, similar to the following:</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/1760af85-2b60-4352-ad8c-3c69e49fc1e4" alt="8"></p><p>Or execute:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><p>Returns the IPV6 address you bound to</p><ol start="8"><li>Additional settings for NAT VPS</li></ol><p>IPv4 NAT VPS may require some additional settings beyond the IP replacement operation mentioned earlier, otherwise it may still not be able to access the IPv6 network.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ufw -y</span></span>
<span class="line"><span style="color:#A6ACCD;">ufw allow 41</span></span></code></pre></div><p>Add the relevant routing rules</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">route -A inet6 add ::/0 dev he-ipv6</span></span></code></pre></div><ol start="9"><li>If the IPV6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.</li></ol><p>If you want to delete the he-ipv6 network interface configuration (if not, it will be enabled automatically after reboot), remember to modify the<code>/etc/network/interfaces</code>file to remove the content added in the red box before.</p><p>Then reboot the server to remove the</p><h4 id="tunnelbroker-ch" tabindex="-1">tunnelbroker_ch <a class="header-anchor" href="#tunnelbroker-ch" aria-label="Permalink to &quot;tunnelbroker_ch&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://www.tunnelbroker.ch/" target="_blank" rel="noreferrer">https://www.tunnelbroker.ch/</a> and click on the activation email after registering.</p><p>Then you have to fill in the IPV4 address of your server.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/e018c7bc-e73c-4c68-88b6-b073f0dbd150" alt=""></p><p>After creating an account, you need to go to the Config page instead of the details page.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/d919dda7-571d-45b1-9d2f-03f29866269e" alt=""></p><p>Don&#39;t use the following page, first refresh the page without the light blue box and then stop refreshing it</p><p>Don&#39;t stop refreshing after the light blue box pops up</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/aefd1477-d5f5-4a4e-a66c-80ef5f9250c6" alt=""></p><p>Record the content of the last red box on the following page, and prepare to modify the host configuration file.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9329974c-9549-4ff2-a8a0-a53c00e2863d" alt=""></p><p>Copy the last red box of the page without the blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerCh</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="ip4market-ru" tabindex="-1">ip4market_ru <a class="header-anchor" href="#ip4market-ru" aria-label="Permalink to &quot;ip4market_ru&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://tb.ip4market.ru/" target="_blank" rel="noreferrer">https://tb.ip4market.ru</a>, 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.</p><p>The IP address is the IPV4 address of the host computer you are attaching to<img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/24df37f2-12fe-49b6-87df-f07213346fbe" alt=""></p><p>Then you have to go through Recaptcha&#39;s human-machine verification, and click register.</p><p>You will receive an activation email with your password, memorize it.</p><p>Then login on the homepage</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/38b3f5a7-a5e1-47e0-b13e-8570e946c61c" alt=""></p><p>Then you will be taken to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/fc1d38b9-b45a-41de-a931-5dbe96e9791c" alt=""></p><p>Hold down the right button and copy the four lines framed in red, which are</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Server IPv4.</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">Server IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv6</span></span></code></pre></div><p>For these four lines, press ctrl+c to copy or right-click to copy</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/69c946e6-e82f-4665-b3c1-3c97e27f8487" alt=""></p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>ip4market</code>, 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.</p><p>Then click<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/b9ca3ee1-4f13-4e10-bdc8-1ed1cc23ab05" alt=""></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="netassist-ua" tabindex="-1">netassist_ua <a class="header-anchor" href="#netassist-ua" aria-label="Permalink to &quot;netassist_ua&quot;"></a></h4><p>Similar to the above operation, first in <a href="https://tb.netassist.ua/" target="_blank" rel="noreferrer">https://tb.netassist.ua/</a> register an account first, after registration, click on the activation of the mail, the activation page will have a password display, remember to record!</p><p>Then fill in the IPV4 address of your server, you can change it later, just fill in a random one first.</p><p>Then you will get to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/4af680d4-3b01-495a-91d1-3cf4f187d0df" alt="a"></p><p>The first red box is the location of your host&#39;s IPV4 address, if you want to modify it, modify it there, and then click change to save.</p><p>The second red box is for\`\`\`Linux\`\`, and then click on show</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/099d43a0-0397-4e02-9275-9ec3099c0ff1" alt="b"></p><p>The above content will appear, copy all the boxed parts without blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>NetAssist</code>, 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.</p><p>Then click on<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/7324c7ff-d22f-4c17-b3c2-b5338ca6dfee" alt="c"></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h2 id="transfer-ipv6-subnets-between-different-servers" tabindex="-1">Transfer IPV6 subnets between different servers <a class="header-anchor" href="#transfer-ipv6-subnets-between-different-servers" aria-label="Permalink to &quot;Transfer IPV6 subnets between different servers&quot;"></a></h2><p>Related repository: <a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></p><p>This method will provide a way to split a /80 out of the IPV6 segment on A and attach it to B to use.</p><h3 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to &quot;Features&quot;"></a></h3><ul><li>Self-built IPv6 tunnel for sit/gre/ipip protocols</li><li>Support to customize the IPV6 subnet size to be cut out, and the appropriate IPV6 subnet information in CIDR format will be calculated automatically.</li><li>Automatically recognizes the IPV6 subnet size of the server side</li><li>will automatically set up the tunnel server and print the commands that the client needs to execute</li><li>Setting up the IPV6 tunnel is easy to understand and easy to remove</li></ul><h3 id="environmental-preparation" tabindex="-1">Environmental Preparation <a class="header-anchor" href="#environmental-preparation" aria-label="Permalink to &quot;Environmental Preparation&quot;"></a></h3><table><thead><tr><th>VPS(A)</th><th>VPS(B)</th></tr></thead><tbody><tr><td>one IPV4 address (server_ipv4)</td><td>one IPV4 address (clinet_ipv4)</td></tr><tr><td>one IPV6 subnet</td><td>no IPV6 address</td></tr><tr><td>Hereafter referred to as server</td><td>Hereafter referred to as client</td></tr></tbody></table><h3 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;"></a></h3><p>Download Script</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://raw.githubusercontent.com/oneclickvirt/6in4/main/6in4.sh -o 6in4.sh &amp;&amp; chmod +x 6in4.sh</span></span></code></pre></div><p>Execute it</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">./6in4.sh client_ipv4 &lt;mode_type&gt; &lt;subnet_size&gt;</span></span></code></pre></div><table><thead><tr><th>Options</th><th>Optional Option 1</th><th>Optional Option 2</th><th>Optional Option 3</th></tr></thead><tbody><tr><td>&lt;mode_type&gt;</td><td>gre</td><td>sit</td><td>ipip</td></tr><tr><td>&lt;subnet_size&gt;</td><td>64</td><td>80</td><td>112</td></tr></tbody></table><p><code>&lt;mode_type&gt;</code> only support those three protocols for now, the more advanced the more recommended, no fill in the default is <code>sit</code> protocol</p><p><code>&lt;subnet_size&gt;</code> as long as it is larger than the original system subnet mask, and is a multiple of 8, if you don&#39;t fill it in, it defaults to <code>80</code>.</p><p>Remember to replace <code>client_ipv4</code> 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.</p><p>To prevent you from forgetting to copy the commands, the commands themselves will be written to the <code>6in4.log</code> file under the current path, you can use <code>cat 6in4.log</code> to query the commands that need to be executed on the client side</p><p>For copied commands, be sure to select option <code>6in4</code> in <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> before converting!</p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify here</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h3 id="check-server-status" tabindex="-1">Check server status <a class="header-anchor" href="#check-server-status" aria-label="Permalink to &quot;Check server status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl status ndpresponder</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><h3 id="check-client-status" tabindex="-1">Check client status <a class="header-anchor" href="#check-client-status" aria-label="Permalink to &quot;Check client status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><h3 id="delete-tunnel" tabindex="-1">Delete tunnel <a class="header-anchor" href="#delete-tunnel" aria-label="Permalink to &quot;Delete tunnel&quot;"></a></h3><p>server</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set server-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del server-ipv6</span></span></code></pre></div><p>client</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set user-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del user-ipv6</span></span></code></pre></div><p>The above deletion is only temporary, for permanent deletion you must modify and delete the contents of the <code>/etc/network/interfaces</code> file that you have previously added.</p><h3 id="one-more-thing" tabindex="-1">one more thing <a class="header-anchor" href="#one-more-thing" aria-label="Permalink to &quot;one more thing&quot;"></a></h3><p>In fact <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> supports the application of IPV6 subnets of size <code>/48</code></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/07987e41-0158-430c-bcc5-f7cd8652b2c4" alt=""></p><p>Make the request here, then when converting the format change the original <code>/64</code> IPV6 address to a <code>/48</code> IPV6 address and you&#39;ll get a larger IPV6 subnet!</p><h2 id="supplemental-cloudflare-warp-ipv4-ipv6-outbound" tabindex="-1">Supplemental CloudFlare WARP IPv4 / IPv6 outbound <a class="header-anchor" href="#supplemental-cloudflare-warp-ipv4-ipv6-outbound" aria-label="Permalink to &quot;Supplemental CloudFlare WARP IPv4 / IPv6 outbound&quot;"></a></h2><h3 id="_1-benefits" tabindex="-1">1: Benefits <a class="header-anchor" href="#_1-benefits" aria-label="Permalink to &quot;1: Benefits&quot;"></a></h3><ul><li>By installing it on the host machine, all enabled machines can benefit from the advantages of Warp without the need for individual configurations, thus saving resources and simplifying management.</li><li>The use of kernel WireGuard on the host machine enables more efficient operation of WireGuard compared to user-space WireGuard-Go.</li></ul><h3 id="_2-manual-installation" tabindex="-1">2: Manual Installation <a class="header-anchor" href="#_2-manual-installation" aria-label="Permalink to &quot;2: Manual Installation&quot;"></a></h3><h4 id="_2-1-installing-wireguard-dependencies" tabindex="-1">2-1 Installing WireGuard Dependencies <a class="header-anchor" href="#_2-1-installing-wireguard-dependencies" aria-label="Permalink to &quot;2-1 Installing WireGuard Dependencies&quot;"></a></h4><ul><li>Debian and Ubuntu systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">apt update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends net-tools openresolv dnsutils</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends wireguard-tools</span></span></code></pre></div><ul><li>CentOS systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">yum update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install additional package components</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y epel-release </span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y net-tools</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y wireguard-tools</span></span></code></pre></div><h4 id="_2-2-getting-warp-account-information" tabindex="-1">2-2 Getting warp account information <a class="header-anchor" href="#_2-2-getting-warp-account-information" aria-label="Permalink to &quot;2-2 Getting warp account information&quot;"></a></h4><p>Visit <a href="https://warp.cloudflare.now.cc/?run=register&amp;format=yaml" target="_blank" rel="noreferrer">https://warp.cloudflare.now.cc/?run=register&amp;format=yaml</a> and record private_key, v6 2 values</p><p><img src="https://img.imgdd.com/f210f3.5085a04e-edd3-4294-bb34-9e8263360c42.png" alt="image.png"></p><h4 id="_2-3-modifying-configuration-files" tabindex="-1">2-3: Modifying Configuration Files <a class="header-anchor" href="#_2-3-modifying-configuration-files" aria-label="Permalink to &quot;2-3: Modifying Configuration Files&quot;"></a></h4><ul><li><p>Create and edit the /etc/wireguard/warp.conf file, replacing any parts that contain &lt;&gt; (pointy brackets) together, just to make it look obvious.</p></li><li><p>For IPv4-only hosts, Warp takes over IPv6 egress only</p></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v6</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">::/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">162.159</span><span style="color:#C3E88D;">.193.10:2408</span></span></code></pre></div><ul><li>For IPv6 only hosts, Warp takes over IPv4 egress only.</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v</span><span style="color:#89DDFF;">6&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">0.0</span><span style="color:#C3E88D;">.0.0/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> [2606:4700:d0::a29f:c101]:2408</span></span></code></pre></div><ul><li>There&#39;s no need to target dual-stack, after all, native network outlets are better than relaying through Warp</li></ul><h4 id="_2-4-setting-the-address-resolution-priority" tabindex="-1">2-4: Setting the Address Resolution Priority <a class="header-anchor" href="#_2-4-setting-the-address-resolution-priority" aria-label="Permalink to &quot;2-4: Setting the Address Resolution Priority&quot;"></a></h4><p>For IPv4-only host machines, Warp only takes control of the IPv6 outbound, prioritizing the use of the native network&#39;s IPv4 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv4 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-qE</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">||</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">precedence ::ffff:0:0/96 100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><p>For IPv6-only host machines, Warp only takes control of the IPv4 outbound, prioritizing the use of the native network&#39;s IPv6 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv6 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">sed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">/^precedence \\:\\:ffff\\:0\\:0/d;/^label 2002\\:\\:\\/16/d</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><h4 id="_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" tabindex="-1">2-5: Connecting to Warp and setting up the systemd process daemon <a class="header-anchor" href="#_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" aria-label="Permalink to &quot;2-5: Connecting to Warp and setting up the systemd process daemon&quot;"></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run wireguard to connect to Warp. If this step gets stuck and causes the connection to be lost, reboot the host in the background to resolve it.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick up warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv4.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv6.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Disconnect from Warp after successful test.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick down warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Reconnect and set process daemon to take effect automatically after reboot.</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable --now wg-quick@warp</span></span></code></pre></div><h3 id="_3-autorun-fscarmen-s-one-click-scripts" tabindex="-1">3: Autorun: fscarmen&#39;s one-click scripts <a class="header-anchor" href="#_3-autorun-fscarmen-s-one-click-scripts" aria-label="Permalink to &quot;3: Autorun: fscarmen&#39;s one-click scripts&quot;"></a></h3><p>Finally, the one-click script for fscarmen is introduced. The script is mentioned as a handy tool to simplify the configuration process. It also automatically handles advanced parameters such as Optimal MTU, Optimal Endpoint, etc.</p><p>Project: <a href="https://github.com/fscarmen/warp-sh" target="_blank" rel="noreferrer">https://github.com/fscarmen/warp-sh</a></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run one-key script</span></span>
<span class="line"><span style="color:#A6ACCD;">wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh &amp;&amp; bash menu.sh</span></span></code></pre></div><p><img src="https://img.imgdd.com/f210f3.b94cf8fb-82f2-4160-95a7-c2859238284f.png" alt="image.png"></p>`,193),l=[o];function i(p,r,c,d,h,u){return s(),t("div",null,l)}const C=e(n,[["render",i]]);export{m as __pageData,C as default};

View File

@@ -1,80 +0,0 @@
import{_ as e,v as s,b as t,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Custom","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/incus/incus_custom.md","filePath":"en/guide/incus/incus_custom.md","lastUpdated":1739016255000}'),n={name:"en/guide/incus/incus_custom.md"},o=a(`<h1 id="custom" tabindex="-1">Custom <a class="header-anchor" href="#custom" aria-label="Permalink to &quot;Custom&quot;"></a></h1><h2 id="attach-free-ipv6-address-segments-to-host-machines" tabindex="-1">Attach free IPV6 address segments to host machines <a class="header-anchor" href="#attach-free-ipv6-address-segments-to-host-machines" aria-label="Permalink to &quot;Attach free IPV6 address segments to host machines&quot;"></a></h2><p>Some machines don&#39;t have an IPV6 /64 subnet on the machine itself, here is a method given to attach an IPV6 subnet for free.</p><p>Here is a solution using the 6in4 method for a host machine that doesn&#39;t have an IPV6 address on its own.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>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.</p></div><p>Here are the platforms that are currently running in 2023 that offer IPV6 subnets for free.</p><table><thead><tr><th>Supported Platforms</th><th>Corresponding Required Installation Packages</th><th>Protocols</th><th>Number of Channels/Subnets</th></tr></thead><tbody><tr><td>tunnelbroker.net</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64 OR 5✖/64</td></tr><tr><td>tunnelbroker.ch</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64</td></tr><tr><td>ip4market.ru</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td>netassist.ua</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td><a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></td><td>ifupdown2</td><td>sit、gre、ipip</td><td>custom</td></tr></tbody></table><p>The free platform only solves the problem that IPV6 is not available, it does not provide premium IPV6 bandwidth.</p><p>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.</p><p>After the installation is complete, select which package is installed behind to convert the format.</p><h3 id="initial-environment-modifications" tabindex="-1">Initial environment modifications <a class="header-anchor" href="#initial-environment-modifications" aria-label="Permalink to &quot;Initial environment modifications&quot;"></a></h3><p>Execute</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">touch /etc/cloud/cloud-init.disabled</span></span></code></pre></div><p>Turn off the automated overwrite of cloud-init first, and then to see what the local machine is using to manage the network, run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active systemd-networkd</span></span></code></pre></div><p>and</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active networking</span></span></code></pre></div><p>See which case this falls into, if it&#39;s the former active and the latter inactive, you need to reinstall/DD a system that isn&#39;t configured this way, or switch the local machine to use ifupdown/ifupdown2 to manage network execution</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Judge for yourself whether you need to disable the original network management or not</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd.socket</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd.socket</span></span></code></pre></div><p>If you want to install <code>ifupdown</code> to control the network, this tool is available on all major linux systems.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown -y</span></span></code></pre></div><p>If you want to install <code>ifupdown2</code> for network management, which is generally only available on debian systems, you can install</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown2 -y</span></span></code></pre></div><p>After the installation is complete, select which package is installed behind to convert the format.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl start networking</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable networking</span></span></code></pre></div><p>Then restart the server, check whether the machine&#39;s network will be rebooted due to the modification of the case of loss of connection, and run<code>uptime</code>to observe that the startup has been more than 1 minute before proceeding to the next steps</p><p>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.</p><p>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</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">default_route=$(ip -6 route show | awk &#39;/default via/{print $3}&#39;) &amp;&amp; [ -n &quot;$default_route&quot; ] &amp;&amp; ip -6 route del default via $default_route dev eth0</span></span></code></pre></div><p>This assumes that your client&#39;s server&#39;s default NIC is <code>eth0</code>, you can use <code>ip -6 route</code> to see the default route and replace it, the default route starts with <code>default via</code>, and uses <code>dev</code> to specify the default NIC, you just need to find it according to this rule</p><h3 id="currently-supported-platforms" tabindex="-1">Currently supported platforms <a class="header-anchor" href="#currently-supported-platforms" aria-label="Permalink to &quot;Currently supported platforms&quot;"></a></h3><h4 id="tunnelbroker-net" tabindex="-1">tunnelbroker_net <a class="header-anchor" href="#tunnelbroker-net" aria-label="Permalink to &quot;tunnelbroker_net&quot;"></a></h4><p>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</p><p>The downside is that the addresses are dark/dirty, and cloudflare&#39;s cdn will most likely not be able to latch on, test it yourself</p><ol><li>Register an account at <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> and click<code>Create Regular Tunnel</code>on the left.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/35923be5-821f-45c8-8401-962ea3f97726" alt="1"></p><ol start="2"><li>Fill in your server&#39;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<code>Create Tunnel</code>to create the tunnel when you are prompted by the green box!</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/cab04113-4d6a-4d6f-9952-d3851057fc4a" alt="2"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/518dc62a-c8d0-48e3-bb13-befc39348990" alt="3"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/6188de3f-e83c-400e-9594-dd3f73aaf46a" alt="4"></p><ol start="3"><li>Wait for the following screen, click<code>Example Configurations</code>and select the corresponding system, for example, the host of incus is definitely Debian/Ubuntu.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9f0045fc-b1ac-4954-9ecd-1fba47d07d8a" alt="5"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/2fb7c951-371c-452c-b775-78f69b980a2c" alt="6"></p><ol start="4"><li>The boxed part is the file to be modified and the content to be filled in.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/c0156902-b4c0-4001-823e-50f611215393" alt="7"></p><ol start="5"><li>Exchange the format of the command then add IPV6 settings to your network configuration file.</li></ol><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerNet</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Here, copy and paste the contents of the configuration file in the red box, and then run this command.</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you can use<code>cat /etc/network/interfaces</code>to see if the configuration file is written correctly.</p><ol start="6"><li>If all of the above is OK, then you need to enable the network interfaces</li></ol><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><ol start="7"><li>Then you can test the IP address of the network interface.</li></ol><p>Execute the<code>ifconfig</code>command, and there should be a he-ipv6 interface, similar to the following:</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/1760af85-2b60-4352-ad8c-3c69e49fc1e4" alt="8"></p><p>Or execute:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><p>Returns the IPV6 address you bound to</p><ol start="8"><li>Additional settings for NAT VPS</li></ol><p>IPv4 NAT VPS may require some additional settings beyond the IP replacement operation mentioned earlier, otherwise it may still not be able to access the IPv6 network.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ufw -y</span></span>
<span class="line"><span style="color:#A6ACCD;">ufw allow 41</span></span></code></pre></div><p>Add the relevant routing rules</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">route -A inet6 add ::/0 dev he-ipv6</span></span></code></pre></div><ol start="9"><li>If the IPV6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.</li></ol><p>If you want to delete the he-ipv6 network interface configuration (if not, it will be enabled automatically after reboot), remember to modify the<code>/etc/network/interfaces</code>file to remove the content added in the red box before.</p><p>Then reboot the server to remove the</p><h4 id="tunnelbroker-ch" tabindex="-1">tunnelbroker_ch <a class="header-anchor" href="#tunnelbroker-ch" aria-label="Permalink to &quot;tunnelbroker_ch&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://www.tunnelbroker.ch/" target="_blank" rel="noreferrer">https://www.tunnelbroker.ch/</a> and click on the activation email after registering.</p><p>Then you have to fill in the IPV4 address of your server.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/e018c7bc-e73c-4c68-88b6-b073f0dbd150" alt=""></p><p>After creating an account, you need to go to the Config page instead of the details page.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/d919dda7-571d-45b1-9d2f-03f29866269e" alt=""></p><p>Don&#39;t use the following page, first refresh the page without the light blue box and then stop refreshing it</p><p>Don&#39;t stop refreshing after the light blue box pops up</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/aefd1477-d5f5-4a4e-a66c-80ef5f9250c6" alt=""></p><p>Record the content of the last red box on the following page, and prepare to modify the host configuration file.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9329974c-9549-4ff2-a8a0-a53c00e2863d" alt=""></p><p>Copy the last red box of the page without the blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerCh</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="ip4market-ru" tabindex="-1">ip4market_ru <a class="header-anchor" href="#ip4market-ru" aria-label="Permalink to &quot;ip4market_ru&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://tb.ip4market.ru/" target="_blank" rel="noreferrer">https://tb.ip4market.ru</a>, 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.</p><p>The IP address is the IPV4 address of the host computer you are attaching to<img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/24df37f2-12fe-49b6-87df-f07213346fbe" alt=""></p><p>Then you have to go through Recaptcha&#39;s human-machine verification, and click register.</p><p>You will receive an activation email with your password, memorize it.</p><p>Then login on the homepage</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/38b3f5a7-a5e1-47e0-b13e-8570e946c61c" alt=""></p><p>Then you will be taken to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/fc1d38b9-b45a-41de-a931-5dbe96e9791c" alt=""></p><p>Hold down the right button and copy the four lines framed in red, which are</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Server IPv4.</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">Server IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv6</span></span></code></pre></div><p>For these four lines, press ctrl+c to copy or right-click to copy</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/69c946e6-e82f-4665-b3c1-3c97e27f8487" alt=""></p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>ip4market</code>, 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.</p><p>Then click<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/b9ca3ee1-4f13-4e10-bdc8-1ed1cc23ab05" alt=""></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="netassist-ua" tabindex="-1">netassist_ua <a class="header-anchor" href="#netassist-ua" aria-label="Permalink to &quot;netassist_ua&quot;"></a></h4><p>Similar to the above operation, first in <a href="https://tb.netassist.ua/" target="_blank" rel="noreferrer">https://tb.netassist.ua/</a> register an account first, after registration, click on the activation of the mail, the activation page will have a password display, remember to record!</p><p>Then fill in the IPV4 address of your server, you can change it later, just fill in a random one first.</p><p>Then you will get to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/4af680d4-3b01-495a-91d1-3cf4f187d0df" alt="a"></p><p>The first red box is the location of your host&#39;s IPV4 address, if you want to modify it, modify it there, and then click change to save.</p><p>The second red box is for\`\`\`Linux\`\`, and then click on show</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/099d43a0-0397-4e02-9275-9ec3099c0ff1" alt="b"></p><p>The above content will appear, copy all the boxed parts without blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>NetAssist</code>, 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.</p><p>Then click on<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/7324c7ff-d22f-4c17-b3c2-b5338ca6dfee" alt="c"></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h2 id="transfer-ipv6-subnets-between-different-servers" tabindex="-1">Transfer IPV6 subnets between different servers <a class="header-anchor" href="#transfer-ipv6-subnets-between-different-servers" aria-label="Permalink to &quot;Transfer IPV6 subnets between different servers&quot;"></a></h2><p>Related repository: <a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></p><p>This method will provide a way to split a /80 out of the IPV6 segment on A and attach it to B to use.</p><h3 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to &quot;Features&quot;"></a></h3><ul><li>Self-built IPv6 tunnel for sit/gre/ipip protocols</li><li>Support to customize the IPV6 subnet size to be cut out, and the appropriate IPV6 subnet information in CIDR format will be calculated automatically.</li><li>Automatically recognizes the IPV6 subnet size of the server side</li><li>will automatically set up the tunnel server and print the commands that the client needs to execute</li><li>Setting up the IPV6 tunnel is easy to understand and easy to remove</li></ul><h3 id="environmental-preparation" tabindex="-1">Environmental Preparation <a class="header-anchor" href="#environmental-preparation" aria-label="Permalink to &quot;Environmental Preparation&quot;"></a></h3><table><thead><tr><th>VPS(A)</th><th>VPS(B)</th></tr></thead><tbody><tr><td>one IPV4 address (server_ipv4)</td><td>one IPV4 address (clinet_ipv4)</td></tr><tr><td>one IPV6 subnet</td><td>no IPV6 address</td></tr><tr><td>Hereafter referred to as server</td><td>Hereafter referred to as client</td></tr></tbody></table><h3 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;"></a></h3><p>Download Script</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://raw.githubusercontent.com/oneclickvirt/6in4/main/6in4.sh -o 6in4.sh &amp;&amp; chmod +x 6in4.sh</span></span></code></pre></div><p>Execute it</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">./6in4.sh client_ipv4 &lt;mode_type&gt; &lt;subnet_size&gt;</span></span></code></pre></div><table><thead><tr><th>Options</th><th>Optional Option 1</th><th>Optional Option 2</th><th>Optional Option 3</th></tr></thead><tbody><tr><td>&lt;mode_type&gt;</td><td>gre</td><td>sit</td><td>ipip</td></tr><tr><td>&lt;subnet_size&gt;</td><td>64</td><td>80</td><td>112</td></tr></tbody></table><p><code>&lt;mode_type&gt;</code> only support those three protocols for now, the more advanced the more recommended, no fill in the default is <code>sit</code> protocol</p><p><code>&lt;subnet_size&gt;</code> as long as it is larger than the original system subnet mask, and is a multiple of 8, if you don&#39;t fill it in, it defaults to <code>80</code>.</p><p>Remember to replace <code>client_ipv4</code> 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.</p><p>To prevent you from forgetting to copy the commands, the commands themselves will be written to the <code>6in4.log</code> file under the current path, you can use <code>cat 6in4.log</code> to query the commands that need to be executed on the client side</p><p>For copied commands, be sure to select option <code>6in4</code> in <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> before converting!</p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify here</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h3 id="check-server-status" tabindex="-1">Check server status <a class="header-anchor" href="#check-server-status" aria-label="Permalink to &quot;Check server status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl status ndpresponder</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><h3 id="check-client-status" tabindex="-1">Check client status <a class="header-anchor" href="#check-client-status" aria-label="Permalink to &quot;Check client status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><h3 id="delete-tunnel" tabindex="-1">Delete tunnel <a class="header-anchor" href="#delete-tunnel" aria-label="Permalink to &quot;Delete tunnel&quot;"></a></h3><p>server</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set server-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del server-ipv6</span></span></code></pre></div><p>client</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set user-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del user-ipv6</span></span></code></pre></div><p>The above deletion is only temporary, for permanent deletion you must modify and delete the contents of the <code>/etc/network/interfaces</code> file that you have previously added.</p><h3 id="one-more-thing" tabindex="-1">one more thing <a class="header-anchor" href="#one-more-thing" aria-label="Permalink to &quot;one more thing&quot;"></a></h3><p>In fact <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> supports the application of IPV6 subnets of size <code>/48</code></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/07987e41-0158-430c-bcc5-f7cd8652b2c4" alt=""></p><p>Make the request here, then when converting the format change the original <code>/64</code> IPV6 address to a <code>/48</code> IPV6 address and you&#39;ll get a larger IPV6 subnet!</p><h2 id="supplemental-cloudflare-warp-ipv4-ipv6-outbound" tabindex="-1">Supplemental CloudFlare WARP IPv4 / IPv6 outbound <a class="header-anchor" href="#supplemental-cloudflare-warp-ipv4-ipv6-outbound" aria-label="Permalink to &quot;Supplemental CloudFlare WARP IPv4 / IPv6 outbound&quot;"></a></h2><h3 id="_1-benefits" tabindex="-1">1: Benefits <a class="header-anchor" href="#_1-benefits" aria-label="Permalink to &quot;1: Benefits&quot;"></a></h3><ul><li>By installing it on the host machine, all enabled machines can benefit from the advantages of Warp without the need for individual configurations, thus saving resources and simplifying management.</li><li>The use of kernel WireGuard on the host machine enables more efficient operation of WireGuard compared to user-space WireGuard-Go.</li></ul><h3 id="_2-manual-installation" tabindex="-1">2: Manual Installation <a class="header-anchor" href="#_2-manual-installation" aria-label="Permalink to &quot;2: Manual Installation&quot;"></a></h3><h4 id="_2-1-installing-wireguard-dependencies" tabindex="-1">2-1 Installing WireGuard Dependencies <a class="header-anchor" href="#_2-1-installing-wireguard-dependencies" aria-label="Permalink to &quot;2-1 Installing WireGuard Dependencies&quot;"></a></h4><ul><li>Debian and Ubuntu systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">apt update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends net-tools openresolv dnsutils</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends wireguard-tools</span></span></code></pre></div><ul><li>CentOS systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">yum update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install additional package components</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y epel-release </span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y net-tools</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y wireguard-tools</span></span></code></pre></div><h4 id="_2-2-getting-warp-account-information" tabindex="-1">2-2 Getting warp account information <a class="header-anchor" href="#_2-2-getting-warp-account-information" aria-label="Permalink to &quot;2-2 Getting warp account information&quot;"></a></h4><p>Visit <a href="https://warp.cloudflare.now.cc/?run=register&amp;format=yaml" target="_blank" rel="noreferrer">https://warp.cloudflare.now.cc/?run=register&amp;format=yaml</a> and record private_key, v6 2 values</p><p><img src="https://img.imgdd.com/f210f3.5085a04e-edd3-4294-bb34-9e8263360c42.png" alt="image.png"></p><h4 id="_2-3-modifying-configuration-files" tabindex="-1">2-3: Modifying Configuration Files <a class="header-anchor" href="#_2-3-modifying-configuration-files" aria-label="Permalink to &quot;2-3: Modifying Configuration Files&quot;"></a></h4><ul><li><p>Create and edit the /etc/wireguard/warp.conf file, replacing any parts that contain &lt;&gt; (pointy brackets) together, just to make it look obvious.</p></li><li><p>For IPv4-only hosts, Warp takes over IPv6 egress only</p></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v6</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">::/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">162.159</span><span style="color:#C3E88D;">.193.10:2408</span></span></code></pre></div><ul><li>For IPv6 only hosts, Warp takes over IPv4 egress only.</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v</span><span style="color:#89DDFF;">6&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">0.0</span><span style="color:#C3E88D;">.0.0/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> [2606:4700:d0::a29f:c101]:2408</span></span></code></pre></div><ul><li>There&#39;s no need to target dual-stack, after all, native network outlets are better than relaying through Warp</li></ul><h4 id="_2-4-setting-the-address-resolution-priority" tabindex="-1">2-4: Setting the Address Resolution Priority <a class="header-anchor" href="#_2-4-setting-the-address-resolution-priority" aria-label="Permalink to &quot;2-4: Setting the Address Resolution Priority&quot;"></a></h4><p>For IPv4-only host machines, Warp only takes control of the IPv6 outbound, prioritizing the use of the native network&#39;s IPv4 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv4 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-qE</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">||</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">precedence ::ffff:0:0/96 100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><p>For IPv6-only host machines, Warp only takes control of the IPv4 outbound, prioritizing the use of the native network&#39;s IPv6 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv6 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">sed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">/^precedence \\:\\:ffff\\:0\\:0/d;/^label 2002\\:\\:\\/16/d</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><h4 id="_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" tabindex="-1">2-5: Connecting to Warp and setting up the systemd process daemon <a class="header-anchor" href="#_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" aria-label="Permalink to &quot;2-5: Connecting to Warp and setting up the systemd process daemon&quot;"></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run wireguard to connect to Warp. If this step gets stuck and causes the connection to be lost, reboot the host in the background to resolve it.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick up warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv4.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv6.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Disconnect from Warp after successful test.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick down warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Reconnect and set process daemon to take effect automatically after reboot.</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable --now wg-quick@warp</span></span></code></pre></div><h3 id="_3-autorun-fscarmen-s-one-click-scripts" tabindex="-1">3: Autorun: fscarmen&#39;s one-click scripts <a class="header-anchor" href="#_3-autorun-fscarmen-s-one-click-scripts" aria-label="Permalink to &quot;3: Autorun: fscarmen&#39;s one-click scripts&quot;"></a></h3><p>Finally, the one-click script for fscarmen is introduced. The script is mentioned as a handy tool to simplify the configuration process. It also automatically handles advanced parameters such as Optimal MTU, Optimal Endpoint, etc.</p><p>Project: <a href="https://github.com/fscarmen/warp-sh" target="_blank" rel="noreferrer">https://github.com/fscarmen/warp-sh</a></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run one-key script</span></span>
<span class="line"><span style="color:#A6ACCD;">wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh &amp;&amp; bash menu.sh</span></span></code></pre></div><p><img src="https://img.imgdd.com/f210f3.b94cf8fb-82f2-4160-95a7-c2859238284f.png" alt="image.png"></p>`,193),l=[o];function i(p,r,c,d,h,u){return s(),t("div",null,l)}const C=e(n,[["render",i]]);export{m as __pageData,C as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as a,R as s}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/incus/incus_qa.md","filePath":"en/guide/incus/incus_qa.md","lastUpdated":1739016255000}'),o={name:"en/guide/incus/incus_qa.md"},n=s('<h2 id="solve-the-puzzle" tabindex="-1">Solve the puzzle <a class="header-anchor" href="#solve-the-puzzle" aria-label="Permalink to &quot;Solve the puzzle&quot;"></a></h2><h2 id="what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" tabindex="-1">What to do if you open centos7 and find that CGroupV1 is not supported? <a class="header-anchor" href="#what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" aria-label="Permalink to &quot;What to do if you open centos7 and find that CGroupV1 is not supported?&quot;"></a></h2><p>Enable CGroup V1: To enable CGroup V1 on an Ubuntu system, you need to edit the kernel boot parameters.</p><p>Please note that before changing kernel boot parameters, make sure to backup important data and settings to prevent unexpected problems.</p><p>Edit the ```/etc/default/grub<code>file and add</code>systemd.unified_cgroup_hierarchy=0<code>to the end of the parameters in</code>GRUB_CMDLINE_LINUX_DEFAULT``, just like:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash systemd.unified_cgroup_hierarchy=0&quot;</span></span></code></pre></div><p>Save the file and run the following command to update the GRUB boot.</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update-grub</span></span></code></pre></div><p>Reboot the system for the changes to take effect</p><p>If the above changes still do not support the opening of centos7, try using a different host system.</p><h2 id="currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" tabindex="-1">Currently verified VPS vendors that can open containers with separate IPV6 addresses. <a class="header-anchor" href="#currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" aria-label="Permalink to &quot;Currently verified VPS vendors that can open containers with separate IPV6 addresses.&quot;"></a></h2><p><a href="https://my.kuroit.com/aff.php?aff=5" target="_blank" rel="noreferrer">kuroit</a> Phoenix, USA regular</p><p><a href="https://t.me/vps_reviews/338" target="_blank" rel="noreferrer">datalix</a> German AMD Promotions</p>',13),r=[n];function p(i,d,l,c,h,u){return t(),a("div",null,r)}const _=e(o,[["render",p]]);export{m as __pageData,_ as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as a,R as s}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/incus/incus_qa.md","filePath":"en/guide/incus/incus_qa.md","lastUpdated":1739016255000}'),o={name:"en/guide/incus/incus_qa.md"},n=s('<h2 id="solve-the-puzzle" tabindex="-1">Solve the puzzle <a class="header-anchor" href="#solve-the-puzzle" aria-label="Permalink to &quot;Solve the puzzle&quot;"></a></h2><h2 id="what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" tabindex="-1">What to do if you open centos7 and find that CGroupV1 is not supported? <a class="header-anchor" href="#what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" aria-label="Permalink to &quot;What to do if you open centos7 and find that CGroupV1 is not supported?&quot;"></a></h2><p>Enable CGroup V1: To enable CGroup V1 on an Ubuntu system, you need to edit the kernel boot parameters.</p><p>Please note that before changing kernel boot parameters, make sure to backup important data and settings to prevent unexpected problems.</p><p>Edit the ```/etc/default/grub<code>file and add</code>systemd.unified_cgroup_hierarchy=0<code>to the end of the parameters in</code>GRUB_CMDLINE_LINUX_DEFAULT``, just like:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash systemd.unified_cgroup_hierarchy=0&quot;</span></span></code></pre></div><p>Save the file and run the following command to update the GRUB boot.</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update-grub</span></span></code></pre></div><p>Reboot the system for the changes to take effect</p><p>If the above changes still do not support the opening of centos7, try using a different host system.</p><h2 id="currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" tabindex="-1">Currently verified VPS vendors that can open containers with separate IPV6 addresses. <a class="header-anchor" href="#currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" aria-label="Permalink to &quot;Currently verified VPS vendors that can open containers with separate IPV6 addresses.&quot;"></a></h2><p><a href="https://my.kuroit.com/aff.php?aff=5" target="_blank" rel="noreferrer">kuroit</a> Phoenix, USA regular</p><p><a href="https://t.me/vps_reviews/338" target="_blank" rel="noreferrer">datalix</a> German AMD Promotions</p>',13),r=[n];function p(i,d,l,c,h,u){return t(),a("div",null,r)}const _=e(o,[["render",p]]);export{m as __pageData,_ as default};

View File

@@ -1 +0,0 @@
import{_ as t,v as e,b as r,R as n}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/incus/incus_thanks.md","filePath":"en/guide/incus/incus_thanks.md","lastUpdated":1739016255000}'),s={name:"en/guide/incus/incus_thanks.md"},a=n('<h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to &quot;Acknowledgements&quot;"></a></h2><p><a href="https://github.com/lxc/lxd" target="_blank" rel="noreferrer">https://github.com/lxc/lxd</a></p><p><a href="https://discuss.linuxcontainers.org/" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4</a></p><p><a href="https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028</a></p><p><a href="https://github.com/turtle0x1/LxdMosaic" target="_blank" rel="noreferrer">https://github.com/turtle0x1/LxdMosaic</a></p><p><a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/index.html" target="_blank" rel="noreferrer">https://openzfs.github.io/openzfs-docs/Getting Started/Debian/index.html</a></p><p><a href="https://github.com/SuperManito/LinuxMirrors" target="_blank" rel="noreferrer">https://github.com/SuperManito/LinuxMirrors</a></p><p><a href="https://github.com/zabbly/incus" target="_blank" rel="noreferrer">https://github.com/zabbly/incus</a></p>',10),o=[a];function i(c,p,h,l,u,d){return e(),r("div",null,o)}const b=t(s,[["render",i]]);export{f as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as t,v as e,b as r,R as n}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/incus/incus_thanks.md","filePath":"en/guide/incus/incus_thanks.md","lastUpdated":1739016255000}'),s={name:"en/guide/incus/incus_thanks.md"},a=n('<h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to &quot;Acknowledgements&quot;"></a></h2><p><a href="https://github.com/lxc/lxd" target="_blank" rel="noreferrer">https://github.com/lxc/lxd</a></p><p><a href="https://discuss.linuxcontainers.org/" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4</a></p><p><a href="https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028</a></p><p><a href="https://github.com/turtle0x1/LxdMosaic" target="_blank" rel="noreferrer">https://github.com/turtle0x1/LxdMosaic</a></p><p><a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/index.html" target="_blank" rel="noreferrer">https://openzfs.github.io/openzfs-docs/Getting Started/Debian/index.html</a></p><p><a href="https://github.com/SuperManito/LinuxMirrors" target="_blank" rel="noreferrer">https://github.com/SuperManito/LinuxMirrors</a></p><p><a href="https://github.com/zabbly/incus" target="_blank" rel="noreferrer">https://github.com/zabbly/incus</a></p>',10),o=[a];function i(c,p,h,l,u,d){return e(),r("div",null,o)}const b=t(s,[["render",i]]);export{f as __pageData,b as default};

View File

@@ -1,80 +0,0 @@
import{_ as e,v as s,b as t,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Custom","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_custom.md","filePath":"en/guide/lxd/lxd_custom.md","lastUpdated":1739016255000}'),n={name:"en/guide/lxd/lxd_custom.md"},o=a(`<h1 id="custom" tabindex="-1">Custom <a class="header-anchor" href="#custom" aria-label="Permalink to &quot;Custom&quot;"></a></h1><h2 id="attach-free-ipv6-address-segments-to-host-machines" tabindex="-1">Attach free IPV6 address segments to host machines <a class="header-anchor" href="#attach-free-ipv6-address-segments-to-host-machines" aria-label="Permalink to &quot;Attach free IPV6 address segments to host machines&quot;"></a></h2><p>Some machines don&#39;t have an IPV6 /64 subnet on the machine itself, here is a method given to attach an IPV6 subnet for free.</p><p>Here is a solution using the 6in4 method for a host machine that doesn&#39;t have an IPV6 address on its own.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>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.</p></div><p>Here are the platforms that are currently running in 2023 that offer IPV6 subnets for free.</p><table><thead><tr><th>Supported Platforms</th><th>Corresponding Required Installation Packages</th><th>Protocols</th><th>Number of Channels/Subnets</th></tr></thead><tbody><tr><td>tunnelbroker.net</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64 OR 5✖/64</td></tr><tr><td>tunnelbroker.ch</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64</td></tr><tr><td>ip4market.ru</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td>netassist.ua</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td><a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></td><td>ifupdown2</td><td>sit、gre、ipip</td><td>custom</td></tr></tbody></table><p>The free platform only solves the problem that IPV6 is not available, it does not provide premium IPV6 bandwidth.</p><p>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.</p><p>After the installation is complete, select which package is installed behind to convert the format.</p><h3 id="initial-environment-modifications" tabindex="-1">Initial environment modifications <a class="header-anchor" href="#initial-environment-modifications" aria-label="Permalink to &quot;Initial environment modifications&quot;"></a></h3><p>Execute</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">touch /etc/cloud/cloud-init.disabled</span></span></code></pre></div><p>Turn off the automated overwrite of cloud-init first, and then to see what the local machine is using to manage the network, run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active systemd-networkd</span></span></code></pre></div><p>and</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active networking</span></span></code></pre></div><p>See which case this falls into, if it&#39;s the former active and the latter inactive, you need to reinstall/DD a system that isn&#39;t configured this way, or switch the local machine to use ifupdown/ifupdown2 to manage network execution</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Judge for yourself whether you need to disable the original network management or not</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd.socket</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd.socket</span></span></code></pre></div><p>If you want to install <code>ifupdown</code> to control the network, this tool is available on all major linux systems.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown -y</span></span></code></pre></div><p>If you want to install <code>ifupdown2</code> for network management, which is generally only available on debian systems, you can install</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown2 -y</span></span></code></pre></div><p>After the installation is complete, select which package is installed behind to convert the format.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl start networking</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable networking</span></span></code></pre></div><p>Then restart the server, check whether the machine&#39;s network will be rebooted due to the modification of the case of loss of connection, and run<code>uptime</code>to observe that the startup has been more than 1 minute before proceeding to the next steps</p><p>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.</p><p>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</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">default_route=$(ip -6 route show | awk &#39;/default via/{print $3}&#39;) &amp;&amp; [ -n &quot;$default_route&quot; ] &amp;&amp; ip -6 route del default via $default_route dev eth0</span></span></code></pre></div><p>This assumes that your client&#39;s server&#39;s default NIC is <code>eth0</code>, you can use <code>ip -6 route</code> to see the default route and replace it, the default route starts with <code>default via</code>, and uses <code>dev</code> to specify the default NIC, you just need to find it according to this rule</p><h3 id="currently-supported-platforms" tabindex="-1">Currently supported platforms <a class="header-anchor" href="#currently-supported-platforms" aria-label="Permalink to &quot;Currently supported platforms&quot;"></a></h3><h4 id="tunnelbroker-net" tabindex="-1">tunnelbroker_net <a class="header-anchor" href="#tunnelbroker-net" aria-label="Permalink to &quot;tunnelbroker_net&quot;"></a></h4><p>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</p><p>The downside is that the addresses are dark/dirty, and cloudflare&#39;s cdn will most likely not be able to latch on, test it yourself</p><ol><li>Register an account at <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> and click<code>Create Regular Tunnel</code>on the left.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/35923be5-821f-45c8-8401-962ea3f97726" alt="1"></p><ol start="2"><li>Fill in your server&#39;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<code>Create Tunnel</code>to create the tunnel when you are prompted by the green box!</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/cab04113-4d6a-4d6f-9952-d3851057fc4a" alt="2"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/518dc62a-c8d0-48e3-bb13-befc39348990" alt="3"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/6188de3f-e83c-400e-9594-dd3f73aaf46a" alt="4"></p><ol start="3"><li>Wait for the following screen, click<code>Example Configurations</code>and select the corresponding system, for example, the host of LXD is definitely Debian/Ubuntu.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9f0045fc-b1ac-4954-9ecd-1fba47d07d8a" alt="5"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/2fb7c951-371c-452c-b775-78f69b980a2c" alt="6"></p><ol start="4"><li>The boxed part is the file to be modified and the content to be filled in.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/c0156902-b4c0-4001-823e-50f611215393" alt="7"></p><ol start="5"><li>Exchange the format of the command then add IPV6 settings to your network configuration file.</li></ol><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerNet</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Here, copy and paste the contents of the configuration file in the red box, and then run this command.</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you can use<code>cat /etc/network/interfaces</code>to see if the configuration file is written correctly.</p><ol start="6"><li>If all of the above is OK, then you need to enable the network interfaces</li></ol><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><ol start="7"><li>Then you can test the IP address of the network interface.</li></ol><p>Execute the<code>ifconfig</code>command, and there should be a he-ipv6 interface, similar to the following:</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/1760af85-2b60-4352-ad8c-3c69e49fc1e4" alt="8"></p><p>Or execute:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><p>Returns the IPV6 address you bound to</p><ol start="8"><li>Additional settings for NAT VPS</li></ol><p>IPv4 NAT VPS may require some additional settings beyond the IP replacement operation mentioned earlier, otherwise it may still not be able to access the IPv6 network.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ufw -y</span></span>
<span class="line"><span style="color:#A6ACCD;">ufw allow 41</span></span></code></pre></div><p>Add the relevant routing rules</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">route -A inet6 add ::/0 dev he-ipv6</span></span></code></pre></div><ol start="9"><li>If the IPV6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.</li></ol><p>If you want to delete the he-ipv6 network interface configuration (if not, it will be enabled automatically after reboot), remember to modify the<code>/etc/network/interfaces</code>file to remove the content added in the red box before.</p><p>Then reboot the server to remove the</p><h4 id="tunnelbroker-ch" tabindex="-1">tunnelbroker_ch <a class="header-anchor" href="#tunnelbroker-ch" aria-label="Permalink to &quot;tunnelbroker_ch&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://www.tunnelbroker.ch/" target="_blank" rel="noreferrer">https://www.tunnelbroker.ch/</a> and click on the activation email after registering.</p><p>Then you have to fill in the IPV4 address of your server.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/e018c7bc-e73c-4c68-88b6-b073f0dbd150" alt=""></p><p>After creating an account, you need to go to the Config page instead of the details page.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/d919dda7-571d-45b1-9d2f-03f29866269e" alt=""></p><p>Don&#39;t use the following page, first refresh the page without the light blue box and then stop refreshing it</p><p>Don&#39;t stop refreshing after the light blue box pops up</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/aefd1477-d5f5-4a4e-a66c-80ef5f9250c6" alt=""></p><p>Record the content of the last red box on the following page, and prepare to modify the host configuration file.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9329974c-9549-4ff2-a8a0-a53c00e2863d" alt=""></p><p>Copy the last red box of the page without the blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerCh</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="ip4market-ru" tabindex="-1">ip4market_ru <a class="header-anchor" href="#ip4market-ru" aria-label="Permalink to &quot;ip4market_ru&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://tb.ip4market.ru/" target="_blank" rel="noreferrer">https://tb.ip4market.ru</a>, 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.</p><p>The IP address is the IPV4 address of the host computer you are attaching to<img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/24df37f2-12fe-49b6-87df-f07213346fbe" alt=""></p><p>Then you have to go through Recaptcha&#39;s human-machine verification, and click register.</p><p>You will receive an activation email with your password, memorize it.</p><p>Then login on the homepage</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/38b3f5a7-a5e1-47e0-b13e-8570e946c61c" alt=""></p><p>Then you will be taken to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/fc1d38b9-b45a-41de-a931-5dbe96e9791c" alt=""></p><p>Hold down the right button and copy the four lines framed in red, which are</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Server IPv4.</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">Server IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv6</span></span></code></pre></div><p>For these four lines, press ctrl+c to copy or right-click to copy</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/69c946e6-e82f-4665-b3c1-3c97e27f8487" alt=""></p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>ip4market</code>, 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.</p><p>Then click<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/b9ca3ee1-4f13-4e10-bdc8-1ed1cc23ab05" alt=""></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="netassist-ua" tabindex="-1">netassist_ua <a class="header-anchor" href="#netassist-ua" aria-label="Permalink to &quot;netassist_ua&quot;"></a></h4><p>Similar to the above operation, first in <a href="https://tb.netassist.ua/" target="_blank" rel="noreferrer">https://tb.netassist.ua/</a> register an account first, after registration, click on the activation of the mail, the activation page will have a password display, remember to record!</p><p>Then fill in the IPV4 address of your server, you can change it later, just fill in a random one first.</p><p>Then you will get to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/4af680d4-3b01-495a-91d1-3cf4f187d0df" alt="a"></p><p>The first red box is the location of your host&#39;s IPV4 address, if you want to modify it, modify it there, and then click change to save.</p><p>The second red box is for\`\`\`Linux\`\`, and then click on show</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/099d43a0-0397-4e02-9275-9ec3099c0ff1" alt="b"></p><p>The above content will appear, copy all the boxed parts without blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>NetAssist</code>, 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.</p><p>Then click on<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/7324c7ff-d22f-4c17-b3c2-b5338ca6dfee" alt="c"></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h2 id="transfer-ipv6-subnets-between-different-servers" tabindex="-1">Transfer IPV6 subnets between different servers <a class="header-anchor" href="#transfer-ipv6-subnets-between-different-servers" aria-label="Permalink to &quot;Transfer IPV6 subnets between different servers&quot;"></a></h2><p>Related repository: <a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></p><p>This method will provide a way to split a /80 out of the IPV6 segment on A and attach it to B to use.</p><h3 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to &quot;Features&quot;"></a></h3><ul><li>Self-built IPv6 tunnel for sit/gre/ipip protocols</li><li>Support to customize the IPV6 subnet size to be cut out, and the appropriate IPV6 subnet information in CIDR format will be calculated automatically.</li><li>Automatically recognizes the IPV6 subnet size of the server side</li><li>will automatically set up the tunnel server and print the commands that the client needs to execute</li><li>Setting up the IPV6 tunnel is easy to understand and easy to remove</li></ul><h3 id="environmental-preparation" tabindex="-1">Environmental Preparation <a class="header-anchor" href="#environmental-preparation" aria-label="Permalink to &quot;Environmental Preparation&quot;"></a></h3><table><thead><tr><th>VPS(A)</th><th>VPS(B)</th></tr></thead><tbody><tr><td>one IPV4 address (server_ipv4)</td><td>one IPV4 address (clinet_ipv4)</td></tr><tr><td>one IPV6 subnet</td><td>no IPV6 address</td></tr><tr><td>Hereafter referred to as server</td><td>Hereafter referred to as client</td></tr></tbody></table><h3 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;"></a></h3><p>Download Script</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://raw.githubusercontent.com/oneclickvirt/6in4/main/6in4.sh -o 6in4.sh &amp;&amp; chmod +x 6in4.sh</span></span></code></pre></div><p>Execute it</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">./6in4.sh client_ipv4 &lt;mode_type&gt; &lt;subnet_size&gt;</span></span></code></pre></div><table><thead><tr><th>Options</th><th>Optional Option 1</th><th>Optional Option 2</th><th>Optional Option 3</th></tr></thead><tbody><tr><td>&lt;mode_type&gt;</td><td>gre</td><td>sit</td><td>ipip</td></tr><tr><td>&lt;subnet_size&gt;</td><td>64</td><td>80</td><td>112</td></tr></tbody></table><p><code>&lt;mode_type&gt;</code> only support those three protocols for now, the more advanced the more recommended, no fill in the default is <code>sit</code> protocol</p><p><code>&lt;subnet_size&gt;</code> as long as it is larger than the original system subnet mask, and is a multiple of 8, if you don&#39;t fill it in, it defaults to <code>80</code>.</p><p>Remember to replace <code>client_ipv4</code> 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.</p><p>To prevent you from forgetting to copy the commands, the commands themselves will be written to the <code>6in4.log</code> file under the current path, you can use <code>cat 6in4.log</code> to query the commands that need to be executed on the client side</p><p>For copied commands, be sure to select option <code>6in4</code> in <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> before converting!</p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify here</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h3 id="check-server-status" tabindex="-1">Check server status <a class="header-anchor" href="#check-server-status" aria-label="Permalink to &quot;Check server status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl status ndpresponder</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><h3 id="check-client-status" tabindex="-1">Check client status <a class="header-anchor" href="#check-client-status" aria-label="Permalink to &quot;Check client status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><h3 id="delete-tunnel" tabindex="-1">Delete tunnel <a class="header-anchor" href="#delete-tunnel" aria-label="Permalink to &quot;Delete tunnel&quot;"></a></h3><p>server</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set server-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del server-ipv6</span></span></code></pre></div><p>client</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set user-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del user-ipv6</span></span></code></pre></div><p>The above deletion is only temporary, for permanent deletion you must modify and delete the contents of the <code>/etc/network/interfaces</code> file that you have previously added.</p><h3 id="one-more-thing" tabindex="-1">one more thing <a class="header-anchor" href="#one-more-thing" aria-label="Permalink to &quot;one more thing&quot;"></a></h3><p>In fact <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> supports the application of IPV6 subnets of size <code>/48</code></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/07987e41-0158-430c-bcc5-f7cd8652b2c4" alt=""></p><p>Make the request here, then when converting the format change the original <code>/64</code> IPV6 address to a <code>/48</code> IPV6 address and you&#39;ll get a larger IPV6 subnet!</p><h2 id="supplemental-cloudflare-warp-ipv4-ipv6-outbound" tabindex="-1">Supplemental CloudFlare WARP IPv4 / IPv6 outbound <a class="header-anchor" href="#supplemental-cloudflare-warp-ipv4-ipv6-outbound" aria-label="Permalink to &quot;Supplemental CloudFlare WARP IPv4 / IPv6 outbound&quot;"></a></h2><h3 id="_1-benefits" tabindex="-1">1: Benefits <a class="header-anchor" href="#_1-benefits" aria-label="Permalink to &quot;1: Benefits&quot;"></a></h3><ul><li>By installing it on the host machine, all enabled machines can benefit from the advantages of Warp without the need for individual configurations, thus saving resources and simplifying management.</li><li>The use of kernel WireGuard on the host machine enables more efficient operation of WireGuard compared to user-space WireGuard-Go.</li></ul><h3 id="_2-manual-installation" tabindex="-1">2: Manual Installation <a class="header-anchor" href="#_2-manual-installation" aria-label="Permalink to &quot;2: Manual Installation&quot;"></a></h3><h4 id="_2-1-installing-wireguard-dependencies" tabindex="-1">2-1 Installing WireGuard Dependencies <a class="header-anchor" href="#_2-1-installing-wireguard-dependencies" aria-label="Permalink to &quot;2-1 Installing WireGuard Dependencies&quot;"></a></h4><ul><li>Debian and Ubuntu systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">apt update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends net-tools openresolv dnsutils</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends wireguard-tools</span></span></code></pre></div><ul><li>CentOS systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">yum update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install additional package components</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y epel-release </span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y net-tools</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y wireguard-tools</span></span></code></pre></div><h4 id="_2-2-getting-warp-account-information" tabindex="-1">2-2 Getting warp account information <a class="header-anchor" href="#_2-2-getting-warp-account-information" aria-label="Permalink to &quot;2-2 Getting warp account information&quot;"></a></h4><p>Visit <a href="https://warp.cloudflare.now.cc/?run=register&amp;format=yaml" target="_blank" rel="noreferrer">https://warp.cloudflare.now.cc/?run=register&amp;format=yaml</a> and record private_key, v6 2 values</p><p><img src="https://img.imgdd.com/f210f3.5085a04e-edd3-4294-bb34-9e8263360c42.png" alt="image.png"></p><h4 id="_2-3-modifying-configuration-files" tabindex="-1">2-3: Modifying Configuration Files <a class="header-anchor" href="#_2-3-modifying-configuration-files" aria-label="Permalink to &quot;2-3: Modifying Configuration Files&quot;"></a></h4><ul><li><p>Create and edit the /etc/wireguard/warp.conf file, replacing any parts that contain &lt;&gt; (pointy brackets) together, just to make it look obvious.</p></li><li><p>For IPv4-only hosts, Warp takes over IPv6 egress only</p></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v6</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">::/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">162.159</span><span style="color:#C3E88D;">.193.10:2408</span></span></code></pre></div><ul><li>For IPv6 only hosts, Warp takes over IPv4 egress only.</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v</span><span style="color:#89DDFF;">6&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">0.0</span><span style="color:#C3E88D;">.0.0/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> [2606:4700:d0::a29f:c101]:2408</span></span></code></pre></div><ul><li>There&#39;s no need to target dual-stack, after all, native network outlets are better than relaying through Warp</li></ul><h4 id="_2-4-setting-the-address-resolution-priority" tabindex="-1">2-4: Setting the Address Resolution Priority <a class="header-anchor" href="#_2-4-setting-the-address-resolution-priority" aria-label="Permalink to &quot;2-4: Setting the Address Resolution Priority&quot;"></a></h4><p>For IPv4-only host machines, Warp only takes control of the IPv6 outbound, prioritizing the use of the native network&#39;s IPv4 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv4 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-qE</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">||</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">precedence ::ffff:0:0/96 100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><p>For IPv6-only host machines, Warp only takes control of the IPv4 outbound, prioritizing the use of the native network&#39;s IPv6 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv6 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">sed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">/^precedence \\:\\:ffff\\:0\\:0/d;/^label 2002\\:\\:\\/16/d</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><h4 id="_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" tabindex="-1">2-5: Connecting to Warp and setting up the systemd process daemon <a class="header-anchor" href="#_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" aria-label="Permalink to &quot;2-5: Connecting to Warp and setting up the systemd process daemon&quot;"></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run wireguard to connect to Warp. If this step gets stuck and causes the connection to be lost, reboot the host in the background to resolve it.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick up warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv4.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv6.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Disconnect from Warp after successful test.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick down warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Reconnect and set process daemon to take effect automatically after reboot.</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable --now wg-quick@warp</span></span></code></pre></div><h3 id="_3-autorun-fscarmen-s-one-click-scripts" tabindex="-1">3: Autorun: fscarmen&#39;s one-click scripts <a class="header-anchor" href="#_3-autorun-fscarmen-s-one-click-scripts" aria-label="Permalink to &quot;3: Autorun: fscarmen&#39;s one-click scripts&quot;"></a></h3><p>Finally, the one-click script for fscarmen is introduced. The script is mentioned as a handy tool to simplify the configuration process. It also automatically handles advanced parameters such as Optimal MTU, Optimal Endpoint, etc.</p><p>Project: <a href="https://github.com/fscarmen/warp-sh" target="_blank" rel="noreferrer">https://github.com/fscarmen/warp-sh</a></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run one-key script</span></span>
<span class="line"><span style="color:#A6ACCD;">wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh &amp;&amp; bash menu.sh</span></span></code></pre></div><p><img src="https://img.imgdd.com/f210f3.b94cf8fb-82f2-4160-95a7-c2859238284f.png" alt="image.png"></p>`,193),l=[o];function p(i,r,c,d,h,u){return s(),t("div",null,l)}const C=e(n,[["render",p]]);export{m as __pageData,C as default};

View File

@@ -1,80 +0,0 @@
import{_ as e,v as s,b as t,R as a}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"Custom","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_custom.md","filePath":"en/guide/lxd/lxd_custom.md","lastUpdated":1739016255000}'),n={name:"en/guide/lxd/lxd_custom.md"},o=a(`<h1 id="custom" tabindex="-1">Custom <a class="header-anchor" href="#custom" aria-label="Permalink to &quot;Custom&quot;"></a></h1><h2 id="attach-free-ipv6-address-segments-to-host-machines" tabindex="-1">Attach free IPV6 address segments to host machines <a class="header-anchor" href="#attach-free-ipv6-address-segments-to-host-machines" aria-label="Permalink to &quot;Attach free IPV6 address segments to host machines&quot;"></a></h2><p>Some machines don&#39;t have an IPV6 /64 subnet on the machine itself, here is a method given to attach an IPV6 subnet for free.</p><p>Here is a solution using the 6in4 method for a host machine that doesn&#39;t have an IPV6 address on its own.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>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.</p></div><p>Here are the platforms that are currently running in 2023 that offer IPV6 subnets for free.</p><table><thead><tr><th>Supported Platforms</th><th>Corresponding Required Installation Packages</th><th>Protocols</th><th>Number of Channels/Subnets</th></tr></thead><tbody><tr><td>tunnelbroker.net</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64 OR 5✖/64</td></tr><tr><td>tunnelbroker.ch</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>3✖/64</td></tr><tr><td>ip4market.ru</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td>netassist.ua</td><td>ifupdown OR ifupdown2</td><td>v4tunnel OR sit</td><td>1✖/64</td></tr><tr><td><a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></td><td>ifupdown2</td><td>sit、gre、ipip</td><td>custom</td></tr></tbody></table><p>The free platform only solves the problem that IPV6 is not available, it does not provide premium IPV6 bandwidth.</p><p>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.</p><p>After the installation is complete, select which package is installed behind to convert the format.</p><h3 id="initial-environment-modifications" tabindex="-1">Initial environment modifications <a class="header-anchor" href="#initial-environment-modifications" aria-label="Permalink to &quot;Initial environment modifications&quot;"></a></h3><p>Execute</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">touch /etc/cloud/cloud-init.disabled</span></span></code></pre></div><p>Turn off the automated overwrite of cloud-init first, and then to see what the local machine is using to manage the network, run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active systemd-networkd</span></span></code></pre></div><p>and</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl is-active networking</span></span></code></pre></div><p>See which case this falls into, if it&#39;s the former active and the latter inactive, you need to reinstall/DD a system that isn&#39;t configured this way, or switch the local machine to use ifupdown/ifupdown2 to manage network execution</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Judge for yourself whether you need to disable the original network management or not</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl stop systemd-networkd.socket</span></span>
<span class="line"><span style="color:#A6ACCD;"># systemctl disable systemd-networkd.socket</span></span></code></pre></div><p>If you want to install <code>ifupdown</code> to control the network, this tool is available on all major linux systems.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown -y</span></span></code></pre></div><p>If you want to install <code>ifupdown2</code> for network management, which is generally only available on debian systems, you can install</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ifupdown2 -y</span></span></code></pre></div><p>After the installation is complete, select which package is installed behind to convert the format.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl start networking</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable networking</span></span></code></pre></div><p>Then restart the server, check whether the machine&#39;s network will be rebooted due to the modification of the case of loss of connection, and run<code>uptime</code>to observe that the startup has been more than 1 minute before proceeding to the next steps</p><p>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.</p><p>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</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">default_route=$(ip -6 route show | awk &#39;/default via/{print $3}&#39;) &amp;&amp; [ -n &quot;$default_route&quot; ] &amp;&amp; ip -6 route del default via $default_route dev eth0</span></span></code></pre></div><p>This assumes that your client&#39;s server&#39;s default NIC is <code>eth0</code>, you can use <code>ip -6 route</code> to see the default route and replace it, the default route starts with <code>default via</code>, and uses <code>dev</code> to specify the default NIC, you just need to find it according to this rule</p><h3 id="currently-supported-platforms" tabindex="-1">Currently supported platforms <a class="header-anchor" href="#currently-supported-platforms" aria-label="Permalink to &quot;Currently supported platforms&quot;"></a></h3><h4 id="tunnelbroker-net" tabindex="-1">tunnelbroker_net <a class="header-anchor" href="#tunnelbroker-net" aria-label="Permalink to &quot;tunnelbroker_net&quot;"></a></h4><p>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</p><p>The downside is that the addresses are dark/dirty, and cloudflare&#39;s cdn will most likely not be able to latch on, test it yourself</p><ol><li>Register an account at <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> and click<code>Create Regular Tunnel</code>on the left.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/35923be5-821f-45c8-8401-962ea3f97726" alt="1"></p><ol start="2"><li>Fill in your server&#39;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<code>Create Tunnel</code>to create the tunnel when you are prompted by the green box!</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/cab04113-4d6a-4d6f-9952-d3851057fc4a" alt="2"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/518dc62a-c8d0-48e3-bb13-befc39348990" alt="3"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/6188de3f-e83c-400e-9594-dd3f73aaf46a" alt="4"></p><ol start="3"><li>Wait for the following screen, click<code>Example Configurations</code>and select the corresponding system, for example, the host of LXD is definitely Debian/Ubuntu.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9f0045fc-b1ac-4954-9ecd-1fba47d07d8a" alt="5"></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/2fb7c951-371c-452c-b775-78f69b980a2c" alt="6"></p><ol start="4"><li>The boxed part is the file to be modified and the content to be filled in.</li></ol><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/c0156902-b4c0-4001-823e-50f611215393" alt="7"></p><ol start="5"><li>Exchange the format of the command then add IPV6 settings to your network configuration file.</li></ol><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerNet</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Here, copy and paste the contents of the configuration file in the red box, and then run this command.</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you can use<code>cat /etc/network/interfaces</code>to see if the configuration file is written correctly.</p><ol start="6"><li>If all of the above is OK, then you need to enable the network interfaces</li></ol><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><ol start="7"><li>Then you can test the IP address of the network interface.</li></ol><p>Execute the<code>ifconfig</code>command, and there should be a he-ipv6 interface, similar to the following:</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/1760af85-2b60-4352-ad8c-3c69e49fc1e4" alt="8"></p><p>Or execute:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><p>Returns the IPV6 address you bound to</p><ol start="8"><li>Additional settings for NAT VPS</li></ol><p>IPv4 NAT VPS may require some additional settings beyond the IP replacement operation mentioned earlier, otherwise it may still not be able to access the IPv6 network.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install ufw -y</span></span>
<span class="line"><span style="color:#A6ACCD;">ufw allow 41</span></span></code></pre></div><p>Add the relevant routing rules</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">route -A inet6 add ::/0 dev he-ipv6</span></span></code></pre></div><ol start="9"><li>If the IPV6 network is no longer needed and you want to delete it, delete the he-ipv6 network interface configuration.</li></ol><p>If you want to delete the he-ipv6 network interface configuration (if not, it will be enabled automatically after reboot), remember to modify the<code>/etc/network/interfaces</code>file to remove the content added in the red box before.</p><p>Then reboot the server to remove the</p><h4 id="tunnelbroker-ch" tabindex="-1">tunnelbroker_ch <a class="header-anchor" href="#tunnelbroker-ch" aria-label="Permalink to &quot;tunnelbroker_ch&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://www.tunnelbroker.ch/" target="_blank" rel="noreferrer">https://www.tunnelbroker.ch/</a> and click on the activation email after registering.</p><p>Then you have to fill in the IPV4 address of your server.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/e018c7bc-e73c-4c68-88b6-b073f0dbd150" alt=""></p><p>After creating an account, you need to go to the Config page instead of the details page.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/d919dda7-571d-45b1-9d2f-03f29866269e" alt=""></p><p>Don&#39;t use the following page, first refresh the page without the light blue box and then stop refreshing it</p><p>Don&#39;t stop refreshing after the light blue box pops up</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/aefd1477-d5f5-4a4e-a66c-80ef5f9250c6" alt=""></p><p>Record the content of the last red box on the following page, and prepare to modify the host configuration file.</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/9329974c-9549-4ff2-a8a0-a53c00e2863d" alt=""></p><p>Copy the last red box of the page without the blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>TunnelBrokerCh</code>, 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.</p><p>Then click<code>Covert</code>to convert the format, and wait for the page to refresh to show the converted configuration file.</p><p>Then use vim or vi to modify the<code>/etc/network/interfaces</code>file to add content, or modify the following command to add new content</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="ip4market-ru" tabindex="-1">ip4market_ru <a class="header-anchor" href="#ip4market-ru" aria-label="Permalink to &quot;ip4market_ru&quot;"></a></h4><p>Similar to the above, first register an account at <a href="https://tb.ip4market.ru/" target="_blank" rel="noreferrer">https://tb.ip4market.ru</a>, 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.</p><p>The IP address is the IPV4 address of the host computer you are attaching to<img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/24df37f2-12fe-49b6-87df-f07213346fbe" alt=""></p><p>Then you have to go through Recaptcha&#39;s human-machine verification, and click register.</p><p>You will receive an activation email with your password, memorize it.</p><p>Then login on the homepage</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/38b3f5a7-a5e1-47e0-b13e-8570e946c61c" alt=""></p><p>Then you will be taken to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/fc1d38b9-b45a-41de-a931-5dbe96e9791c" alt=""></p><p>Hold down the right button and copy the four lines framed in red, which are</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Server IPv4.</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">Server IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">Client IPv6</span></span></code></pre></div><p>For these four lines, press ctrl+c to copy or right-click to copy</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/69c946e6-e82f-4665-b3c1-3c97e27f8487" alt=""></p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>ip4market</code>, 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.</p><p>Then click<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/b9ca3ee1-4f13-4e10-bdc8-1ed1cc23ab05" alt=""></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h4 id="netassist-ua" tabindex="-1">netassist_ua <a class="header-anchor" href="#netassist-ua" aria-label="Permalink to &quot;netassist_ua&quot;"></a></h4><p>Similar to the above operation, first in <a href="https://tb.netassist.ua/" target="_blank" rel="noreferrer">https://tb.netassist.ua/</a> register an account first, after registration, click on the activation of the mail, the activation page will have a password display, remember to record!</p><p>Then fill in the IPV4 address of your server, you can change it later, just fill in a random one first.</p><p>Then you will get to this page</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/4af680d4-3b01-495a-91d1-3cf4f187d0df" alt="a"></p><p>The first red box is the location of your host&#39;s IPV4 address, if you want to modify it, modify it there, and then click change to save.</p><p>The second red box is for\`\`\`Linux\`\`, and then click on show</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/099d43a0-0397-4e02-9275-9ec3099c0ff1" alt="b"></p><p>The above content will appear, copy all the boxed parts without blank lines.</p><p>Then open <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> and select<code>Option</code>for<code>NetAssist</code>, 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.</p><p>Then click on<code>Covert</code>to convert the formatting</p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/7324c7ff-d22f-4c17-b3c2-b5338ca6dfee" alt="c"></p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify the</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h2 id="transfer-ipv6-subnets-between-different-servers" tabindex="-1">Transfer IPV6 subnets between different servers <a class="header-anchor" href="#transfer-ipv6-subnets-between-different-servers" aria-label="Permalink to &quot;Transfer IPV6 subnets between different servers&quot;"></a></h2><p>Related repository: <a href="https://github.com/oneclickvirt/6in4" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/6in4</a></p><p>This method will provide a way to split a /80 out of the IPV6 segment on A and attach it to B to use.</p><h3 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to &quot;Features&quot;"></a></h3><ul><li>Self-built IPv6 tunnel for sit/gre/ipip protocols</li><li>Support to customize the IPV6 subnet size to be cut out, and the appropriate IPV6 subnet information in CIDR format will be calculated automatically.</li><li>Automatically recognizes the IPV6 subnet size of the server side</li><li>will automatically set up the tunnel server and print the commands that the client needs to execute</li><li>Setting up the IPV6 tunnel is easy to understand and easy to remove</li></ul><h3 id="environmental-preparation" tabindex="-1">Environmental Preparation <a class="header-anchor" href="#environmental-preparation" aria-label="Permalink to &quot;Environmental Preparation&quot;"></a></h3><table><thead><tr><th>VPS(A)</th><th>VPS(B)</th></tr></thead><tbody><tr><td>one IPV4 address (server_ipv4)</td><td>one IPV4 address (clinet_ipv4)</td></tr><tr><td>one IPV6 subnet</td><td>no IPV6 address</td></tr><tr><td>Hereafter referred to as server</td><td>Hereafter referred to as client</td></tr></tbody></table><h3 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;"></a></h3><p>Download Script</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -L https://raw.githubusercontent.com/oneclickvirt/6in4/main/6in4.sh -o 6in4.sh &amp;&amp; chmod +x 6in4.sh</span></span></code></pre></div><p>Execute it</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">./6in4.sh client_ipv4 &lt;mode_type&gt; &lt;subnet_size&gt;</span></span></code></pre></div><table><thead><tr><th>Options</th><th>Optional Option 1</th><th>Optional Option 2</th><th>Optional Option 3</th></tr></thead><tbody><tr><td>&lt;mode_type&gt;</td><td>gre</td><td>sit</td><td>ipip</td></tr><tr><td>&lt;subnet_size&gt;</td><td>64</td><td>80</td><td>112</td></tr></tbody></table><p><code>&lt;mode_type&gt;</code> only support those three protocols for now, the more advanced the more recommended, no fill in the default is <code>sit</code> protocol</p><p><code>&lt;subnet_size&gt;</code> as long as it is larger than the original system subnet mask, and is a multiple of 8, if you don&#39;t fill it in, it defaults to <code>80</code>.</p><p>Remember to replace <code>client_ipv4</code> 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.</p><p>To prevent you from forgetting to copy the commands, the commands themselves will be written to the <code>6in4.log</code> file under the current path, you can use <code>cat 6in4.log</code> to query the commands that need to be executed on the client side</p><p>For copied commands, be sure to select option <code>6in4</code> in <a href="https://ipv6tunnel.spiritlhl.top/" target="_blank" rel="noreferrer">https://ipv6tunnel.spiritlhl.top/</a> before converting!</p><p>Then the page will be refreshed automatically and you need to modify the contents of the<code>/etc/network/interfaces</code>file with vim or vi commands, or modify the following commands to add new contents.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">tee -a /etc/network/interfaces &lt;&lt;EOF</span></span>
<span class="line"><span style="color:#A6ACCD;"># Modify here</span></span>
<span class="line"><span style="color:#A6ACCD;">EOF</span></span></code></pre></div><p>Then you&#39;ll need to reboot the system a bit, or run</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt-get install net-tools iproute2 -y</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl restart networking</span></span></code></pre></div><p>Make sure the environment is OK before you do anything else</p><h3 id="check-server-status" tabindex="-1">Check server status <a class="header-anchor" href="#check-server-status" aria-label="Permalink to &quot;Check server status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl status ndpresponder</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><h3 id="check-client-status" tabindex="-1">Check client status <a class="header-anchor" href="#check-client-status" aria-label="Permalink to &quot;Check client status&quot;"></a></h3><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip addr show</span></span></code></pre></div><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl ipv6.ip.sb</span></span></code></pre></div><h3 id="delete-tunnel" tabindex="-1">Delete tunnel <a class="header-anchor" href="#delete-tunnel" aria-label="Permalink to &quot;Delete tunnel&quot;"></a></h3><p>server</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set server-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del server-ipv6</span></span></code></pre></div><p>client</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ip link set user-ipv6 down</span></span>
<span class="line"><span style="color:#A6ACCD;">ip tunnel del user-ipv6</span></span></code></pre></div><p>The above deletion is only temporary, for permanent deletion you must modify and delete the contents of the <code>/etc/network/interfaces</code> file that you have previously added.</p><h3 id="one-more-thing" tabindex="-1">one more thing <a class="header-anchor" href="#one-more-thing" aria-label="Permalink to &quot;one more thing&quot;"></a></h3><p>In fact <a href="https://tunnelbroker.net/" target="_blank" rel="noreferrer">https://tunnelbroker.net/</a> supports the application of IPV6 subnets of size <code>/48</code></p><p><img src="https://github.com/oneclickvirt/oneclickvirt.github.io/assets/103393591/07987e41-0158-430c-bcc5-f7cd8652b2c4" alt=""></p><p>Make the request here, then when converting the format change the original <code>/64</code> IPV6 address to a <code>/48</code> IPV6 address and you&#39;ll get a larger IPV6 subnet!</p><h2 id="supplemental-cloudflare-warp-ipv4-ipv6-outbound" tabindex="-1">Supplemental CloudFlare WARP IPv4 / IPv6 outbound <a class="header-anchor" href="#supplemental-cloudflare-warp-ipv4-ipv6-outbound" aria-label="Permalink to &quot;Supplemental CloudFlare WARP IPv4 / IPv6 outbound&quot;"></a></h2><h3 id="_1-benefits" tabindex="-1">1: Benefits <a class="header-anchor" href="#_1-benefits" aria-label="Permalink to &quot;1: Benefits&quot;"></a></h3><ul><li>By installing it on the host machine, all enabled machines can benefit from the advantages of Warp without the need for individual configurations, thus saving resources and simplifying management.</li><li>The use of kernel WireGuard on the host machine enables more efficient operation of WireGuard compared to user-space WireGuard-Go.</li></ul><h3 id="_2-manual-installation" tabindex="-1">2: Manual Installation <a class="header-anchor" href="#_2-manual-installation" aria-label="Permalink to &quot;2: Manual Installation&quot;"></a></h3><h4 id="_2-1-installing-wireguard-dependencies" tabindex="-1">2-1 Installing WireGuard Dependencies <a class="header-anchor" href="#_2-1-installing-wireguard-dependencies" aria-label="Permalink to &quot;2-1 Installing WireGuard Dependencies&quot;"></a></h4><ul><li>Debian and Ubuntu systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">apt update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends net-tools openresolv dnsutils</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">apt install -y --no-install-recommends wireguard-tools</span></span></code></pre></div><ul><li>CentOS systems</li></ul><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Update dependent libraries</span></span>
<span class="line"><span style="color:#A6ACCD;">yum update -y</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install additional package components</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y epel-release </span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard runtime dependencies</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y net-tools</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Install WireGuard protocol-compatible toolset</span></span>
<span class="line"><span style="color:#A6ACCD;">yum install -y wireguard-tools</span></span></code></pre></div><h4 id="_2-2-getting-warp-account-information" tabindex="-1">2-2 Getting warp account information <a class="header-anchor" href="#_2-2-getting-warp-account-information" aria-label="Permalink to &quot;2-2 Getting warp account information&quot;"></a></h4><p>Visit <a href="https://warp.cloudflare.now.cc/?run=register&amp;format=yaml" target="_blank" rel="noreferrer">https://warp.cloudflare.now.cc/?run=register&amp;format=yaml</a> and record private_key, v6 2 values</p><p><img src="https://img.imgdd.com/f210f3.5085a04e-edd3-4294-bb34-9e8263360c42.png" alt="image.png"></p><h4 id="_2-3-modifying-configuration-files" tabindex="-1">2-3: Modifying Configuration Files <a class="header-anchor" href="#_2-3-modifying-configuration-files" aria-label="Permalink to &quot;2-3: Modifying Configuration Files&quot;"></a></h4><ul><li><p>Create and edit the /etc/wireguard/warp.conf file, replacing any parts that contain &lt;&gt; (pointy brackets) together, just to make it look obvious.</p></li><li><p>For IPv4-only hosts, Warp takes over IPv6 egress only</p></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v6</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">::/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">162.159</span><span style="color:#C3E88D;">.193.10:2408</span></span></code></pre></div><ul><li>For IPv6 only hosts, Warp takes over IPv4 egress only.</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Interface</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PrivateKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">PrivateKe</span><span style="color:#A6ACCD;">y</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">172.16</span><span style="color:#C3E88D;">.0.2/32</span></span>
<span class="line"><span style="color:#FFCB6B;">Address</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#C3E88D;">Your</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Address-v</span><span style="color:#89DDFF;">6&gt;</span><span style="color:#C3E88D;">/128</span></span>
<span class="line"><span style="color:#FFCB6B;">DNS</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1111,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2606</span><span style="color:#C3E88D;">:4700:4700::1001,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.1</span><span style="color:#C3E88D;">.1.1,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1.0</span><span style="color:#C3E88D;">.0.1</span></span>
<span class="line"><span style="color:#FFCB6B;">MTU</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1280</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">Peer</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#FFCB6B;">PublicKey</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo=</span></span>
<span class="line"><span style="color:#FFCB6B;">AllowedIPs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">0.0</span><span style="color:#C3E88D;">.0.0/0</span></span>
<span class="line"><span style="color:#FFCB6B;">Endpoint</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">=</span><span style="color:#A6ACCD;"> [2606:4700:d0::a29f:c101]:2408</span></span></code></pre></div><ul><li>There&#39;s no need to target dual-stack, after all, native network outlets are better than relaying through Warp</li></ul><h4 id="_2-4-setting-the-address-resolution-priority" tabindex="-1">2-4: Setting the Address Resolution Priority <a class="header-anchor" href="#_2-4-setting-the-address-resolution-priority" aria-label="Permalink to &quot;2-4: Setting the Address Resolution Priority&quot;"></a></h4><p>For IPv4-only host machines, Warp only takes control of the IPv6 outbound, prioritizing the use of the native network&#39;s IPv4 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv4 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-qE</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">||</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">precedence ::ffff:0:0/96 100</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><p>For IPv6-only host machines, Warp only takes control of the IPv4 outbound, prioritizing the use of the native network&#39;s IPv6 outbound.</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># IPv6 priority</span></span>
<span class="line"><span style="color:#FFCB6B;">sed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">/^precedence \\:\\:ffff\\:0\\:0/d;/^label 2002\\:\\:\\/16/d</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/gai.conf</span></span></code></pre></div><h4 id="_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" tabindex="-1">2-5: Connecting to Warp and setting up the systemd process daemon <a class="header-anchor" href="#_2-5-connecting-to-warp-and-setting-up-the-systemd-process-daemon" aria-label="Permalink to &quot;2-5: Connecting to Warp and setting up the systemd process daemon&quot;"></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run wireguard to connect to Warp. If this step gets stuck and causes the connection to be lost, reboot the host in the background to resolve it.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick up warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv4</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv4.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Check IPv6</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -A a https://api-ipv6.ip.sb/geoip</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Disconnect from Warp after successful test.</span></span>
<span class="line"><span style="color:#A6ACCD;">wg-quick down warp</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># Reconnect and set process daemon to take effect automatically after reboot.</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl enable --now wg-quick@warp</span></span></code></pre></div><h3 id="_3-autorun-fscarmen-s-one-click-scripts" tabindex="-1">3: Autorun: fscarmen&#39;s one-click scripts <a class="header-anchor" href="#_3-autorun-fscarmen-s-one-click-scripts" aria-label="Permalink to &quot;3: Autorun: fscarmen&#39;s one-click scripts&quot;"></a></h3><p>Finally, the one-click script for fscarmen is introduced. The script is mentioned as a handy tool to simplify the configuration process. It also automatically handles advanced parameters such as Optimal MTU, Optimal Endpoint, etc.</p><p>Project: <a href="https://github.com/fscarmen/warp-sh" target="_blank" rel="noreferrer">https://github.com/fscarmen/warp-sh</a></p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># Run one-key script</span></span>
<span class="line"><span style="color:#A6ACCD;">wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh &amp;&amp; bash menu.sh</span></span></code></pre></div><p><img src="https://img.imgdd.com/f210f3.b94cf8fb-82f2-4160-95a7-c2859238284f.png" alt="image.png"></p>`,193),l=[o];function p(i,r,c,d,h,u){return s(),t("div",null,l)}const C=e(n,[["render",p]]);export{m as __pageData,C as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +0,0 @@
import{_ as s,v as a,b as e,R as n}from"./chunks/framework.70afa331.js";const C=JSON.parse('{"title":"LXD Installation Guide","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_install.md","filePath":"en/guide/lxd/lxd_install.md","lastUpdated":1739016255000}'),o={name:"en/guide/lxd/lxd_install.md"},l=n(`<h1 id="lxd-installation-guide" tabindex="-1">LXD Installation Guide <a class="header-anchor" href="#lxd-installation-guide" aria-label="Permalink to &quot;LXD Installation Guide&quot;"></a></h1><p>If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the <code>Customize</code> partition in the <code>LXD</code> module for the <code>Attach a free IPV6 address segment</code> to the host, and attach an IPV6 subnet to the host before installing the environment.</p><h2 id="one-click-installation" tabindex="-1">One-Click Installation <a class="header-anchor" href="#one-click-installation" aria-label="Permalink to &quot;One-Click Installation&quot;"></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If this is a new server, make sure that both <code>apt update</code> and <code>apt install curl</code> are working properly before executing this script. It is recommended to pre-install <code>btrfs-progs</code> to speed up the subsequent installation process, after installation it is recommended to reboot the system to load the settings, if it is not pre-installed it is no problem, just follow the prompts to execute the script.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>It&#39;s recommended to wait for at least 5 minutes after the system boots up before executing the following commands. This is to avoid the script being executed by the default system settings, which could cause issues with apt sources.</p></div><ul><li>Prerequisites: Ubuntu 18+ (recommended), Debian 8+ (x86_64 architecture only)</li><li>The virtual memory here is talking about the size of the SWAP to be opened, and the storage pool is the sum of the sizes of the disks occupied by all your servers to be opened</li><li>The server needs to be restarted after the environment installation process to load some default configurations</li><li>By default, lxd&#39;s lxcfs-related configuration is enabled, so that in-container querying of container information changes to information about the container itself rather than the host</li></ul><p>Command:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/lxdinstall.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lxdinstall.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lxdinstall.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lxdinstall.sh</span></span></code></pre></div><p>Example of initialization configuration:</p><p>If there is 18GB of unused disk space on the system disk, after deducting the space already occupied, and you want to allocate 2GB of virtual memory (2048MB of SWAP) and a 15GB storage pool, then following the prompts in the command line, enter <code>2048</code> and <code>15</code>.</p><h2 id="manual-installation" tabindex="-1">Manual Installation <a class="header-anchor" href="#manual-installation" aria-label="Permalink to &quot;Manual Installation&quot;"></a></h2><p>Recommended for beginners to avoid potential troubleshooting. However, if you&#39;re experienced and comfortable with debugging bugs, you can also use the above one-click installation method for convenience.</p><h3 id="disable-firewall" tabindex="-1">Disable Firewall <a class="header-anchor" href="#disable-firewall" aria-label="Permalink to &quot;Disable Firewall&quot;"></a></h3><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">apt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update</span></span>
<span class="line"><span style="color:#FFCB6B;">apt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dos2unix</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ufw</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">jq</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span></span>
<span class="line"><span style="color:#FFCB6B;">ufw</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span></span></code></pre></div><h3 id="enabling-virtual-memory-swap" tabindex="-1">Enabling Virtual Memory SWAP <a class="header-anchor" href="#enabling-virtual-memory-swap" aria-label="Permalink to &quot;Enabling Virtual Memory SWAP&quot;"></a></h3><p>The amount of memory depends on how many instances you want to run. If you want to run 8 instances and calculate, you&#39;ll need 2GB of memory. If your actual physical memory is 512MB, you&#39;ll need an additional 1.5GB. To be cautious, allocate 2GB of virtual memory.</p><p>Execute the following commands: Enter &#39;1&#39;, then enter &#39;2048&#39;. This signifies allocating 2GB of virtual memory.</p><p>Command:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span></span></code></pre></div><h3 id="installing-lxd" tabindex="-1">Installing LXD <a class="header-anchor" href="#installing-lxd" aria-label="Permalink to &quot;Installing LXD&quot;"></a></h3><p>Actually, the virtual memory allocated for swap should be twice the size of the actual memory. So, it&#39;s reasonable to allocate 1GB if the actual memory is 500MB. The scenario I described above is an excessive allocation.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt install snapd -y</span></span>
<span class="line"><span style="color:#A6ACCD;">snap install lxd</span></span>
<span class="line"><span style="color:#A6ACCD;">/snap/bin/lxd init</span></span></code></pre></div><p>If the following error occurs in the above command</p><p>(snap &quot;lxd&quot; assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))</p><p>Use the command patch before installing lxd</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">snap install core</span></span></code></pre></div><p>If there are no exceptions, the results of the above three lines of commands are as follows</p><p><img src="https://user-images.githubusercontent.com/103393591/233270028-5a43d0f7-45f5-4175-969e-d4d182cb877a.png" alt="图片"></p><p>Just enter the default for the normal options</p><p>Choose the size of the physical disk (hint: select the default option with a minimum of 1GB). Generally, I fill in the available disk space minus the memory size, then multiply by 0.95 and round down. Here, I entered 10GB.</p><p>Remember to select &#39;no&#39; for options containing &#39;auto&#39; when prompted to update the image, in order to avoid occupying the system.</p><p>Test whether symbolic links are functioning in LXC.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lxc -h</span></span></code></pre></div><p>If an error is reported then execute the following command to soft connect the lxc command</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">!</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">lxc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">/dev/null</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">2&gt;&amp;1</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">alias lxc=&quot;/snap/bin/lxc&quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/.bashrc</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">source</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/.bashrc</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/snap/bin</span></span></code></pre></div><p>After connecting, test the lxc command again to see if there is an error about not being able to find it</p>`,36),t=[l];function p(i,c,r,d,h,u){return a(),e("div",null,t)}const m=s(o,[["render",p]]);export{C as __pageData,m as default};

View File

@@ -1,6 +0,0 @@
import{_ as s,v as a,b as e,R as n}from"./chunks/framework.70afa331.js";const C=JSON.parse('{"title":"LXD Installation Guide","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_install.md","filePath":"en/guide/lxd/lxd_install.md","lastUpdated":1739016255000}'),o={name:"en/guide/lxd/lxd_install.md"},l=n(`<h1 id="lxd-installation-guide" tabindex="-1">LXD Installation Guide <a class="header-anchor" href="#lxd-installation-guide" aria-label="Permalink to &quot;LXD Installation Guide&quot;"></a></h1><p>If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the <code>Customize</code> partition in the <code>LXD</code> module for the <code>Attach a free IPV6 address segment</code> to the host, and attach an IPV6 subnet to the host before installing the environment.</p><h2 id="one-click-installation" tabindex="-1">One-Click Installation <a class="header-anchor" href="#one-click-installation" aria-label="Permalink to &quot;One-Click Installation&quot;"></a></h2><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>If this is a new server, make sure that both <code>apt update</code> and <code>apt install curl</code> are working properly before executing this script. It is recommended to pre-install <code>btrfs-progs</code> to speed up the subsequent installation process, after installation it is recommended to reboot the system to load the settings, if it is not pre-installed it is no problem, just follow the prompts to execute the script.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>It&#39;s recommended to wait for at least 5 minutes after the system boots up before executing the following commands. This is to avoid the script being executed by the default system settings, which could cause issues with apt sources.</p></div><ul><li>Prerequisites: Ubuntu 18+ (recommended), Debian 8+ (x86_64 architecture only)</li><li>The virtual memory here is talking about the size of the SWAP to be opened, and the storage pool is the sum of the sizes of the disks occupied by all your servers to be opened</li><li>The server needs to be restarted after the environment installation process to load some default configurations</li><li>By default, lxd&#39;s lxcfs-related configuration is enabled, so that in-container querying of container information changes to information about the container itself rather than the host</li></ul><p>Command:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/lxdinstall.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lxdinstall.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lxdinstall.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lxdinstall.sh</span></span></code></pre></div><p>Example of initialization configuration:</p><p>If there is 18GB of unused disk space on the system disk, after deducting the space already occupied, and you want to allocate 2GB of virtual memory (2048MB of SWAP) and a 15GB storage pool, then following the prompts in the command line, enter <code>2048</code> and <code>15</code>.</p><h2 id="manual-installation" tabindex="-1">Manual Installation <a class="header-anchor" href="#manual-installation" aria-label="Permalink to &quot;Manual Installation&quot;"></a></h2><p>Recommended for beginners to avoid potential troubleshooting. However, if you&#39;re experienced and comfortable with debugging bugs, you can also use the above one-click installation method for convenience.</p><h3 id="disable-firewall" tabindex="-1">Disable Firewall <a class="header-anchor" href="#disable-firewall" aria-label="Permalink to &quot;Disable Firewall&quot;"></a></h3><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">apt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update</span></span>
<span class="line"><span style="color:#FFCB6B;">apt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dos2unix</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ufw</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">jq</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span></span>
<span class="line"><span style="color:#FFCB6B;">ufw</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span></span></code></pre></div><h3 id="enabling-virtual-memory-swap" tabindex="-1">Enabling Virtual Memory SWAP <a class="header-anchor" href="#enabling-virtual-memory-swap" aria-label="Permalink to &quot;Enabling Virtual Memory SWAP&quot;"></a></h3><p>The amount of memory depends on how many instances you want to run. If you want to run 8 instances and calculate, you&#39;ll need 2GB of memory. If your actual physical memory is 512MB, you&#39;ll need an additional 1.5GB. To be cautious, allocate 2GB of virtual memory.</p><p>Execute the following commands: Enter &#39;1&#39;, then enter &#39;2048&#39;. This signifies allocating 2GB of virtual memory.</p><p>Command:</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">bash</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">swap.sh</span></span></code></pre></div><h3 id="installing-lxd" tabindex="-1">Installing LXD <a class="header-anchor" href="#installing-lxd" aria-label="Permalink to &quot;Installing LXD&quot;"></a></h3><p>Actually, the virtual memory allocated for swap should be twice the size of the actual memory. So, it&#39;s reasonable to allocate 1GB if the actual memory is 500MB. The scenario I described above is an excessive allocation.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">apt install snapd -y</span></span>
<span class="line"><span style="color:#A6ACCD;">snap install lxd</span></span>
<span class="line"><span style="color:#A6ACCD;">/snap/bin/lxd init</span></span></code></pre></div><p>If the following error occurs in the above command</p><p>(snap &quot;lxd&quot; assumes unsupported features: snapd2.39 (try to update snapd and refresh the core snap))</p><p>Use the command patch before installing lxd</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">snap install core</span></span></code></pre></div><p>If there are no exceptions, the results of the above three lines of commands are as follows</p><p><img src="https://user-images.githubusercontent.com/103393591/233270028-5a43d0f7-45f5-4175-969e-d4d182cb877a.png" alt="图片"></p><p>Just enter the default for the normal options</p><p>Choose the size of the physical disk (hint: select the default option with a minimum of 1GB). Generally, I fill in the available disk space minus the memory size, then multiply by 0.95 and round down. Here, I entered 10GB.</p><p>Remember to select &#39;no&#39; for options containing &#39;auto&#39; when prompted to update the image, in order to avoid occupying the system.</p><p>Test whether symbolic links are functioning in LXC.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lxc -h</span></span></code></pre></div><p>If an error is reported then execute the following command to soft connect the lxc command</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">!</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">lxc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">/dev/null</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">2&gt;&amp;1</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">alias lxc=&quot;/snap/bin/lxc&quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/.bashrc</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">source</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/.bashrc</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/snap/bin</span></span></code></pre></div><p>After connecting, test the lxc command again to see if there is an error about not being able to find it</p>`,36),t=[l];function p(i,c,r,d,h,u){return a(),e("div",null,t)}const m=s(o,[["render",p]]);export{C as __pageData,m as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as o,R as n}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"Preface","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_precheck.md","filePath":"en/guide/lxd/lxd_precheck.md","lastUpdated":1739016255000}'),a={name:"en/guide/lxd/lxd_precheck.md"},r=n('<h1 id="preface" tabindex="-1">Preface <a class="header-anchor" href="#preface" aria-label="Permalink to &quot;Preface&quot;"></a></h1><p>The following is the introduction of the non-customized part, the customized part has its own corresponding introduction, do not get confused!</p><p>If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the <code>Customize</code> partition in the <code>LXD</code> module for the <code>Attach a free IPV6 address segment</code> to the host, and attach an IPV6 subnet to the host before installing the environment.</p><p>Feel free to give the project a <code>Star</code> for free support!--&gt;<a href="https://github.com/oneclickvirt/lxd" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/lxd</a></p><h2 id="requirements" tabindex="-1">Requirements <a class="header-anchor" href="#requirements" aria-label="Permalink to &quot;Requirements&quot;"></a></h2><p>Hardware requirements.</p><ul><li>System: Debian 8+, Ubuntu 18+ (20.04 recommended).</li><li>Virtualization: KVM, VMWARE recommended.</li><li>Memory: At least 512MB of RAM</li><li>Hard disk: hard disk (system disk) at least 10G</li><li>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</li></ul><p>PS: If the hardware is very good and has a lot of resources, you can use PVE to batch open KVM virtualized VMs <a href="https://github.com/oneclickvirt/pve" target="_blank" rel="noreferrer">Jump</a></p><p>PS: If the hardware resources are even worse, virtualization is not supported, you can use the docker version, the adaption surface is wider <a href="https://github.com/oneclickvirt/docker" target="_blank" rel="noreferrer">Jump</a></p><h2 id="project-features" tabindex="-1">Project Features <a class="header-anchor" href="#project-features" aria-label="Permalink to &quot;Project Features&quot;"></a></h2><ul><li><p>This set of script development using <strong>Ubuntu20</strong>, Ubuntu other long-term maintenance version should also be no problem, automatically switch to another storage type if btrfs not supported</p></li><li><p>Set up both TCP and UDP forwarding, in addition to SSH ports, other mapping intranet and extranet ports are the same.</p></li><li><p>Support for docker nested virtualization of open LXC containers has been set up, and the default normal version and pure probe version use the debian11 system.</p></li><li><p>lxcfs has been set to be enabled by default, so that querying resources within a container uses the configured view rather than the host&#39;s view</p></li><li><p>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</p></li><li><p>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</p></li><li><p>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 <code>fdisk -l</code> and <code>df</code> to check.</p></li><li><p>See <a href="https://github.com/oneclickvirt/lxd/blob/main/README_other.md" target="_blank" rel="noreferrer">Other notes</a> for details on mounting other disks.</p></li><li><p>One-click scripts support custom restrictions on all content, the normal version supports multiple runs of the batch generation does not overwrite the previously generated configuration</p></li></ul><h2 id="detecting-the-environment" tabindex="-1">Detecting the environment <a class="header-anchor" href="#detecting-the-environment" aria-label="Permalink to &quot;Detecting the environment&quot;"></a></h2><p><strong>Use the subsequent script must execute this command to detect the hen whether it meets the requirements</strong></p><p>Command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">bash &lt;(wget -qO- --no-check-certificate https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/pre_check.sh)</span></span></code></pre></div>',15),s=[r];function i(d,c,l,h,p,u){return t(),o("div",null,s)}const b=e(a,[["render",i]]);export{f as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as o,R as n}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"Preface","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_precheck.md","filePath":"en/guide/lxd/lxd_precheck.md","lastUpdated":1739016255000}'),a={name:"en/guide/lxd/lxd_precheck.md"},r=n('<h1 id="preface" tabindex="-1">Preface <a class="header-anchor" href="#preface" aria-label="Permalink to &quot;Preface&quot;"></a></h1><p>The following is the introduction of the non-customized part, the customized part has its own corresponding introduction, do not get confused!</p><p>If your host does not have an IPV6 subnet and you want to assign IPV6 addresses to containers, then please check the <code>Customize</code> partition in the <code>LXD</code> module for the <code>Attach a free IPV6 address segment</code> to the host, and attach an IPV6 subnet to the host before installing the environment.</p><p>Feel free to give the project a <code>Star</code> for free support!--&gt;<a href="https://github.com/oneclickvirt/lxd" target="_blank" rel="noreferrer">https://github.com/oneclickvirt/lxd</a></p><h2 id="requirements" tabindex="-1">Requirements <a class="header-anchor" href="#requirements" aria-label="Permalink to &quot;Requirements&quot;"></a></h2><p>Hardware requirements.</p><ul><li>System: Debian 8+, Ubuntu 18+ (20.04 recommended).</li><li>Virtualization: KVM, VMWARE recommended.</li><li>Memory: At least 512MB of RAM</li><li>Hard disk: hard disk (system disk) at least 10G</li><li>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</li></ul><p>PS: If the hardware is very good and has a lot of resources, you can use PVE to batch open KVM virtualized VMs <a href="https://github.com/oneclickvirt/pve" target="_blank" rel="noreferrer">Jump</a></p><p>PS: If the hardware resources are even worse, virtualization is not supported, you can use the docker version, the adaption surface is wider <a href="https://github.com/oneclickvirt/docker" target="_blank" rel="noreferrer">Jump</a></p><h2 id="project-features" tabindex="-1">Project Features <a class="header-anchor" href="#project-features" aria-label="Permalink to &quot;Project Features&quot;"></a></h2><ul><li><p>This set of script development using <strong>Ubuntu20</strong>, Ubuntu other long-term maintenance version should also be no problem, automatically switch to another storage type if btrfs not supported</p></li><li><p>Set up both TCP and UDP forwarding, in addition to SSH ports, other mapping intranet and extranet ports are the same.</p></li><li><p>Support for docker nested virtualization of open LXC containers has been set up, and the default normal version and pure probe version use the debian11 system.</p></li><li><p>lxcfs has been set to be enabled by default, so that querying resources within a container uses the configured view rather than the host&#39;s view</p></li><li><p>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</p></li><li><p>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</p></li><li><p>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 <code>fdisk -l</code> and <code>df</code> to check.</p></li><li><p>See <a href="https://github.com/oneclickvirt/lxd/blob/main/README_other.md" target="_blank" rel="noreferrer">Other notes</a> for details on mounting other disks.</p></li><li><p>One-click scripts support custom restrictions on all content, the normal version supports multiple runs of the batch generation does not overwrite the previously generated configuration</p></li></ul><h2 id="detecting-the-environment" tabindex="-1">Detecting the environment <a class="header-anchor" href="#detecting-the-environment" aria-label="Permalink to &quot;Detecting the environment&quot;"></a></h2><p><strong>Use the subsequent script must execute this command to detect the hen whether it meets the requirements</strong></p><p>Command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">bash &lt;(wget -qO- --no-check-certificate https://raw.githubusercontent.com/oneclickvirt/lxd/main/scripts/pre_check.sh)</span></span></code></pre></div>',15),s=[r];function i(d,c,l,h,p,u){return t(),o("div",null,s)}const b=e(a,[["render",i]]);export{f as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as a,b as t,R as s}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_qa.md","filePath":"en/guide/lxd/lxd_qa.md","lastUpdated":1739016255000}'),n={name:"en/guide/lxd/lxd_qa.md"},o=s('<h2 id="solve-the-puzzle" tabindex="-1">Solve the puzzle <a class="header-anchor" href="#solve-the-puzzle" aria-label="Permalink to &quot;Solve the puzzle&quot;"></a></h2><h2 id="what-if-the-lxc-command-says-it-can-t-be-found-after-lxd-is-installed" tabindex="-1">What if the lxc command says it can&#39;t be found after LXD is installed? <a class="header-anchor" href="#what-if-the-lxc-command-says-it-can-t-be-found-after-lxd-is-installed" aria-label="Permalink to &quot;What if the lxc command says it can&#39;t be found after LXD is installed?&quot;"></a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">! lxc -h &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &#39;alias lxc=&quot;/snap/bin/lxc&quot;&#39; &gt;&gt; /root/.bashrc &amp;&amp; source /root/.bashrc</span></span>\n<span class="line"><span style="color:#A6ACCD;">export PATH=$PATH:/snap/bin</span></span></code></pre></div><p>After executing this command try</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lxc -h</span></span></code></pre></div><p>to see if the lxc command is fixed.</p><h2 id="what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" tabindex="-1">What to do if you open centos7 and find that CGroupV1 is not supported? <a class="header-anchor" href="#what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" aria-label="Permalink to &quot;What to do if you open centos7 and find that CGroupV1 is not supported?&quot;"></a></h2><p>Enable CGroup V1: To enable CGroup V1 on an Ubuntu system, you need to edit the kernel boot parameters.</p><p>Please note that before changing kernel boot parameters, make sure to backup important data and settings to prevent unexpected problems.</p><p>Edit the ```/etc/default/grub<code>file and add</code>systemd.unified_cgroup_hierarchy=0<code>to the end of the parameters in</code>GRUB_CMDLINE_LINUX_DEFAULT``, just like:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash systemd.unified_cgroup_hierarchy=0&quot;</span></span></code></pre></div><p>Save the file and run the following command to update the GRUB boot.</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update-grub</span></span></code></pre></div><p>Reboot the system for the changes to take effect</p><p>If the above changes still do not support the opening of centos7, try using a different host system.</p><h2 id="currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" tabindex="-1">Currently verified VPS vendors that can open containers with separate IPV6 addresses. <a class="header-anchor" href="#currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" aria-label="Permalink to &quot;Currently verified VPS vendors that can open containers with separate IPV6 addresses.&quot;"></a></h2><p><a href="https://my.kuroit.com/aff.php?aff=5" target="_blank" rel="noreferrer">kuroit</a> Phoenix, USA regular</p><p><a href="https://t.me/vps_reviews/338" target="_blank" rel="noreferrer">datalix</a> German AMD Promotions</p>',18),r=[o];function p(i,l,d,c,h,u){return a(),t("div",null,r)}const b=e(n,[["render",p]]);export{m as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as a,b as t,R as s}from"./chunks/framework.70afa331.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/lxd/lxd_qa.md","filePath":"en/guide/lxd/lxd_qa.md","lastUpdated":1739016255000}'),n={name:"en/guide/lxd/lxd_qa.md"},o=s('<h2 id="solve-the-puzzle" tabindex="-1">Solve the puzzle <a class="header-anchor" href="#solve-the-puzzle" aria-label="Permalink to &quot;Solve the puzzle&quot;"></a></h2><h2 id="what-if-the-lxc-command-says-it-can-t-be-found-after-lxd-is-installed" tabindex="-1">What if the lxc command says it can&#39;t be found after LXD is installed? <a class="header-anchor" href="#what-if-the-lxc-command-says-it-can-t-be-found-after-lxd-is-installed" aria-label="Permalink to &quot;What if the lxc command says it can&#39;t be found after LXD is installed?&quot;"></a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">! lxc -h &gt;/dev/null 2&gt;&amp;1 &amp;&amp; echo &#39;alias lxc=&quot;/snap/bin/lxc&quot;&#39; &gt;&gt; /root/.bashrc &amp;&amp; source /root/.bashrc</span></span>\n<span class="line"><span style="color:#A6ACCD;">export PATH=$PATH:/snap/bin</span></span></code></pre></div><p>After executing this command try</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lxc -h</span></span></code></pre></div><p>to see if the lxc command is fixed.</p><h2 id="what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" tabindex="-1">What to do if you open centos7 and find that CGroupV1 is not supported? <a class="header-anchor" href="#what-to-do-if-you-open-centos7-and-find-that-cgroupv1-is-not-supported" aria-label="Permalink to &quot;What to do if you open centos7 and find that CGroupV1 is not supported?&quot;"></a></h2><p>Enable CGroup V1: To enable CGroup V1 on an Ubuntu system, you need to edit the kernel boot parameters.</p><p>Please note that before changing kernel boot parameters, make sure to backup important data and settings to prevent unexpected problems.</p><p>Edit the ```/etc/default/grub<code>file and add</code>systemd.unified_cgroup_hierarchy=0<code>to the end of the parameters in</code>GRUB_CMDLINE_LINUX_DEFAULT``, just like:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash systemd.unified_cgroup_hierarchy=0&quot;</span></span></code></pre></div><p>Save the file and run the following command to update the GRUB boot.</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update-grub</span></span></code></pre></div><p>Reboot the system for the changes to take effect</p><p>If the above changes still do not support the opening of centos7, try using a different host system.</p><h2 id="currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" tabindex="-1">Currently verified VPS vendors that can open containers with separate IPV6 addresses. <a class="header-anchor" href="#currently-verified-vps-vendors-that-can-open-containers-with-separate-ipv6-addresses" aria-label="Permalink to &quot;Currently verified VPS vendors that can open containers with separate IPV6 addresses.&quot;"></a></h2><p><a href="https://my.kuroit.com/aff.php?aff=5" target="_blank" rel="noreferrer">kuroit</a> Phoenix, USA regular</p><p><a href="https://t.me/vps_reviews/338" target="_blank" rel="noreferrer">datalix</a> German AMD Promotions</p>',18),r=[o];function p(i,l,d,c,h,u){return a(),t("div",null,r)}const b=e(n,[["render",p]]);export{m as __pageData,b as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as r,R as a}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/lxd/lxd_thanks.md","filePath":"en/guide/lxd/lxd_thanks.md","lastUpdated":1739016255000}'),n={name:"en/guide/lxd/lxd_thanks.md"},s=a('<h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to &quot;Acknowledgements&quot;"></a></h2><p><a href="https://github.com/lxc/lxd" target="_blank" rel="noreferrer">https://github.com/lxc/lxd</a></p><p><a href="https://lxdware.com/" target="_blank" rel="noreferrer">https://lxdware.com/</a></p><p><a href="https://discuss.linuxcontainers.org/" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4</a></p><p><a href="https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028</a></p><p><a href="https://github.com/turtle0x1/LxdMosaic" target="_blank" rel="noreferrer">https://github.com/turtle0x1/LxdMosaic</a></p><p><a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/index.html" target="_blank" rel="noreferrer">https://openzfs.github.io/openzfs-docs/Getting Started/Debian/index.html</a></p><p><a href="https://github.com/SuperManito/LinuxMirrors" target="_blank" rel="noreferrer">https://github.com/SuperManito/LinuxMirrors</a></p><p><a href="https://images.opsmaru.dev/" target="_blank" rel="noreferrer">https://images.opsmaru.dev/</a></p><p>Thank <a href="https://github.com/Ella-Alinda" target="_blank" rel="noreferrer">@Ella-Alinda</a> <a href="https://github.com/fscarmen" target="_blank" rel="noreferrer">@fscarmen</a> for providing guidance.</p>',12),o=[s];function i(l,p,c,d,h,u){return t(),r("div",null,o)}const x=e(n,[["render",i]]);export{f as __pageData,x as default};

View File

@@ -1 +0,0 @@
import{_ as e,v as t,b as r,R as a}from"./chunks/framework.70afa331.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"en/guide/lxd/lxd_thanks.md","filePath":"en/guide/lxd/lxd_thanks.md","lastUpdated":1739016255000}'),n={name:"en/guide/lxd/lxd_thanks.md"},s=a('<h2 id="acknowledgements" tabindex="-1">Acknowledgements <a class="header-anchor" href="#acknowledgements" aria-label="Permalink to &quot;Acknowledgements&quot;"></a></h2><p><a href="https://github.com/lxc/lxd" target="_blank" rel="noreferrer">https://github.com/lxc/lxd</a></p><p><a href="https://lxdware.com/" target="_blank" rel="noreferrer">https://lxdware.com/</a></p><p><a href="https://discuss.linuxcontainers.org/" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-to-run-docker-inside-lxc-container/13017/4</a></p><p><a href="https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/error-seccomp-notify-not-supported-on-container-start/15038/3</a></p><p><a href="https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028" target="_blank" rel="noreferrer">https://discuss.linuxcontainers.org/t/how-do-i-assign-a-public-ipv6-address-to-a-lxc-container/6028</a></p><p><a href="https://github.com/turtle0x1/LxdMosaic" target="_blank" rel="noreferrer">https://github.com/turtle0x1/LxdMosaic</a></p><p><a href="https://openzfs.github.io/openzfs-docs/Getting%20Started/Debian/index.html" target="_blank" rel="noreferrer">https://openzfs.github.io/openzfs-docs/Getting Started/Debian/index.html</a></p><p><a href="https://github.com/SuperManito/LinuxMirrors" target="_blank" rel="noreferrer">https://github.com/SuperManito/LinuxMirrors</a></p><p><a href="https://images.opsmaru.dev/" target="_blank" rel="noreferrer">https://images.opsmaru.dev/</a></p><p>Thank <a href="https://github.com/Ella-Alinda" target="_blank" rel="noreferrer">@Ella-Alinda</a> <a href="https://github.com/fscarmen" target="_blank" rel="noreferrer">@fscarmen</a> for providing guidance.</p>',12),o=[s];function i(l,p,c,d,h,u){return t(),r("div",null,o)}const x=e(n,[["render",i]]);export{f as __pageData,x as default};

View File

@@ -1,30 +0,0 @@
import{_ as s,v as e,b as a,R as o}from"./chunks/framework.70afa331.js";const y=JSON.parse('{"title":"Customized partitions","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/pve/pve_custom.md","filePath":"en/guide/pve/pve_custom.md","lastUpdated":1739016255000}'),n={name:"en/guide/pve/pve_custom.md"},t=o(`<h1 id="customized-partitions" tabindex="-1">Customized partitions <a class="header-anchor" href="#customized-partitions" aria-label="Permalink to &quot;Customized partitions&quot;"></a></h1><h2 id="installing-proxmox-ve-7-on-a-non-debian-system" tabindex="-1">Installing Proxmox VE 7 on a non-Debian system <a class="header-anchor" href="#installing-proxmox-ve-7-on-a-non-debian-system" aria-label="Permalink to &quot;Installing Proxmox VE 7 on a non-Debian system&quot;"></a></h2><p>Minimum local hardware requirements are the same as for the previous normal installation.</p><p>You need to install docker first.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -sSL https://get.docker.com/ | sh</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -L &quot;https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)&quot; -o /usr/local/bin/docker-compose</span></span>
<span class="line"><span style="color:#A6ACCD;">chmod +x /usr/local/bin/docker-compose</span></span>
<span class="line"><span style="color:#A6ACCD;">docker-compose --version</span></span></code></pre></div><p>Then use <code>uname -m</code> to query the architecture and use the command corresponding to the architecture</p><p>The opened PVE panel information is:</p><p>Login username and password are both <code>root</code>, after logging in be sure to use web SSH to change the password to avoid being blown up.</p><p>When using host SSH, be sure to log into the corresponding <code>https://IPV4:8006</code> to use SSH on the web panel, do not use the host&#39;s port 22 to manipulate the PVE.</p><p>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.</p><p>X86 architecture</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">run</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-idt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--network</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">host</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--privileged \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--name </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--add-host </span><span style="color:#C3E88D;">pve:10.13.14.101</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--hostname </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">spiritlhl/pve:7_x86_64</span></span></code></pre></div><p>ARM architecture</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">run</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-idt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--network</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">host</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--privileged \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--name </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--add-host </span><span style="color:#C3E88D;">pve:10.13.14.101</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--hostname </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">spiritlhl/pve:7_aarch64</span></span></code></pre></div><p>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.</p><p>But here the login username and password become <code>root</code> and <code>root</code>, if you need to change it please <code>docker exec -it pve /bin/bash</code> enter and change the password of root, then press <code>ctrl</code> key and <code>A+D</code> to exit.</p><p>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 <code>Proxmox VE</code> panel success, solved the problem of installing <code>Proxmox VE</code> over the network can only be used to use the Debian system as a host machine!</p><h2 id="optimizing-the-memory-footprint-of-proxmox-ve-on-low-configuration-systems" tabindex="-1">Optimizing the memory footprint of Proxmox-VE on low-configuration systems <a class="header-anchor" href="#optimizing-the-memory-footprint-of-proxmox-ve-on-low-configuration-systems" aria-label="Permalink to &quot;Optimizing the memory footprint of Proxmox-VE on low-configuration systems&quot;"></a></h2><p>The following optimization can reduce at least 400M memory occupation, some machines can reduce more than 6GB, the actual reduction of how much memory occupation to test by yourself.</p><h3 id="reduce-the-number-of-max-workers" tabindex="-1">Reduce the number of max_workers <a class="header-anchor" href="#reduce-the-number-of-max-workers" aria-label="Permalink to &quot;Reduce the number of max_workers&quot;"></a></h3><p>Execute the following command to query</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">cd /usr/share/perl5/PVE/Service</span></span>
<span class="line"><span style="color:#A6ACCD;">grep &#39;max_workers =&gt; 3&#39; *</span></span></code></pre></div><p>you can see</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">pvedaemon.pm: max_workers =&gt; 3,</span></span>
<span class="line"><span style="color:#A6ACCD;">pveproxy.pm: max_workers =&gt; 3,</span></span>
<span class="line"><span style="color:#A6ACCD;">spiceproxy.pm: max_workers =&gt; 3, # todo: do we need more?</span></span></code></pre></div><p>The default max_workers is 3, you can modify the corresponding file, the minimum max_workers can be 1, you can use the following commands to modify them:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sed -i &quot;s/max_workers =&gt; 3/max_workers =&gt; 1/g&quot; /usr/share/perl5/PVE/Service/*</span></span></code></pre></div><h3 id="deactivation-of-ha-services" tabindex="-1">Deactivation of HA services <a class="header-anchor" href="#deactivation-of-ha-services" aria-label="Permalink to &quot;Deactivation of HA services&quot;"></a></h3><p>Clusters (multi-nodes) can use the HA service, if it is a single node, or there is no need for HA use, you can execute the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop pve-ha-lrm.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl stop pve-ha-crm.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pve-ha-lrm.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pve-ha-crm.service</span></span></code></pre></div><h3 id="disable-firewall-service" tabindex="-1">Disable firewall service <a class="header-anchor" href="#disable-firewall-service" aria-label="Permalink to &quot;Disable firewall service&quot;"></a></h3><p>The service can be deactivated by executing the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop pve-firewall.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pve-firewall.service</span></span></code></pre></div><h3 id="discontinuation-of-cheduler-service" tabindex="-1">Discontinuation of cheduler service <a class="header-anchor" href="#discontinuation-of-cheduler-service" aria-label="Permalink to &quot;Discontinuation of cheduler service&quot;"></a></h3><p>If you don&#39;t need scheduled tasks, such as backups and synchronizations, you can deactivate the service by executing the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop pvescheduler.service</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pvescheduler.service</span></span></code></pre></div><h3 id="discontinuation-of-spiceproxy-service" tabindex="-1">Discontinuation of Spiceproxy service <a class="header-anchor" href="#discontinuation-of-spiceproxy-service" aria-label="Permalink to &quot;Discontinuation of Spiceproxy service&quot;"></a></h3><p>If you do not need to use Spice for VM/container linking (the Arm version itself does not support Spice), you can deactivate the service by executing the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop spiceproxy.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable spiceproxy.service</span></span></code></pre></div><h3 id="deleting-the-memory-cache-using-a-timed-task" tabindex="-1">Deleting the memory cache using a timed task <a class="header-anchor" href="#deleting-the-memory-cache-using-a-timed-task" aria-label="Permalink to &quot;Deleting the memory cache using a timed task&quot;"></a></h3><p>Clearing different types of caches and performing TRIM operations on file systems</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">TEMP_CRON</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">mktemp</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">crontab</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * echo 1 &gt; /proc/sys/vm/drop_caches</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * sleep 60; echo 2 &gt; /proc/sys/vm/drop_caches</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * sleep 120; echo 3 &gt; /proc/sys/vm/drop_caches</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * sleep 180; fstrim -av</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">crontab</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span></code></pre></div><p>The above commands require the <code>sudo</code> and <code>crontab</code> commands to be available on the host itself.</p><h2 id="self-mapping-of-public-ports-on-kvm-vms-with-open-nats" tabindex="-1">Self-mapping of public ports on KVM VMs with open NATs <a class="header-anchor" href="#self-mapping-of-public-ports-on-kvm-vms-with-open-nats" aria-label="Permalink to &quot;Self-mapping of public ports on KVM VMs with open NATs&quot;"></a></h2><p>Use the <code>nano</code> or <code>vim</code> command to modify the file to add port mapping:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">/etc/iptables/rules.v4</span></span></code></pre></div><p>For example, if I have a KVM VM with an intranet IP of <code>172.16.1.152</code>, and MYSQL has been set up to listen to <code>3306</code>, and I need to use the <code>tcp</code> protocol to map out to the <code>33306</code> port on the host IP, I would add the following line to the <code>COMMIT</code> line in the file above, then add the following line</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">-A PREROUTING -i vmbr0 -p tcp -m tcp -dport 33306 -j DNAT --to-destination 172.16.1.152:3306</span></span></code></pre></div><p>Save the file and exit file editing and then execute:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">service netfilter-persistent restart</span></span></code></pre></div><p>Reload Port Mapping</p><p>At this point, on the host machine, execute the</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lsof -i:33306</span></span></code></pre></div><p>To see if the port mapping rule is in effect</p>`,53),l=[t];function p(c,i,r,d,h,m){return e(),a("div",null,l)}const C=s(n,[["render",p]]);export{y as __pageData,C as default};

View File

@@ -1,30 +0,0 @@
import{_ as s,v as e,b as a,R as o}from"./chunks/framework.70afa331.js";const y=JSON.parse('{"title":"Customized partitions","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"en/guide/pve/pve_custom.md","filePath":"en/guide/pve/pve_custom.md","lastUpdated":1739016255000}'),n={name:"en/guide/pve/pve_custom.md"},t=o(`<h1 id="customized-partitions" tabindex="-1">Customized partitions <a class="header-anchor" href="#customized-partitions" aria-label="Permalink to &quot;Customized partitions&quot;"></a></h1><h2 id="installing-proxmox-ve-7-on-a-non-debian-system" tabindex="-1">Installing Proxmox VE 7 on a non-Debian system <a class="header-anchor" href="#installing-proxmox-ve-7-on-a-non-debian-system" aria-label="Permalink to &quot;Installing Proxmox VE 7 on a non-Debian system&quot;"></a></h2><p>Minimum local hardware requirements are the same as for the previous normal installation.</p><p>You need to install docker first.</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl -sSL https://get.docker.com/ | sh</span></span>
<span class="line"><span style="color:#A6ACCD;">curl -L &quot;https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)&quot; -o /usr/local/bin/docker-compose</span></span>
<span class="line"><span style="color:#A6ACCD;">chmod +x /usr/local/bin/docker-compose</span></span>
<span class="line"><span style="color:#A6ACCD;">docker-compose --version</span></span></code></pre></div><p>Then use <code>uname -m</code> to query the architecture and use the command corresponding to the architecture</p><p>The opened PVE panel information is:</p><p>Login username and password are both <code>root</code>, after logging in be sure to use web SSH to change the password to avoid being blown up.</p><p>When using host SSH, be sure to log into the corresponding <code>https://IPV4:8006</code> to use SSH on the web panel, do not use the host&#39;s port 22 to manipulate the PVE.</p><p>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.</p><p>X86 architecture</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">run</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-idt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--network</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">host</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--privileged \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--name </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--add-host </span><span style="color:#C3E88D;">pve:10.13.14.101</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--hostname </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">spiritlhl/pve:7_x86_64</span></span></code></pre></div><p>ARM architecture</p><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">docker</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">run</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-idt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--network</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">host</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--privileged \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--name </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--add-host </span><span style="color:#C3E88D;">pve:10.13.14.101</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">--hostname </span><span style="color:#C3E88D;">pve</span><span style="color:#A6ACCD;"> \\</span></span>
<span class="line"><span style="color:#A6ACCD;">spiritlhl/pve:7_aarch64</span></span></code></pre></div><p>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.</p><p>But here the login username and password become <code>root</code> and <code>root</code>, if you need to change it please <code>docker exec -it pve /bin/bash</code> enter and change the password of root, then press <code>ctrl</code> key and <code>A+D</code> to exit.</p><p>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 <code>Proxmox VE</code> panel success, solved the problem of installing <code>Proxmox VE</code> over the network can only be used to use the Debian system as a host machine!</p><h2 id="optimizing-the-memory-footprint-of-proxmox-ve-on-low-configuration-systems" tabindex="-1">Optimizing the memory footprint of Proxmox-VE on low-configuration systems <a class="header-anchor" href="#optimizing-the-memory-footprint-of-proxmox-ve-on-low-configuration-systems" aria-label="Permalink to &quot;Optimizing the memory footprint of Proxmox-VE on low-configuration systems&quot;"></a></h2><p>The following optimization can reduce at least 400M memory occupation, some machines can reduce more than 6GB, the actual reduction of how much memory occupation to test by yourself.</p><h3 id="reduce-the-number-of-max-workers" tabindex="-1">Reduce the number of max_workers <a class="header-anchor" href="#reduce-the-number-of-max-workers" aria-label="Permalink to &quot;Reduce the number of max_workers&quot;"></a></h3><p>Execute the following command to query</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">cd /usr/share/perl5/PVE/Service</span></span>
<span class="line"><span style="color:#A6ACCD;">grep &#39;max_workers =&gt; 3&#39; *</span></span></code></pre></div><p>you can see</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">pvedaemon.pm: max_workers =&gt; 3,</span></span>
<span class="line"><span style="color:#A6ACCD;">pveproxy.pm: max_workers =&gt; 3,</span></span>
<span class="line"><span style="color:#A6ACCD;">spiceproxy.pm: max_workers =&gt; 3, # todo: do we need more?</span></span></code></pre></div><p>The default max_workers is 3, you can modify the corresponding file, the minimum max_workers can be 1, you can use the following commands to modify them:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sed -i &quot;s/max_workers =&gt; 3/max_workers =&gt; 1/g&quot; /usr/share/perl5/PVE/Service/*</span></span></code></pre></div><h3 id="deactivation-of-ha-services" tabindex="-1">Deactivation of HA services <a class="header-anchor" href="#deactivation-of-ha-services" aria-label="Permalink to &quot;Deactivation of HA services&quot;"></a></h3><p>Clusters (multi-nodes) can use the HA service, if it is a single node, or there is no need for HA use, you can execute the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop pve-ha-lrm.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl stop pve-ha-crm.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pve-ha-lrm.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pve-ha-crm.service</span></span></code></pre></div><h3 id="disable-firewall-service" tabindex="-1">Disable firewall service <a class="header-anchor" href="#disable-firewall-service" aria-label="Permalink to &quot;Disable firewall service&quot;"></a></h3><p>The service can be deactivated by executing the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop pve-firewall.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pve-firewall.service</span></span></code></pre></div><h3 id="discontinuation-of-cheduler-service" tabindex="-1">Discontinuation of cheduler service <a class="header-anchor" href="#discontinuation-of-cheduler-service" aria-label="Permalink to &quot;Discontinuation of cheduler service&quot;"></a></h3><p>If you don&#39;t need scheduled tasks, such as backups and synchronizations, you can deactivate the service by executing the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop pvescheduler.service</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable pvescheduler.service</span></span></code></pre></div><h3 id="discontinuation-of-spiceproxy-service" tabindex="-1">Discontinuation of Spiceproxy service <a class="header-anchor" href="#discontinuation-of-spiceproxy-service" aria-label="Permalink to &quot;Discontinuation of Spiceproxy service&quot;"></a></h3><p>If you do not need to use Spice for VM/container linking (the Arm version itself does not support Spice), you can deactivate the service by executing the following command:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">systemctl stop spiceproxy.service </span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl disable spiceproxy.service</span></span></code></pre></div><h3 id="deleting-the-memory-cache-using-a-timed-task" tabindex="-1">Deleting the memory cache using a timed task <a class="header-anchor" href="#deleting-the-memory-cache-using-a-timed-task" aria-label="Permalink to &quot;Deleting the memory cache using a timed task&quot;"></a></h3><p>Clearing different types of caches and performing TRIM operations on file systems</p><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">TEMP_CRON</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">$(</span><span style="color:#FFCB6B;">mktemp</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">crontab</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * echo 1 &gt; /proc/sys/vm/drop_caches</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * sleep 60; echo 2 &gt; /proc/sys/vm/drop_caches</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * sleep 120; echo 3 &gt; /proc/sys/vm/drop_caches</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*/5 * * * * sleep 180; fstrim -av</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">crontab</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> $TEMP_CRON</span></span></code></pre></div><p>The above commands require the <code>sudo</code> and <code>crontab</code> commands to be available on the host itself.</p><h2 id="self-mapping-of-public-ports-on-kvm-vms-with-open-nats" tabindex="-1">Self-mapping of public ports on KVM VMs with open NATs <a class="header-anchor" href="#self-mapping-of-public-ports-on-kvm-vms-with-open-nats" aria-label="Permalink to &quot;Self-mapping of public ports on KVM VMs with open NATs&quot;"></a></h2><p>Use the <code>nano</code> or <code>vim</code> command to modify the file to add port mapping:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">/etc/iptables/rules.v4</span></span></code></pre></div><p>For example, if I have a KVM VM with an intranet IP of <code>172.16.1.152</code>, and MYSQL has been set up to listen to <code>3306</code>, and I need to use the <code>tcp</code> protocol to map out to the <code>33306</code> port on the host IP, I would add the following line to the <code>COMMIT</code> line in the file above, then add the following line</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">-A PREROUTING -i vmbr0 -p tcp -m tcp -dport 33306 -j DNAT --to-destination 172.16.1.152:3306</span></span></code></pre></div><p>Save the file and exit file editing and then execute:</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">service netfilter-persistent restart</span></span></code></pre></div><p>Reload Port Mapping</p><p>At this point, on the host machine, execute the</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lsof -i:33306</span></span></code></pre></div><p>To see if the port mapping rule is in effect</p>`,53),l=[t];function p(c,i,r,d,h,m){return e(),a("div",null,l)}const C=s(n,[["render",p]]);export{y as __pageData,C as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More