diff --git a/.vitepress/config/en.ts b/.vitepress/config/en.ts index 195edc3..34d450a 100644 --- a/.vitepress/config/en.ts +++ b/.vitepress/config/en.ts @@ -150,10 +150,6 @@ function sidebarQuickstart(): DefaultTheme.SidebarItem[] { function sidebarAdvanced(): DefaultTheme.SidebarItem[] { return [ - { - text: 'Security recommendations', - link: '/security' - }, { text: "应用", collapsed: true, @@ -260,6 +256,10 @@ function sidebarAdvanced(): DefaultTheme.SidebarItem[] { text: 'Panel API', link: '/api' }, + { + text: 'Security recommendations', + link: '/security' + } ] } diff --git a/en/advanced/app.md b/en/advanced/app.md new file mode 100644 index 0000000..b8a6fe5 --- /dev/null +++ b/en/advanced/app.md @@ -0,0 +1,42 @@ +# 应用 + +应用模块是 AcePanel 的核心功能之一,用于管理服务器上的各类软件。通过应用模块,你可以方便地安装、配置和管理 Web 服务器、数据库、运行环境等常用软件。 + +## 功能分类 + +应用模块分为三个部分: + +- **原生应用**:直接安装在系统上的软件,如 Nginx、MySQL、Redis 等 +- **运行环境**:各类编程语言的运行时环境,如 PHP、Node.js、Python、Go、Java 等 +- **容器模板**:基于 Docker 的一键部署模板,可快速部署各类应用 + +![应用列表](/images/app/app-list.png) + +## 原生应用 vs 容器模板 + +| 特性 | 原生应用 | 容器模板 | +|------|----------|----------| +| 性能 | 更高 | 略有损耗 | +| 隔离性 | 共享系统环境 | 完全隔离 | +| 部署难度 | 需要配置 | 一键部署 | +| 资源占用 | 较低 | 较高 | +| 适用场景 | 生产环境、高性能需求 | 快速测试、多版本共存 | + +## 应用分类 + +原生应用按功能分为以下类别: + +- **Web 服务器**:Nginx、OpenResty、Apache +- **数据库**:MySQL、MariaDB、PostgreSQL、Percona +- **容器**:Docker、Podman +- **中间件**:Redis、Memcached +- **存储**:MinIO、S3fs +- **安全**:Fail2ban +- **工具**:phpMyAdmin、Pure-FTPd、Supervisor、Rsync、Frp +- **开发者**:Gitea + +## 下一步 + +- [原生应用](./app/native) - 了解如何安装和管理原生应用 +- [运行环境](./app/environment) - 了解如何安装编程语言运行环境 +- [容器模板](./app/template) - 了解如何使用容器模板快速部署应用 diff --git a/en/advanced/app/environment.md b/en/advanced/app/environment.md new file mode 100644 index 0000000..e6dc2df --- /dev/null +++ b/en/advanced/app/environment.md @@ -0,0 +1,97 @@ +# 运行环境 + +运行环境用于安装各类编程语言的运行时,为网站和项目提供执行环境。 + +## 支持的语言 + +AcePanel 支持以下编程语言的运行环境: + +| 语言 | 可用版本 | 说明 | +|------|----------|------| +| Go | 1.20 - 1.25 | 适合构建高性能后端服务 | +| Java | JDK 8, 11, 17, 21, 25 | 使用 Amazon Corretto 发行版 | +| Node.js | 20, 22, 24 | 适合前端构建和 Node 应用 | +| PHP | 7.4 - 8.5 | 适合 Web 开发 | +| Python | 3.10 - 3.14 | 适合脚本和 Web 应用 | + +## 运行环境列表 + +进入 **应用** 页面,点击 **运行环境** 标签查看可用的运行环境: + +![运行环境](/images/app/app-runtime.png) + +点击顶部的语言分类可以筛选特定语言的版本: + +![PHP 运行环境](/images/app/app-runtime-php.png) + +## 安装运行环境 + +1. 进入 **应用** 页面 +2. 点击 **运行环境** 标签 +3. 选择需要的语言分类(或查看全部) +4. 点击对应版本的 **安装** 按钮 + +::: tip 版本选择建议 +- 生产环境建议使用 LTS(长期支持)版本 +- 标注"已停止维护"的版本不建议用于新项目 +- 可以同时安装多个版本,在项目中指定使用 +::: + +## 管理运行环境 + +已安装的运行环境会显示 **管理** 按钮,点击进入管理页面: + +![运行环境管理](/images/app/app-runtime-manage.png) + +### 运行状态 + +显示运行环境的当前状态,提供启动、停止、重启、重载等操作。 + +### 模块管理(PHP) + +PHP 运行环境提供模块管理功能,可以安装或卸载各种 PHP 模块: + +![PHP 模块管理](/images/app/app-runtime-modules.png) + +常用模块包括: + +- **OPcache**:PHP 字节码缓存,提升性能 +- **Redis**:连接 Redis 数据库 +- **ImageMagick**:图像处理 +- **Swoole/Swow**:高性能异步框架 +- **ionCube**:PHP 代码加密解密 + +### 配置文件 + +可以编辑 PHP 的主配置文件(php.ini)和 FPM 配置文件。 + +### 设置为 CLI 默认版本 + +点击 **设置为 CLI 默认版本** 按钮,可以将当前版本设置为命令行默认使用的 PHP 版本。 + +## 多版本共存 + +AcePanel 支持同一语言的多个版本共存。例如,你可以同时安装 PHP 7.4 和 PHP 8.3,不同的网站可以使用不同的 PHP 版本。 + +安装路径规则: + +- **Go**:`/opt/ace/server/go/版本号` +- **Java**:`/opt/ace/server/java/版本号` +- **Node.js**:`/opt/ace/server/nodejs/版本号` +- **PHP**:`/opt/ace/server/php/版本号` +- **Python**:`/opt/ace/server/python/版本号` + +## 在项目中使用 + +创建项目时,可以在项目设置中选择使用的运行环境版本。详见 [项目管理](../project) 文档。 + +## 更新运行环境 + +当有新版本可用时,列表中会显示最新版本号。你可以: + +1. 卸载旧版本,安装新版本 +2. 保留旧版本,同时安装新版本(推荐) + +::: warning 注意 +更新运行环境版本可能导致依赖该版本的项目出现兼容性问题,请在测试环境验证后再更新生产环境。 +::: diff --git a/en/advanced/app/native.md b/en/advanced/app/native.md new file mode 100644 index 0000000..970a488 --- /dev/null +++ b/en/advanced/app/native.md @@ -0,0 +1,83 @@ +# 原生应用 + +原生应用是直接安装在系统上的软件,相比容器化部署具有更好的性能和更低的资源占用。 + +## 应用列表 + +进入 **应用** 页面,默认显示原生应用列表。你可以通过顶部的分类标签筛选不同类型的应用。 + +![原生应用列表](/images/app/app-list.png) + +列表中显示以下信息: + +- **应用名称**:软件名称 +- **描述**:软件的简要说明 +- **已安装版本**:当前安装的版本号(未安装则为空) +- **在主页显示**:是否在面板首页的快捷应用中显示 +- **操作**:安装、管理或卸载 + +## 安装应用 + +点击应用右侧的 **安装** 按钮,会弹出安装对话框: + +![安装对话框](/images/app/app-install-dialog.png) + +### 选择渠道 + +部分应用提供多个版本渠道,点击下拉框选择需要的版本系列: + +![选择渠道](/images/app/app-install-channel.png) + +### 选择版本 + +选择渠道后,系统会自动填入该渠道的最新版本号: + +![选择版本](/images/app/app-install-version.png) + +点击 **安装** 按钮开始安装。安装过程中可以在 **任务** 页面查看详细日志。 + +## 管理应用 + +已安装的应用会显示 **管理** 按钮,点击进入应用管理页面。 + +### 运行状态 + +管理页面首先显示应用的运行状态: + +![应用管理](/images/app/app-manage.png) + +提供以下操作: + +- **启动**:启动已停止的服务 +- **停止**:停止正在运行的服务 +- **重启**:重启服务(会中断连接) +- **重载**:重新加载配置(不中断连接,推荐) + +### 修改配置 + +点击 **修改配置** 标签,可以直接编辑应用的配置文件: + +![修改配置](/images/app/app-manage-config.png) + +::: warning 注意 +修改配置文件前请确保了解每个参数的含义,错误的配置可能导致服务无法启动。 +::: + +### 日志查看 + +点击 **运行日志** 或 **错误日志** 标签,可以查看应用的日志,便于排查问题。 + +## 卸载应用 + +点击 **卸载** 按钮可以卸载应用。卸载前请确保: + +1. 没有网站或项目依赖该应用 +2. 已备份重要的配置文件和数据 + +::: danger 警告 +卸载数据库类应用(如 MySQL、PostgreSQL)会删除所有数据库数据,请务必提前备份! +::: + +## 主页快捷方式 + +开启 **在主页显示** 开关后,该应用会出现在面板首页的快捷应用区域,方便快速访问管理页面。 diff --git a/en/advanced/app/template.md b/en/advanced/app/template.md new file mode 100644 index 0000000..cc6a53d --- /dev/null +++ b/en/advanced/app/template.md @@ -0,0 +1,99 @@ +# 容器模板 + +容器模板提供了基于 Docker 的一键部署方案,可以快速部署各类常用应用,无需手动配置。 + +## 前置要求 + +使用容器模板前,需要先安装 Docker: + +1. 进入 **应用** > **原生应用** +2. 找到 Docker,点击 **安装** +3. 等待安装完成 + +## 模板列表 + +进入 **应用** 页面,点击 **容器模板** 标签查看可用模板: + +![容器模板列表](/images/app/app-template.png) + +## 部署应用 + +点击模板卡片上的 **部署** 按钮,会启动部署向导。 + +### 第一步:选择部署模式 + +![选择部署模式](/images/app/app-template-deploy-step1.png) + +- **创建新编排**:从模板创建一个新的 Docker Compose 编排 +- **更新现有编排**:使用模板更新已有的编排配置 + +### 第二步:配置参数 + +根据应用需求填写配置信息: + +![配置参数](/images/app/app-template-deploy-step2.png) + +常见配置项: + +- **编排名称**:用于标识这个部署 +- **自动启动**:是否在创建后自动启动容器 +- **自动防火墙**:是否自动放行端口 +- **数据库配置**:用户名、密码、地址等 +- **端口配置**:服务监听的端口 + +### 第三步:预览与编辑 + +预览生成的 Docker Compose 配置文件: + +![预览配置](/images/app/app-template-deploy-step3.png) + +你可以在这里: + +- 查看和编辑 **编排文件**(docker-compose.yml) +- 查看和编辑 **环境变量** + +### 第四步:确认部署 + +确认所有配置无误后,点击 **创建** 完成部署: + +![确认部署](/images/app/app-template-deploy-step4.png) + +部署完成后,应用会出现在 **容器** > **编排** 页面中进行管理。 + +## 模板 vs 手动部署 + +| 特性 | 使用模板 | 手动部署 | +|------|----------|----------| +| 配置难度 | 简单,填写基本信息即可 | 需要编写 docker-compose.yml | +| 灵活性 | 使用预设配置 | 完全自定义 | +| 适用场景 | 快速部署常用应用 | 特殊需求、自定义配置 | + +## 常用模板说明 + +### WordPress + +开源博客和内容管理系统,适合搭建个人博客或企业网站。 + +### pgAdmin 4 + +PostgreSQL 数据库的图形化管理工具。 + +### phpMyAdmin + +MySQL/MariaDB 数据库的图形化管理工具。 + +### Vaultwarden + +轻量级密码管理服务器,兼容 Bitwarden 客户端。 + +### 青龙 + +定时任务管理平台,支持 Python、JavaScript、Shell 等脚本。 + +### OpenList + +多存储聚合的文件列表程序,支持阿里云盘、OneDrive 等。 + +## 更新缓存 + +如果模板列表显示不完整或需要获取最新模板,点击页面顶部的 **更新缓存** 按钮刷新模板列表。 diff --git a/en/advanced/backup.md b/en/advanced/backup.md new file mode 100644 index 0000000..b927cb5 --- /dev/null +++ b/en/advanced/backup.md @@ -0,0 +1,228 @@ +# 备份 + +备份模块用于备份和恢复网站文件和数据库,支持本地备份和远程存储。 + +## 备份页面 + +![备份页面](/images/backup/backup.png) + +## 备份类型 + +备份模块支持以下类型的备份: + +| 类型 | 说明 | +|------|------------------------------| +| 网站 | 备份网站文件 | +| MySQL | 备份 Percona/MySQL/MariaDB 数据库 | +| PostgreSQL | 备份 PostgreSQL 数据库 | + +## 创建备份 + +1. 选择备份类型标签(网站/MySQL/PostgreSQL) +2. 点击 **创建备份** +3. 选择要备份的网站或数据库 +4. 选择存储位置 +5. 点击确认 + +备份文件格式: +- 网站:`.zip` 压缩包 +- 数据库:`.sql.zip` 压缩的 SQL 文件 + +## 备份列表 + +备份列表显示以下信息: + +- **文件名**:备份文件名称 +- **大小**:备份文件大小 +- **更新日期**:备份时间 +- **操作**:下载、恢复、删除 + +## 恢复备份 + +1. 在备份列表中找到要恢复的备份 +2. 点击 **恢复** 按钮 +3. 确认恢复操作 + +::: danger 警告 +恢复操作会覆盖现有数据,请确保已备份当前数据! +::: + +## 上传备份 + +点击 **上传备份** 按钮可以上传本地的备份文件,用于恢复数据。 + +## 存储管理 + +切换到 **存储** 标签页管理备份存储位置。 + +![存储管理](/images/backup/backup-storage.png) + +### 本地存储 + +默认的存储位置,备份文件保存在服务器本地。 + +### 远程存储 + +点击 **添加存储** 可以添加远程存储,支持: + +- **S3 兼容存储**:AWS S3、阿里云 OSS、腾讯云 COS 等 +- **FTP/SFTP**:FTP 或 SFTP 服务器 +- **WebDAV**:WebDAV 服务器 + +远程存储的优势: +- 异地备份,防止数据丢失 +- 不占用服务器磁盘空间 +- 便于多服务器共享备份 + +### S3 兼容存储配置 + +S3 兼容存储是最常用的远程存储方式,大多数云存储服务商都提供 S3 兼容接口。 + +#### 配置参数 + +| 参数 | 说明 | +|------|------| +| 名称 | 存储配置的名称,便于识别 | +| 类型 | 选择 S3 | +| Access Key | 访问密钥 ID | +| Secret Key | 访问密钥密码 | +| 风格 | Virtual Hosted 或 Path Style | +| 区域 | 区域代码,如 `us-east-1`、`cn-hangzhou` | +| 端点 | S3 服务端点 URL | +| 协议 | HTTPS(推荐)或 HTTP | +| 存储桶 | 存储桶名称 | +| 路径 | 备份文件存储的子路径(可选) | + +#### 访问风格说明 + +S3 有两种 URL 访问风格: + +- **Virtual Hosted Style**:`https://bucket.endpoint/key` + - 桶名作为子域名 + - AWS S3 默认使用此风格 + +- **Path Style**:`https://endpoint/bucket/key` + - 桶名作为路径的一部分 + - 自建 MinIO 等通常使用此风格 + +#### 兼容性列表 + +| 服务商 | 文档 | 兼容访问风格 | 兼容性 | +|--------|------|-------------|--------| +| 阿里云 OSS | [文档](https://help.aliyun.com/document_detail/410748.html) | Virtual Hosted Style | ✅ | +| 腾讯云 COS | [文档](https://cloud.tencent.com/document/product/436/41284) | Virtual Hosted Style / Path Style | ✅ | +| 七牛云 | [文档](https://developer.qiniu.com/kodo/4088/s3-access-domainname) | Virtual Hosted Style / Path Style | ✅ | +| 百度云 BOS | [文档](https://cloud.baidu.com/doc/BOS/s/Fjwvyq9xo) | Virtual Hosted Style / Path Style | ✅ | +| 京东云 | [文档](https://docs.jdcloud.com/cn/object-storage-service/api/regions-and-endpoints) | Virtual Hosted Style | ✅ | +| 金山云 | [文档](https://docs.ksyun.com/documents/6761) | Virtual Hosted Style | ✅ | +| 青云 QingStor | [文档](https://docsv3.qingcloud.com/storage/object-storage/s3/intro/) | Virtual Hosted Style / Path Style | ✅ | +| 网易数帆 | [文档](https://sf.163.com/help/documents/89796157866430464) | Virtual Hosted Style | ✅ | +| Cloudflare R2 | [文档](https://developers.cloudflare.com/r2/data-access/s3-api/) | Virtual Hosted Style / Path Style | ✅ | +| Oracle Cloud | [文档](https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/s3compatibleapi.htm) | Virtual Hosted Style / Path Style | ✅ | +| 又拍云 | [文档](https://help.upyun.com/knowledge-base/aws-s3%E5%85%BC%E5%AE%B9/) | Virtual Hosted Style / Path Style | ✅ | +| 自建 MinIO | - | Path Style | ✅ | +| 华为云 OBS | - | Virtual Hosted Style | ❓ | + +::: tip 提示 +华为云官方文档未说明是否兼容 S3 API,但实际测试可以使用。 +::: + +#### 配置示例 + +**阿里云 OSS** + +``` +名称: aliyun-oss +类型: S3 +Access Key: 你的 AccessKey ID +Secret Key: 你的 AccessKey Secret +风格: Virtual Hosted +区域: cn-hangzhou +端点: oss-cn-hangzhou.aliyuncs.com +协议: HTTPS +存储桶: your-bucket-name +路径: backup(可选) +``` + +**腾讯云 COS** + +``` +名称: tencent-cos +类型: S3 +Access Key: 你的 SecretId +Secret Key: 你的 SecretKey +风格: Virtual Hosted +区域: ap-guangzhou +端点: cos.ap-guangzhou.myqcloud.com +协议: HTTPS +存储桶: your-bucket-name +路径: backup(可选) +``` + +**Cloudflare R2** + +``` +名称: cloudflare-r2 +类型: S3 +Access Key: 你的 Access Key ID +Secret Key: 你的 Secret Access Key +风格: Path Style +区域: auto +端点: .r2.cloudflarestorage.com +协议: HTTPS +存储桶: your-bucket-name +路径: backup(可选) +``` + +**自建 MinIO** + +``` +名称: minio +类型: S3 +Access Key: minioadmin +Secret Key: minioadmin +风格: Path Style +区域: us-east-1 +端点: minio.example.com:9000 +协议: HTTP 或 HTTPS +存储桶: backup +路径:(可选) +``` + +::: warning 注意 +- 请确保存储桶已创建且有正确的访问权限 +- 建议为备份创建专用的访问密钥,并限制权限范围 +- 部分服务商的 Endpoint 需要包含区域信息 +::: + +## 定时备份 + +结合 [计划任务](./task/schedule) 功能,可以设置定时自动备份: + +1. 进入 **任务** > **计划任务** +2. 创建新任务 +3. 选择备份类型 +4. 设置执行周期 +5. 选择存储位置 + +## 备份策略建议 + +### 备份频率 + +| 数据类型 | 建议频率 | +|----------|----------| +| 数据库 | 每天 | +| 网站文件 | 每周 | +| 配置文件 | 修改后立即备份 | + +### 保留策略 + +- 保留最近 7 天的每日备份 +- 保留最近 4 周的每周备份 +- 保留最近 3 个月的每月备份 + +### 存储位置 + +- 至少保留一份本地备份 +- 重要数据应同时备份到远程存储 +- 定期验证备份文件的完整性 diff --git a/en/advanced/cert.md b/en/advanced/cert.md new file mode 100644 index 0000000..f14ff00 --- /dev/null +++ b/en/advanced/cert.md @@ -0,0 +1,78 @@ +# 证书 + +证书模块用于管理 SSL/TLS 证书,支持通过 ACME 协议自动申请免费证书,也支持上传自有证书。 + +## 功能概览 + +证书模块分为三个部分: + +| 功能 | 说明 | +|------|------| +| [证书](./cert/cert) | 管理 SSL 证书 | +| [账户](./cert/account) | 管理 ACME 账户 | +| [DNS](./cert/dns) | 管理 DNS API 配置 | + +![证书列表](/images/cert/cert-list.png) + +## 证书类型 + +### 免费证书 + +通过 ACME 协议从 Let's Encrypt 等 CA 自动申请免费证书: + +- **Let's Encrypt**:最流行的免费证书颁发机构 +- **LiteSSL**:TrustAsia 提供的免费证书服务 +- **Google**:谷歌的免费证书服务 +- **GoogleCN**:AcePanel 提供的谷歌证书服务镜像 +- **ZeroSSL**:另一个免费证书选项 +- **Buypass**:挪威的免费证书服务 + +免费证书有效期通常为 90 天,AcePanel 支持自动续签。 + +### 付费证书 + +从商业 CA 购买的证书,通常有效期为 1 年或更长: + +- 更长的有效期 +- 更高的信任度 +- 提供保险和技术支持 + +如有证书购买需求,可通过本页顶部的「证书」链接联系我们。 + +## 验证方式 + +申请证书时需要验证域名所有权,支持以下方式: + +### HTTP 验证 + +在网站根目录放置验证文件,CA 通过 HTTP 访问验证。 + +要求: +- 域名已解析到服务器 +- 80 端口可访问 + +### DNS 验证 + +在域名 DNS 中添加 TXT 记录验证。 + +要求: +- 有域名 DNS 管理权限 +- 配置 DNS API(用于自动验证) + +DNS 验证的优势: +- 支持申请泛域名证书(*.example.com) +- 不需要 80 端口可访问 +- 适合内网服务器 + +## 快速开始 + +1. 创建 ACME 账户(首次使用) +2. 如需 DNS 验证,配置 DNS API +3. 创建证书,选择验证方式 +4. 将证书应用到网站 + +## 下一步 + +- [证书管理](./cert/cert) - 了解如何申请和管理证书 +- [账户管理](./cert/account) - 了解如何管理 ACME 账户 +- [DNS 配置](./cert/dns) - 了解如何配置 DNS API diff --git a/en/advanced/cert/account.md b/en/advanced/cert/account.md new file mode 100644 index 0000000..973a663 --- /dev/null +++ b/en/advanced/cert/account.md @@ -0,0 +1,84 @@ +# 账户管理 + +账户管理页面用于管理 ACME 账户,ACME 账户用于向证书颁发机构申请证书。 + +## 账户列表 + +进入 **证书** > **账户** 标签页查看账户列表。 + +![账户列表](/images/cert/cert-account.png) + +列表显示以下信息: + +- **邮箱**:账户邮箱 +- **CA**:证书颁发机构 +- **密钥类型**:账户密钥类型 +- **操作**:修改、删除 + +## 创建账户 + +1. 点击 **创建账户** 按钮 +2. 填写配置: + - **邮箱**:用于接收证书相关通知 + - **CA**:选择证书颁发机构 + - **密钥类型**:选择密钥算法 + - **KID**:可选,部分 CA 需要提供 KID + - **HMAC**:可选,部分 CA 需要提供 HMAC 密钥 +3. 点击创建 + +### 证书颁发机构(CA) + +| CA | 说明 | +|---------------|----------------------| +| Let's Encrypt | 最流行的免费 CA,证书有效期 90 天 | +| LiteSSL | TrustAsia 提供的免费证书服务 | +| Google | 谷歌的免费证书服务 | +| GoogleCN | AcePanel 提供的谷歌证书服务镜像 | +| ZeroSSL | 免费 CA,证书有效期 90 天 | +| Buypass | 挪威免费 CA,证书有效期 180 天 | + +### 密钥类型 + +| 类型 | 说明 | +|------|------| +| P256 (ECC) | 推荐,密钥更短,性能更好 | +| P384 (ECC) | 更高安全性的 ECC 密钥 | +| RSA 2048 | 传统 RSA 密钥,兼容性最好 | +| RSA 4096 | 更高安全性的 RSA 密钥 | + +::: tip 推荐 +一般情况下推荐使用 P256 (ECC) 密钥,兼顾安全性和性能。 +::: + +## 修改账户 + +点击账户右侧的 **修改** 按钮可以修改账户邮箱。 + +::: warning 注意 +修改邮箱后,证书相关通知将发送到新邮箱。 +::: + +## 删除账户 + +点击账户右侧的 **删除** 按钮删除账户。 + +::: warning 注意 +删除账户后,使用该账户申请的证书将无法续签。请先将证书迁移到其他账户或删除相关证书。 +::: + +## 账户用途 + +ACME 账户用于: + +1. 向 CA 证明你的身份 +2. 接收证书到期提醒 +3. 管理已申请的证书 +4. 撤销证书 + +## 多账户 + +你可以创建多个账户: + +- 不同 CA 需要不同账户 +- 可以为不同项目使用不同账户 +- 便于管理和区分证书 diff --git a/en/advanced/cert/cert.md b/en/advanced/cert/cert.md new file mode 100644 index 0000000..2dc1d41 --- /dev/null +++ b/en/advanced/cert/cert.md @@ -0,0 +1,101 @@ +# 证书管理 + +证书管理页面用于申请、上传和管理 SSL/TLS 证书。 + +## 证书列表 + +进入 **证书** 页面,默认显示证书列表。 + +![证书列表](/images/cert/cert-list.png) + +列表显示以下信息: + +- **域名**:证书包含的域名 +- **类型**:证书类型(ACME/上传) +- **关联账户**:使用的 ACME 账户 +- **颁发者**:证书颁发机构 +- **过期时间**:证书到期时间 +- **下次续签时间**:自动续签时间 +- **自动续签**:是否启用自动续签 +- **操作**:续签、下载、删除等 + +## 创建证书 + +点击 **创建证书** 按钮申请新证书。 + +### 配置项 + +- **域名**:要申请证书的域名,支持多个域名 +- **密钥类型**:RSA 或 ECC +- **网站**:该证书关联的网站 +- **账户**:该证书关联的 ACME 账户 +- **DNS**:该证书关联的 DNS API + +### 域名格式 + +``` +example.com # 单个域名 +www.example.com # 子域名 +*.example.com # 泛域名(需要 DNS 验证) +``` + +::: tip 提示 +泛域名证书(*.example.com)只能通过 DNS 验证方式申请。 +::: + +## 上传证书 + +点击 **上传证书** 按钮上传已有证书。 + +需要提供: +- **证书文件**:PEM 格式的证书(.crt 或 .pem),请包含完整证书链 +- **私钥文件**:PEM 格式的私钥(.key) + +## 应用证书 + +申请或上传证书后,需要在网站设置中启用 HTTPS 并选择证书。 + +1. 进入网站编辑页面 +2. 切换到 **HTTPS** 标签 +3. 启用 HTTPS +4. 选择证书 +5. 保存配置 + +## 自动续签 + +ACME 证书支持自动续签: + +- 证书签发后通过 ARI 获取建议的续签时间 +- 系统会在续签时间前自动尝试续签 +- 续签成功后自动更新网站配置 +- 续签失败会发送通知 + +## 证书操作 + +### 手动续签 + +点击 **续签** 按钮手动触发证书续签。 + +### 下载证书 + +点击 **下载** 按钮下载证书文件,包含: +- 完整证书链(.crt) +- 私钥文件(.key) + +### 删除证书 + +点击 **删除** 按钮删除证书。 + +## 常见问题 + +### 申请失败 + +- 检查域名是否正确解析到服务器 +- 检查 80 端口是否可访问(HTTP 验证) +- 检查 DNS API 配置是否正确(DNS 验证) + +### 续签失败 + +- 检查域名解析是否变更 +- 检查 DNS API 是否过期 +- 查看面板日志了解详细错误 diff --git a/en/advanced/cert/dns.md b/en/advanced/cert/dns.md new file mode 100644 index 0000000..fc63a78 --- /dev/null +++ b/en/advanced/cert/dns.md @@ -0,0 +1,99 @@ +# DNS 配置 + +DNS 配置页面用于管理 DNS API,用于通过 DNS 验证方式申请证书。 + +## DNS 列表 + +进入 **证书** > **DNS** 标签页查看 DNS 配置列表。 + +![DNS 列表](/images/cert/cert-dns.png) + +列表显示以下信息: + +- **备注名称**:配置名称 +- **类型**:DNS 提供商类型 +- **操作**:修改、删除 + +## 创建 DNS 配置 + +1. 点击 **创建 DNS** 按钮 +2. 选择 DNS 提供商 +3. 填写 API 凭证 +4. 点击创建 + +## 支持的 DNS 提供商 + +### 国内提供商 + +| 提供商 | 所需凭证 | +|--------|----------| +| 阿里云 DNS | AccessKey ID、AccessKey Secret | +| 腾讯云 DNSPod | SecretId、SecretKey | +| 华为云 DNS | AccessKeyId、SecretAccessKey | +| 西部数码 DNS | Username、API Password | + +### 国际提供商 + +| 提供商 | 所需凭证 | +|--------|--------------------| +| Cloudflare | API Token | +| Gcore DNS | API Key | +| Porkbun | API Key、Secret Key | +| NameSilo | API Token | +| ClouDNS | Auth ID、Auth Password | + +## 获取 API 凭证 + +### 阿里云 + +1. 登录阿里云控制台 +2. 进入 **AccessKey 管理** +3. 创建 AccessKey +4. 记录 AccessKey ID 和 AccessKey Secret + +::: warning 安全提示 +建议创建子账号并只授予 DNS 管理权限,避免使用主账号 AccessKey。 +::: + +### 腾讯云 + +1. 登录腾讯云控制台 +2. 进入 **访问管理** > **API 密钥管理** +3. 创建密钥 +4. 记录 SecretId 和 SecretKey + +### Cloudflare + +1. 登录 Cloudflare 控制台 +2. 进入 **My Profile** > **API Tokens** +3. 创建 Token,选择 **Edit zone DNS** 模板 +4. 记录生成的 Token + +## DNS 验证原理 + +1. 申请证书时,CA 要求在域名 DNS 中添加特定的 TXT 记录 +2. AcePanel 通过 DNS API 自动添加验证记录 +3. CA 验证 TXT 记录存在 +4. 验证通过后颁发证书 +5. AcePanel 自动删除验证记录 + +## 使用场景 + +DNS 验证适用于: + +- 申请泛域名证书(*.example.com) +- 服务器 80 端口不可访问 +- 内网服务器 +- CDN 后的源站 + +## 常见问题 + +### 验证失败 + +- 检查 API 凭证是否正确 +- 检查 API 权限是否足够 +- 检查域名是否在该 DNS 提供商管理 + +### DNS 传播延迟 + +DNS 记录添加后需要一定时间传播,通常几分钟到几小时不等。如果验证失败,可以稍后重试。 diff --git a/en/advanced/container.md b/en/advanced/container.md new file mode 100644 index 0000000..cb9367c --- /dev/null +++ b/en/advanced/container.md @@ -0,0 +1,56 @@ +# 容器 + +容器模块提供了完整的 Docker 容器管理功能,包括容器、编排、镜像、网络和卷的管理。 + +## 前置要求 + +使用容器功能前,需要先安装 Docker: + +1. 进入 **应用** > **原生应用** +2. 找到 Docker,点击 **安装** + +## 功能概览 + +容器模块分为五个部分: + +| 功能 | 说明 | +|------|------| +| [容器](./container/container) | 管理运行中的容器实例 | +| [编排](./container/compose) | 使用 Docker Compose 管理多容器应用 | +| [镜像](./container/image) | 管理本地镜像 | +| [网络](./container/network) | 管理 Docker 网络 | +| [卷](./container/volume) | 管理数据卷 | + +![容器列表](/images/container/container-list.png) + +## 快速开始 + +### 创建容器 + +1. 进入 **容器** 页面 +2. 点击 **创建容器** +3. 填写镜像名称(如 `nginx:latest`) +4. 配置端口映射、卷挂载等 +5. 点击 **创建** + +### 使用容器模板 + +如果你想快速部署常用应用,推荐使用 [容器模板](./app/template),无需手动配置即可一键部署。 + +## 容器 vs 原生应用 + +| 特性 | 容器 | 原生应用 | +|------|------|----------| +| 隔离性 | 完全隔离 | 共享系统环境 | +| 性能 | 略有损耗 | 原生性能 | +| 部署 | 标准化、可移植 | 依赖系统环境 | +| 资源占用 | 较高 | 较低 | +| 版本管理 | 方便切换 | 需要手动管理 | + +## 下一步 + +- [容器管理](./container/container) - 了解如何管理容器 +- [编排管理](./container/compose) - 了解如何使用 Docker Compose +- [镜像管理](./container/image) - 了解如何管理镜像 +- [网络管理](./container/network) - 了解如何管理网络 +- [卷管理](./container/volume) - 了解如何管理数据卷 diff --git a/en/advanced/container/compose.md b/en/advanced/container/compose.md new file mode 100644 index 0000000..a09c571 --- /dev/null +++ b/en/advanced/container/compose.md @@ -0,0 +1,108 @@ +# 编排 + +编排功能基于 Docker Compose,用于定义和运行多容器应用。通过一个 YAML 文件描述应用的服务、网络和卷,然后一键启动整个应用。 + +## 编排列表 + +进入 **容器** > **编排** 标签页查看编排列表。 + +![编排列表](/images/container/compose-list.png) + +列表显示以下信息: + +- **名称**:编排项目名称 +- **目录**:docker-compose.yml 文件所在目录 +- **状态**:运行状态 +- **创建时间**:创建时间 +- **操作**:启动、停止、编辑等 + +## 创建编排 + +1. 点击 **创建编排** 按钮 +2. 输入编排名称 +3. 编写或粘贴 docker-compose.yml 内容 +4. 配置环境变量(可选) +5. 点击创建 + +![创建编排](/images/container/compose-create.png) + +### docker-compose.yml 示例 + +```yaml +version: '3' +services: + web: + image: nginx:latest + ports: + - "80:80" + volumes: + - ./html:/usr/share/nginx/html + depends_on: + - app + app: + image: php:8.4-fpm + volumes: + - ./html:/var/www/html + db: + image: mysql:8.4 + environment: + MYSQL_ROOT_PASSWORD: your_password + MYSQL_DATABASE: myapp + volumes: + - db_data:/var/lib/mysql +volumes: + db_data: +``` + +## 编排操作 + +### 启动编排 + +点击 **启动** 按钮会弹出确认对话框: + +![启动编排](/images/container/compose-start.png) + +- **强制拉取镜像**:勾选后会在启动前拉取最新镜像 + +点击确认后,会显示启动进度: + +![启动进度](/images/container/compose-starting.png) + +启动编排会创建并启动所有定义的服务容器。 + +### 停止编排 + +停止编排会停止所有相关容器,但不会删除容器和数据。 + +### 删除编排 + +删除编排会停止并删除所有相关容器。 + +::: warning 注意 +删除编排不会删除数据卷,如需删除数据卷请在 **卷** 页面手动删除。 +::: + +### 编辑编排 + +点击编排列表中的 **编辑** 按钮,可以修改 docker-compose.yml 文件内容和环境变量。 + +![编辑编排](/images/container/compose-edit.png) + +修改后需要重新启动编排才能生效。 + +## 使用场景 + +编排适合以下场景: + +- **多容器应用**:如 Web 应用 + 数据库 + 缓存 +- **开发环境**:快速搭建一致的开发环境 +- **微服务架构**:管理多个相互依赖的服务 + +## 与容器模板的区别 + +| 特性 | 编排 | 容器模板 | +|------|------|----------| +| 配置方式 | 手写 YAML | 图形界面 | +| 灵活性 | 完全自定义 | 使用预设配置+自定义 | +| 适用场景 | 自定义复杂应用 | 快速部署常用应用 | +| 学习成本 | 需要了解 Compose 语法 | 无需学习 | diff --git a/en/advanced/container/container.md b/en/advanced/container/container.md new file mode 100644 index 0000000..aadad0d --- /dev/null +++ b/en/advanced/container/container.md @@ -0,0 +1,93 @@ +# 容器管理 + +容器是 Docker 的核心概念,是镜像的运行实例。通过容器管理页面,你可以创建、启动、停止和管理容器。 + +## 容器列表 + +进入 **容器** 页面,默认显示容器列表。 + +![容器列表](/images/container/container-list.png) + +列表显示以下信息: + +- **容器名称**:容器的名称 +- **状态**:运行状态开关 +- **镜像**:容器使用的镜像 +- **端口**:端口映射(主机端口 -> 容器端口) +- **运行状态**:详细的运行状态信息 +- **操作**:终端、日志、重命名等 + +## 创建容器 + +点击 **创建容器** 按钮打开创建对话框。 + +![创建容器](/images/container/container-create.png) + +### 基本设置 + +- **容器名称**:可选,留空则自动生成 +- **镜像**:Docker 镜像名称,如 `nginx:latest`、`mysql:8.0` +- **网络**:选择容器使用的网络 +- **重启策略**:容器退出后的重启行为 + - 无:不自动重启 + - always:总是重启 + - on-failure:失败时重启 + - unless-stopped:除非手动停止,否则重启 + +### 高级选项 + +- **TTY (-t)**:分配伪终端 +- **STDIN (-i)**:保持标准输入打开 +- **自动移除**:容器停止后自动删除 +- **特权模式**:赋予容器完整的系统权限(谨慎使用) + +### 端口映射 + +将容器内部端口映射到主机端口,格式:`主机端口:容器端口` + +![端口映射](/images/container/container-create-port.png) + +例如:`8080:80` 表示将容器的 80 端口映射到主机的 8080 端口。 + +### 卷挂载 + +将主机目录或数据卷挂载到容器内,格式:`主机路径:容器路径` + +例如:`/opt/ace/data:/data` 表示将主机的 `/opt/ace/data` 目录挂载到容器的 `/data` 目录。 + +### 资源限制 + +限制容器可使用的 CPU 和内存资源。 + +### 环境变量 + +设置容器的环境变量,格式:`KEY=VALUE` + +## 容器操作 + +### 批量操作 + +勾选多个容器后,可以进行批量操作: + +- **启动**:启动选中的容器 +- **停止**:停止选中的容器 +- **重启**:重启选中的容器 +- **强制停止**:强制停止选中的容器 +- **暂停**:暂停选中的容器 +- **恢复**:恢复暂停的容器 +- **删除**:删除选中的容器 + +### 单个容器操作 + +- **终端**:打开容器的终端,可以在容器内执行命令 +- **日志**:查看容器的运行日志 +- **重命名**:修改容器名称 +- **更多**:查看详情、导出等操作 + +## 清理容器 + +点击 **清理容器** 可以删除所有已停止的容器,释放系统资源。 + +::: warning 注意 +清理操作不可恢复,请确保已停止的容器不再需要。 +::: diff --git a/en/advanced/container/image.md b/en/advanced/container/image.md new file mode 100644 index 0000000..d3a044a --- /dev/null +++ b/en/advanced/container/image.md @@ -0,0 +1,76 @@ +# 镜像 + +镜像是容器的模板,包含了运行应用所需的所有文件和配置。通过镜像管理页面,你可以拉取、查看和删除本地镜像。 + +## 镜像列表 + +进入 **容器** > **镜像** 标签页查看本地镜像列表。 + +![镜像列表](/images/container/container-image.png) + +列表显示以下信息: + +- **ID**:镜像 ID +- **容器数量**:使用该镜像的容器数量 +- **镜像**:镜像名称和标签 +- **大小**:镜像占用的磁盘空间 +- **创建时间**:镜像创建时间 +- **操作**:删除等 + +## 拉取镜像 + +1. 点击 **拉取镜像** 按钮 +2. 输入镜像名称,如 `nginx:latest`、`mysql:8.4` +3. 点击确认开始拉取 + +镜像名称格式:`[仓库地址/]镜像名[:标签]` + +- `nginx` - 拉取官方 nginx 镜像的 latest 标签 +- `nginx:1.28` - 拉取指定版本 +- `mysql:8.4` - 拉取 MySQL 8.4 版本 +- `registry.cn-hangzhou.aliyuncs.com/xxx/yyy:latest` - 从阿里云镜像仓库拉取 + +::: tip 提示 +国内服务器拉取 Docker Hub 镜像可能较慢,建议配置镜像加速器或使用国内镜像源。 +::: + +## 删除镜像 + +选中镜像后点击 **删除** 按钮删除镜像。 + +::: warning 注意 +如果镜像正在被容器使用,需要先删除相关容器才能删除镜像。 +::: + +## 清理镜像 + +点击 **清理镜像** 可以删除所有未被使用的镜像,释放磁盘空间。 + +清理操作会删除: + +- 悬空镜像(dangling images) +- 未被任何容器使用的镜像 + +## 镜像来源 + +### Docker Hub + +Docker 官方镜像仓库,包含大量官方和社区镜像。 + +常用官方镜像: +- `nginx` - Web 服务器 +- `mysql` / `mariadb` - 数据库 +- `redis` - 缓存 +- `postgres` - PostgreSQL 数据库 +- `node` - Node.js 运行环境 +- `python` - Python 运行环境 + +### 国内镜像源 + +- 阿里云:`registry.cn-hangzhou.aliyuncs.com` +- 腾讯云:`ccr.ccs.tencentyun.com` +- 华为云:`swr.cn-north-4.myhuaweicloud.com` + +### 私有仓库 + +如果你有私有镜像仓库,可以直接使用完整的镜像地址拉取。 diff --git a/en/advanced/container/network.md b/en/advanced/container/network.md new file mode 100644 index 0000000..bd91ba1 --- /dev/null +++ b/en/advanced/container/network.md @@ -0,0 +1,74 @@ +# 网络 + +Docker 网络用于容器之间的通信。通过网络管理页面,你可以创建、查看和删除网络。 + +## 网络列表 + +进入 **容器** > **网络** 标签页查看网络列表。 + +![网络列表](/images/container/container-network.png) + +列表显示以下信息: + +- **名称**:网络名称 +- **驱动**:网络驱动类型 +- **范围**:网络范围 +- **子网**:网络的子网地址 +- **网关**:网络的网关地址 +- **创建时间**:创建时间 +- **操作**:删除 + +## 默认网络 + +Docker 安装后会自动创建以下网络: + +| 网络名称 | 驱动 | 说明 | +|----------|------|------| +| bridge | bridge | 默认网络,容器通过 NAT 访问外部网络 | +| host | host | 容器直接使用主机网络,无网络隔离 | +| none | null | 无网络,容器完全隔离 | + +AcePanel 还会创建 `acepanel-network` 网络,用于面板编排模版部署的容器,请勿删除。 + +## 创建网络 + +1. 点击 **创建网络** 按钮 +2. 输入网络名称 +3. 选择网络驱动 +4. 配置子网和网关(可选) +5. 点击创建 + +### 网络驱动 + +- **bridge**:桥接网络,最常用的网络类型。容器通过虚拟网桥连接,可以相互通信。 +- **host**:主机网络,容器直接使用主机的网络栈,性能最好但无隔离。 +- **overlay**:覆盖网络,用于跨主机的容器通信(Swarm 模式)。 +- **macvlan**:MAC VLAN 网络,为容器分配独立的 MAC 地址。 + +## 网络使用 + +### 创建容器时指定网络 + +创建容器时,在 **网络** 选项中选择要使用的网络。 + +### 容器间通信 + +同一网络中的容器可以通过容器名称相互访问。 + +例如,在 `acepanel-network` 网络中: +- 容器 A 名称为 `web` +- 容器 B 名称为 `db` +- 容器 A 可以通过 `db:3306` 访问容器 B 的数据库 + +## 删除网络 + +选中网络后点击 **删除** 按钮删除网络。 + +::: warning 注意 +- 默认网络(bridge、host、none)和 `acepanel-network` 不能删除 +- 如果网络中有容器,需要先删除或断开容器才能删除网络 +::: + +## 清理网络 + +点击 **清理网络** 可以删除所有未被使用的自定义网络。 diff --git a/en/advanced/container/volume.md b/en/advanced/container/volume.md new file mode 100644 index 0000000..b84ac29 --- /dev/null +++ b/en/advanced/container/volume.md @@ -0,0 +1,76 @@ +# 卷 + +卷(Volume)是 Docker 管理的数据存储,用于持久化容器数据。与直接挂载主机目录相比,卷由 Docker 管理,更加安全和便携。 + +## 卷列表 + +进入 **容器** > **卷** 标签页查看卷列表。 + +![卷列表](/images/container/container-volume.png) + +列表显示以下信息: + +- **名称**:卷名称 +- **驱动**:存储驱动 +- **范围**:卷的范围 +- **挂载点**:卷在主机上的实际存储路径 +- **创建时间**:创建时间 +- **操作**:删除 + +## 创建卷 + +1. 点击 **创建卷** 按钮 +2. 输入卷名称 +3. 选择驱动(默认 local) +4. 点击创建 + +## 使用卷 + +### 创建容器时挂载卷 + +创建容器时,在 **卷** 选项中添加卷挂载: + +- **卷名称:容器路径** - 使用命名卷 +- **主机路径:容器路径** - 直接挂载主机目录 + +例如: +- `mysql_data:/var/lib/mysql` - 将 mysql_data 卷挂载到容器的 /var/lib/mysql +- `/opt/ace/data:/data` - 将主机的 /opt/ace/data 目录挂载到容器的 /data + +### 卷 vs 绑定挂载 + +| 特性 | 卷(Volume) | 绑定挂载(Bind Mount) | +|------|-------------|----------------------| +| 管理方式 | Docker 管理 | 用户管理 | +| 存储位置 | Docker 数据目录 | 任意主机路径 | +| 备份 | 需要通过 Docker 命令 | 直接备份目录 | +| 可移植性 | 高 | 依赖主机路径 | +| 适用场景 | 数据库等需要持久化的数据 | 配置文件、代码目录 | + +## 删除卷 + +选中卷后点击 **删除** 按钮删除卷。 + +::: danger 警告 +删除卷会永久删除卷中的所有数据,此操作不可恢复! +::: + +::: warning 注意 +如果卷正在被容器使用,需要先删除相关容器才能删除卷。 +::: + +## 清理卷 + +点击 **清理卷** 可以删除所有未被使用的卷,释放磁盘空间。 + +::: tip 提示 +清理前请确认未使用的卷中没有重要数据。 +::: + +## 数据备份 + +卷数据存储在 Docker 数据目录中(通常是 `/var/lib/docker/volumes/`),可以通过以下方式备份: + +1. 使用 `docker run` 创建临时容器挂载卷并导出数据 +2. 直接备份 Docker 数据目录(需要停止 Docker 服务) +3. (开发中)使用 AcePanel 的 [备份功能](../backup) 进行备份 diff --git a/en/advanced/database.md b/en/advanced/database.md new file mode 100644 index 0000000..77bd82f --- /dev/null +++ b/en/advanced/database.md @@ -0,0 +1,77 @@ +# 数据库 + +数据库模块用于管理 MySQL、MariaDB、PostgreSQL 等数据库。支持创建数据库、管理用户和配置数据库服务器。 + +## 前置要求 + +使用数据库功能前,需要先安装数据库软件: + +1. 进入 **应用** > **原生应用** +2. 安装 Percona、MySQL、MariaDB 或 PostgreSQL + +## 功能概览 + +数据库模块分为三个部分: + +| 功能 | 说明 | +|------|------| +| [数据库](./database/database) | 创建和管理数据库 | +| [用户](./database/user) | 管理数据库用户和权限 | +| [服务器](./database/server) | 管理数据库服务器连接 | + +![数据库列表](/images/database/database-list.png) + +## 支持的数据库 + +| 数据库 | 说明 | +|--------|------| +| Percona | MySQL 的高性能分支,适合高负载场景 | +| MySQL | 世界上最流行的开源关系型数据库 | +| MariaDB | MySQL 的开源分支,完全兼容 MySQL | +| PostgreSQL | 功能强大的开源对象关系型数据库 | + +## 快速开始 + +### 创建数据库 + +1. 进入 **数据库** 页面 +2. 点击 **创建数据库** +3. 选择数据库类型和服务器 +4. 输入数据库名称 +5. 选择是否创建用户并设置权限 +6. 点击创建 + +### 创建用户 + +1. 切换到 **用户** 标签 +2. 点击 **创建用户** +3. 输入用户名和密码 +4. 设置访问权限 +5. 点击创建 + +## 连接数据库 + +### 本地连接 + +``` +主机:127.0.0.1 或 localhost +端口:Percona/MySQL/MariaDB 3306,PostgreSQL 5432 +Socket:Percona/MySQL/MariaDB /tmp/mysql.sock,PostgreSQL /tmp/.s.PGSQL.5432 +``` + +### 远程连接 + +如需远程连接数据库: + +1. 在防火墙中开放数据库端口 +2. 创建允许远程访问的用户(主机设为 `%`) + +::: warning 安全提示 +不建议将数据库端口暴露到公网,如需远程管理建议使用 SSH 隧道或 VPN。 +::: + +## 下一步 + +- [数据库管理](./database/database) - 了解如何创建和管理数据库 +- [用户管理](./database/user) - 了解如何管理数据库用户 +- [服务器管理](./database/server) - 了解如何管理数据库服务器 diff --git a/en/advanced/database/database.md b/en/advanced/database/database.md new file mode 100644 index 0000000..6cd74b6 --- /dev/null +++ b/en/advanced/database/database.md @@ -0,0 +1,58 @@ +# 数据库管理 + +数据库管理页面用于创建、查看和删除数据库,AcePanel 已全面默认使用 UTF-8 编码创建数据库。 + +## 数据库列表 + +进入 **数据库** 页面,默认显示数据库列表。 + +![数据库列表](/images/database/database-list.png) + +列表显示以下信息: + +- **类型**:数据库类型(MySQL/PostgreSQL) +- **数据库名称**:数据库名称 +- **服务器**:所属的数据库服务器 +- **编码**:字符编码 +- **注释**:备注信息(PostgreSQL 支持) +- **操作**:删除 + +## 创建数据库 + +1. 点击 **创建数据库** 按钮 +2. 填写配置: + - **服务器**:选择数据库服务器 + - **数据库名称**:只能使用字母、数字和下划线 +3. 选择是否创建用户并设置权限(可选) +4. 点击创建 + +## 删除数据库 + +点击数据库右侧的 **删除** 按钮删除数据库。 + +::: danger 警告 +删除数据库会永久删除该数据库中的所有数据,此操作不可恢复!请务必提前备份重要数据。 +::: + +## 数据库命名规范 + +- 只能使用字母、数字和下划线 +- 不能以数字开头 +- 避免使用数据库保留字 +- 建议使用有意义的名称,如 `wordpress`、`myapp_production` + +## 常见问题 + +### 创建数据库失败 + +- 检查数据库名称是否符合命名规范 +- 检查是否已存在同名数据库 +- 检查数据库服务是否正常运行 + +### 数据库编码问题 + +如果出现乱码,检查: + +1. 数据库编码是否正确 +2. 连接时是否指定了正确的编码 +3. 应用程序的编码设置 diff --git a/en/advanced/database/server.md b/en/advanced/database/server.md new file mode 100644 index 0000000..9e42503 --- /dev/null +++ b/en/advanced/database/server.md @@ -0,0 +1,86 @@ +# 服务器管理 + +服务器管理页面用于管理数据库服务器连接,支持本地和远程数据库服务器。 + +## 服务器列表 + +进入 **数据库** > **服务器** 标签页查看服务器列表。 + +![服务器列表](/images/database/database-server.png) + +列表显示以下信息: + +- **类型**:数据库类型(MySQL/PostgreSQL) +- **名称**:服务器名称 +- **用户名**:管理员用户名 +- **密码**:管理员密码 +- **主机**:服务器地址和端口 +- **注释**:备注信息 +- **状态**:连接状态 +- **更新日期**:最后更新时间 +- **操作**:终端、同步、修改、删除 + +## 本地服务器 + +安装数据库软件后,AcePanel 会自动添加本地服务器,此类服务器不支持自行删除: + +- **local_mysql**:本地 Percona/MySQL/MariaDB 服务器 +- **local_postgresql**:本地 PostgreSQL 服务器 + +## 添加远程服务器 + +1. 点击 **添加服务器** 按钮 +2. 填写配置: + - **类型**:选择数据库类型 + - **名称**:服务器名称(用于标识) + - **主机**:服务器地址 + - **端口**:数据库端口 + - **用户名**:管理员用户名 + - **密码**:管理员密码 +3. 点击添加 + +### 远程服务器使用场景 + +- 连接云数据库(如阿里云 RDS、腾讯云 CDB) +- 连接容器中的数据库服务 +- 连接其他服务器上的数据库 +- 数据库读写分离架构 + +## 服务器操作 + +### 终端 + +点击 **终端** 按钮打开数据库命令行终端,可以直接执行 SQL 语句。 + +### 同步 + +点击 **同步** 按钮同步数据库和用户信息。当直接在数据库中创建了数据库或用户时,可以使用此功能同步到面板。 + +### 修改 + +点击 **修改** 按钮可以修改服务器连接信息,如密码、主机地址等。 + +### 删除 + +点击 **删除** 按钮删除服务器配置。 + +::: warning 注意 +删除服务器配置不会删除实际的数据库服务,只是从面板中移除该服务器的管理。 +::: + +## 连接测试 + +添加或修改服务器后,系统会自动测试连接。如果连接失败,请检查: + +1. 服务器地址和端口是否正确 +2. 用户名和密码是否正确 +3. 防火墙是否允许连接 +4. 数据库服务是否正常运行 +5. 数据库用户是否允许从当前主机连接 + +## 默认端口 + +| 数据库 | 默认端口 | +|-----------------------|----------| +| Percona/MySQL/MariaDB | 3306 | +| PostgreSQL | 5432 | diff --git a/en/advanced/database/user.md b/en/advanced/database/user.md new file mode 100644 index 0000000..131d48b --- /dev/null +++ b/en/advanced/database/user.md @@ -0,0 +1,83 @@ +# 用户管理 + +用户管理页面用于创建和管理数据库用户,设置用户权限。 + +## 用户列表 + +进入 **数据库** > **用户** 标签页查看用户列表。 + +![用户列表](/images/database/database-user.png) + +列表显示以下信息: + +- **类型**:数据库类型 +- **用户名**:数据库用户名 +- **密码**:用户密码(点击复制) +- **主机**:允许连接的主机 +- **服务器**:所属的数据库服务器 +- **权限**:用户拥有权限的数据库 +- **注释**:备注信息 +- **状态**:用户状态 +- **更新日期**:最后更新时间 +- **操作**:修改、删除 + +## 创建用户 + +1. 点击 **创建用户** 按钮 +2. 填写配置: + - **服务器**:选择数据库服务器 + - **用户名**:数据库用户名 + - **密码**:用户密码(建议使用强密码) + - **主机**:允许连接的主机地址 + - **权限**:选择用户可以访问的数据库 +3. 点击创建 + +### 主机设置 + +| 值 | 说明 | +|------|------| +| `localhost` | 只允许本地连接 | +| `127.0.0.1` | 只允许本地 IP 连接 | +| `%` | 允许任意主机连接 | +| `192.168.1.%` | 允许指定网段连接 | +| `192.168.1.100` | 只允许指定 IP 连接 | + +::: warning 安全提示 +生产环境不建议使用 `%` 允许任意主机连接,应限制为具体的 IP 地址或网段。 +::: + +## 修改用户 + +点击用户右侧的 **修改** 按钮可以: + +- 修改密码 +- 修改允许连接的主机 +- 修改数据库权限 + +## 删除用户 + +点击用户右侧的 **删除** 按钮删除用户。 + +::: warning 注意 +删除用户后,使用该用户连接数据库的应用将无法正常工作。 +::: + +## 权限说明 + +### Percona/MySQL/MariaDB 权限 + +创建用户时可以选择授予权限的数据库: + +- 选择具体数据库:用户只能访问选中的数据库 +- 不选择:用户没有任何数据库权限 + +### PostgreSQL 权限 + +PostgreSQL 的权限管理更加细粒度,可以自行针对数据库、模式、表等设置不同权限,面板仅支持授予数据库访问权限。 + +## 密码安全 + +- 使用强密码,包含大小写字母、数字和特殊字符 +- 密码长度建议 16 位以上 +- 不同应用使用不同的数据库用户 +- 定期更换密码 diff --git a/en/advanced/file.md b/en/advanced/file.md new file mode 100644 index 0000000..1d4f665 --- /dev/null +++ b/en/advanced/file.md @@ -0,0 +1,198 @@ +# 文件 + +文件模块提供了功能强大的图形化文件管理器,设计理念是尽可能还原 Windows 资源管理器的操作体验,支持右键菜单、拖拽上传、快捷键等特性。 + +## 文件管理器 + +![文件管理器](/images/file/file-list.png) + +## 核心特性 + +### 类 Windows 操作体验 + +- **右键菜单**:右键点击文件或目录弹出操作菜单 +- **拖拽上传**:直接将本地文件拖拽到浏览器窗口即可上传 +- **多选操作**:支持 Ctrl+点击 多选,Shift+点击 范围选择 +- **快捷键支持**:常用操作都有对应的快捷键 + +### 快捷键 + +| 快捷键 | 功能 | +|--------|------| +| `Ctrl+C` | 复制 | +| `Ctrl+X` | 剪切 | +| `Ctrl+V` | 粘贴 | +| `Delete` | 删除 | +| `F2` | 重命名 | +| `Ctrl+A` | 全选 | + +## 导航 + +### 路径导航 + +顶部显示当前路径的面包屑导航,点击可以快速跳转到任意上级目录。 + +### 快捷按钮 + +- **后退**:返回上一个访问的目录 +- **前进**:前进到下一个目录 +- **上级目录**:返回上级目录 +- **刷新**:刷新当前目录 +- **主目录**:返回默认目录 + +## 文件列表 + +文件列表显示以下信息: + +| 列 | 说明 | +|------|------| +| 名称 | 文件或目录名称 | +| 大小 | 文件大小,目录显示"计算"可点击计算 | +| 权限 | 文件权限(如 0755) | +| 所有者/组 | 文件的所有者和所属组 | +| 修改时间 | 最后修改时间 | +| 操作 | 打开、压缩、重命名、删除、更多 | + +### 选择文件 + +![选择文件](/images/file/file-select.png) + +选择文件后,顶部会显示批量操作按钮: + +- **复制**:复制选中的文件 +- **移动**:移动选中的文件 +- **压缩**:压缩选中的文件 +- **权限**:修改权限 +- **删除**:删除选中的文件 + +### 更多操作 + +点击文件行的 **更多** 按钮,显示更多操作选项: + +![更多操作](/images/file/file-context-menu.png) + +- **复制**:复制文件到其他目录 +- **移动**:移动文件到其他目录 +- **权限**:修改文件权限和所有者 +- **压缩**:压缩文件 +- **复制路径**:复制文件的完整路径 +- **属性**:查看文件详细属性 + +## 工具栏 + +### 新建 + +点击 **新建** 按钮可以: +- 新建文件 +- 新建目录 + +### 上传 + +点击 **上传** 按钮上传本地文件到服务器。 + +支持的上传方式: +- 点击选择文件上传 +- **拖拽上传**:直接将文件拖拽到页面即可上传 + +### 远程下载 + +点击 **远程下载** 按钮,输入 URL 地址,将远程文件下载到当前目录。 + +适用场景: +- 下载软件安装包 +- 下载远程备份文件 +- 从其他服务器获取文件 + +### 搜索 + +在搜索框输入关键词搜索文件: +- 默认搜索当前目录 +- 勾选 **包括子目录** 可以递归搜索 + +### 终端 + +点击 **终端** 按钮可以在当前目录打开终端,方便执行命令行操作。 + +### 排序 + +点击 **排序** 按钮可以按不同字段排序文件列表。 + +## 文件编辑器 + +AcePanel 内置了功能强大的代码编辑器,基于 Monaco Editor(VS Code 同款编辑器内核)。 + +![文件编辑器](/images/file/file-editor.png) + +### 编辑器特性 + +- **语法高亮**:支持各种编程语言的语法高亮 +- **代码折叠**:支持代码块折叠 +- **行号显示**:显示行号,方便定位 +- **小地图**:右侧显示代码缩略图 +- **自动换行**:可切换自动换行模式 +- **多文件编辑**:支持同时打开多个文件,标签页切换 + +### 编辑器快捷键 + +| 快捷键 | 功能 | +|--------|------| +| `Ctrl+S` | 保存当前文件 | +| `Ctrl+Shift+S` | 保存所有文件 | +| `Ctrl+F` | 搜索 | +| `Ctrl+H` | 替换 | +| `Ctrl+G` | 转到指定行 | + +### 编辑器工具栏 + +- **保存**:保存当前文件 +- **保存所有**:保存所有修改的文件 +- **刷新**:重新加载文件内容 +- **搜索**:打开搜索面板 +- **替换**:打开替换面板 +- **转到**:跳转到指定行 +- **字体大小**:调整编辑器字体大小 +- **切换自动换行**:开启/关闭自动换行 +- **切换小地图**:显示/隐藏右侧小地图 +- **设置**:编辑器设置 + +### 全屏模式 + +点击 **最大化** 按钮可以全屏编辑,获得更大的编辑空间: + +![全屏编辑器](/images/file/file-editor-fullscreen.png) + +### 侧边栏文件树 + +编辑器左侧显示当前目录的文件树,可以: +- 快速切换编辑其他文件 +- 新建文件 +- 搜索文件 + +### 状态栏 + +编辑器底部状态栏显示: +- 文件完整路径 +- 换行符类型(LF/CRLF) +- 光标位置(行、列) +- 缩进设置(空格/Tab) +- 文件语言类型 + +## 权限说明 + +Linux 文件权限由三组数字表示: + +| 权限 | 数字 | 说明 | +|------|------|------| +| r | 4 | 读取 | +| w | 2 | 写入 | +| x | 1 | 执行 | + +例如 `0755`: +- 所有者:7 (4+2+1) = 读+写+执行 +- 所属组:5 (4+1) = 读+执行 +- 其他用户:5 (4+1) = 读+执行 + +常用权限: +- `0644`:普通文件 +- `0755`:可执行文件和目录 +- `0600`:私密文件(如密钥) diff --git a/en/advanced/monitor.md b/en/advanced/monitor.md new file mode 100644 index 0000000..3d353a4 --- /dev/null +++ b/en/advanced/monitor.md @@ -0,0 +1,99 @@ +# 监控 + +监控模块用于记录和查看服务器的性能数据,包括 CPU、内存、磁盘 I/O 和网络流量。 + +## 监控页面 + +![监控页面](/images/monitor/monitor.png) + +## 监控设置 + +### 启用监控 + +开启 **启用监控** 开关后,系统会定期采集性能数据。 + +### 保存天数 + +设置监控数据的保留时间,默认 30 天。超过保留时间的数据会自动清理。 + +### 清除监控记录 + +点击 **清除监控记录** 按钮可以手动清除所有历史监控数据。 + +## 监控指标 + +### 负载(Load Average) + +系统负载反映了 CPU 的繁忙程度: + +- **1 分钟负载**:最近 1 分钟的平均负载 +- **5 分钟负载**:最近 5 分钟的平均负载 +- **15 分钟负载**:最近 15 分钟的平均负载 + +负载值的参考: +- 负载 < CPU 核心数:系统运行流畅 +- 负载 = CPU 核心数:系统满负荷运行 +- 负载 > CPU 核心数:系统过载,可能出现卡顿 + +### CPU 使用率 + +显示 CPU 的使用百分比,包括: +- 用户态使用率 +- 系统态使用率 +- 空闲率 + +### 内存使用 + +显示内存的使用情况: +- 已使用内存 +- 可用内存 +- 缓存/缓冲区 + +### 磁盘 I/O + +显示磁盘的读写速度: +- 读取速度(KB/s 或 MB/s) +- 写入速度(KB/s 或 MB/s) + +可以选择要监控的磁盘设备。 + +### 网络流量 + +显示网络接口的流量: +- 发送速度 +- 接收速度 + +可以选择要监控的网络接口。 + +## 时间范围 + +每个监控图表都支持选择时间范围: + +- **昨天**:查看昨天的数据 +- **今天**:查看今天的数据 +- **近 7 天**:查看最近一周的数据 +- **自定义**:选择任意时间范围 + +## 使用场景 + +### 性能分析 + +通过监控数据分析服务器性能瓶颈: +- CPU 持续高负载:考虑优化程序或升级 CPU +- 内存不足:考虑增加内存或优化内存使用 +- 磁盘 I/O 高:考虑使用 SSD 或优化数据库查询 +- 网络带宽不足:考虑升级带宽 + +### 故障排查 + +出现问题时,查看历史监控数据定位问题发生的时间和原因。 + +### 容量规划 + +根据历史数据趋势,预测未来的资源需求,提前进行扩容。 + +## 注意事项 + +- 监控数据会占用一定的磁盘空间 +- 保存天数越长,占用空间越大 +- 建议根据实际需求设置合适的保存天数 diff --git a/en/advanced/project.md b/en/advanced/project.md new file mode 100644 index 0000000..9fea1e5 --- /dev/null +++ b/en/advanced/project.md @@ -0,0 +1,156 @@ +# 项目 + +项目模块用于管理后端应用程序,支持 Go、Java、Node.js、PHP、Python 等多种语言。项目会作为系统服务运行,支持自动重启、开机自启等功能。 + +## 项目类型 + +| 类型 | 说明 | 适用场景 | +|------|------|----------| +| [Go](./project/go) | Go 语言项目 | Gin、Echo、Fiber 等框架 | +| [Java](./project/java) | Java 项目 | Spring Boot、Tomcat 等 | +| [Node.js](./project/nodejs) | Node.js 项目 | Express、Koa、NestJS 等 | +| [PHP](./project/php) | PHP 项目 | Laravel Octane、Swoole 等 | +| [Python](./project/python) | Python 项目 | Django、Flask、FastAPI 等 | +| [通用](./project/general) | 其他类型项目 | 任意可执行程序 | + +![项目列表](/images/project/project-list.png) + +## 项目 vs 网站 + +| 特性 | 项目 | 网站 | +|------|------|------| +| 运行方式 | 独立进程 | 依赖 Web 服务器 | +| 进程管理 | 自动重启、开机自启 | 由 Web 服务器管理 | +| 适用场景 | 后端服务、API | 传统 Web 应用 | +| 对外访问 | 需要配合反向代理 | 直接访问 | + +## 创建项目 + +1. 进入 **项目** 页面 +2. 点击 **创建项目** + +![创建项目](/images/project/project-create.png) + +### 配置项 + +- **项目名**:项目标识,用作服务名称 +- **项目目录**:项目文件所在目录 +- **运行用户**:运行项目的系统用户,默认 www +- **启动命令**:启动项目的命令 +- **反向代理**:是否自动创建反向代理网站 + +## 项目管理 + +项目列表显示以下信息: + +- **名称**:项目名称 +- **描述**:项目描述 +- **类型**:项目类型(Go/Java/Node.js 等) +- **状态**:运行状态 +- **自启动**:是否开机自启 +- **目录**:项目目录 +- **操作**:启动、停止、重启、日志等 + +### 项目操作 + +- **启动**:启动项目 +- **停止**:停止项目 +- **重启**:重启项目 +- **日志**:查看项目运行日志 +- **编辑**:修改项目配置 +- **删除**:删除项目 + +## 编辑项目 + +点击项目列表中的 **编辑** 按钮,可以修改项目配置。编辑对话框包含多个标签页: + +### 基本设置 + +配置项目的基本信息: + +![基本设置](/images/project/project-edit-basic.png) + +- **项目名**:项目标识,用作服务名称 +- **描述**:项目描述信息 +- **项目目录**:项目文件所在目录 +- **工作目录**:程序运行时的工作目录,默认为项目目录 +- **运行用户**:运行项目的系统用户 + +### 运行设置 + +配置项目的运行参数: + +![运行设置](/images/project/project-edit-run.png) + +- **启动命令**:启动项目的命令 +- **预启动命令**:启动前运行的命令(可选) +- **启动后命令**:启动后运行的命令(可选) +- **停止命令**:自定义停止命令(可选) +- **重载命令**:自定义重载命令(可选) +- **重启策略**:失败时重启、总是重启、不重启 +- **重启间隔**:重启之间的等待时间 +- **最大重启次数**:连续重启的最大次数 +- **启动超时**:等待服务启动的超时时间 +- **停止超时**:等待服务停止的超时时间 +- **标准输出**:标准输出的处理方式 +- **标准错误**:标准错误的处理方式 +- **环境变量**:设置项目运行时的环境变量 + +### 依赖 + +配置服务依赖关系以控制启动顺序: + +![依赖](/images/project/project-edit-deps.png) + +- **Requires**:强依赖,如果这些服务不可用,项目将会失败 +- **Wants**:弱依赖,如果这些服务失败,项目仍然会启动 +- **After**:在指定服务之后启动此项目 +- **Before**:在指定服务之前启动此项目 + +常见服务:`network.target`、`mysqld.service`、`postgresql.service`、`redis.service` + +### 资源限制 + +设置资源限制以防止服务消耗过多系统资源: + +![资源限制](/images/project/project-edit-resource.png) + +- **内存限制**:限制项目使用的最大内存,0 表示无限制 +- **CPU 配额**:限制 CPU 使用率,100% = 1 个 CPU 核心 + +### 安全设置 + +增强服务隔离的安全选项: + +![安全设置](/images/project/project-edit-security.png) + +- **没有新权限**:防止进程获取新的权限 +- **保护 /tmp**:为服务创建私有的 /tmp 目录 +- **保护 /home**:限制对 /home 目录的访问 +- **保护系统**:设置系统目录的只读保护级别 + - `true`:/usr、/boot 为只读 + - `full`:+ /etc 为只读 + - `strict`:整个文件系统为只读 +- **读写路径**:服务可以读写的路径 +- **只读路径**:服务只能读取的路径 + +::: warning 注意 +安全设置可能会影响某些功能,请在启用之前进行充分测试。 +::: + +## 进程管理 + +项目使用 systemd 进行进程管理,具有以下特性: + +- **自动重启**:进程异常退出后自动重启 +- **开机自启**:系统启动时自动启动项目 +- **日志管理**:自动记录标准输出和错误输出 + +## 下一步 + +- [Go 项目](./project/go) - 部署 Go 应用 +- [Java 项目](./project/java) - 部署 Java 应用 +- [Node.js 项目](./project/nodejs) - 部署 Node.js 应用 +- [PHP 项目](./project/php) - 部署 PHP 应用 +- [Python 项目](./project/python) - 部署 Python 应用 +- [通用项目](./project/general) - 部署其他类型应用 diff --git a/en/advanced/project/general.md b/en/advanced/project/general.md new file mode 100644 index 0000000..5d4082c --- /dev/null +++ b/en/advanced/project/general.md @@ -0,0 +1,132 @@ +# 通用项目 + +通用项目用于部署任意类型的可执行程序,不限于特定编程语言。 + +## 适用场景 + +- Rust 应用 +- C/C++ 应用 +- Shell 脚本 +- 其他编译型语言应用 +- 自定义启动脚本 + +## 创建通用项目 + +1. 进入 **项目** 页面 +2. 点击 **创建项目** +3. 填写配置: + - **项目名**:项目标识 + - **项目目录**:可执行文件所在目录 + - **启动命令**:启动程序的命令 +4. 根据需要开启 **反向代理** + +## 启动命令示例 + +### Rust 应用 + +```bash +# 运行编译好的二进制文件 +./myapp + +# 带参数运行 +./myapp --config config.toml --port 8080 +``` + +### Shell 脚本 + +```bash +# 运行脚本 +/bin/bash start.sh + +# 或直接运行(需要 shebang 和执行权限) +./start.sh +``` + +### 自定义启动脚本 + +创建 `start.sh`: + +```bash +#!/bin/bash +cd /opt/ace/project/myapp +export ENV=production +./myapp +``` + +启动命令:`/bin/bash start.sh` + +## 环境变量 + +可以在启动命令中设置环境变量: + +```bash +# 单个环境变量 +ENV=production ./myapp + +# 多个环境变量 +ENV=production PORT=8080 ./myapp +``` + +或直接编辑项目,在 **运行设置** 中添加环境变量。 + +## 工作目录 + +项目会在指定的项目目录下运行,相对路径会基于该目录解析。 + +如果需要切换目录,可以在启动命令中使用 `cd`: + +```bash +cd /opt/ace/project/myapp/bin && ./myapp +``` + +## 权限设置 + +确保可执行文件有执行权限: + +```bash +chmod +x myapp +chmod +x start.sh +``` + +## 运行用户 + +默认使用 `www` 用户运行项目。如果程序需要特殊权限,可以选择其他用户。 + +::: warning 注意 +使用 root 用户运行可能带来安全风险,请谨慎选择。 +::: + +## 日志输出 + +程序的标准输出(stdout)和标准错误(stderr)会被记录到日志中,可以在项目管理页面查看。 + +建议程序将日志输出到标准输出,而非写入文件,便于统一管理。 + +## 信号处理 + +项目停止时会发送 SIGTERM 信号,程序应正确处理该信号以实现优雅关闭: + +```rust +// Rust 示例 +use signal_hook::{consts::SIGTERM, iterator::Signals}; + +fn main() { + let mut signals = Signals::new(&[SIGTERM]).unwrap(); + // 处理 SIGTERM 信号 +} +``` + +```c +// C 示例 +#include + +void handle_sigterm(int sig) { + // 清理资源 + exit(0); +} + +int main() { + signal(SIGTERM, handle_sigterm); + // ... +} +``` diff --git a/en/advanced/project/go.md b/en/advanced/project/go.md new file mode 100644 index 0000000..aa1cf1b --- /dev/null +++ b/en/advanced/project/go.md @@ -0,0 +1,120 @@ +# Go 项目 + +Go 项目用于部署使用 Go 语言开发的后端应用,如 Gin、Echo、Fiber 等框架。 + +## 前置要求 + +1. 安装 Go 运行环境:**应用** > **运行环境** > **Go** +2. 编译好的 Go 可执行文件或源代码 + +## 部署方式 + +### 方式一:部署编译好的二进制文件 + +1. 在本地编译 Go 项目: + +```bash +# 交叉编译为 Linux amd64 +GOOS=linux GOARCH=amd64 go build -o myapp +``` + +2. 上传二进制文件到服务器 +3. 创建项目,启动命令填写:`./myapp` + +### 方式二:在服务器上编译 + +1. 上传源代码到服务器 +2. 在终端中编译: + +```bash +cd /opt/ace/project/myapp +go build -o myapp +``` + +3. 创建项目,启动命令填写:`./myapp` + +## 创建 Go 项目 + +1. 进入 **项目** 页面 +2. 点击 **创建项目** +3. 填写配置: + - **项目名**:`myapp` + - **项目目录**:`/opt/ace/project/myapp` + - **启动命令**:`./myapp` 或 `go1.24 run main.go` +4. 开启 **反向代理** 以便外部访问 + +## 启动命令示例 + +```bash +# 运行编译好的二进制文件 +./myapp + +# 使用指定版本的 Go 运行 +go1.24 run main.go + +# 带参数运行 +./myapp -port 8080 -config ./config.yaml + +# 设置环境变量 +GIN_MODE=release ./myapp +``` + +## 常用框架 + +### Gin + +```go +package main + +import "github.com/gin-gonic/gin" + +func main() { + r := gin.Default() + r.GET("/", func(c *gin.Context) { + c.JSON(200, gin.H{"message": "Hello"}) + }) + r.Run(":8080") +} +``` + +启动命令:`GIN_MODE=release ./myapp` + +### Echo + +```go +package main + +import ( + "github.com/labstack/echo/v4" +) + +func main() { + e := echo.New() + e.GET("/", func(c echo.Context) error { + return c.String(200, "Hello") + }) + e.Start(":8080") +} +``` + +### Fiber + +```go +package main + +import "github.com/gofiber/fiber/v2" + +func main() { + app := fiber.New() + app.Get("/", func(c *fiber.Ctx) error { + return c.SendString("Hello") + }) + app.Listen(":8080") +} +``` + +## 注意事项 + +1. 确保二进制文件有执行权限:`chmod +x myapp` +2. 生产环境建议使用编译好的二进制文件,而非 `go run` +3. 建议使用环境变量或配置文件管理配置,避免硬编码 diff --git a/en/advanced/project/java.md b/en/advanced/project/java.md new file mode 100644 index 0000000..5baa27b --- /dev/null +++ b/en/advanced/project/java.md @@ -0,0 +1,111 @@ +# Java 项目 + +Java 项目用于部署 Spring Boot、Tomcat 等 Java 应用。 + +## 前置要求 + +1. 安装 Java 运行环境:**应用** > **运行环境** > **Java**(Corretto JDK) +2. 打包好的 JAR 文件或 WAR 文件 + +## 部署 Spring Boot 应用 + +### 打包项目 + +```bash +# Maven +mvn clean package -DskipTests + +# Gradle +./gradlew build -x test +``` + +### 上传并部署 + +1. 上传 JAR 文件到服务器(如 `/opt/ace/project/myapp/app.jar`) +2. 创建项目: + - **项目名**:`myapp` + - **项目目录**:`/opt/ace/project/myapp` + - **启动命令**:`java21 -jar app.jar` +3. 开启 **反向代理** + +## 启动命令示例 + +```bash +# 基本启动 +java21 -jar app.jar + +# 指定配置文件 +java21 -jar app.jar --spring.profiles.active=prod + +# 设置 JVM 参数 +java21 -Xms512m -Xmx1024m -jar app.jar + +# 指定端口 +java21 -jar app.jar --server.port=8080 +``` + +## JVM 参数建议 + +```bash +# 生产环境推荐配置 +java21 \ + -Xms512m \ + -Xmx1024m \ + -XX:+UseG1GC \ + -XX:MaxGCPauseMillis=200 \ + -jar app.jar +``` + +常用参数说明: + +| 参数 | 说明 | +|------|------| +| `-Xms` | 初始堆内存大小 | +| `-Xmx` | 最大堆内存大小 | +| `-XX:+UseG1GC` | 使用 G1 垃圾收集器 | +| `-XX:MaxGCPauseMillis` | 最大 GC 停顿时间 | + +## 多版本 JDK + +AcePanel 支持安装多个 JDK 版本,路径如 `/opt/ace/server/java/{version}/bin/java`,已默认链接 `java{version}` 命令方便使用。 + +## 配置文件 + +Spring Boot 配置文件 `application.yml` 示例: + +```yaml +server: + port: 8080 + +spring: + datasource: + url: jdbc:mysql://localhost:3306/mydb + username: root + password: your_password +``` + +## 常见问题 + +### 内存不足 + +增加 JVM 堆内存: + +```bash +java21 -Xms1g -Xmx2g -jar app.jar +``` + +### 端口冲突 + +修改启动端口: + +```bash +java21 -jar app.jar --server.port=8081 +``` + +### 启动慢 + +检查是否有外部依赖连接超时,或添加以下参数加速启动: + +```bash +-XX:TieredStopAtLevel=1 -noverify +``` diff --git a/en/advanced/project/nodejs.md b/en/advanced/project/nodejs.md new file mode 100644 index 0000000..6421307 --- /dev/null +++ b/en/advanced/project/nodejs.md @@ -0,0 +1,135 @@ +# Node.js 项目 + +Node.js 项目用于部署 Express、Koa、NestJS、Next.js 等 Node.js 应用。 + +## 前置要求 + +1. 安装 Node.js 运行环境:**应用** > **运行环境** > **Node.js** +2. 项目源代码 + +## 部署步骤 + +1. 上传项目代码到服务器 +2. 安装依赖: + +```bash +cd /opt/ace/project/myapp +npm24 install +``` + +3. 创建项目: + - **项目名**:`myapp` + - **项目目录**:`/opt/ace/project/myapp` + - **启动命令**:`node24 app.js` +4. 开启 **反向代理** + +## 启动命令示例 + +```bash +# 直接运行 +node24 app.js + +# 使用 npm scripts +npm24 start + +# 使用 npm run +npm24 run start:prod + +# 设置环境变量 +NODE_ENV=production node24 app.js + +# 指定端口 +PORT=3000 node24 app.js +``` + +## 常用框架 + +### Express + +```javascript +const express = require('express'); +const app = express(); + +app.get('/', (req, res) => { + res.send('Hello World'); +}); + +app.listen(3000); +``` + +启动命令:`node24 app.js` + +### NestJS + +```bash +# 构建 +npm24 run build +``` + +启动命令:`node24 dist/main.js` + +### Next.js + +```bash +# 构建 +npm24 run build +``` + +启动命令:`npm24 start` + +### Nuxt.js + +```bash +# 构建 +npm24 run build +``` + +启动命令:`node24 .output/server/index.mjs` + +## 进程管理 + +AcePanel 使用 systemd 管理 Node.js 进程,自动处理: + +- 进程崩溃自动重启 +- 开机自动启动 +- 日志记录 + +## 环境变量 + +推荐使用 `.env` 文件管理环境变量: + +```bash +# .env +NODE_ENV=production +PORT=3000 +DATABASE_URL=mysql://localhost:3306/mydb +``` + +使用 `dotenv` 包加载: + +```javascript +require('dotenv').config(); +``` + +## 常见问题 + +### 依赖安装失败 + +尝试清除缓存重新安装: + +```bash +rm -rf node_modules package-lock.json +npm24 install +``` + +### 内存不足 + +增加 Node.js 内存限制: + +```bash +NODE_OPTIONS="--max-old-space-size=4096" node24 app.js +``` + +### 端口被占用 + +修改应用监听的端口,或检查是否有其他进程占用。 diff --git a/en/advanced/project/php.md b/en/advanced/project/php.md new file mode 100644 index 0000000..3d8e6a8 --- /dev/null +++ b/en/advanced/project/php.md @@ -0,0 +1,97 @@ +# PHP 项目 + +PHP 项目用于部署需要常驻进程的 PHP 应用,如 Laravel Octane、Swoole、Workerman 等。 + +::: tip 提示 +传统的 PHP-FPM 应用(如 WordPress、Laravel)应使用 [PHP 网站](../website/php) 方式部署,而非项目。 +::: + +## 适用场景 + +- Laravel Octane(Swoole/RoadRunner) +- Swoole 应用 +- Workerman 应用 +- ReactPHP 应用 +- 其他需要常驻进程的 PHP 应用 + +## 前置要求 + +1. 安装 PHP 运行环境:**应用** > **运行环境** > **PHP** +2. 根据需要安装 Swoole 等模块 + +## 部署 Laravel Octane + +### 创建项目 + +1. 创建项目: + - **项目名**:`myapp` + - **项目目录**:`/opt/ace/project/myapp` + - **启动命令**:`php84 artisan octane:start --host=0.0.0.0 --port=8000` +2. 开启 **反向代理** + +## 启动命令示例 + +```bash +# Laravel Octane (Swoole) +php84 artisan octane:start --host=0.0.0.0 --port=8000 + +# Laravel Octane (RoadRunner) +php84 artisan octane:start --server=roadrunner --host=0.0.0.0 --port=8000 + +# Swoole HTTP Server +php84 server.php + +# Workerman +php84 start.php start + +# Laravel Queue Worker +php84 artisan queue:work --daemon +``` + +## Swoole 应用示例 + +```php +on("request", function ($request, $response) { + $response->header("Content-Type", "text/plain"); + $response->end("Hello World"); +}); + +$server->start(); +``` + +启动命令:`php84 server.php` + +## Workerman 应用示例 + +```php +onMessage = function($connection, $request) { + $connection->send("Hello World"); +}; + +Worker::runAll(); +``` + +启动命令:`php84 start.php start` + +## 队列处理 + +Laravel 队列 Worker 也可以作为项目运行: + +```bash +php84 artisan queue:work --daemon --tries=3 +``` + +## 注意事项 + +1. 常驻进程的 PHP 应用需要注意内存泄漏问题 +2. 代码更新后需要重启项目才能生效 +3. 建议配置进程监控,异常时自动重启 diff --git a/en/advanced/project/python.md b/en/advanced/project/python.md new file mode 100644 index 0000000..a5017a3 --- /dev/null +++ b/en/advanced/project/python.md @@ -0,0 +1,149 @@ +# Python 项目 + +Python 项目用于部署 Django、Flask、FastAPI 等 Python Web 应用。 + +## 前置要求 + +1. 安装 Python 运行环境:**应用** > **运行环境** > **Python** +2. 项目源代码 + +## 部署步骤 + +1. 上传项目代码到服务器 +2. 创建虚拟环境并安装依赖: + +```bash +cd /opt/ace/project/myapp +python3.13 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +``` + +3. 创建项目: + - **项目名**:`myapp` + - **项目目录**:`/opt/ace/project/myapp` + - **启动命令**:见下方示例 +4. 开启 **反向代理** + +## 启动命令示例 + +### Django + +```bash +# 开发服务器(不推荐生产使用) +/opt/ace/project/myapp/venv/bin/python manage.py runserver 0.0.0.0:8000 + +# 使用 Gunicorn(推荐) +/opt/ace/project/myapp/venv/bin/gunicorn myproject.wsgi:application -b 0.0.0.0:8000 -w 4 + +# 使用 uWSGI +/opt/ace/project/myapp/venv/bin/uwsgi --http 0.0.0.0:8000 --module myproject.wsgi +``` + +### Flask + +```bash +# 开发服务器(不推荐生产使用) +/opt/ace/project/myapp/venv/bin/python app.py + +# 使用 Gunicorn(推荐) +/opt/ace/project/myapp/venv/bin/gunicorn app:app -b 0.0.0.0:8000 -w 4 +``` + +### FastAPI + +```bash +# 使用 Uvicorn +/opt/ace/project/myapp/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000 + +# 使用 Gunicorn + Uvicorn Workers(推荐) +/opt/ace/project/myapp/venv/bin/gunicorn main:app -b 0.0.0.0:8000 -w 4 -k uvicorn.workers.UvicornWorker +``` + +## 常用框架配置 + +### Django 生产配置 + +`settings.py`: + +```python +DEBUG = False +ALLOWED_HOSTS = ['your-domain.com'] +STATIC_ROOT = '/opt/ace/project/myapp/static/' +``` + +收集静态文件: + +```bash +/opt/ace/project/myapp/venv/bin/python manage.py collectstatic +``` + +### FastAPI 示例 + +```python +from fastapi import FastAPI + +app = FastAPI() + +@app.get("/") +def read_root(): + return {"Hello": "World"} +``` + +## Gunicorn 配置 + +创建 `gunicorn.conf.py`: + +```python +bind = "0.0.0.0:8000" +workers = 4 +worker_class = "sync" # 或 "uvicorn.workers.UvicornWorker" for FastAPI +timeout = 30 +keepalive = 2 +``` + +启动命令: + +```bash +/opt/ace/project/myapp/venv/bin/gunicorn -c gunicorn.conf.py myproject.wsgi:application +``` + +## 虚拟环境 + +强烈建议使用虚拟环境隔离项目依赖: + +```bash +# 创建虚拟环境 +python3.13 -m venv venv + +# 激活虚拟环境 +source venv/bin/activate + +# 安装依赖 +pip install -r requirements.txt + +# 退出虚拟环境 +deactivate +``` + +## 常见问题 + +### 依赖安装失败 + +某些包需要编译,确保安装了必要的系统依赖: + +```bash +# AlmaLinux/Rocky Linux +yum install gcc python3-devel + +# Ubuntu/Debian +apt install gcc python3-dev +``` + +### 静态文件 404 + +Django 生产环境需要配置 Nginx 直接提供静态文件,或使用 WhiteNoise。 + +### 数据库连接问题 + +检查数据库配置和网络连接,确保数据库服务正常运行。 diff --git a/en/advanced/security.md b/en/advanced/security.md index 80655ea..5fbbc0b 100644 --- a/en/advanced/security.md +++ b/en/advanced/security.md @@ -1,32 +1,29 @@ -# 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: +- 不使用盗版程序,因为无法确认是否被篡改 +- 及时更新网站程序和运行环境 +- 后台密码使用随机生成的 20 位以上混合字符,启用两步验证 +- 配置定时备份 +- 保留 PHP 默认禁用的高危函数(`disable_functions`) -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. +## 系统安全 -### System Aspects +- 定期更新系统:`dnf update` 或 `apt upgrade` +- SSH 禁用默认 22 端口,使用强密码或密钥认证 +- 安装 Fail2ban 防止暴力破解 +- 不随意设置 777 权限或给 www 用户执行权限 +- 有 VNC 的情况下可考虑关闭 SSH -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. +AcePanel 拥有 root 权限,需重点保护。 -### Panel Aspects - -AcePanel has the same privileges as root, and improper management can cause serious security problems. You should: - -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.). +- 保持面板和应用更新 +- 修改默认端口,使用强密码 +- 启用安全入口,开启 HTTPS +- 内部服务端口(Redis 6379、MySQL 3306、PostgreSQL 5432 等)不要对外开放 +- 高安全要求场景可在不使用时停止面板进程,不影响已部署的服务 diff --git a/en/advanced/setting/basic.md b/en/advanced/setting/basic.md new file mode 100644 index 0000000..24ce872 --- /dev/null +++ b/en/advanced/setting/basic.md @@ -0,0 +1,58 @@ +# 基本设置 + +基本设置页面用于配置面板的基础参数。 + +![基本设置](/images/setting/setting-basic.png) + +## 面板名称 + +自定义面板显示的名称,默认为 "AcePanel"。修改后刷新页面会显示在浏览器标题和面板左上角。 + +## 语言 + +选择面板界面语言: + +- 简体中文 +- 繁体中文 +- English + +## 更新渠道 + +选择面板更新的版本渠道: + +- **稳定版**:经过充分测试的正式版本,推荐生产环境使用 +- **测试版**:包含最新功能但可能存在问题,适合尝鲜用户 + +## 端口 + +面板的访问端口,默认为 8888。修改端口后需要: + +1. 确保新端口未被占用 +2. 在服务器安全组中开放新端口 +3. 保存后面板会自动重启 + +::: warning 注意 +修改端口前请确保服务器安全组已开放新端口,否则可能无法访问面板。 +::: + +## 默认目录 + +配置各类资源的默认存储路径: + +| 设置项 | 默认值 | 说明 | +|--------|--------|------| +| 默认网站目录 | /opt/ace/sites | 网站文件存放目录 | +| 默认备份目录 | /opt/ace/backup | 备份文件存放目录 | +| 默认项目目录 | /opt/ace/projects | 项目文件存放目录 | + +修改目录后,新创建的网站/备份/项目会使用新目录,已有的不受影响。 + +## 自定义 Logo + +输入图片的完整 URL 地址,可以替换面板左上角的 Logo。支持 PNG、JPG、SVG 等格式。 + +## 隐藏菜单 + +选择要隐藏的菜单项。隐藏后的菜单不会显示在左侧导航栏中,但功能仍然可用(通过直接访问 URL)。 + +适用于简化界面或限制普通用户可见的功能范围。 diff --git a/en/advanced/setting/safe.md b/en/advanced/setting/safe.md new file mode 100644 index 0000000..2bf2ddc --- /dev/null +++ b/en/advanced/setting/safe.md @@ -0,0 +1,97 @@ +# 安全设置 + +安全设置页面用于配置面板的安全相关选项,保护面板免受未授权访问。 + +![安全设置](/images/setting/setting-safe.png) + +## 登录超时 + +设置登录会话的有效时间,单位为分钟。超过该时间未操作将自动退出登录,需要重新认证。 + +默认值为 120 分钟。 + +## 访问入口 + +设置面板的访问路径,设置访问入口后需要通过 `https://IP:端口/入口路径` 才能访问。 + +例如设置为 `/admin`,则访问地址变为 `https://IP:端口/admin`。 + +这是一个简单但有效的安全措施,可以防止面板被扫描器发现。 + +## 入口错误页 + +当访问错误的入口路径时返回的 HTTP 状态码: + +- **418 I'm a teapot**:返回一个有趣的错误码与错误页 +- **Nginx 404**:返回 Nginx 同款 404 页面 +- **关闭连接**:直接关闭连接不返回任何内容 + +## 登录验证码 + +开启后登录时多次输入错误密码会触发验证码,防止暴力破解。 + +## 请求 IP 头 + +当面板部署在反向代理(如 Nginx、CDN)后面时,需要设置正确的 IP 头才能获取真实的客户端 IP。 + +常用值: +- `X-Real-IP`:Nginx 默认使用 +- `X-Forwarded-For`:标准代理头 +- `CF-Connecting-IP`:Cloudflare 使用 + +## 绑定域名 + +限制只能通过指定域名访问面板。添加域名后,通过 IP 或其他域名将无法访问。 + +适用于: +- 提高安全性 +- 配合 SSL 证书使用 + +## 绑定 IP + +限制只能从指定 IP 地址访问面板。可以添加多个 IP 地址。 + +适用于: +- 固定办公网络 +- 跳板机访问 + +::: warning 注意 +绑定 IP 前请确保你的 IP 地址是固定的,否则可能导致无法访问面板。 +::: + +## 绑定 UA + +限制只能使用指定 User-Agent 的浏览器访问面板。 + +这是一个高级安全选项,可以配合自定义浏览器插件使用。 + +## 离线模式 + +开启后面板将不会连接外部网络,包括: +- 检查更新 +- 下载应用 +- 同步缓存数据 + +适用于内网环境或有严格网络限制的场景。 + +## 自动更新 + +开启后面板会每日自动检查并安装更新。建议保持开启以获取最新的安全修复。 + +## 面板 HTTPS + +为面板启用 HTTPS 加密访问: + +- **禁用**:使用 HTTP 访问 +- **ACME(自动)**:自动申请和续签 Let's Encrypt 证书,需要 IP 支持 80 端口访问 +- **自定义证书**:使用自己的 SSL 证书 + +::: tip 推荐 +生产环境建议启用 HTTPS,保护登录凭据和敏感数据的传输安全。 +::: + +## 面板公网 IP + +配置面板的公网 IP 地址,目前主要用于向 Let's Encrypt 申请 IP 证书。 + +支持 IPv4 和 IPv6 地址。 diff --git a/en/advanced/setting/user.md b/en/advanced/setting/user.md new file mode 100644 index 0000000..e78ff47 --- /dev/null +++ b/en/advanced/setting/user.md @@ -0,0 +1,74 @@ +# 用户管理 + +用户管理页面用于管理面板的登录用户。 + +![用户管理](/images/setting/setting-user.png) + +## 用户列表 + +列表显示所有面板用户的信息: + +| 字段 | 说明 | +|------|------| +| 用户名 | 登录用户名,可直接在表格中修改 | +| 邮箱 | 用户邮箱,用于找回密码等功能 | +| 两步验证 | 是否启用 TOTP 两步验证 | +| 创建时间 | 用户创建时间 | + +## 创建用户 + +点击 **创建用户** 按钮添加新用户: + +![创建用户](/images/setting/setting-user-create.png) + +填写以下信息: + +- **用户名**:登录用户名 +- **密码**:登录密码 +- **邮箱**:用户邮箱地址 + +## 用户操作 + +### 访问令牌 + +生成 API 访问令牌,用于通过 API 接口访问面板功能。 + +令牌具有与用户相同的权限,请妥善保管。 + +### 更改密码 + +修改用户的登录密码。建议定期更换密码。 + +### 删除用户 + +删除用户账号。删除后该用户将无法登录面板。 + +::: warning 注意 +至少需要保留一个用户,无法删除最后一个用户。 +::: + +## 两步验证 + +两步验证(2FA)为账号提供额外的安全保护。启用后登录时除了密码还需要输入动态验证码。 + +### 启用两步验证 + +1. 点击两步验证开关 +2. 使用 Google Authenticator、Microsoft Authenticator 等应用扫描二维码 +3. 输入应用显示的 6 位验证码确认 + +### 支持的验证器应用 + +- Google Authenticator +- Microsoft Authenticator +- Authy +- 1Password +- 其他支持 TOTP 的应用 + +## 安全建议 + +1. 使用强密码,包含大小写字母、数字和特殊字符 +2. 启用两步验证 +3. 定期更换密码 +4. 不要共享账号 +5. 及时删除不再使用的账号 diff --git a/en/advanced/ssh.md b/en/advanced/ssh.md new file mode 100644 index 0000000..f9d2c2f --- /dev/null +++ b/en/advanced/ssh.md @@ -0,0 +1,96 @@ +# 终端 + +终端模块提供了基于 Web 的 SSH 终端,可以直接在浏览器中连接服务器执行命令。 + +## 终端页面 + +![终端页面](/images/ssh/ssh.png) + +## 创建主机 + +点击 **创建主机** 按钮添加 SSH 连接: + +### 配置项 + +- **名称**:连接名称,用于标识 +- **主机**:服务器 IP 地址或域名 +- **端口**:SSH 端口,默认 22 +- **认证方式**:密码或密钥 +- **用户名**:SSH 用户名 +- **密码/密钥**:认证凭证 +- **备注**:可选备注 + +### 认证方式 + +| 方式 | 说明 | +|------|------| +| 密码 | 使用用户名和密码认证 | +| 密钥 | 使用 SSH 私钥认证 | + +::: tip 推荐 +生产环境建议使用密钥认证,更加安全。 +::: + +## 连接服务器 + +1. 在左侧主机列表中选择要连接的主机 +2. 点击主机名称打开终端 +3. 开始执行命令 + +## 终端功能 + +### 多标签 + +支持同时打开多个终端标签,方便在多个会话间切换。 + +### 复制粘贴 + +- **复制**:选中文本后自动复制,或使用 `Ctrl+Shift+C` +- **粘贴**:右键粘贴,或使用 `Ctrl+Shift+V` + +### 全屏模式 + +点击全屏按钮可以进入全屏模式,获得更大的终端空间。 + +### 字体设置 + +可以调整终端的字体大小和字体类型。 + +## 本地终端 + +默认会显示本地服务器的终端连接,可以直接连接到当前服务器。 + +## 远程主机 + +可以添加多个远程主机,方便管理多台服务器: + +1. 点击 **创建主机** +2. 填写远程服务器信息 +3. 保存后在列表中选择连接 + +## 安全建议 + +1. 使用强密码或密钥认证 +2. 修改默认 SSH 端口 +3. 限制 SSH 访问的 IP 地址 +4. 定期更换密码或密钥 +5. 使用非 root 用户登录 + +## 常见问题 + +### 连接超时 + +- 检查服务器 IP 和端口是否正确 +- 检查防火墙是否允许 SSH 连接 +- 检查 SSH 服务是否正常运行 + +### 认证失败 + +- 检查用户名和密码是否正确 +- 检查密钥格式是否正确 +- 检查用户是否有 SSH 登录权限 + +### 中文乱码 + +- 检查服务器的 locale 设置 +- 确保终端编码为 UTF-8 diff --git a/en/advanced/task/panel.md b/en/advanced/task/panel.md new file mode 100644 index 0000000..ee657ea --- /dev/null +++ b/en/advanced/task/panel.md @@ -0,0 +1,84 @@ +# 面板任务 + +面板任务显示 AcePanel 执行的后台任务,如应用安装、环境安装等。 + +## 任务列表 + +进入 **任务** > **面板任务** 标签页查看面板任务列表。 + +![面板任务](/images/task/task-panel.png) + +列表显示以下信息: + +- **任务名称**:任务描述 +- **状态**:运行中/已完成/失败 +- **创建时间**:任务开始时间 +- **完成时间**:任务结束时间 +- **操作**:查看日志、删除 + +## 任务状态 + +| 状态 | 说明 | +|------|------| +| 运行中 | 任务正在执行 | +| 已完成 | 任务执行成功 | +| 失败 | 任务执行失败 | + +## 常见任务类型 + +### 应用安装 + +安装原生应用时会创建安装任务: +- 安装应用 Nginx +- 安装应用 MySQL +- 安装应用 Docker + +### 应用卸载 + +卸载应用时会创建卸载任务: +- 卸载应用 MariaDB +- 卸载应用 Redis + +### 环境安装 + +安装运行环境时会创建安装任务: +- 安装环境 PHP 8.4 +- 安装环境 Node.js 20 +- 安装环境 Go 1.24 + +## 查看日志 + +点击 **日志** 按钮查看任务的详细执行日志,包括: +- 命令输出 +- 错误信息 + +日志对于排查任务失败原因非常有用。 + +## 删除任务 + +已完成或失败的任务可以删除。运行中的任务无法删除。 + +::: tip 提示 +删除任务只是从列表中移除记录,不会影响已安装的应用或环境。 +::: + +## 任务失败处理 + +如果任务失败: + +1. 点击 **日志** 查看错误信息 +2. 根据错误信息排查问题 +3. 解决问题后重新执行操作 + +常见失败原因: +- 网络问题导致下载失败 +- 磁盘空间不足 +- 依赖包缺失 +- 端口被占用 + +## 注意事项 + +1. 安装任务可能需要较长时间,请耐心等待 +2. 任务执行期间可以关闭浏览器 +3. 如果任务长时间无响应,可以刷新页面查看状态 +4. 建议定期清理已完成的任务记录 diff --git a/en/advanced/task/schedule.md b/en/advanced/task/schedule.md new file mode 100644 index 0000000..4b2c448 --- /dev/null +++ b/en/advanced/task/schedule.md @@ -0,0 +1,118 @@ +# 计划任务 + +计划任务用于设置定时执行的任务,如定时备份、定时执行脚本等。 + +## 任务列表 + +进入 **任务** 页面,默认显示计划任务列表。 + +![计划任务](/images/task/task-schedule.png) + +列表显示以下信息: + +- **任务名称**:任务名称 +- **任务类型**:Shell/备份等 +- **已启用**:是否启用 +- **任务周期**:执行周期 +- **创建时间**:创建时间 +- **最后更新时间**:最后执行时间 +- **操作**:编辑、执行、删除等 + +## 创建任务 + +点击 **创建任务** 按钮创建新的计划任务。 + +### 任务类型 + +| 类型 | 说明 | +|-------|------| +| Shell | 执行 Shell 命令或脚本 | +| 备份网站 | 定时备份网站文件 | +| 备份数据库 | 定时备份数据库 | +| 日志切割 | 定时切割日志文件 | + +### 执行周期 + +支持多种周期设置: + +- **每分钟**:每分钟执行一次 +- **每小时**:每小时执行一次 +- **每天**:每天指定时间执行 +- **每周**:每周指定日期和时间执行 +- **每月**:每月指定日期和时间执行 +- **自定义**:使用 Cron 表达式 + +### Cron 表达式 + +Cron 表达式格式:`分 时 日 月 周` + +``` +* * * * * +│ │ │ │ │ +│ │ │ │ └── 周几 (0-7, 0和7都是周日) +│ │ │ └─────── 月份 (1-12) +│ │ └──────────── 日期 (1-31) +│ └───────────────── 小时 (0-23) +└────────────────────── 分钟 (0-59) +``` + +常用示例: + +| 表达式 | 说明 | +|--------|------| +| `0 2 * * *` | 每天凌晨 2 点 | +| `0 */6 * * *` | 每 6 小时 | +| `0 0 * * 0` | 每周日凌晨 | +| `0 0 1 * *` | 每月 1 号凌晨 | +| `*/5 * * * *` | 每 5 分钟 | + +不会写?直接找个 AI 描述清楚需求让它帮你生成一个。 + +## Shell 任务示例 + +### 清理临时文件 + +```bash +find /tmp -type f -mtime +7 -delete +``` + +### 重启服务 + +```bash +systemctl restart nginx +``` + +### 同步时间 + +```bash +ntpdate ntp.aliyun.com +``` + +## 任务操作 + +### 启用/禁用 + +通过开关控制任务是否启用。禁用的任务不会执行。 + +### 立即执行 + +点击 **运行** 按钮可以立即执行任务,不等待计划时间。 + +### 查看日志 + +点击 **日志** 按钮查看任务的执行日志。 + +### 编辑任务 + +点击 **编辑** 按钮修改任务配置。 + +### 删除任务 + +点击 **删除** 按钮删除任务。 + +## 注意事项 + +1. 任务执行时间基于服务器时区 +2. 长时间运行的任务可能影响下次执行 +3. 建议为重要任务设置通知提醒 +4. 定期检查任务执行状态 diff --git a/en/advanced/toolbox.md b/en/advanced/toolbox.md new file mode 100644 index 0000000..5d81f84 --- /dev/null +++ b/en/advanced/toolbox.md @@ -0,0 +1,27 @@ +# 工具箱 + +工具箱提供了一系列系统管理工具,包括进程管理、系统信息、SSH 配置、磁盘管理等。 + +## 功能列表 + +| 功能 | 说明 | +|------|------| +| [进程](./toolbox/process) | 查看和管理系统进程 | +| [系统](./toolbox/system) | 查看系统信息和配置 | +| [SSH](./toolbox/ssh) | SSH 服务配置 | +| [磁盘](./toolbox/disk) | 磁盘使用情况和管理 | +| [日志清理](./toolbox/log) | 清理系统日志 | +| [Web 钩子](./toolbox/webhook) | 配置 Webhook 通知 | +| [跑分](./toolbox/benchmark) | 服务器性能测试 | + +![工具箱](/images/toolbox/toolbox-process.png) + +## 下一步 + +- [进程管理](./toolbox/process) - 查看和管理系统进程 +- [系统信息](./toolbox/system) - 查看系统配置 +- [SSH 配置](./toolbox/ssh) - 配置 SSH 服务 +- [磁盘管理](./toolbox/disk) - 管理磁盘空间 +- [日志清理](./toolbox/log) - 清理系统日志 +- [Web 钩子](./toolbox/webhook) - 配置通知 +- [跑分测试](./toolbox/benchmark) - 测试服务器性能 diff --git a/en/advanced/toolbox/benchmark.md b/en/advanced/toolbox/benchmark.md new file mode 100644 index 0000000..b2b0f58 --- /dev/null +++ b/en/advanced/toolbox/benchmark.md @@ -0,0 +1,46 @@ +# 跑分测试 + +跑分功能用于测试服务器的 CPU、内存和磁盘性能,帮助你了解服务器的实际性能表现。 + +![跑分测试](/images/toolbox/toolbox-benchmark.png) + +## 测试项目 + +### CPU 测试 + +测试 CPU 的计算能力,通过执行大量数学运算来评估处理器性能。 + +### 内存测试 + +测试内存的读写速度,评估内存子系统的性能表现。 + +### 磁盘测试 + +测试磁盘的读写速度,评估存储设备的 I/O 性能。 + +## 使用方法 + +点击 **开始跑分** 按钮,系统会依次执行 CPU、内存和磁盘测试。测试完成后会显示各项得分。 + +## 结果说明 + +跑分结果以数值形式展示,数值越高表示性能越好。 + +::: warning 注意 +跑分结果仅供参考。由于系统资源调度、缓存和其他因素的影响,测试结果可能与实际使用中的性能有所差异。 +::: + +## 测试建议 + +1. 测试前关闭不必要的服务和进程 +2. 避免在业务高峰期进行测试 +3. 多次测试取平均值更准确 +4. 不同时间段的测试结果可能有波动 + +## 性能优化参考 + +如果跑分结果不理想,可以考虑: + +- **CPU 性能低**:检查是否有进程占用过高 CPU +- **内存性能低**:检查内存使用情况,是否存在内存泄漏 +- **磁盘性能低**:检查磁盘健康状态,考虑升级到 SSD diff --git a/en/advanced/toolbox/disk.md b/en/advanced/toolbox/disk.md new file mode 100644 index 0000000..39f202b --- /dev/null +++ b/en/advanced/toolbox/disk.md @@ -0,0 +1,117 @@ +# 磁盘 + +磁盘页面提供磁盘分区管理和 LVM 逻辑卷管理功能。 + +## 磁盘管理 + +![磁盘管理](/images/toolbox/toolbox-disk.png) + +### 磁盘信息 + +页面顶部显示每个磁盘的基本信息: + +- **磁盘名**:如 vda、sda +- **类型**:系统盘或数据盘 +- **大小**:磁盘总容量 +- **分区数**:分区数量 +- **磁盘类型**:HDD、SSD 等 + +### 分区列表 + +每个磁盘下显示其分区信息: + +| 列 | 说明 | +|------|------| +| 分区名 | 分区设备名,如 vda1、vda2 | +| 大小 | 分区容量 | +| 已用 | 已使用空间 | +| 可用 | 可用空间 | +| 使用率 | 使用百分比 | +| 挂载点 | 挂载目录,如 `/`、`/data` | +| 文件系统 | 文件系统类型,如 ext4、xfs | +| 操作 | 卸载等操作 | + +### 挂载分区 + +将未挂载的分区挂载到指定目录: + +- **分区**:选择要挂载的分区 +- **挂载路径**:挂载目录,如 `/mnt/data` +- **挂载选项**:挂载参数,如 `defaults,noatime` +- **启动时自动挂载**:是否写入 fstab 开机自动挂载 + +### 格式化分区 + +::: danger 警告 +格式化将清除分区上的所有数据! +::: + +- **分区**:选择要格式化的分区 +- **文件系统类型**:ext4、xfs、btrfs 等 + +### 初始化磁盘 + +::: danger 警告 +初始化将删除磁盘上的所有分区和数据! +::: + +将整个磁盘初始化为单个分区: + +- **磁盘**:选择要初始化的磁盘 +- **文件系统类型**:ext4、xfs、btrfs 等 + +### 自动挂载配置(fstab) + +显示 `/etc/fstab` 中的挂载配置: + +- **设备**:设备名或 UUID +- **挂载点**:挂载目录 +- **文件系统**:文件系统类型 +- **选项**:挂载选项 +- **操作**:移除配置 + +## LVM 管理 + +![LVM 管理](/images/toolbox/toolbox-disk-lvm.png) + +LVM(Logical Volume Manager)提供灵活的磁盘空间管理,支持动态调整分区大小。 + +### 物理卷(PV) + +物理卷是 LVM 的基础,通常是一个磁盘分区或整个磁盘。 + +**创建物理卷**: +1. 选择设备(未使用的分区或磁盘) +2. 点击 **创建物理卷** + +### 卷组(VG) + +卷组由一个或多个物理卷组成,是存储池的概念。 + +**创建卷组**: +1. 输入卷组名 +2. 选择要加入的物理卷 +3. 点击 **创建卷组** + +### 逻辑卷(LV) + +逻辑卷从卷组中分配空间,相当于传统的分区。 + +**创建逻辑卷**: +1. 输入逻辑卷名 +2. 选择卷组 +3. 设置大小(GB) +4. 点击 **创建逻辑卷** + +### 扩展逻辑卷 + +动态扩展逻辑卷的大小: + +1. 选择要扩展的逻辑卷 +2. 输入扩展大小(GB) +3. 勾选 **自动调整文件系统大小**(推荐) +4. 点击 **扩展逻辑卷** + +::: tip 提示 +LVM 的优势在于可以在线扩展逻辑卷,无需卸载分区或重启系统。 +::: diff --git a/en/advanced/toolbox/log.md b/en/advanced/toolbox/log.md new file mode 100644 index 0000000..405ecac --- /dev/null +++ b/en/advanced/toolbox/log.md @@ -0,0 +1,79 @@ +# 日志清理 + +日志清理功能用于扫描和清理系统及应用产生的日志文件,释放磁盘空间。 + +![日志清理](/images/toolbox/toolbox-log.png) + +## 功能概览 + +页面顶部提供批量操作按钮: + +- **扫描所有**:扫描所有类型的日志 +- **清理所有**:清理所有已扫描的日志 + +## 日志类型 + +### 面板日志 + +面板运行产生的日志文件。 + +- 点击 **扫描** 检查日志大小 +- 点击 **清理** 删除日志文件 + +### 网站日志 + +网站的访问日志和错误日志,包括: + +- Nginx 访问日志(access.log) +- Nginx 错误日志(error.log) +- 各网站的独立日志 + +::: tip 提示 +网站日志通常是占用空间最大的日志类型,建议定期清理。 +::: + +### MySQL 日志 + +Percona/MySQL/MariaDB 数据库的日志文件: + +- 慢查询日志(slow query log) +- 二进制日志(binlog) +- 错误日志 + +::: warning 注意 +二进制日志用于数据恢复和主从复制,清理前请确认不再需要。 +::: + +### Docker + +Docker 相关的日志和未使用资源: + +- 容器日志 +- 未使用的镜像 +- 构建缓存 + +### 系统日志 + +系统级别的日志文件: + +- systemd journal 日志 +- `/var/log` 下的系统日志 +- 内核日志 + +## 使用方法 + +1. 点击各类型的 **扫描** 按钮,查看日志占用空间 +2. 确认要清理的日志类型 +3. 点击 **清理** 按钮删除日志 + +或者: + +1. 点击 **扫描所有** 一次性扫描所有日志 +2. 查看各类型的占用情况 +3. 点击 **清理所有** 批量清理 + +## 注意事项 + +1. 清理操作不可恢复,请确认日志不再需要 +2. 重要日志建议先备份 +3. 生产环境建议保留最近的日志用于问题排查 diff --git a/en/advanced/toolbox/process.md b/en/advanced/toolbox/process.md new file mode 100644 index 0000000..8f6a43e --- /dev/null +++ b/en/advanced/toolbox/process.md @@ -0,0 +1,61 @@ +# 进程管理 + +进程管理页面用于查看和管理系统中运行的进程。 + +## 进程列表 + +![进程管理](/images/toolbox/toolbox-process.png) + +页面以表格形式展示所有运行中的进程。 + +列表显示以下信息: + +- **PID**:进程 ID +- **名称**:进程名称 +- **父进程 PID**:父进程的 PID +- **线程**:线程数量 +- **用户**:运行进程的用户 +- **状态**:进程状态 +- **CPU**:CPU 使用率 +- **内存**:内存使用量 +- **启动时间**:进程启动时间 + +## 进程状态 + +| 状态 | 说明 | +|------|------| +| 运行中 | 进程正在执行 | +| 睡眠 | 进程等待事件 | +| 空闲 | 内核线程空闲 | +| 停止 | 进程已停止 | +| 僵尸 | 进程已结束但未被回收 | + +## 搜索和筛选 + +- **搜索**:按 PID 或进程名称搜索 +- **状态筛选**:筛选特定状态的进程 + +## 进程操作 + +右键点击进程可以: + +- **结束进程**:发送 SIGTERM 信号 +- **强制结束**:发送 SIGKILL 信号 +- **查看详情**:查看进程详细信息 + +## 常见进程 + +| 进程 | 说明 | +|----------|------| +| nginx | Nginx Web 服务器 | +| php-fpm | PHP FastCGI 进程管理器 | +| mysqld | MySQL 数据库服务 | +| postgres | PostgreSQL 数据库服务 | +| dockerd | Docker 守护进程 | +| ace | AcePanel 面板进程 | + +## 注意事项 + +1. 结束系统关键进程可能导致系统不稳定 +2. 结束面板进程会导致面板无法访问 +3. 建议只结束确认无用的进程 diff --git a/en/advanced/toolbox/ssh.md b/en/advanced/toolbox/ssh.md new file mode 100644 index 0000000..7b8d8b3 --- /dev/null +++ b/en/advanced/toolbox/ssh.md @@ -0,0 +1,80 @@ +# SSH + +SSH 页面用于管理服务器的 SSH 服务配置,包括服务状态、认证方式和 Root 账户设置。 + +![SSH 设置](/images/toolbox/toolbox-ssh.png) + +## 运行状态 + +显示 SSH 服务的当前状态,并提供以下操作: + +- **启动**:启动 SSH 服务 +- **停止**:停止 SSH 服务 +- **重启**:重启 SSH 服务 + +::: danger 警告 +停止 SSH 服务后将无法通过 SSH 远程连接服务器,请确保有其他方式访问服务器(如 VNC、带外管理)后再操作。 +::: + +## SSH 设置 + +### SSH 密码登录 + +控制是否允许使用密码进行 SSH 认证。 + +- **开启**:允许使用密码登录 +- **关闭**:禁止密码登录,只能使用密钥 + +### SSH 密钥登录 + +控制是否允许使用 SSH 密钥进行认证。 + +- **开启**:允许使用密钥登录 +- **关闭**:禁止密钥登录 + +::: tip 安全建议 +推荐开启密钥登录并关闭密码登录,可以有效防止暴力破解攻击。 +::: + +### SSH 端口 + +修改 SSH 服务监听的端口,默认为 `22`。 + +修改端口后: +1. 点击 **保存** 按钮 +2. 确保防火墙已放行新端口 +3. 使用新端口连接测试 +4. 确认可以连接后再关闭旧端口 + +::: warning 注意 +修改端口前请确保新端口已在防火墙中放行,否则可能导致无法连接。 +::: + +## Root 设置 + +### Root 密码登录设置 + +控制 Root 用户的 SSH 登录权限: + +- **允许 SSH 登录**:Root 可以通过 SSH 登录 +- **禁止 SSH 登录**:Root 无法通过 SSH 登录 +- **仅允许密钥登录**:Root 只能使用密钥登录 + +### Root 密码 + +重置 Root 用户的密码。 + +- 输入新密码后点击 **重置** 按钮 +- 建议使用包含大小写字母、数字和特殊字符的复杂密码 +- 刷新页面将清除密码输入框 + +### Root 密钥 + +管理 Root 用户的 SSH 密钥: + +- **查看密钥**:查看当前配置的公钥 +- **下载**:下载私钥文件 + +::: tip 安全建议 +推荐使用密钥登录并禁用密码,可以显著提高服务器安全性。 +::: diff --git a/en/advanced/toolbox/system.md b/en/advanced/toolbox/system.md new file mode 100644 index 0000000..3d3b0be --- /dev/null +++ b/en/advanced/toolbox/system.md @@ -0,0 +1,98 @@ +# 系统 + +系统页面提供服务器基础配置的管理功能,包括 DNS、SWAP、主机名和时间设置。 + +## DNS + +配置系统的 DNS 服务器。 + +![DNS 设置](/images/toolbox/toolbox-system-dns.png) + +### 配置项 + +- **DNS1**:主 DNS 服务器地址 +- **DNS2**:辅 DNS 服务器地址 + +### 常用 DNS 服务器 + +| 服务商 | DNS1 | DNS2 | +|--------|------|------| +| 阿里云 | 223.5.5.5 | 223.6.6.6 | +| 腾讯云 | 119.29.29.29 | 119.28.28.28 | +| 114 DNS | 114.114.114.114 | 114.114.115.115 | +| Google | 8.8.8.8 | 8.8.4.4 | +| Cloudflare | 1.1.1.1 | 1.0.0.1 | + +## SWAP + +管理系统的 SWAP 交换空间。 + +![SWAP 设置](/images/toolbox/toolbox-system-swap.png) + +页面显示当前 SWAP 使用情况: +- 系统总计 +- 已使用 +- 可用 + +### 配置面板 SWAP + +设置面板管理的 SWAP 文件大小(单位:MB)。 + +- 设置为 `0` 表示禁用面板 SWAP +- 建议根据服务器内存大小设置,通常为内存的 1-2 倍 + +::: tip 提示 +SWAP 可以在物理内存不足时提供额外的虚拟内存,但性能低于物理内存。对于内存充足的服务器,可以不启用 SWAP。 +::: + +## 主机 + +配置系统主机名和 Hosts 文件。 + +![主机设置](/images/toolbox/toolbox-system-host.png) + +### 系统主机名 + +修改服务器的主机名,例如 `myserver`、`web-01` 等。 + +### Hosts + +编辑系统的 `/etc/hosts` 文件,用于配置本地域名解析。 + +常见用途: +- 屏蔽特定域名 +- 配置本地开发域名 +- 加速特定域名的解析 + +## 时间 + +配置系统时区和时间同步。 + +![时间设置](/images/toolbox/toolbox-system-time.png) + +### 选择时区 + +从下拉列表中选择服务器所在的时区,例如 `Asia/Shanghai`。 + +### 修改时间 + +手动设置系统时间。 + +::: warning 注意 +手动更改时间后,系统自动时间同步可能仍会覆盖设置。 +::: + +### NTP 服务器 + +配置 NTP 时间同步服务器。留空则使用系统默认服务器。 + +常用 NTP 服务器: +- `ntp.aliyun.com` - 阿里云 +- `ntp.tencent.com` - 腾讯云 +- `cn.pool.ntp.org` - 中国 NTP 池 + +### 操作按钮 + +- **配置默认服务器**:恢复使用系统默认的 NTP 服务器 +- **保存**:保存时区和时间设置 +- **同步时间**:立即与 NTP 服务器同步时间 diff --git a/en/advanced/toolbox/webhook.md b/en/advanced/toolbox/webhook.md new file mode 100644 index 0000000..98f3d08 --- /dev/null +++ b/en/advanced/toolbox/webhook.md @@ -0,0 +1,80 @@ +# Web 钩子 + +Web 钩子(Webhook)允许你通过 HTTP 请求触发服务器上的脚本执行,实现自动化部署、CI/CD 集成等功能。 + +![Web 钩子](/images/toolbox/toolbox-webhook.png) + +## 创建 Web 钩子 + +点击 **创建 Web 钩子** 按钮,填写以下信息: + +![创建 Web 钩子](/images/toolbox/toolbox-webhook-create.png) + +- **名称**:Web 钩子的名称,用于标识用途 +- **用户**:执行脚本的系统用户,默认为 root +- **原始输出**:开启后返回脚本的原始输出,关闭则返回 JSON 格式 +- **脚本**:要执行的 Shell 脚本内容 + +## 使用方式 + +创建完成后,系统会生成一个唯一的 Key。通过访问以下 URL 即可触发脚本执行: + +``` +https://your-panel-domain/api/webhook/{key} +``` + +支持 GET 和 POST 请求。 + +## 应用场景 + +### Git 自动部署 + +配合 GitHub/GitLab 的 Webhook 功能,实现代码推送后自动部署: + +```bash +#!/bin/bash +cd /opt/ace/projects/myproject +git pull origin main +npm install +npm run build +``` + +### 定时任务触发 + +通过外部服务(如监控系统)触发特定操作: + +```bash +#!/bin/bash +# 清理临时文件 +rm -rf /tmp/cache/* +# 重启服务 +systemctl restart myapp +``` + +### CI/CD 集成 + +在 CI/CD 流水线中调用 Webhook 完成部署: + +```bash +# 在 CI 脚本中 +curl -X POST https://panel.example.com/api/webhook/your-key +``` + +## 列表说明 + +| 字段 | 说明 | +|------|------| +| 名称 | Web 钩子名称 | +| Key | 唯一标识,用于构建调用 URL | +| 运行用户 | 执行脚本的系统用户 | +| 原始输出 | 是否返回原始文本输出 | +| 已启用 | 是否启用该 Web 钩子 | +| 调用次数 | 累计被调用的次数 | +| 最后调用 | 最后一次调用时间 | + +## 注意事项 + +1. Key 是敏感信息,不要泄露给不信任的人 +2. 脚本以指定用户身份执行,注意权限控制 +3. 建议在脚本中添加必要的错误处理 +4. 可以通过禁用开关临时停用 Web 钩子 diff --git a/en/advanced/website.md b/en/advanced/website.md new file mode 100644 index 0000000..5a2f8fc --- /dev/null +++ b/en/advanced/website.md @@ -0,0 +1,66 @@ +# 网站 + +网站模块用于管理 Web 服务器上的站点配置。AcePanel 支持三种类型的网站:反向代理、PHP 和纯静态。 + +## 前置要求 + +使用网站功能前,需要先安装 Web 服务器: + +1. 进入 **应用** > **原生应用** +2. 安装 Nginx、OpenResty 或 Apache + +## 网站类型 + +| 类型 | 说明 | 适用场景 | +|------|------|----------| +| [反向代理](./website/proxy) | 将请求转发到后端服务 | Node.js、Go、Java 等应用 | +| [PHP](./website/php) | 运行 PHP 程序 | WordPress、Laravel 等 | +| [纯静态](./website/static) | 托管静态文件 | HTML、Vue/React 构建产物 | + +## 网站列表 + +网站列表显示以下信息: + +- **网站名称**:站点的唯一标识 +- **运行中**:站点是否启用 +- **目录**:网站文件所在目录 +- **HTTPS**:是否启用 HTTPS +- **证书有效期**:SSL 证书的到期时间 +- **备注**:自定义备注信息 +- **操作**:管理、删除等 + +## 创建网站 + +1. 进入 **网站** 页面 +2. 选择网站类型标签(反向代理/PHP/纯静态) +3. 点击 **创建网站** +4. 填写网站信息 +5. 点击创建 + +### 通用配置项 + +- **名称**:网站的唯一标识,只能使用英文,创建后不可修改 +- **域名**:绑定的域名,可添加多个 +- **端口**:监听的端口,默认 80 +- **备注**:可选的备注信息 + +## 网站管理 + +点击网站的 **管理** 按钮进入管理页面,可以进行以下操作: + +- 修改域名和端口 +- 配置 SSL 证书 +- 设置伪静态规则 +- 配置防盗链 +- 查看访问日志 +- 修改 Nginx 配置 + +## 批量创建 + +点击 **批量创建网站** 可以一次创建多个网站,适合需要快速部署多个站点的场景。 + +## 下一步 + +- [反向代理](./website/proxy) - 了解如何创建反向代理网站 +- [PHP 网站](./website/php) - 了解如何创建 PHP 网站 +- [纯静态网站](./website/static) - 了解如何创建静态网站 diff --git a/en/advanced/website/php.md b/en/advanced/website/php.md new file mode 100644 index 0000000..f8e8c3b --- /dev/null +++ b/en/advanced/website/php.md @@ -0,0 +1,123 @@ +# PHP 网站 + +PHP 网站用于运行 PHP 程序,如 WordPress、Laravel、ThinkPHP 等。 + +## 前置要求 + +创建 PHP 网站前,需要先安装: + +1. **Web 服务器**:Nginx、OpenResty 或 Apache +2. **PHP 运行环境**:在 **应用** > **运行环境** 中安装所需的 PHP 版本 + +## 创建 PHP 网站 + +1. 进入 **网站** 页面 +2. 点击 **PHP** 标签 +3. 点击 **创建网站** + +### 配置项 + +- **名称**:网站标识,如 `wordpress` +- **域名**:绑定的域名,如 `blog.example.com` +- **端口**:监听端口,默认 80 +- **PHP 版本**:选择已安装的 PHP 版本 +- **网站目录**:网站文件存放路径 +- **备注**:可选备注 + +## 编辑 PHP 网站 + +点击网站列表中的 **编辑** 按钮进入编辑页面。 + +### 域名和监听 + +配置网站的域名和监听端口。 + +![域名和监听配置](/images/website/website-php-edit.png) + +### 基本设置 + +配置网站目录、PHP 版本等基本信息。 + +![基本设置](/images/website/website-php-basic.png) + +- **网站目录**:网站文件存放的绝对路径 +- **运行目录**:Laravel 等框架需要设置运行目录 +- **默认文档**:默认首页文件,如 `index.php`、`index.html` +- **PHP 版本**:选择已安装的 PHP 版本 +- **防跨站攻击**:启用后限制 PHP 只能访问网站目录内的文件 + +### 伪静态配置 + +伪静态用于 URL 重写,支持常见 PHP 程序的预设规则。 + +![伪静态配置](/images/website/website-php-rewrite.png) + +点击预设下拉框可以选择常见程序的伪静态规则: + +![伪静态预设](/images/website/website-php-rewrite-preset.png) + +支持的预设包括:WordPress、Laravel、ThinkPHP、Discuz、Drupal、ECShop 等常见 PHP 程序。 + +## 网站目录结构 + +创建网站后,默认目录结构: + +``` +/opt/ace/sites/网站名称/public +├── index.php # 入口文件 +├── .user.ini # PHP 配置 +└── ... +``` + +## PHP 版本切换 + +在网站编辑页面的 **基本设置** 中可以切换 PHP 版本: + +1. 进入网站编辑页面 +2. 点击 **基本设置** 标签 +3. 在 **PHP 版本** 下拉框中选择新版本 +4. 点击 **保存** + +::: warning 注意 +切换 PHP 版本可能导致程序不兼容,请先在测试环境验证。 +::: + +## PHP 配置 + +### php.ini 配置 + +在 **应用** > **原生应用** > **PHP** 管理页面可以修改 php.ini 配置。 + +常用配置项: + +```ini +upload_max_filesize = 50M # 最大上传文件大小 +post_max_size = 50M # POST 数据最大大小 +max_execution_time = 300 # 最大执行时间 +memory_limit = 256M # 内存限制 +``` + +### 禁用函数 + +PHP 默认禁用了一些危险函数,如 `exec`、`system`、`passthru` 等。如需启用,请在 php.ini 中修改 `disable_functions` 配置。 + +::: danger 警告 +启用危险函数可能带来安全风险,请谨慎操作。 +::: + +## 常见问题 + +### 502 Bad Gateway + +- 检查 PHP-FPM 是否正常运行 +- 检查 PHP 版本是否正确配置 + +### 文件上传失败 + +- 检查 `upload_max_filesize` 和 `post_max_size` 配置 +- 检查目录权限 + +### 页面空白 + +- 开启 PHP 错误显示 +- 查看 PHP 错误日志 diff --git a/en/advanced/website/proxy.md b/en/advanced/website/proxy.md new file mode 100644 index 0000000..3577b4c --- /dev/null +++ b/en/advanced/website/proxy.md @@ -0,0 +1,135 @@ +# 反向代理 + +反向代理网站用于将外部请求转发到后端服务,常用于部署 Node.js、Go、Java、Python 等应用。 + +## 工作原理 + +``` +用户请求 -> Nginx (反向代理) -> 后端应用 (如 localhost:3000) +``` + +Nginx 接收用户的 HTTP/HTTPS 请求,然后将请求转发到指定的后端地址。 + +## 创建反向代理网站 + +1. 进入 **网站** 页面 +2. 确保选中 **反向代理** 标签 +3. 点击 **创建网站** + +### 配置项 + +- **名称**:网站标识,如 `myapp` +- **域名**:绑定的域名,如 `app.example.com` +- **端口**:监听端口,默认 80 +- **代理目标**:后端服务地址,如 `http://127.0.0.1:3000` +- **备注**:可选备注 + +### 代理目标格式 + +``` +http://127.0.0.1:3000 # 本地服务 +http://localhost:8080 # 本地服务 +http://172.18.0.2:80 # Docker 容器 +https://backend.internal # 内部 HTTPS 服务 +``` + +## 编辑反向代理网站 + +点击网站列表中的 **编辑** 按钮进入编辑页面。 + +### 域名和监听 + +配置网站的域名和监听端口,支持添加多个域名和端口。 + +![域名和监听配置](/images/website/website-proxy-edit.png) + +- **域名**:可添加多个域名 +- **监听地址**:可配置多个端口,支持 HTTPS 和 QUIC(HTTP3) + +### 上游配置 + +上游(Upstream)定义了后端服务器地址,支持配置多个后端实现负载均衡。 + +![上游配置](/images/website/website-proxy-upstream.png) + +- **上游名称**:上游的标识名称 +- **负载均衡算法**:支持轮询(默认)、IP Hash 等算法 +- **保持活动连接**:与后端保持的长连接数量 +- **DNS 解析器**:自定义 DNS 解析器 + +点击 **添加服务器** 按钮可以添加后端服务器: + +![添加服务器](/images/website/website-proxy-upstream-add.png) + +- **服务器地址**:后端服务器地址,如 `127.0.0.1:8080` +- **选项**:可选参数,如 `weight=5`(权重)、`backup`(备用服务器)等 + +### 代理配置 + +配置代理行为和请求头传递。 + +![代理配置](/images/website/website-proxy-proxy.png) + +- **匹配类型**:匹配类型,如前缀匹配、正则匹配等 +- **匹配表达式**:匹配的 URL 表达式 +- **代理目标**:填写上游名称或直接填写后端地址 +- **启用缓存**:是否启用代理缓存 +- **启用缓冲区**:是否启用缓冲区,AI 应用建议关闭否则可能影响流式输出 +- **代理 SNI**:是否启用 SNI(仅 HTTPS 代理有效) +- **自定义请求头**:添加或修改传递给后端的请求头 +- **响应内容替换**:可替换响应内容中的字符串 + +## 使用场景 + +### Node.js 应用 + +```bash +# 启动 Node.js 应用 +node app.js # 监听 3000 端口 +``` + +代理目标:`http://127.0.0.1:3000` + +### Docker 容器 + +如果后端是 Docker 容器,可以使用容器的 IP 地址或容器名称(同一网络内)。 + +代理目标:`http://容器名:端口` 或 `http://容器IP:端口` + +### 多个后端(负载均衡) + +在上游配置中添加多个后端地址,实现负载均衡。 + +代理目标:`http://上游名称` + +## 常见配置 + +### WebSocket 支持 + +反向代理默认支持 WebSocket,无需额外配置。 + +### 传递真实 IP + +AcePanel 会自动配置以下请求头,将用户真实 IP 传递给后端: + +- `X-Real-IP` +- `X-Forwarded-For` +- `X-Forwarded-Proto` + +### 自定义配置 + +在网站管理页面可以编辑 Nginx 配置,添加自定义配置: + +```nginx +proxy_connect_timeout 60s; +proxy_read_timeout 60s; +proxy_send_timeout 60s; +proxy_buffer_size 64k; +proxy_buffers 4 64k; +``` + +## 注意事项 + +1. 确保后端服务已启动并监听指定端口 +2. 如果后端是 Docker 容器,确保端口已正确映射或使用 Docker 网络 +3. 后端服务崩溃时,Nginx 会返回 502 错误 diff --git a/en/advanced/website/static.md b/en/advanced/website/static.md new file mode 100644 index 0000000..ba3733a --- /dev/null +++ b/en/advanced/website/static.md @@ -0,0 +1,119 @@ +# 纯静态网站 + +纯静态网站用于托管 HTML、CSS、JavaScript 等静态文件,适合部署前端项目构建产物、文档站点等。 + +## 创建静态网站 + +1. 进入 **网站** 页面 +2. 点击 **纯静态** 标签 +3. 点击 **创建网站** + +### 配置项 + +- **名称**:网站标识,如 `docs` +- **域名**:绑定的域名,如 `docs.example.com` +- **端口**:监听端口,默认 80 +- **网站目录**:静态文件存放路径 +- **备注**:可选备注 + +## 编辑静态网站 + +点击网站列表中的 **编辑** 按钮进入编辑页面。 + +### 域名和监听 + +配置网站的域名和监听端口。 + +![域名和监听配置](/images/website/website-static-edit.png) + +### 高级设置 + +配置网站目录、默认文档等高级选项。 + +![高级设置](/images/website/website-static-edit-advanced.png) + +- **网站目录**:静态文件存放的绝对路径 +- **默认文档**:默认首页文件,如 `index.html` + +### 自定义配置(伪静态) + +在 **自定义配置** 标签中可以添加 Nginx 配置,用于 URL 重写等功能。 + +![自定义配置](/images/website/website-static-edit-custom.png) + +点击 **添加自定义配置** 按钮可以添加配置: + +![添加自定义配置](/images/website/website-static-edit-custom-add.png) + +- **名称**:配置名称,支持字母、数字、下划线、破折号 +- **范围**:配置生效范围,可选择"此网站"或"全局" +- **内容**:Nginx 配置内容,如 `location` 块 + +## 适用场景 + +### 前端项目 + +Vue、React、Angular 等前端框架的构建产物: + +```bash +# Vue 项目 +npm run build +# 将 dist 目录内容上传到网站目录 + +# React 项目 +npm run build +# 将 build 目录内容上传到网站目录 +``` + +### 文档站点 + +VitePress、Docusaurus、Hugo 等静态站点生成器: + +```bash +# VitePress +npm run docs:build +# 将 .vitepress/dist 目录内容上传到网站目录 +``` + +### 单页应用(SPA) + +单页应用需要配置伪静态规则,将所有路由指向 index.html。在 **自定义配置** 中添加: + +```nginx +location / { + try_files $uri $uri/ /index.html; +} +``` + +## 目录结构 + +典型的静态网站目录结构: + +``` +/opt/ace/sites/网站名称/public +├── index.html # 首页 +├── assets/ # 静态资源 +│ ├── css/ +│ ├── js/ +│ └── images/ +├── favicon.ico # 网站图标 +└── ... +``` + +## 常见问题 + +### 404 错误 + +- 检查文件是否存在于网站目录 +- 检查文件名大小写(Linux 区分大小写) +- 单页应用需要配置伪静态规则 + +### 资源加载失败 + +- 检查资源路径是否正确 +- 检查是否使用了绝对路径 +- 检查 CORS 配置 + +### 中文文件名乱码 + +- 确保文件使用 UTF-8 编码 diff --git a/en/cert.md b/en/cert.md index 440fa8e..1868dfe 100644 --- a/en/cert.md +++ b/en/cert.md @@ -1,212 +1,369 @@ --- sidebar: false +aside: false 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. - -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. - -## Choose Certificates +
+

SSL 证书服务

+

免费证书有效期仅 3 个月且需要频繁续签,付费证书一年有效期,省心省力

+
-
+
-
-

DV Single-domain Certificate

+
🔒
+

DV 单域名证书

+
适合单个网站使用
+
+ ¥1X + / 年
-
Internationally recognized brand certificate
-
¥ 1X/year
-
- - Domain Validation (DV) Certificate +
+ + 域名验证 (DV) 证书
-
- - Supports one domain +
+ + 保护单个域名
-
- - One-year validity +
+ + 一年有效期
-
- - Rapid issuance +
+ + 国际认可品牌
- + 联系购买
-
-
-

DV Wildcard Certificate

+ +