mirror of
https://github.com/acepanel/acepanel.github.io.git
synced 2026-02-04 11:27:14 +08:00
New Crowdin translations by GitHub Action (#1)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
This commit is contained in:
committed by
GitHub
parent
73aa947c76
commit
68ab699a20
@@ -6,7 +6,7 @@ const versions = resp.data.slice(0, 10).map((item: any) => {
|
||||
});
|
||||
export const config = defineConfig({
|
||||
lang: "zh-CN",
|
||||
title: "耗子面板",
|
||||
title: 'AcePanel',
|
||||
description: "简单轻量 • 高效运维",
|
||||
themeConfig: {
|
||||
nav: nav(),
|
||||
@@ -29,11 +29,11 @@ export const config = defineConfig({
|
||||
})]
|
||||
}],
|
||||
editLink: {
|
||||
pattern: 'https://github.com/ratpanel/ratpanel.github.io/edit/main/:path',
|
||||
pattern: 'https://github.com/acepanel/acepanel.github.io/edit/main/:path',
|
||||
text: "在 GitHub 上编辑此页面"
|
||||
},
|
||||
footer: {
|
||||
message: "<b style=\"font-size: larger\">严禁使用耗子面板从事违法活动,我司不对违规用户提供任何服务</b>",
|
||||
message: "<b style=\"font-size: larger\">严禁使用 AcePanel 从事违法活动,我司不对违规用户提供任何服务</b>",
|
||||
copyright: `© 2022-${new Date().getFullYear()} 天津耗子科技有限公司 版权所有丨<a target="_blank" href="https://beian.miit.gov.cn/" rel="noreferrer">津ICP备2022009678号-1</a>丨<a target="_blank" href="https://beian.mps.gov.cn/#/query/webSearch?code=12011502000848" rel="noreferrer">津公网安备12011502000848号</a>`
|
||||
},
|
||||
docFooter: {
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
import { type DefaultTheme, defineConfig } from 'vitepress';
|
||||
const locale = 'en';
|
||||
const locale = "zh_TW";
|
||||
const resp = await (await fetch('https://panel.haozi.net/api/versions')).json();
|
||||
const versions = resp.data.slice(0, 10).map((item: any) => {
|
||||
return item.version;
|
||||
});
|
||||
export const config = defineConfig({
|
||||
lang: 'en-US',
|
||||
title: 'RatPanel',
|
||||
description: "Simple · lightweight · efficient",
|
||||
lang: "zh-TW",
|
||||
title: 'AcePanel',
|
||||
description: "簡單 · 輕量 · 高效",
|
||||
themeConfig: {
|
||||
nav: nav(),
|
||||
sidebar: [{
|
||||
text: "Quickstart",
|
||||
text: "快速開始",
|
||||
base: locale == 'en' ? '/quickstart' : `/${locale}/quickstart`,
|
||||
items: sidebarQuickstart()
|
||||
}, {
|
||||
text: "Advanced",
|
||||
text: "進階指南",
|
||||
base: locale == 'en' ? '/advanced' : `/${locale}/advanced`,
|
||||
items: sidebarAdvanced()
|
||||
}, {
|
||||
text: "Versions",
|
||||
text: "版本歷史",
|
||||
collapsed: true,
|
||||
items: [...versions.map((version: string) => {
|
||||
return {
|
||||
@@ -29,78 +29,78 @@ export const config = defineConfig({
|
||||
})]
|
||||
}],
|
||||
editLink: {
|
||||
pattern: 'https://github.com/ratpanel/ratpanel.github.io/edit/main/:path',
|
||||
text: 'Edit this page on GitHub'
|
||||
pattern: 'https://github.com/acepanel/acepanel.github.io/edit/main/:path',
|
||||
text: "在 GitHub 上編輯此頁面"
|
||||
},
|
||||
footer: {
|
||||
message: '<b style="font-size: larger">It is strictly forbidden to use Rat Panel for illegal activities, and our company does not provide any services to violators</b>',
|
||||
copyright: `Copyright © 2022-${new Date().getFullYear()} Tianjin Rat Technology Co., Ltd All Rights Reserved.丨<a target="_blank" href="https://beian.miit.gov.cn/" rel="noreferrer">津ICP备2022009678号-1</a>丨<a target="_blank" href="https://beian.mps.gov.cn/#/query/webSearch?code=12011502000848" rel="noreferrer">津公网安备12011502000848号</a>`
|
||||
message: "<b style=\"font-size: larger\">嚴禁使用 AcePanel 進行非法活動,本公司不會向違規者提供任何服務</b>",
|
||||
copyright: `版權 © 2022-${new Date().getFullYear()} 天津耗子科技有限公司 版權所有丨<a target="_blank" href="https://beian.miit.gov.cn/" rel="noreferrer">津ICP备2022009678號-1</a>丨<a target="_blank" href="https://beian.mps.gov.cn/#/query/webSearch?code=12011502000848" rel="noreferrer">津公安備12011502000848號</a>`
|
||||
},
|
||||
docFooter: {
|
||||
prev: 'Previous page',
|
||||
next: 'Next page'
|
||||
prev: "上一頁",
|
||||
next: "下一頁"
|
||||
},
|
||||
outline: {
|
||||
label: 'On this page'
|
||||
label: "頁面導航"
|
||||
},
|
||||
lastUpdated: {
|
||||
text: 'Last updated',
|
||||
text: "最後更新於",
|
||||
formatOptions: {
|
||||
dateStyle: 'short',
|
||||
timeStyle: 'medium'
|
||||
}
|
||||
},
|
||||
langMenuLabel: 'Change language',
|
||||
returnToTopLabel: 'Return to top',
|
||||
sidebarMenuLabel: 'Menu',
|
||||
darkModeSwitchLabel: 'Appearance',
|
||||
lightModeSwitchTitle: 'Switch to light theme',
|
||||
darkModeSwitchTitle: 'Switch to dark theme',
|
||||
skipToContentLabel: 'Skip to content'
|
||||
langMenuLabel: "切換語言",
|
||||
returnToTopLabel: "回到頂部",
|
||||
sidebarMenuLabel: "菜單",
|
||||
darkModeSwitchLabel: "主題",
|
||||
lightModeSwitchTitle: "切換到淺色主題",
|
||||
darkModeSwitchTitle: "切換到深色主題",
|
||||
skipToContentLabel: "跳轉到內容"
|
||||
}
|
||||
});
|
||||
function nav(): DefaultTheme.NavItem[] {
|
||||
return [{
|
||||
text: 'Home',
|
||||
text: "首頁",
|
||||
link: locale == 'en' ? '/' : `/${locale}/`
|
||||
}, {
|
||||
text: 'Document',
|
||||
text: "文檔",
|
||||
link: locale == 'en' ? '/quickstart/install' : `/${locale}/quickstart/install`
|
||||
}, {
|
||||
text: 'Support',
|
||||
text: "支持",
|
||||
link: locale == 'en' ? '/support' : `/${locale}/support`
|
||||
}, {
|
||||
text: "🔥證書",
|
||||
link: locale == 'en' ? '/cert' : `/${locale}/cert`
|
||||
}, {
|
||||
text: 'About',
|
||||
text: "關於",
|
||||
link: locale == 'en' ? '/about' : `/${locale}/about`
|
||||
}];
|
||||
}
|
||||
function sidebarQuickstart(): DefaultTheme.SidebarItem[] {
|
||||
return [{
|
||||
text: 'Installing panel',
|
||||
link: "/安裝"
|
||||
text: "安裝面板",
|
||||
link: '/install'
|
||||
}, {
|
||||
text: 'Mounting partition',
|
||||
link: "/磁碟"
|
||||
text: "掛載分區",
|
||||
link: '/disk'
|
||||
}, {
|
||||
text: 'Managing panel',
|
||||
text: "管理面板",
|
||||
link: '/panel'
|
||||
}, {
|
||||
text: 'Managing container',
|
||||
link: "/容器"
|
||||
text: "管理容器",
|
||||
link: '/container'
|
||||
}];
|
||||
}
|
||||
function sidebarAdvanced(): DefaultTheme.SidebarItem[] {
|
||||
return [{
|
||||
text: 'Panel API',
|
||||
text: "面板 API",
|
||||
link: '/api'
|
||||
}, {
|
||||
text: 'Security recommendations',
|
||||
link: "/安全"
|
||||
text: "安全性建議",
|
||||
link: '/safe'
|
||||
}, {
|
||||
text: 'FAQ',
|
||||
text: "常見問題",
|
||||
link: '/faq'
|
||||
}];
|
||||
}
|
||||
@@ -30,7 +30,7 @@ const members = [
|
||||
|
||||
# 关于
|
||||
|
||||
耗子面板是一款专业的服务器运维管理面板,致力于为用户提供简单、高效、安全的服务器管理解决方案。
|
||||
AcePanel 是一款专业的服务器运维管理面板,致力于为用户提供简单、高效、安全的服务器管理解决方案。
|
||||
|
||||
| 愿景 | 使命 | 价值观 |
|
||||
| ----------------- | ------------- | -------------- |
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
## 概述
|
||||
|
||||
耗子面板提供了一套安全的 RESTful 接口,用于与面板系统进行交互。 所有 API 请求都需要进行 HMAC-SHA256 签名认证以确保通信的安全性和完整性。
|
||||
AcePanel 提供了一套安全的 RESTful 接口,用于与面板进行交互。 所有 API 请求都需要进行 HMAC-SHA256 签名认证以确保通信的安全性和完整性。 所有 API 请求都需要进行 HMAC-SHA256 签名认证以确保通信的安全性和完整性。
|
||||
|
||||
## 基础信息
|
||||
|
||||
- **基础 URL**: `http(s)://your-panel-domain/{entry}/api/`
|
||||
- **内容类型**: 所有请求和响应均使用 `application/json`
|
||||
- **字符编码**: UTF-8
|
||||
- **基础 URL**: `http(s)://your-panel-domain/{entry}/api/`
|
||||
- **内容类型**: 所有请求和响应均使用 `application/json`
|
||||
- **字符编码**: UTF-8
|
||||
|
||||
## 认证机制
|
||||
|
||||
@@ -182,7 +182,7 @@ func HMACSHA256(data string, secret string) string {
|
||||
```php
|
||||
<?php
|
||||
/**
|
||||
* 耗子面板 API 请求示例 (PHP)
|
||||
* AcePanel API 请求示例 (PHP)
|
||||
*/
|
||||
|
||||
function signRequest($method, $url, $body, $id, $token) {
|
||||
@@ -374,9 +374,9 @@ import javax.crypto.spec.SecretKeySpec;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* 耗子面板 API 请求示例 (Java)
|
||||
* AcePanel API 请求示例 (Java)
|
||||
*/
|
||||
public class RatPanelApiExample {
|
||||
public class AcePanelApiExample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
@@ -649,13 +649,13 @@ sendApiRequest();
|
||||
|
||||
如果遇到签名验证失败,请检查:
|
||||
|
||||
- 确保使用了正确的 API 令牌和 ID
|
||||
- 检查客户端与服务器的时间是否准确,时间戳偏差大于 300 秒会导致验证失败
|
||||
- 确保请求体在计算签名前后没有被修改
|
||||
- 确保 URL 路径处理正确,注意规范化路径时需要移除入口前缀
|
||||
- 确保使用了正确的 API 令牌和 ID
|
||||
- 检查客户端与服务器的时间是否准确,时间戳偏差大于 300 秒会导致验证失败
|
||||
- 确保请求体在计算签名前后没有被修改
|
||||
- 确保 URL 路径处理正确,注意规范化路径时需要移除入口前缀
|
||||
|
||||
### 请求超时
|
||||
|
||||
- 检查网络连接
|
||||
- 确认服务器状态
|
||||
- 考虑增加客户端的超时设置
|
||||
- 检查网络连接
|
||||
- 确认服务器状态
|
||||
- 考虑增加客户端的超时设置
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 常见问题
|
||||
|
||||
以下是关于耗子面板的一些常见问题和解答。 如果您有任何其他问题,请随时在[耗子面板论坛](https://tom.moe/c/technical/ratpanel)提问。 如果您发现任何 Bugs,请提交一个 [GitHub Issue](https://github.com/tnb-labs/panel/issues)。
|
||||
以下是关于 AcePanel 的一些常见问题和解答。 如果您有任何其他问题,请随时在 [AcePanel 论坛](https://tom.moe/c/technical/acepanel)提问。 如果您发现任何 Bugs,请提交一个 [GitHub Issue](https://github.com/tnborg/panel/issues)。
|
||||
|
||||
## 配置 QUIC(HTTP3)
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
### 面板方面
|
||||
|
||||
面板拥有和 root 一样的权限,管理不当亦会造成严重安全问题。 你应该做到:
|
||||
面板拥有和 root 一样的权限,管理不当亦会造成严重安全问题。 你应该做到: 你应该做到:
|
||||
|
||||
1. 定期更新面板及面板安装的应用。 同时推荐关注我们的频道或者群,以第一时间接收各类更新消息。
|
||||
2. 面板禁止使用弱密码和默认 8888 端口。 密码强烈建议使用随机生成器生成大于 20 位的混合密码并保存在安全位置。
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
layout: home
|
||||
hero:
|
||||
name: "耗子面板"
|
||||
name: "AcePanel"
|
||||
text: "简单轻量 • 高效运维"
|
||||
tagline: 全能服务器运维管理面板
|
||||
actions:
|
||||
- theme: brand
|
||||
text: 🌟 点亮 Star
|
||||
link: https://github.com/tnb-labs/panel
|
||||
link: https://github.com/tnborg/panel
|
||||
target: _blank
|
||||
- theme: alt
|
||||
text: 快速安装
|
||||
@@ -45,7 +45,7 @@ features:
|
||||
<img width="160" src="/wxd.png" alt="WeiXiaoDuo">
|
||||
</a>
|
||||
<a href="https://www.dkdun.cn/aff/MQZZNVHQ" style="padding: 1rem;">
|
||||
<img width="160" src="/dk.png" alt="LinFeng Cloud">
|
||||
<img width="160" src="/dk.png" alt="LF Cloud">
|
||||
</a>
|
||||
<a href="https://waf.pro/">
|
||||
<img width="160" src="/wafpro.png" alt="WAFPRO" style="padding: 1rem;">
|
||||
|
||||
@@ -10,7 +10,7 @@ next: false
|
||||
|
||||
我们提供免费的论坛服务,您可以在论坛中提问、交流、分享面板使用中的问题。
|
||||
|
||||
- [Moe Tom](https://tom.moe/c/technical/ratpanel)
|
||||
- [Moe Tom](https://tom.moe/c/technical/acepanel)
|
||||
|
||||
## 付费远程服务
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import { VPTeamMembers } from 'vitepress/theme'
|
||||
const members = [
|
||||
{
|
||||
avatar: 'https://weavatar.com/avatar/18e77debb1bc0000c0b50757b8f1bebb2c3e4df3d494124f776c15dbc1ebe8a5',
|
||||
name: 'Rat',
|
||||
desc: 'Founder & CEO',
|
||||
name: '耗子',
|
||||
desc: '創辦人 & CEO',
|
||||
links: [
|
||||
{ icon: 'github', link: 'https://github.com/devhaozi' },
|
||||
{ icon: 'bilibili', link: 'https://space.bilibili.com/8067' }
|
||||
@@ -19,8 +19,8 @@ const members = [
|
||||
},
|
||||
{
|
||||
avatar: 'https://weavatar.com/avatar/f6b23deadaa481f0b3ea75ad94f246881ed2326117efebad6f2799ea165779b9',
|
||||
name: 'Liang Zai',
|
||||
desc: 'Technical Director',
|
||||
name: '靚仔',
|
||||
desc: '技術總監',
|
||||
links: [
|
||||
{ icon: 'github', link: 'https://github.com/205125' }
|
||||
]
|
||||
@@ -28,37 +28,37 @@ const members = [
|
||||
]
|
||||
</script>
|
||||
|
||||
# About
|
||||
# 關於
|
||||
|
||||
RatPanel is a professional server operation and maintenance management panel dedicated to providing users with simple, efficient, and secure server management solutions.
|
||||
AcePanel 是一款專業的伺服器運維管理面板,致力於為用戶提供簡單、高效、安全的伺服器管理解決方案。
|
||||
|
||||
| Vision | Mission | Values |
|
||||
| -------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------- |
|
||||
| Become a leading provider of server management solutions | Make server management simple and efficient | User-first, Innovation-driven, Professional focus |
|
||||
| 願景 | 使命 | 價值觀 |
|
||||
| ----------------- | ------------- | -------------- |
|
||||
| 成為領先的伺服器管理解決方案提供商 | 讓伺服器管理變得簡單而高效 | 用戶至上、創新驅動、專業專注 |
|
||||
|
||||
## Team Introduction
|
||||
## 團隊介紹
|
||||
|
||||
<VPTeamMembers size="small" :members="members" />
|
||||
|
||||
## Development History
|
||||
## 發展歷程
|
||||
|
||||
:::timeline 2024 - New Journey
|
||||
The Panel received support from numerous sponsors, and released the brand new version 2.3 in the second half of 2024
|
||||
:::timeline 2024 - 全新起航
|
||||
面板得到了眾多贊助商的支持,2024 年下半年發佈了全新的 2.3 版本
|
||||
:::
|
||||
|
||||
:::timeline 2023 - Technical Accumulation
|
||||
Rewrote the Panel using Go, released versions 2.0 and 2.1 series, accumulated extensive development experience
|
||||
:::timeline 2023 - 技術積累
|
||||
使用 Go 對面板進行重寫,發佈 2.0 2.1 系列版本,積累了大量開發經驗
|
||||
:::
|
||||
|
||||
:::timeline 2022 - Project Initiation
|
||||
Project initiated in mid-2022, version 1.0 released at the end of the year
|
||||
:::timeline 2022 - 項目立項
|
||||
2022 年中項目立項,年末發佈 1.0 版本
|
||||
:::
|
||||
|
||||
## Contact Us
|
||||
## 聯繫我們
|
||||
|
||||
| 名稱 | Contact |
|
||||
| --------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| WeChat Work | [Click to Contact](https://work.weixin.qq.com/kfid/kfc20ea8e38b5a4e73a) |
|
||||
| QQ | [826896000](https://wpa.qq.com/msgrd?v=3&uin=826896000&site=qq&menu=yes) |
|
||||
| 電子郵件 | [admin@haozi.net](mailto:admin@haozi.net) |
|
||||
| Company Address | Room 206, Zhiku Building, No.1 Quanli Road, Huangzhuang Street, Wuqing District, Tianjin |
|
||||
| 名稱 | 聯繫方式 |
|
||||
| ---- | ------------------------------------------------------------------------------------------ |
|
||||
| 企業微信 | [點擊聯繫](https://work.weixin.qq.com/kfid/kfc20ea8e38b5a4e73a) |
|
||||
| QQ | [826896000](https://wpa.qq.com/msgrd?v=3&uin=826896000&site=qq&menu=yes) |
|
||||
| 電子郵件 | [admin@haozi.net](mailto:admin@haozi.net) |
|
||||
| 公司地址 | 天津市武清區黃莊街道泉里路1號智庫大廈206室 |
|
||||
|
||||
@@ -1,65 +1,65 @@
|
||||
# API Reference Documentation
|
||||
# API 參考文檔
|
||||
|
||||
## Overview
|
||||
## 概述
|
||||
|
||||
RatPanel provides a secure RESTful interface for interacting with the panel system. All API requests require HMAC-SHA256 signature authentication to ensure the security and integrity of communications.
|
||||
AcePanel 提供了安全的 RESTful 接口,用於與面板系統進行互動。 所有 API 請求都需要進行 HMAC-SHA256 簽名認證以確保通訊的安全性和完整性。
|
||||
|
||||
## Basic Information
|
||||
## 基本信息
|
||||
|
||||
- **Base URL**: `http(s)://your-panel-domain/{entry}/api/`
|
||||
- **Content Type**: All requests and responses use `application/json`
|
||||
- **Character Encoding**: UTF-8
|
||||
- **基本 URL**: `http(s)://your-panel-domain/{entry}/api/`
|
||||
- **內容類型**: 所有請求和響應均使用 `application/json`
|
||||
- **字符編碼**: UTF-8
|
||||
|
||||
## Authentication Mechanism
|
||||
## 身份驗證機制
|
||||
|
||||
The API uses the HMAC-SHA256 signature algorithm for authentication. Each request must include the following HTTP headers:
|
||||
API 使用 HMAC-SHA256 簽名算法進行身份認證。 每個請求必須包含以下 HTTP 標頭:
|
||||
|
||||
| Header Name | 描述 |
|
||||
| --------------- | -------------------------------------------------------------------------------------------------------- |
|
||||
| `Content-Type` | Set to `application/json` |
|
||||
| `X-Timestamp` | Current UNIX timestamp (seconds) |
|
||||
| `Authorization` | Authentication information, format: `HMAC-SHA256 Credential={id}, Signature={signature}` |
|
||||
| 標頭名稱 | 描述 |
|
||||
| --------------- | --------------------------------------------------------------- |
|
||||
| `Content-Type` | 設置為 `application/json` |
|
||||
| `X-Timestamp` | 當前 UNIX 時間戳(秒) |
|
||||
| `Authorization` | 身份認證信息,格式為 `HMAC-SHA256 Credential={id}, Signature={signature}` |
|
||||
|
||||
## Signature Algorithm
|
||||
## 簽名算法
|
||||
|
||||
The signature process consists of four main steps:
|
||||
簽名過程包含四個主要步驟:
|
||||
|
||||
### 1. Construct Canonical Request
|
||||
### 1. 構造規範化請求
|
||||
|
||||
The canonical request string consists of the following parts, separated by newline characters (\n):
|
||||
規範化請求字符串由以下部分組成,各部分之間使用換行符(\n)分隔:
|
||||
|
||||
```
|
||||
HTTP Method
|
||||
Canonical Path
|
||||
Canonical Query String
|
||||
SHA256 Hash of Request Body
|
||||
HTTP 方法
|
||||
規範化路徑
|
||||
規範化查詢字符串
|
||||
請求體的 SHA256 哈希值
|
||||
```
|
||||
|
||||
**Note**: The canonical path should always use the path part starting with `/api/`, ignoring the entry prefix.
|
||||
**注意**:規範化路徑應始終使用 `/api/` 開頭的路徑部分,忽略入口前綴。
|
||||
|
||||
### 2. Construct String to Sign
|
||||
### 2. 構造待簽名字符串
|
||||
|
||||
The string to sign consists of the following parts, separated by newline characters (\n):
|
||||
待簽名字符串包含以下部分,各部分使用換行符(\n)分隔:
|
||||
|
||||
```
|
||||
"HMAC-SHA256"
|
||||
Timestamp
|
||||
SHA256 Hash of Canonical Request
|
||||
時間戳
|
||||
規範化請求的 SHA256 哈希值
|
||||
```
|
||||
|
||||
### 3. Calculate Signature
|
||||
### 3. 計算簽名
|
||||
|
||||
Calculate HMAC-SHA256 on the string to sign using your token, then convert the result to a hexadecimal string.
|
||||
使用您的令牌(token)對待簽名字符串進行 HMAC-SHA256 計算,然後將結果轉換為十六進制字符串。
|
||||
|
||||
### 4. Construct Authorization Header
|
||||
### 4. 構造授權頭
|
||||
|
||||
Add the calculated signature to the `Authorization` header:
|
||||
將計算得到的簽名添加到 `Authorization` 頭:
|
||||
|
||||
```
|
||||
Authorization: HMAC-SHA256 Credential={id}, Signature={signature}
|
||||
授權: HMAC-SHA256 Credential={id}, Signature={signature}
|
||||
```
|
||||
|
||||
## Go Example
|
||||
## Go 範例
|
||||
|
||||
```go
|
||||
package main
|
||||
@@ -77,59 +77,59 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Create a request to get user information
|
||||
// 創建一個獲取用戶信息的請求
|
||||
req, err := http.NewRequest("GET", "http://example.com/entrance/api/user/info", nil)
|
||||
if err != nil {
|
||||
fmt.Println("Error creating request:", err)
|
||||
fmt.Println("創建請求時出錯:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Set content type
|
||||
// 設置內容類型
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
// Sign request - pass your user ID and API token
|
||||
// 簽名請求 - 傳入您的用戶 ID 和 API 令牌
|
||||
if err = SignReq(req, uint(16), "YourSecretToken"); err != nil {
|
||||
fmt.Println("Error signing request:", err)
|
||||
fmt.Println("簽名請求時出錯:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Send request
|
||||
// 發送請求
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
fmt.Println("Error sending request:", err)
|
||||
fmt.Println("發送請求時出錯:", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// Handle response
|
||||
// 處理響應
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
fmt.Println("Error reading response:", err)
|
||||
fmt.Println("讀取響應時出錯:", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("Response Status:", resp.Status)
|
||||
fmt.Println("Response Body:", string(body))
|
||||
fmt.Println("響應狀態:", resp.Status)
|
||||
fmt.Println("響應內容:", string(body))
|
||||
}
|
||||
|
||||
// SignReq signs an HTTP request
|
||||
// SignReq 對 HTTP 請求進行簽名
|
||||
func SignReq(req *http.Request, id uint, token string) error {
|
||||
// Step 1: Construct canonical request
|
||||
// 步驟 1:構造規範化請求
|
||||
var body []byte
|
||||
var err error
|
||||
|
||||
if req.Body != nil {
|
||||
// Read and save request body
|
||||
// 讀取並保存請求體
|
||||
body, err = io.ReadAll(req.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Restore request body for subsequent use
|
||||
// 恢復請求體以便後續使用
|
||||
req.Body = io.NopCloser(bytes.NewReader(body))
|
||||
}
|
||||
|
||||
// Canonical path
|
||||
// 規範化路徑
|
||||
canonicalPath := req.URL.Path
|
||||
if !strings.HasPrefix(canonicalPath, "/api") {
|
||||
index := strings.Index(canonicalPath, "/api")
|
||||
@@ -144,7 +144,7 @@ func SignReq(req *http.Request, id uint, token string) error {
|
||||
req.URL.Query().Encode(),
|
||||
SHA256(string(body)))
|
||||
|
||||
// Step 2: Set timestamp and construct string to sign
|
||||
// 步驟 2:設置時間戳並構造待簽名字符串
|
||||
timestamp := time.Now().Unix()
|
||||
req.Header.Set("X-Timestamp", fmt.Sprintf("%d", timestamp))
|
||||
|
||||
@@ -153,10 +153,10 @@ func SignReq(req *http.Request, id uint, token string) error {
|
||||
timestamp,
|
||||
SHA256(canonicalRequest))
|
||||
|
||||
// Step 3: Calculate signature
|
||||
// 步驟 3:計算簽名
|
||||
signature := HMACSHA256(stringToSign, token)
|
||||
|
||||
// Step 4: Set Authorization header
|
||||
// 步驟 4:設置 Authorization 頭
|
||||
authHeader := fmt.Sprintf("HMAC-SHA256 Credential=%d, Signature=%s", id, signature)
|
||||
req.Header.Set("Authorization", authHeader)
|
||||
|
||||
@@ -177,12 +177,12 @@ func HMACSHA256(data string, secret string) string {
|
||||
}
|
||||
```
|
||||
|
||||
## PHP Example
|
||||
## PHP 範例
|
||||
|
||||
```php
|
||||
<?php
|
||||
/**
|
||||
* RatPanel API Request Example (PHP)
|
||||
* AcePanel API Request Example (PHP)
|
||||
*/
|
||||
|
||||
function signRequest($method, $url, $body, $id, $token) {
|
||||
@@ -269,7 +269,7 @@ echo "Response Status Code: " . $statusCode . PHP_EOL;
|
||||
echo "Response Content: " . $response . PHP_EOL;
|
||||
```
|
||||
|
||||
## Python Example
|
||||
## Python 範例
|
||||
|
||||
```python
|
||||
import hashlib
|
||||
@@ -280,28 +280,28 @@ import time
|
||||
from urllib.parse import urlparse, parse_qs
|
||||
|
||||
def sha256_hash(text):
|
||||
"""Calculate SHA256 hash of a string"""
|
||||
"""計算字符串的 SHA256 哈希值"""
|
||||
return hashlib.sha256(text.encode('utf-8')).hexdigest()
|
||||
|
||||
def hmac_sha256(key, message):
|
||||
"""Calculate signature using HMAC-SHA256 algorithm"""
|
||||
"""使用 HMAC-SHA256 算法計算簽名"""
|
||||
return hmac.new(key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256).hexdigest()
|
||||
|
||||
def sign_request(method, url, body, user_id, token):
|
||||
"""Generate signature for API request"""
|
||||
# Parse URL
|
||||
"""為 API 請求生成簽名"""
|
||||
# 解析 URL
|
||||
parsed_url = urlparse(url)
|
||||
path = parsed_url.path
|
||||
query = parsed_url.query
|
||||
|
||||
# Canonical path
|
||||
# 規範化路徑
|
||||
canonical_path = path
|
||||
if not path.startswith('/api'):
|
||||
api_pos = path.find('/api')
|
||||
if api_pos != -1:
|
||||
canonical_path = path[api_pos:]
|
||||
|
||||
# Construct canonical request
|
||||
# 構造規範化請求
|
||||
body_str = body if body else ""
|
||||
canonical_request = "\n".join([
|
||||
method,
|
||||
@@ -310,17 +310,17 @@ def sign_request(method, url, body, user_id, token):
|
||||
sha256_hash(body_str)
|
||||
])
|
||||
|
||||
# Get current timestamp
|
||||
# 獲取當前時間戳
|
||||
timestamp = int(time.time())
|
||||
|
||||
# Construct string to sign
|
||||
# 構造待簽名字符串
|
||||
string_to_sign = "\n".join([
|
||||
"HMAC-SHA256",
|
||||
str(timestamp),
|
||||
sha256_hash(canonical_request)
|
||||
])
|
||||
|
||||
# Calculate signature
|
||||
# 計算簽名
|
||||
signature = hmac_sha256(token, string_to_sign)
|
||||
|
||||
return {
|
||||
@@ -329,24 +329,24 @@ def sign_request(method, url, body, user_id, token):
|
||||
"id": user_id
|
||||
}
|
||||
|
||||
# Example request
|
||||
# 範例請求
|
||||
api_url = "http://example.com/entrance/api/user/info"
|
||||
method = "GET"
|
||||
body = "" # GET requests typically have no body
|
||||
body = "" # GET 請求通常沒有請求主體
|
||||
user_id = 16
|
||||
token = "YourSecretToken"
|
||||
token = "您的秘密令牌"
|
||||
|
||||
# Generate signature information
|
||||
# 生成簽名信息
|
||||
signing_data = sign_request(method, api_url, body, user_id, token)
|
||||
|
||||
# Prepare HTTP headers
|
||||
# 準備 HTTP 標頭
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"X-Timestamp": str(signing_data["timestamp"]),
|
||||
"Authorization": f"HMAC-SHA256 Credential={signing_data['id']}, Signature={signing_data['signature']}"
|
||||
}
|
||||
|
||||
# Send request
|
||||
# 發送請求
|
||||
response = requests.request(
|
||||
method=method,
|
||||
url=api_url,
|
||||
@@ -354,12 +354,12 @@ response = requests.request(
|
||||
data=body
|
||||
)
|
||||
|
||||
# Output results
|
||||
print(f"Response Status Code: {response.status_code}")
|
||||
print(f"Response Content: {response.text}")
|
||||
# 輸出結果
|
||||
print(f"響應狀態碼: {response.status_code}")
|
||||
print(f"響應內容: {response.text}")
|
||||
```
|
||||
|
||||
## Java Example
|
||||
## Java 範例
|
||||
|
||||
```java
|
||||
import java.net.URI;
|
||||
@@ -374,9 +374,9 @@ import javax.crypto.spec.SecretKeySpec;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* RatPanel API Request Example (Java)
|
||||
* AcePanel API Request Example (Java)
|
||||
*/
|
||||
public class RatPanelApiExample {
|
||||
public class AcePanelApiExample {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
@@ -501,7 +501,7 @@ public class RatPanelApiExample {
|
||||
}
|
||||
```
|
||||
|
||||
## Node.js Example
|
||||
## Node.js 範例
|
||||
|
||||
```javascript
|
||||
const crypto = require('crypto');
|
||||
@@ -509,40 +509,40 @@ const axios = require('axios');
|
||||
const url = require('url');
|
||||
|
||||
/**
|
||||
* Calculate SHA256 hash of a string
|
||||
* @param {string} text The string to hash
|
||||
* @returns {string} Hash result (hexadecimal)
|
||||
* 計算字符串的 SHA256 哈希值
|
||||
* @param {string} text 待哈希的字符串
|
||||
* @returns {string} 哈希結果(十六進制)
|
||||
*/
|
||||
function sha256Hash(text) {
|
||||
return crypto.createHash('sha256').update(text || '').digest('hex');
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate signature using HMAC-SHA256 algorithm
|
||||
* @param {string} key The key
|
||||
* @param {string} message The message to sign
|
||||
* @returns {string} Signature result (hexadecimal)
|
||||
* 使用 HMAC-SHA256 算法計算簽名
|
||||
* @param {string} key 密鑰
|
||||
* @param {string} message 待簽名的消息
|
||||
* @returns {string} 簽名結果(十六進制)
|
||||
*/
|
||||
function hmacSha256(key, message) {
|
||||
return crypto.createHmac('sha256', key).update(message).digest('hex');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate signature for API request
|
||||
* @param {string} method HTTP method
|
||||
* @param {string} apiUrl API URL
|
||||
* @param {string} body Request body
|
||||
* @param {number} id User ID
|
||||
* @param {string} token Secret key
|
||||
* @returns {object} Object containing signature, timestamp and ID
|
||||
* 為 API 請求生成簽名
|
||||
* @param {string} method HTTP 方法
|
||||
* @param {string} apiUrl API 地址
|
||||
* @param {string} body 請求體
|
||||
* @param {number} id 用戶 ID
|
||||
* @param {string} token 密鑰
|
||||
* @returns {object} 包含簽名、時間戳和 ID 的對象
|
||||
*/
|
||||
function signRequest(method, apiUrl, body, id, token) {
|
||||
// Parse URL
|
||||
// 解析 URL
|
||||
const parsedUrl = new url.URL(apiUrl);
|
||||
const path = parsedUrl.pathname;
|
||||
const query = parsedUrl.search.slice(1); // Remove leading '?'
|
||||
const query = parsedUrl.search.slice(1); // 移除開頭的 '?'
|
||||
|
||||
// Canonical path
|
||||
// 規範化路徑
|
||||
let canonicalPath = path;
|
||||
if (!path.startsWith('/api')) {
|
||||
const apiPos = path.indexOf('/api');
|
||||
@@ -551,7 +551,7 @@ function signRequest(method, apiUrl, body, id, token) {
|
||||
}
|
||||
}
|
||||
|
||||
// Construct canonical request
|
||||
// 構造規範化請求
|
||||
const canonicalRequest = [
|
||||
method,
|
||||
canonicalPath,
|
||||
@@ -559,17 +559,17 @@ function signRequest(method, apiUrl, body, id, token) {
|
||||
sha256Hash(body || '')
|
||||
].join('\n');
|
||||
|
||||
// Get current timestamp
|
||||
// 獲取當前時間戳
|
||||
const timestamp = Math.floor(Date.now() / 1000);
|
||||
|
||||
// Construct string to sign
|
||||
// 構造待簽名字符串
|
||||
const stringToSign = [
|
||||
'HMAC-SHA256',
|
||||
timestamp,
|
||||
sha256Hash(canonicalRequest)
|
||||
].join('\n');
|
||||
|
||||
// Calculate signature
|
||||
// 計算簽名
|
||||
const signature = hmacSha256(token, stringToSign);
|
||||
|
||||
return {
|
||||
@@ -580,28 +580,28 @@ function signRequest(method, apiUrl, body, id, token) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Send API request
|
||||
* 發送 API 請求
|
||||
*/
|
||||
async function sendApiRequest() {
|
||||
// Example request parameters
|
||||
// 範例請求參數
|
||||
const apiUrl = 'http://example.com/entrance/api/user/info';
|
||||
const method = 'GET';
|
||||
const body = ''; // GET requests typically have no body
|
||||
const body = ''; // GET 請求通常沒有請求體
|
||||
const id = 16;
|
||||
const token = 'YourSecretToken';
|
||||
const token = '您的秘密令牌';
|
||||
|
||||
try {
|
||||
// Generate signature information
|
||||
// 生成簽名信息
|
||||
const signingData = signRequest(method, apiUrl, body, id, token);
|
||||
|
||||
// Prepare HTTP headers
|
||||
// 準備 HTTP 標頭
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Timestamp': signingData.timestamp,
|
||||
'Authorization': `HMAC-SHA256 Credential=${signingData.id}, Signature=${signingData.signature}`
|
||||
};
|
||||
|
||||
// Send request
|
||||
// 發送請求
|
||||
const response = await axios({
|
||||
method,
|
||||
url: apiUrl,
|
||||
@@ -609,53 +609,53 @@ async function sendApiRequest() {
|
||||
data: body || undefined
|
||||
});
|
||||
|
||||
// Output results
|
||||
console.log(`Response Status Code: ${response.status}`);
|
||||
console.log(`Response Content: ${JSON.stringify(response.data)}`);
|
||||
// 輸出結果
|
||||
console.log(`響應狀態碼: ${response.status}`);
|
||||
console.log(`響應內容: ${JSON.stringify(response.data)}`);
|
||||
|
||||
} catch (error) {
|
||||
console.error('Request Error:', error.message);
|
||||
console.error('請求錯誤:', error.message);
|
||||
if (error.response) {
|
||||
console.error(`Response Status Code: ${error.response.status}`);
|
||||
console.error(`Response Content: ${JSON.stringify(error.response.data)}`);
|
||||
console.error(`響應狀態碼: ${error.response.status}`);
|
||||
console.error(`響應內容: ${JSON.stringify(error.response.data)}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Execute request
|
||||
// 執行請求
|
||||
sendApiRequest();
|
||||
```
|
||||
|
||||
## Common Response Codes
|
||||
## 常見響應碼
|
||||
|
||||
| HTTP Status Code | 描述 |
|
||||
| ---------------- | ----------------------- |
|
||||
| 200 | Request successful |
|
||||
| 401 | Authentication failed |
|
||||
| 403 | Permission denied |
|
||||
| 404 | Resource not found |
|
||||
| 422 | Request parameter error |
|
||||
| 500 | Internal server error |
|
||||
| HTTP 狀態碼 | 描述 |
|
||||
| -------- | ------- |
|
||||
| 200 | 請求成功 |
|
||||
| 401 | 身份驗證失敗 |
|
||||
| 403 | 權限不足 |
|
||||
| 404 | 資源不存在 |
|
||||
| 422 | 請求參數錯誤 |
|
||||
| 500 | 伺服器內部錯誤 |
|
||||
|
||||
## Security Recommendations
|
||||
## 安全建議
|
||||
|
||||
1. **Protect Your API Token**: Do not hardcode or expose your API token in client-side code
|
||||
2. **Rotate Tokens Regularly**: Change your API token regularly to enhance security
|
||||
3. **Configure IP Whitelisting**: Use IP whitelisting to restrict access in production environments
|
||||
1. **保護您的 API 令牌**:不要在客戶端代碼中硬編碼或公開您的 API 令牌
|
||||
2. **定期輪換令牌**:定期更改您的 API 令牌以提高安全性
|
||||
3. **配置 IP 白名單**:在生產環境中使用 IP 白名單限制訪問
|
||||
|
||||
## Frequently Asked Questions
|
||||
## 常見問題解答
|
||||
|
||||
### Signature Verification Failed
|
||||
### 簽名驗證失敗
|
||||
|
||||
If you encounter signature verification failures, check:
|
||||
如果遇到簽名驗證失敗,請檢查:
|
||||
|
||||
- Ensure you are using the correct API token and ID
|
||||
- Check that the client and server times are accurate; timestamp differences greater than 300 seconds will cause verification to fail
|
||||
- Ensure the request body hasn't been modified before or after signature calculation
|
||||
- Ensure the URL path is handled correctly; remember to remove the entry prefix when normalizing the path
|
||||
- 確保使用了正確的 API 令牌和 ID
|
||||
- 檢查客戶端和伺服器時間是否準確;時間戳之間的差異超過 300 秒將導致驗證失敗
|
||||
- 確保請求主體在計算簽名前後沒有被修改
|
||||
- 確保 URL 路徑處理正確;請記住在規範化路徑時要移除入口前綴
|
||||
|
||||
### Request Timeout
|
||||
### 請求超時
|
||||
|
||||
- Check network connection
|
||||
- Confirm server status
|
||||
- Consider increasing the client timeout settings
|
||||
- 檢查網絡連接
|
||||
- 確認伺服器狀態
|
||||
- 考慮增加客戶端的超時設置
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
# Frequently Asked Questions
|
||||
# 常見問題
|
||||
|
||||
Here are some common questions and answers about RatPanel. If you have any other questions, please feel free to ask in the [RatPanel Community](https://tom.moe/c/technical/ratpanel). If you find any bugs, please submit a [GitHub Issue](https://github.com/tnb-labs/panel/issues).
|
||||
以下是關於 AcePanel 的一些常見問題和解答。 如果您有任何其他問題,請隨時在 [AcePanel 社區](https://tom.moe/c/technical/acepanel) 提問。 如果您發現任何 Bugs,請提交一個 [GitHub Issue](https://github.com/tnborg/panel/issues)。
|
||||
|
||||
## Configure QUIC (HTTP3)
|
||||
## 配置 QUIC(HTTP3)
|
||||
|
||||
RatPanel currently supports automatic QUIC configuration, but for compatibility reasons, the `Alt-Svc` header is not added by default. Browsers will not attempt to use QUIC connections without detecting the `Alt-Svc` header.
|
||||
AcePanel 目前支持自動 QUIC 配置,但出於兼容性原因,默認不添加 `Alt-Svc` 標頭。 瀏覽器在未檢測到 `Alt-Svc` 標頭時不會嘗試使用 QUIC 連接。
|
||||
|
||||
If you are not using a CDN, you can add the configuration below to your website's rewrite rules to let browsers know that the website supports and uses QUIC connections.
|
||||
如果您不使用 CDN,可以將下述配置添加到網站的重寫規則中,以告訴瀏覽器該網站支持並使用 QUIC 連接。
|
||||
|
||||
```nginx
|
||||
add_header Alt-Svc 'h3=":$server_port"; ma=2592000';
|
||||
```
|
||||
|
||||
If you are using a CDN or there are proxy servers in front, then QUIC needs to be enabled on the CDN / frontend.
|
||||
如果您使用 CDN 或有代理伺服器在前端,則 QUIC 需要在 CDN / 前端啟用。
|
||||
|
||||
If the configuration still doesn't work, please check your browser version and the availability of UDP port 443.
|
||||
如果配置後仍不生效,請檢查您的瀏覽器版本和 UDP 443 端口的可用性。
|
||||
|
||||
- According to Nginx's git commit history, all QUIC draft versions have been removed in version 1.25, so there's no need to add draft version numbers to `Alt-Svc`.
|
||||
- 根據 Nginx 的 git 提交記錄,1.25 版本下所有 QUIC 草案版本已經移除,因此 `Alt-Svc` 無需添加草案版本號。
|
||||
|
||||
## Configure TLSv1.1 TLSv1
|
||||
## 配置 TLSv1.1 TLSv1
|
||||
|
||||
The current Panel OpenResty is compiled with OpenSSL 3.5, which by default disables the deprecated TLSv1.1 and TLSv1 protocols.
|
||||
當前面板 OpenResty 使用 OpenSSL 3.5 版本編譯,默認禁用已棄用的 TLSv1.1 TLSv1 協議。
|
||||
|
||||
Of course, if your business must use these two protocols, you can enable them using the SSL configuration below.
|
||||
當然,如果您的業務必須使用這兩個協議,您可以使用下述 SSL 配置啟用。
|
||||
|
||||
```nginx
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
@@ -30,31 +30,31 @@ ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDS
|
||||
ssl_prefer_server_ciphers on;
|
||||
```
|
||||
|
||||
## Configure Reverse Proxy
|
||||
## 配置反向代理
|
||||
|
||||
RatPanel v2.4.10+ comes with a built-in reverse proxy configuration generator, which you can access through the top right corner of the site rewrite configuration page.
|
||||
AcePanel v2.4.10+ 自帶反向代理配置生成器,您可以通過站點重寫配置頁面的右上角訪問。
|
||||
|
||||
Note: If you encounter issues with static resources like CSS/JS not loading properly after setting up a reverse proxy, please remove the **Do not log static files** section from the site's main configuration file.
|
||||
注意:如果設置反向代理後出現 CSS/JS 等靜態資源無法正常加載的問題,請移除站點主配置文件中的 **不記錄靜態文件** 部分。
|
||||
|
||||
## Configure Process Monitoring
|
||||
## 配置進程監控
|
||||
|
||||
1. Install Supervisor manager and open it.
|
||||
2. Create processes that need to be monitored in the Supervisor manager (it's not recommended to use root as the running user).
|
||||
3. Common issues: [https://tom.moe/t/supervisor/3112](https://tom.moe/t/supervisor/3112)
|
||||
1. 安裝 Supervisor 管理器並打開。
|
||||
2. 在 Supervisor 管理器中創建需要被監控的進程(不建議使用 root 作為運行用戶)。
|
||||
3. 常見問題:[https://tom.moe/t/supervisor/3112](https://tom.moe/t/supervisor/3112)
|
||||
|
||||
## Configure IPv6
|
||||
## 配置 IPv6
|
||||
|
||||
If you want to enable IPv6 support, you need to add `[::]:80` and `[::]:443` to the website's listening address configuration.
|
||||
如果您想要啟用 IPv6 支持,您需要將 `[::]:80` 和 `[::]:443` 添加到網站的監聽地址配置。
|
||||
|
||||
## Configure Container Image Acceleration
|
||||
## 配置容器鏡像加速
|
||||
|
||||
Due to certain reasons, domestic users in China may be unable to connect to Docker Hub to pull container images, thus requiring image acceleration configuration.
|
||||
由於一些原因,國內用戶可能無法連接到 Docker Hub 以拉取容器鏡像,因此需要配置鏡像加速。
|
||||
|
||||
### For Podman
|
||||
### 對於 Podman
|
||||
|
||||
Open the Podman settings page in the Panel, and navigate to the Registry Configuration tab.
|
||||
在面板中打開 Podman 設置頁面,並導航到註冊表配置選項卡。
|
||||
|
||||
Scroll to the bottom of the configuration file, add the following configuration and save:
|
||||
滾動到配置文件底部,添加如下配置並保存:
|
||||
|
||||
```
|
||||
[[registry]]
|
||||
@@ -63,13 +63,13 @@ location = "docker.io"
|
||||
location = "docker.1ms.run"
|
||||
```
|
||||
|
||||
Where docker.1ms.run is the configured image acceleration address. You can refer to other tutorials to set up and use it.
|
||||
其中 docker.1ms.run 為配置的鏡像加速地址。 您可以參考其他教程進行設置和使用。
|
||||
|
||||
### For Docker
|
||||
### 對於 Docker
|
||||
|
||||
Open the Docker settings page in the Panel, and navigate to the Configuration tab.
|
||||
在面板中打開 Docker 設置頁面,並導航到配置選項卡。
|
||||
|
||||
Add the following configuration and save:
|
||||
添加如下配置並保存:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -77,4 +77,4 @@ Add the following configuration and save:
|
||||
}
|
||||
```
|
||||
|
||||
Where https://docker.1ms.run is the configured image acceleration address. You can refer to other tutorials to set up and use it.
|
||||
其中 https://docker.1ms.run 為配置的鏡像加速地址。 您可以參考其他教程進行設置和使用。
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
# Security Recommendations
|
||||
# 安全性建議
|
||||
|
||||
With the following security measures, almost all hacking/malware issues can be prevented.
|
||||
透過以下安全措施,幾乎可以杜絕一切被黑/掛馬問題。
|
||||
|
||||
### Website Aspects
|
||||
### 網站方面
|
||||
|
||||
Based on experience, most hacking and malware incidents are caused by program vulnerabilities, unrelated to the Panel or environment. For website security, you should:
|
||||
根據以往經驗,大多數被黑和惡意程式事件都是由程序漏洞造成的,與面板或環境無關。 為了網站安全,你應該:
|
||||
|
||||
1. Avoid using pirated programs or software, especially when you cannot determine if they have been tampered with.
|
||||
2. Regularly update website programs and software environments; don't use outdated software due to inconvenience, as their security cannot be guaranteed.
|
||||
3. Never use weak passwords for website admin areas. Passwords are strongly recommended to be generated using a random generator with more than 20 mixed characters and stored in a secure location. If possible, enable 2FA for your programs.
|
||||
4. Set up scheduled backups of all site data; don't operate without backups.
|
||||
5. PHP has disabled some high-risk functions by default; don't remove these restrictions unless absolutely necessary.
|
||||
1. 避免使用盜版程序或軟體,特別是在你無法判斷它們是否被篡改的情況下。
|
||||
2. 定期更新網站程序和軟體環境;不要因為麻煩而使用過時的軟體,因為其安全性無法保證。
|
||||
3. 網站後台禁止使用弱密碼。 密碼強烈建議使用隨機生成器生成大於20位的混合字符,並存儲在安全的位置。 如果可能,為你的程序啟用兩步驟驗證(2FA)。
|
||||
4. 設置所有網站數據的定期備份;不要在沒有備份的情況下運行。
|
||||
5. PHP預設禁用了某些高風險功能;除非絕對必要,否則不要移除這些限制。
|
||||
|
||||
### System Aspects
|
||||
### 系統方面
|
||||
|
||||
The probability of serious security vulnerabilities in modern systems is low, but you should still:
|
||||
現代系統出現嚴重安全漏洞的概率是很低的,但你仍應該做到:
|
||||
|
||||
1. Regularly update system software. (Use `yum update` or `apt upgrade`).
|
||||
2. Prohibit weak passwords and the default port 22 for SSH. Passwords are strongly recommended to be generated using a random generator with more than 20 mixed characters and stored in a secure location. If possible, consider installing Fail2ban for targeted protection.
|
||||
3. Don't arbitrarily assign 777 permissions or execution permissions to the www user, as this may cause major security risks.
|
||||
4. If your service provider offers VNC server management, consider disabling SSH to solve the problem at the source.
|
||||
1. 定期更新系統軟體。 (使用 `yum update` 或 `apt upgrade`)。
|
||||
2. SSH禁止使用弱密碼和默認的22端口。 密碼強烈建議使用隨機生成器生成大於20位的混合字符,並存儲在安全的位置。 如果可能,考慮安裝Fail2ban以進行針對性保護。
|
||||
3. 不要隨意給予777權限或執行權限給www用戶,因為這可能造成重大的安全隱患。
|
||||
4. 如果你的服務提供商提供VNC伺服器管理,考慮關閉SSH以從源頭解決問題。
|
||||
|
||||
### Panel Aspects
|
||||
### 面板方面
|
||||
|
||||
RatPanel has the same privileges as root, and improper management can cause serious security problems. You should:
|
||||
AcePanel 擁有與 root 相同的權限,不當管理可能會造成嚴重的安全問題。 你應該做到:
|
||||
|
||||
1. Regularly update the Panel and applications installed through it. We recommend following our channel or group to receive various update messages promptly.
|
||||
2. Prohibit weak passwords and the default 8888 port for the Panel. Passwords are strongly recommended to be generated using a random generator with more than 20 mixed characters and stored in a secure location.
|
||||
3. Consider modifying the Panel entry point and enabling HTTPS for the Panel to prevent scanner detection and man-in-the-middle attacks.
|
||||
4. Unless necessary, do not allow firewall access to internal service ports (Redis 6379, MySQL 3306, PostgreSQL 5432, etc.), as this may cause serious security risks. (Local website connections don't require firewall access; connection issues are program problems).
|
||||
5. For high-security requirements, consider stopping the Panel operation routinely and starting it only when needed (stopping the Panel will not affect websites, scheduled tasks, etc.).
|
||||
1. 定期更新面板及透過它安裝的應用。 我們建議關注我們的頻道或群組,以便及時收到各種更新消息。
|
||||
2. 面板禁止使用弱密碼和默認8888端口。 密碼強烈建議使用隨機生成器生成大於20位的混合字符,並存儲在安全的位置。
|
||||
3. 建議修改面板入口並啟用HTTPS,以防止被掃描器檢測和中間人攻擊。
|
||||
4. 除非必要,否則不允許防火牆訪問內部服務端口(Redis 6379、MySQL 3306、PostgreSQL 5432等),因為這可能造成嚴重的安全風險。 (網站本地連接不需要放行;連接問題是程序問題)。
|
||||
5. 對於安全性要求較高的情況,考慮定期停止面板運行,僅在需要時啟動(停止運行面板不會影響網站、計劃任務等)。
|
||||
|
||||
@@ -4,11 +4,11 @@ prev: false
|
||||
next: false
|
||||
---
|
||||
|
||||
# Certificates
|
||||
# 證書
|
||||
|
||||
If the 3-month free certificate cannot meet your needs, you can choose to purchase higher-level certificates. We offer DV single-domain certificates and DV wildcard certificates for your selection.
|
||||
如果 3 個月的免費證書無法滿足您的需求,您可以選擇購買更高級別的證書。 我們提供 DV 單域名證書和 DV 通配符證書供您選擇。
|
||||
|
||||
Due to pricing policy restrictions, please contact our sales team directly through the group link in the upper right corner for specific prices and purchases.
|
||||
由於定價政策的限制,請通過右上角的群組鏈接直接聯繫我們的銷售團隊以獲取具體價格和購買信息。
|
||||
|
||||
<style>
|
||||
.cert-cards-container {
|
||||
@@ -119,83 +119,83 @@ Due to pricing policy restrictions, please contact our sales team directly throu
|
||||
}
|
||||
</style>
|
||||
|
||||
## Choose Certificates
|
||||
## 選擇證書
|
||||
|
||||
<div class="cert-cards-container">
|
||||
<div class="cert-card">
|
||||
<div class="cert-card-header">
|
||||
<h2 class="cert-card-title">DV Single-domain Certificate</h2>
|
||||
<h2 class="cert-card-title">DV 單域名證書</h2>
|
||||
</div>
|
||||
<div class="cert-subtitle">Internationally recognized brand certificate</div>
|
||||
<div class="cert-price">¥ 1X<span>/year</span></div>
|
||||
<div class="cert-subtitle">國際知名品牌證書</div>
|
||||
<div class="cert-price">¥ 1X<span>/年</span></div>
|
||||
<div class="cert-features">
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>Domain Validation (DV) Certificate</span>
|
||||
<span>域名驗證(DV)證書</span>
|
||||
</div>
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>Supports one domain</span>
|
||||
<span>僅支持一個域名</span>
|
||||
</div>
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>One-year validity</span>
|
||||
<span>一年有效期</span>
|
||||
</div>
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>Rapid issuance</span>
|
||||
<span>快速頒發</span>
|
||||
</div>
|
||||
</div><button class="cert-buy-button">Contact sales in the upper right corner</button>
|
||||
</div><button class="cert-buy-button">右上角聯繫銷售</button>
|
||||
</div>
|
||||
<div class="cert-card">
|
||||
<div class="cert-card-header">
|
||||
<h2 class="cert-card-title">DV Wildcard Certificate</h2>
|
||||
<h2 class="cert-card-title">DV 通配符證書</h2>
|
||||
</div>
|
||||
<div class="cert-subtitle">Internationally recognized brand certificate</div>
|
||||
<div class="cert-price">¥ 1XX<span>/year</span></div>
|
||||
<div class="cert-subtitle">國際知名品牌證書</div>
|
||||
<div class="cert-price">¥ 1XX<span>/年</span></div>
|
||||
<div class="cert-features">
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>Domain Validation (DV) Certificate</span>
|
||||
<span>域名驗證(DV)證書</span>
|
||||
</div>
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>Covers all subdomains</span>
|
||||
<span>涵蓋所有子域</span>
|
||||
</div>
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>One-year validity</span>
|
||||
<span>一年有效期</span>
|
||||
</div>
|
||||
<div class="cert-feature-item"><span class="cert-check-icon">✓</span>
|
||||
<span>Rapid issuance</span>
|
||||
<span>快速頒發</span>
|
||||
</div>
|
||||
</div><button class="cert-buy-button">Contact sales in the upper right corner</button>
|
||||
</div><button class="cert-buy-button">右上角聯繫銷售</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Certificate Features
|
||||
## 證書特點
|
||||
|
||||
<div class="cert-features-section">
|
||||
<div class="cert-features-grid">
|
||||
<div class="cert-feature-card">
|
||||
<div class="cert-feature-icon">🛡️</div>
|
||||
<div class="cert-feature-content">
|
||||
<h3>Safe and Reliable</h3>
|
||||
<p>Uses international standards to protect website security</p>
|
||||
<h3>安全可靠</h3>
|
||||
<p>使用國際標準來保護網站安全</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cert-feature-card">
|
||||
<div class="cert-feature-icon">⚡</div>
|
||||
<div class="cert-feature-content">
|
||||
<h3>Rapid Issuance</h3>
|
||||
<p>Simplified issuance process for quick certificate delivery</p>
|
||||
<h3>快速簽發</h3>
|
||||
<p>簡化簽發流程,以快速提供證書</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cert-feature-card">
|
||||
<div class="cert-feature-icon">💳</div>
|
||||
<div class="cert-feature-content">
|
||||
<h3>Flexible Payment</h3>
|
||||
<p>Multiple specifications available to meet different needs</p>
|
||||
<h3>靈活付費</h3>
|
||||
<p>提供多種規格以滿足不同需求</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cert-feature-card">
|
||||
<div class="cert-feature-icon">👨💻</div>
|
||||
<div class="cert-feature-content">
|
||||
<h3>Professional Service</h3>
|
||||
<p>Professional technical support ensures worry-free usage</p>
|
||||
<h3>專業服務</h3>
|
||||
<p>專業技術支持確保無憂使用</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
---
|
||||
layout: home
|
||||
hero:
|
||||
name: "耗子面板"
|
||||
text: "Simple · lightweight · efficient"
|
||||
tagline: Enterprise server operation and maintenance management panel
|
||||
name: "AcePanel"
|
||||
text: "簡單 · 輕量 · 高效"
|
||||
tagline: 企業伺服器運維管理面板
|
||||
actions:
|
||||
- theme: brand
|
||||
text: 🌟 Star
|
||||
- theme: 品牌
|
||||
text: 🌟 點亮 Star
|
||||
link: https://github.com/tnb-labs/panel
|
||||
target: _blank
|
||||
- theme: alt
|
||||
text: Quick install
|
||||
text: 快速安裝
|
||||
link: /quickstart/install
|
||||
features:
|
||||
- icon: ✨
|
||||
title: Extremely low occupancy
|
||||
details: Developed in Go language, small installation package, low occupancy, single file operation, will not affect system performance
|
||||
title: 極低佔用
|
||||
details: 以 Go 語言開發,安裝包小,佔用低,單文件運行,不會影響系統性能
|
||||
- icon: 🛠
|
||||
title: Low destructiveness
|
||||
details: Designed to minimize additional modifications to the system, we make the fewest modifications to the system among similar products
|
||||
title: 低破壞性
|
||||
details: 設計為盡可能減少對系統的額外修改,在同類產品中,我們對系統的修改最少
|
||||
- icon: 📅
|
||||
title: Follow the times
|
||||
details: The overall design is at the forefront of the times, with good compatibility with new systems, leading in the same type of products
|
||||
title: 跟隨時代
|
||||
details: 整體設計走在時代前沿,對新系統兼容性好,在同類產品中處於領先地位
|
||||
- icon: 🚀
|
||||
title: Efficient operation and maintenance
|
||||
details: Complete functions, strong customization capabilities, can quickly deploy small websites, and deploy complex applications based on customized requirements
|
||||
title: 高效運維
|
||||
details: 功能完善,自定義能力強,既可快速部署小型網站,也可基於定制化需求部署複雜應用
|
||||
- icon: ⛓️💥
|
||||
title: Offline operation
|
||||
details: Support offline mode, and even stop the panel process after deployment, without affecting any existing services
|
||||
title: 離線運行
|
||||
details: 支持離線模式,甚至可以在部署完成後停止面板進程,不會對已有服務造成任何影響
|
||||
- icon: 🛡
|
||||
title: Safe and stable
|
||||
details: The panel adopts a variety of industry technologies to ensure the security of the body, and has been running stably in multiple survival environments for a long time
|
||||
title: 安全穩定
|
||||
details: 面板採用業界多種技術保障本體安全性,已在多個生產環境中長期穩定運行
|
||||
- icon: 💽
|
||||
title: Fully open source
|
||||
details: Few fully open source panels, you can freely modify and develop the panel on the premise of complying with the open source agreement
|
||||
title: 全面開源
|
||||
details: 少有的全開源面板,您可以在遵守開源協議的前提下對面板自由修改、二次開發
|
||||
- icon: 🆓
|
||||
title: Permanently free
|
||||
details: Commit to the panel body will not introduce any charging/authorization functions in the future, and will be permanently free to use
|
||||
title: 永久免費
|
||||
details: 承諾面板本體未來不會引入任何收費/授權功能,永久免費使用
|
||||
---
|
||||
|
||||
## Partners
|
||||
## 合作夥伴
|
||||
|
||||
<div style="display: flex; justify-content: space-around; align-items: center; flex-wrap: wrap;"><a href="https://www.weixiaoduo.com/" style="padding: 1rem;">
|
||||
<img width="160" src="/wxd.png" alt="WeiXiaoDuo">
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
# Manage Containers
|
||||
# 管理容器
|
||||
|
||||
Before starting, you need to install the Docker / Podman container engine.
|
||||
開始前需安裝 Docker / Podman 容器引擎。
|
||||
|
||||
After the container engine is installed, you can go to the Panel's container management section to create containers (pgadmin4 is used as an example here).
|
||||
容器引擎安裝完畢後,即可前往面板容器管理處創建容器(此處以 pgadmin4 為例)。
|
||||
|
||||
First, navigate to the Images tab to pull the required images. This may take several minutes to tens of minutes depending on your network environment.
|
||||
首先導航到鏡像選項卡拉取需要的鏡像。 視網路環境可能需要數分鐘到數十分鐘。
|
||||
|
||||

|
||||

|
||||
|
||||
After the image is pulled, navigate to the Containers tab to start creating a container.
|
||||
鏡像拉取完成後,導航到容器選項卡開始創建容器。
|
||||
|
||||

|
||||

|
||||
|
||||
Fill in the form according to the container's instructions. The pgadmin4 image used here needs to map port 80 and configure 2 default environment variables, with no need to map directories.
|
||||
表單內容按容器的說明填寫。 此處使用的 pgadmin4 鏡像需要映射 80 端口及配置 2 個默認環境變數,無需映射目錄。
|
||||
|
||||
After the container is created, you can click the refresh button in the upper right corner and the log button on the right side of the container to check if it has started properly.
|
||||
容器創建完成後可點擊右上角刷新按鈕和容器右側的日誌按鈕檢查是否正常啟動。
|
||||
|
||||

|
||||

|
||||
|
||||
If the container fails to start, please make corrections according to the logs.
|
||||
若容器未能啟動,請根據日誌進行修正。
|
||||
|
||||
If you have mapped external ports, you need to go to the firewall menu to allow the corresponding ports.
|
||||
如果映射了外部端口,需要到防火牆菜單放行相應的端口。
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Mount Partitions
|
||||
# 掛載分區
|
||||
|
||||
If your server has unmounted data disks, you can log in as `root` user before installation and run the following command to automatically mount them. Cross-directory migration is not supported after Panel installation.
|
||||
如果您的伺服器有未掛載的數據磁碟,您可以在安裝之前以 `root` 用戶登錄並運行以下命令以自動掛載它們。 面板安裝後不支持跨目錄遷移。
|
||||
|
||||
```shell
|
||||
curl -fsLm 10 -o auto_mount.sh https://dl.cdn.haozi.net/panel/auto_mount.sh && bash auto_mount.sh
|
||||
```
|
||||
|
||||
You can also contact your server provider via ticket to request assistance with mounting partitions, or mount the partitions yourself before installing the Panel.
|
||||
您也可以通過工單聯繫伺服器提供商以請求掛載分區的幫助,或者在安裝面板之前自行掛載分區。
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
# Install Panel
|
||||
# 安裝面板
|
||||
|
||||
The Panel supports mainstream systems under `amd64` | `arm64` architectures. LNMP environment installation has been tested on all systems listed in the table below.
|
||||
面板支持 `amd64` | `arm64` 架構下的主流系統。 下表中的系統均已測試 LNMP 環境安裝。
|
||||
|
||||
It is recommended to use systems marked as **recommended**. Unless there are special circumstances, it is not recommended to use systems marked as **not recommended**.
|
||||
優先建議使用標註**推薦**的系統。 無特殊情況不建議使用標註**不推薦**的系統。
|
||||
|
||||
For systems not listed in the table below, you can try installing on your own, but no free technical support will be provided.
|
||||
不在下表中的其他系統,可自行嘗試安裝,但不提供無償技術支持。
|
||||
|
||||
| 系統 | 版本 | Note |
|
||||
| ------------------- | ------------------- | --------------- |
|
||||
| AlmaLinux | 9 | Recommended |
|
||||
| AlmaLinux | 8 | Not Recommended |
|
||||
| RockyLinux | 9 | Supported |
|
||||
| RockyLinux | 8 | Not Recommended |
|
||||
| CentOS Stream | 9 | Not Recommended |
|
||||
| CentOS Stream | 8 | Not Recommended |
|
||||
| Ubuntu | 24 | Recommended |
|
||||
| Ubuntu | 22 | Supported |
|
||||
| Debian | 12 | Recommended |
|
||||
| Debian | 11 | Supported |
|
||||
| OpenCloudOS | 9 | Supported |
|
||||
| TencentOS Server | 4 | Supported |
|
||||
| TencentOS Server | 3.1 | Not Recommended |
|
||||
| Alibaba Cloud Linux | 3.2 | Not Recommended |
|
||||
| Anolis | 8 | Not Recommended |
|
||||
| openEuler | 22 | Not Recommended |
|
||||
| 系統 | 版本 | 備註 |
|
||||
| ------------------- | ------------------- | --- |
|
||||
| AlmaLinux | 9 | 推薦 |
|
||||
| AlmaLinux | 8 | 不推薦 |
|
||||
| RockyLinux | 9 | 支持 |
|
||||
| RockyLinux | 8 | 不推薦 |
|
||||
| CentOS Stream | 9 | 不推薦 |
|
||||
| CentOS Stream | 8 | 不推薦 |
|
||||
| Ubuntu | 24 | 推薦 |
|
||||
| Ubuntu | 22 | 支持 |
|
||||
| Debian | 12 | 推薦 |
|
||||
| Debian | 11 | 支持 |
|
||||
| OpenCloudOS | 9 | 支持 |
|
||||
| TencentOS Server | 4 | 支持 |
|
||||
| TencentOS Server | 3.1 | 不推薦 |
|
||||
| Alibaba Cloud Linux | 3.2 | 不推薦 |
|
||||
| Anolis | 8 | 不推薦 |
|
||||
| openEuler | 22 | 不推薦 |
|
||||
|
||||
As system versions continue to update, we may also terminate support for some overly outdated systems to ensure the robustness of the Panel.
|
||||
隨著系統版本的不斷更新,我們亦可能會終止部分過於老舊的系統的支持,以保證面板的健壯性。
|
||||
|
||||
## Start Installation
|
||||
## 開始安裝
|
||||
|
||||
> If you need to mount partitions, please complete before installing the Panel. Cross-directory migration is not supported after Panel installation.
|
||||
> 如需掛載分區,請在安裝面板前完成。 面板安裝後不支持跨目錄遷移。
|
||||
|
||||
Log in to the server as `root` user and run the following command to install the Panel:
|
||||
以 `root` 用戶登錄服務器,運行以下命令安裝面板:
|
||||
|
||||
```shell
|
||||
curl -fsLm 10 -o install.sh https://dl.cdn.haozi.net/panel/install.sh && bash install.sh
|
||||
```
|
||||
|
||||
Installation is usually completed within 2 minutes. Do not close the terminal during the installation process.
|
||||
一般 2 分鐘內即可完成安裝。 安裝過程中請勿關閉終端。
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
# Manage Panel
|
||||
# 管理面板
|
||||
|
||||
Do not stop or restart the Panel while tasks are still running, as this may cause issues.
|
||||
請勿在面板仍有任務運行時操作停止 / 重啟面板,否則可能會造成問題。
|
||||
|
||||
- Start Panel: `systemctl start panel`
|
||||
- Stop Panel: `systemctl stop panel`
|
||||
- Restart Panel: `systemctl restart panel`
|
||||
- 啟動面板:`systemctl start panel`
|
||||
- 停止面板:`systemctl stop panel`
|
||||
- 重啟面板:`systemctl restart panel`
|
||||
|
||||
## Panel Command Line
|
||||
## 面板命令行
|
||||
|
||||
```bash
|
||||
panel-cli
|
||||
```
|
||||
|
||||
Follow the prompts to complete the necessary commands for operation.
|
||||
可根據提示補全需要的命令進行操作。
|
||||
|
||||
For example, to change a user's password, you can use:
|
||||
例如,要更改使用者的密碼,您可以使用:
|
||||
|
||||
```bash
|
||||
panel-cli user password haozi 123456
|
||||
```
|
||||
|
||||
This will change the password for the user `haozi` to `123456`.
|
||||
這將把使用者 `haozi` 的密碼更改為 `123456`。
|
||||
|
||||
## Uninstall Panel
|
||||
## 卸載面板
|
||||
|
||||
It is primarily recommended to back up data and reinstall the system, as this ensures a clean system.
|
||||
優先建議備份資料重裝系統,這樣可以保證系統純淨。
|
||||
|
||||
If you are unable to reinstall the system, please log in to the server as `root` user and execute the following command to uninstall the Panel:
|
||||
如果您無法重裝系統,請以`root`使用者登錄伺服器,執行以下命令卸載面板:
|
||||
|
||||
```shell
|
||||
curl -fsLm 10 -o uninstall.sh https://dl.cdn.haozi.net/panel/uninstall.sh && bash uninstall.sh
|
||||
```
|
||||
|
||||
Before uninstalling the Panel, be sure to back up all data and uninstall all Panel applications in advance. Data will be **unrecoverable** after uninstallation!
|
||||
卸載面板前請務必備份好所有資料,提前卸載面板全部應用。 卸載後資料將**無法恢復**!
|
||||
|
||||
@@ -4,34 +4,34 @@ prev: false
|
||||
next: false
|
||||
---
|
||||
|
||||
# Support
|
||||
# 支援
|
||||
|
||||
## Free Forum Service
|
||||
## 免費論壇服務
|
||||
|
||||
We provide a free forum service where you can ask questions, discuss, and share issues related to using the Panel.
|
||||
我們提供免費的論壇服務,您可以在論壇中提問、討論以及分享有關使用面板的問題。
|
||||
|
||||
- [Moe Tom](https://tom.moe/c/technical/ratpanel)
|
||||
- [Moe Tom](https://tom.moe/c/technical/acepanel)
|
||||
|
||||
## Paid Remote Service
|
||||
## 付費遠程服務
|
||||
|
||||
Website errors, slow speed, malware infections? High server resource usage, configuration optimization, intrusion tracing? We provide all these services in one place.
|
||||
網站錯誤、速度慢、被感染惡意軟體? 伺服器資源使用過高、配置優化、入侵追蹤? 我們提供所有這些服務於一個地方。
|
||||
|
||||
### Remote Service Price List
|
||||
### 遠程服務價格表
|
||||
|
||||
Remote service refers to our assistance in solving your problems through remote support.
|
||||
遠程服務是指我們透過遠程支援方式協助您解決問題。
|
||||
|
||||
| Service Name | 描述 | Price |
|
||||
| -------------- | ----------------------------------------------------------------------- | -------- |
|
||||
| Single Service | Limited to one service session, service ends when the issue is resolved | From ¥50 |
|
||||
| 服務名稱 | 描述 | 價格 |
|
||||
| ---- | ---------------- | ------- |
|
||||
| 單次服務 | 限於一次服務,問題解決後服務結束 | 從 ¥50 起 |
|
||||
|
||||
### Service Process
|
||||
### 服務流程
|
||||
|
||||
1. Contact us in advance and explain the issue
|
||||
2. We evaluate the problem, confirm whether it can be resolved, and provide an estimated price
|
||||
3. After you confirm the price, pay 50% upfront, and the service begins
|
||||
4. After service completion, you confirm everything is in order and pay the remaining amount
|
||||
1. 提前聯繫我們並解釋問題
|
||||
2. 我們將評估問題,確認是否能夠解決並提供預估價格
|
||||
3. 在您確認價格後,支付 50% 預付款,服務開始
|
||||
4. 在服務完成後,您確認一切正常並支付剩餘款項
|
||||
|
||||
## Contact Us
|
||||
## 聯繫我們
|
||||
|
||||
- [WeChat Work](https://work.weixin.qq.com/kfid/kfc20ea8e38b5a4e73a)
|
||||
- [企業微信](https://work.weixin.qq.com/kfid/kfc20ea8e38b5a4e73a)
|
||||
- [QQ 826896000](https://wpa.qq.com/msgrd?v=3&uin=826896000&site=qq&menu=yes)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# v{{ $params.version }}
|
||||
|
||||
- Version Type: {{ $params.type == 'stable' ? 'Stable' : 'Beta' }}
|
||||
- Release Time: {{ $params.time }}
|
||||
- 版本類型:{{ $params.type == 'stable' ? '穩定版' : '測試版' }}
|
||||
- 發布時間:{{ $params.time }}
|
||||
|
||||
## Updates log
|
||||
## 更新日誌
|
||||
|
||||
<!-- @content -->
|
||||
|
||||
Reference in New Issue
Block a user