From 1263b147139f5695046b94e89fd5a66c0cae01bc Mon Sep 17 00:00:00 2001 From: naocanmonster Date: Wed, 26 Apr 2023 18:27:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E7=9A=84=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homepage/Makefile | 5 +- homepage/public/release/latest/compose.yaml | 1 + homepage/public/release/latest/setup.sh | 1 + .../src/layout/MainLayout/Header/index.tsx | 4 +- homepage/src/layout/MainLayout/index.tsx | 4 +- homepage/src/layout/SideLayout/index.tsx | 6 +- homepage/src/static/md/about_ce.md | 7 ++ homepage/src/static/md/about_changelog.md | 7 ++ .../src/static/md/about_syntaxanalysis.md | 7 ++ .../src/static/md/{faq.md => faq_config.md} | 61 +---------------- homepage/src/static/md/faq_install.md | 58 ++++++++++++++++ homepage/src/static/md/faq_login.md | 13 ++++ homepage/src/static/md/faq_other.md | 7 ++ homepage/src/static/md/faq_protection.md | 7 ++ homepage/src/static/md/guide_config.md | 17 +++++ homepage/src/static/md/guide_install.md | 29 ++++++++ homepage/src/static/md/guide_introduction.md | 7 ++ homepage/src/static/md/guide_login.md | 11 +++ homepage/src/static/md/guide_test.md | 13 ++++ homepage/src/static/md/guide_upgrade.md | 23 +++++++ homepage/src/static/md/install.md | 67 ------------------- homepage/src/static/md/introduction.md | 41 ------------ homepage/src/static/release/latest/setup.sh | 1 - homepage/src/utils/posts.ts | 3 +- 24 files changed, 221 insertions(+), 179 deletions(-) create mode 120000 homepage/public/release/latest/compose.yaml create mode 120000 homepage/public/release/latest/setup.sh create mode 100644 homepage/src/static/md/about_ce.md create mode 100644 homepage/src/static/md/about_changelog.md create mode 100644 homepage/src/static/md/about_syntaxanalysis.md rename homepage/src/static/md/{faq.md => faq_config.md} (64%) create mode 100644 homepage/src/static/md/faq_install.md create mode 100644 homepage/src/static/md/faq_login.md create mode 100644 homepage/src/static/md/faq_other.md create mode 100644 homepage/src/static/md/faq_protection.md create mode 100644 homepage/src/static/md/guide_config.md create mode 100644 homepage/src/static/md/guide_install.md create mode 100644 homepage/src/static/md/guide_introduction.md create mode 100644 homepage/src/static/md/guide_login.md create mode 100644 homepage/src/static/md/guide_test.md create mode 100644 homepage/src/static/md/guide_upgrade.md delete mode 100644 homepage/src/static/md/install.md delete mode 100644 homepage/src/static/md/introduction.md delete mode 120000 homepage/src/static/release/latest/setup.sh diff --git a/homepage/Makefile b/homepage/Makefile index e04115a..91523eb 100644 --- a/homepage/Makefile +++ b/homepage/Makefile @@ -1,6 +1,3 @@ build: - hugo -D && echo '[success] please copy public dir to home page server' - -serve: - hugo server --bind 0.0.0.0 -D + pnpm i && pnpm build diff --git a/homepage/public/release/latest/compose.yaml b/homepage/public/release/latest/compose.yaml new file mode 120000 index 0000000..d38a4fd --- /dev/null +++ b/homepage/public/release/latest/compose.yaml @@ -0,0 +1 @@ +../../../../compose.yaml \ No newline at end of file diff --git a/homepage/public/release/latest/setup.sh b/homepage/public/release/latest/setup.sh new file mode 120000 index 0000000..f0f2358 --- /dev/null +++ b/homepage/public/release/latest/setup.sh @@ -0,0 +1 @@ +../../../../setup.sh \ No newline at end of file diff --git a/homepage/src/layout/MainLayout/Header/index.tsx b/homepage/src/layout/MainLayout/Header/index.tsx index 9227355..ed174a7 100644 --- a/homepage/src/layout/MainLayout/Header/index.tsx +++ b/homepage/src/layout/MainLayout/Header/index.tsx @@ -86,7 +86,7 @@ export default function DrawerAppBar(props: Props) { sx={{ textAlign: "center" }} selected={pathname.startsWith("/posts/")} component={Link} - href="/posts/introduction/" + href="/posts/guide_introduction/" > @@ -197,7 +197,7 @@ export default function DrawerAppBar(props: Props) { color: pathname.startsWith("/posts/") ? "primary.main" : "#fff", }} component={Link} - href="/posts/introduction/" + href="/posts/guide_introduction/" > 技术文档 diff --git a/homepage/src/layout/MainLayout/index.tsx b/homepage/src/layout/MainLayout/index.tsx index 092c174..b101c4f 100644 --- a/homepage/src/layout/MainLayout/index.tsx +++ b/homepage/src/layout/MainLayout/index.tsx @@ -12,10 +12,10 @@ const MainLayout: FC = ({ children }) => { return ( <> - 长亭雷池 WAF + 长亭雷池 WAF 社区版 diff --git a/homepage/src/layout/SideLayout/index.tsx b/homepage/src/layout/SideLayout/index.tsx index 28a1aea..6577745 100644 --- a/homepage/src/layout/SideLayout/index.tsx +++ b/homepage/src/layout/SideLayout/index.tsx @@ -28,14 +28,14 @@ const SideLayout: FC = ({ children, list }) => { setOpen(!open); }; return ( - + = ({ children, list }) => { > {list.map((menu) => ( - + {menu.category} {menu.list.map((item) => ( diff --git a/homepage/src/static/md/about_ce.md b/homepage/src/static/md/about_ce.md new file mode 100644 index 0000000..066c768 --- /dev/null +++ b/homepage/src/static/md/about_ce.md @@ -0,0 +1,7 @@ +--- +title: "社区版 vs 企业版" +category: "关于雷池" +weight: 1 +--- + +# 社区版 vs 企业版 diff --git a/homepage/src/static/md/about_changelog.md b/homepage/src/static/md/about_changelog.md new file mode 100644 index 0000000..f756ec7 --- /dev/null +++ b/homepage/src/static/md/about_changelog.md @@ -0,0 +1,7 @@ +--- +title: "版本更新记录" +category: "关于雷池" +weight: 3 +--- + +# 版本更新记录 diff --git a/homepage/src/static/md/about_syntaxanalysis.md b/homepage/src/static/md/about_syntaxanalysis.md new file mode 100644 index 0000000..e52fc49 --- /dev/null +++ b/homepage/src/static/md/about_syntaxanalysis.md @@ -0,0 +1,7 @@ +--- +title: "智能语义分析技术" +category: "关于雷池" +weight: 1 +--- + +# 智能语义分析技术 diff --git a/homepage/src/static/md/faq.md b/homepage/src/static/md/faq_config.md similarity index 64% rename from homepage/src/static/md/faq.md rename to homepage/src/static/md/faq_config.md index 5558a65..dd7c9e0 100644 --- a/homepage/src/static/md/faq.md +++ b/homepage/src/static/md/faq_config.md @@ -1,65 +1,10 @@ --- -title: "常见问题排查" -category: "上手指南" +title: "配置问题" +category: "常见问题排查" weight: 10 --- -## docker compose 还是 docker-compose? -`docker compose`(带空格)是 V2 版本,Go 写的。`docker-compose` 是 V1 版本,Python 写的,已经不维护了。 - -我们推荐使用 V2 版本的 `docker compose`,V1 可能会有兼容性等问题。 - -[docker/compose](https://github.com/docker/compose/) 中提到: - -> For a smooth transition from legacy docker-compose 1.xx, please consider installing [compose-switch](https://github.com/docker/compose-switch) to translate `docker-compose ...` commands into Compose V2's `docker compose ....` . Also check V2's `--compatibility` flag. - -其他参考:[https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose](https://stackoverflow.com/a/66516826) - -## 安装部署 - -### 机器运行的最低配置 - -最低 1C1G 能运行,具体需要多少配置取决于你的业务流量特征,比如 QPS、网络吞吐等等,暂时没有详细的 datasheet 性能参考。 - -### ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? - -如描述,你需要启动 docker daemon 才能执行相关的命令。尝试 `systemctl start docker` 或者手动启动 `Docker Desktop` (MacOS 或者 Windows 用户) - -As shown, you shall start docker first. Try `systemctl start docker` or manually start your docker desktop for MacOS/Windows users. - -### docker not found, unable to deploy - -如描述,你需要安装 `docker`。尝试 `curl -fLsS https://get.docker.com/ | sh` 或者 [Install Docker Engine](https://docs.docker.com/engine/install/) - -### docker compose v2 not found, unable to deploy - -如描述,你需要安装 `docker compose v2`。尝试 `[Install Docker Compose](https://docs.docker.com/compose/install/)` - -### safeline-tengine 出现 Address already in use - -`docker logs -f safeline-tengine` 容器日志中看到 `Address already in use` 信息。 - -端口冲突,根据报错信息中的端口号,排查是哪个服务占用了,手动处理冲突。 - -### safeline-postgres 出现 Operation not permitted - -`docker logs -f safeline-postgres` 容器日志中看到 `Operation not permitted` 报错 - -可能是您的 docker 版本过低,升级 docker 到最新版本尝试一下。 - -### 如何自定义 SafeLine 安装路径? - -基于最新的 `compose.yaml`,你可以手动修改 `.env` 文件的 `SAFELINE_DIR` 变量。 - -### 如何修改 SafeLine 后台管理的默认端口?本机 `:9443` 已经被别的服务占用了 - -基于最新的 `compose.yaml`,你可以手动添加 `MGT_PORT` 变量到 `.env` 文件。 - -## 登录问题 - -### OTP 认证码登录失败 - -TOTP 是基于时间生成和校验的,请检查你的服务器时间是否同步。 +# 配置问题 ## 站点配置问题 diff --git a/homepage/src/static/md/faq_install.md b/homepage/src/static/md/faq_install.md new file mode 100644 index 0000000..ca22edb --- /dev/null +++ b/homepage/src/static/md/faq_install.md @@ -0,0 +1,58 @@ +--- +title: "无法安装" +category: "常见问题排查" +weight: 1 +--- + +# 无法安装 + +## docker compose 还是 docker-compose? + +`docker compose`(带空格)是 V2 版本,Go 写的。`docker-compose` 是 V1 版本,Python 写的,已经不维护了。 + +我们推荐使用 V2 版本的 `docker compose`,V1 可能会有兼容性等问题。 + +[docker/compose](https://github.com/docker/compose/) 中提到: + +> For a smooth transition from legacy docker-compose 1.xx, please consider installing [compose-switch](https://github.com/docker/compose-switch) to translate `docker-compose ...` commands into Compose V2's `docker compose ....` . Also check V2's `--compatibility` flag. + +其他参考:[https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose](https://stackoverflow.com/a/66516826) + + + + +## ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? + +如描述,你需要启动 docker daemon 才能执行相关的命令。尝试 `systemctl start docker` 或者手动启动 `Docker Desktop` (MacOS 或者 Windows 用户) + +As shown, you shall start docker first. Try `systemctl start docker` or manually start your docker desktop for MacOS/Windows users. + +## docker not found, unable to deploy + +如描述,你需要安装 `docker`。尝试 `curl -fLsS https://get.docker.com/ | sh` 或者 [Install Docker Engine](https://docs.docker.com/engine/install/) + +## docker compose v2 not found, unable to deploy + +如描述,你需要安装 `docker compose v2`。尝试 `[Install Docker Compose](https://docs.docker.com/compose/install/)` + +### safeline-tengine 出现 Address already in use + +`docker logs -f safeline-tengine` 容器日志中看到 `Address already in use` 信息。 + +端口冲突,根据报错信息中的端口号,排查是哪个服务占用了,手动处理冲突。 + +## safeline-postgres 出现 Operation not permitted + +`docker logs -f safeline-postgres` 容器日志中看到 `Operation not permitted` 报错 + +可能是您的 docker 版本过低,升级 docker 到最新版本尝试一下。 + +## 如何自定义 SafeLine 安装路径? + +基于最新的 `compose.yaml`,你可以手动修改 `.env` 文件的 `SAFELINE_DIR` 变量。 + +## 如何修改 SafeLine 后台管理的默认端口?本机 `:9443` 已经被别的服务占用了 + +基于最新的 `compose.yaml`,你可以手动添加 `MGT_PORT` 变量到 `.env` 文件。 + + diff --git a/homepage/src/static/md/faq_login.md b/homepage/src/static/md/faq_login.md new file mode 100644 index 0000000..e0d2dd8 --- /dev/null +++ b/homepage/src/static/md/faq_login.md @@ -0,0 +1,13 @@ +--- +title: "无法登录" +category: "常见问题排查" +weight: 2 +--- + +# 无法登录 + +## 登录问题 + +### OTP 认证码登录失败 + +TOTP 是基于时间生成和校验的,请检查你的服务器时间是否同步。 \ No newline at end of file diff --git a/homepage/src/static/md/faq_other.md b/homepage/src/static/md/faq_other.md new file mode 100644 index 0000000..82e9450 --- /dev/null +++ b/homepage/src/static/md/faq_other.md @@ -0,0 +1,7 @@ +--- +title: "其他问题" +category: "常见问题排查" +weight: 10 +--- + +# 其他问题 diff --git a/homepage/src/static/md/faq_protection.md b/homepage/src/static/md/faq_protection.md new file mode 100644 index 0000000..1d4fb29 --- /dev/null +++ b/homepage/src/static/md/faq_protection.md @@ -0,0 +1,7 @@ +--- +title: "防护不生效" +category: "常见问题排查" +weight: 3 +--- + +# 防护不生效 diff --git a/homepage/src/static/md/guide_config.md b/homepage/src/static/md/guide_config.md new file mode 100644 index 0000000..fdd661b --- /dev/null +++ b/homepage/src/static/md/guide_config.md @@ -0,0 +1,17 @@ +--- +title: "配置防护站点" +category: "上手指南" +weight: 4 +--- + +# 配置防护站点 + + +![safeline_website.gif](https://ctstack-oss.oss-cn-beijing.aliyuncs.com/veinmind/safeline-assets/safeline_website.gif) + +``💡 TIPS: 添加后,执行 `curl -H "Host: <域名>" http://:<端口>` 应能获取到业务网站的响应。`` + +# 将网站流量切到雷池 + +- 若网站通过域名访问,则可将域名的 DNS 解析指向雷池所在设备 +- 若网站前有 nginx 、负载均衡等代理设备,则可将雷池部署在代理设备和业务服务器之间,然后将代理设备的 upstream 指向雷池 diff --git a/homepage/src/static/md/guide_install.md b/homepage/src/static/md/guide_install.md new file mode 100644 index 0000000..4aa6cc4 --- /dev/null +++ b/homepage/src/static/md/guide_install.md @@ -0,0 +1,29 @@ +--- +title: "安装雷池" +category: "上手指南" +weight: 2 +--- + +# 安装雷池 + +### 机器运行的最低配置 + +最低 1C1G 能运行,具体需要多少配置取决于你的业务流量特征,比如 QPS、网络吞吐等等,暂时没有详细的 datasheet 性能参考。 + +### 1. 确保机器上正确安装 [Docker](https://docs.docker.com/engine/install/) 和 [Compose V2](https://docs.docker.com/compose/install/) + +```shell +docker info # >= 20.10.6 +docker compose version # >= 2.0.0 +``` + +### 2. 部署安装 + +```shell +mkdir -p safeline && cd safeline +# 下载并执行 setup +curl -fLsS https://waf-ce.chaitin.cn/release/latest/setup.sh | bash + +# 运行 +sudo docker compose up -d +``` diff --git a/homepage/src/static/md/guide_introduction.md b/homepage/src/static/md/guide_introduction.md new file mode 100644 index 0000000..a5c9237 --- /dev/null +++ b/homepage/src/static/md/guide_introduction.md @@ -0,0 +1,7 @@ +--- +title: "雷池简介" +category: "上手指南" +weight: 1 +--- + +# 雷池简介 diff --git a/homepage/src/static/md/guide_login.md b/homepage/src/static/md/guide_login.md new file mode 100644 index 0000000..78538e3 --- /dev/null +++ b/homepage/src/static/md/guide_login.md @@ -0,0 +1,11 @@ +--- +title: "登录雷池" +category: "上手指南" +weight: 3 +--- + +# 登录雷池 + +浏览器打开后台管理页面 `https://:9443`。根据界面提示,使用 **支持 TOTP 的认证软件** 扫描二维码,然后输入动态口令登录: + +![safeline_login.gif](https://ctstack-oss.oss-cn-beijing.aliyuncs.com/veinmind/safeline-assets/safeline_login.gif) diff --git a/homepage/src/static/md/guide_test.md b/homepage/src/static/md/guide_test.md new file mode 100644 index 0000000..48eb72e --- /dev/null +++ b/homepage/src/static/md/guide_test.md @@ -0,0 +1,13 @@ +--- +title: "测试防护效果" +category: "上手指南" +weight: 5 +--- + +# 测试防护效果 + +试试这些攻击方式: + +- 浏览器访问 `http://:<端口>/webshell.php` +- 浏览器访问 `http://:<端口>/?id=1%20AND%201=1` +- 浏览器访问 `http://:<端口>/?a=` diff --git a/homepage/src/static/md/guide_upgrade.md b/homepage/src/static/md/guide_upgrade.md new file mode 100644 index 0000000..0fe9016 --- /dev/null +++ b/homepage/src/static/md/guide_upgrade.md @@ -0,0 +1,23 @@ +--- +title: "升级雷池" +category: "上手指南" +weight: 6 +--- + +# 升级雷池 + +**WARN: 雷池 SafeLine 服务会重启,流量会中断一小段时间,根据业务情况选择合适的时间来执行升级操作。** + +``` +# 查看 `IMAGE_TAG` +cat .env | grep IMAGE_TAG +# 把 IMAGE_TAG 修改为 latest 或者某个特定版本,比如 1.1.0 +sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" .env + +# 检查 `compose.yaml` +# docker 镜像的命名空间调整到了 `chaitin`,部分旧版本配置是使用的 `chaitinops` +sed -i "s/chaitinops/chaitin/g" compose.yaml + +# 根据环境情况自行使用 `docker compose` 或者 `docker-compose` +docker compose down && docker compose pull && docker compose up -d +``` diff --git a/homepage/src/static/md/install.md b/homepage/src/static/md/install.md deleted file mode 100644 index 725c7b1..0000000 --- a/homepage/src/static/md/install.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "快速部署" -category: "上手指南" -weight: 2 ---- -### 1. 确保机器上正确安装 [Docker](https://docs.docker.com/engine/install/) 和 [Compose V2](https://docs.docker.com/compose/install/) - -```shell -docker info # >= 20.10.6 -docker compose version # >= 2.0.0 -``` - -### 2. 部署安装 - -```shell -mkdir -p safeline && cd safeline -# 下载并执行 setup -curl -fLsS https://waf-ce.chaitin.cn/release/latest/setup.sh | bash - -# 运行 -sudo docker compose up -d -``` - -#### 升级 - -**WARN: 雷池 SafeLine 服务会重启,流量会中断一小段时间,根据业务情况选择合适的时间来执行升级操作。** - -``` -# 查看 `IMAGE_TAG` -cat .env | grep IMAGE_TAG -# 把 IMAGE_TAG 修改为 latest 或者某个特定版本,比如 1.1.0 -sed -i "s/IMAGE_TAG=.*/IMAGE_TAG=latest/g" .env - -# 检查 `compose.yaml` -# docker 镜像的命名空间调整到了 `chaitin`,部分旧版本配置是使用的 `chaitinops` -sed -i "s/chaitinops/chaitin/g" compose.yaml - -# 根据环境情况自行使用 `docker compose` 或者 `docker-compose` -docker compose down && docker compose pull && docker compose up -d -``` - -## 🕹️ 快速使用 - -### 1. 登录 - -浏览器打开后台管理页面 `https://:9443`。根据界面提示,使用 **支持 TOTP 的认证软件** 扫描二维码,然后输入动态口令登录: - -![safeline_login.gif](https://ctstack-oss.oss-cn-beijing.aliyuncs.com/veinmind/safeline-assets/safeline_login.gif) - -### 2. 添加站点 - -![safeline_website.gif](https://ctstack-oss.oss-cn-beijing.aliyuncs.com/veinmind/safeline-assets/safeline_website.gif) - -``💡 TIPS: 添加后,执行 `curl -H "Host: <域名>" http://:<端口>` 应能获取到业务网站的响应。`` - -### 3. 将网站流量切到雷池 - -- 若网站通过域名访问,则可将域名的 DNS 解析指向雷池所在设备 -- 若网站前有 nginx 、负载均衡等代理设备,则可将雷池部署在代理设备和业务服务器之间,然后将代理设备的 upstream 指向雷池 - -### 4. 开始防护👌 - -试试这些攻击方式: - -- 浏览器访问 `http://:<端口>/webshell.php` -- 浏览器访问 `http://:<端口>/?id=1%20AND%201=1` -- 浏览器访问 `http://:<端口>/?a=` diff --git a/homepage/src/static/md/introduction.md b/homepage/src/static/md/introduction.md deleted file mode 100644 index d539638..0000000 --- a/homepage/src/static/md/introduction.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "产品介绍" -category: "上手指南" -weight: 1 ---- -# 产品介绍 - -一款简单、好用的 WAF 工具。基于[长亭科技](https://www.chaitin.cn)王牌的 🤖️智能语义分析算法🤖️ 打造,专为社区设计。 - -## ✨ Demo - -### 🔥🔥🔥 体验地址:[https://demo.waf-ce.chaitin.cn:9443/](https://demo.waf-ce.chaitin.cn:9443/) - -有一台运行在环境上 `http://127.0.0.1:8889` 的服务可以作为上游服务器测试使用。 - -![](https://ctstack-oss.oss-cn-beijing.aliyuncs.com/veinmind/safeline-assets/safeline_detect_log.gif) - -![](https://ctstack-oss.oss-cn-beijing.aliyuncs.com/veinmind/safeline-assets/safeline_website.gif) - -## 📖 FAQ - -有任何问题请先查阅我们的 [FAQ 文档](FAQ.md)。 - -比如: - -- [docker compose or docker-compose?](FAQ.md#docker-compose-还是-docker-compose) -- [站点如何配置](FAQ.md#站点配置问题) -- [配置完成之后,还是没有成功访问到上游服务器](FAQ.md#配置完成之后还是没有成功访问到上游服务器) - -## 🏘️ 联系我们 - -1. 您可以通过 GitHub Issue 直接进行 Bug 反馈和功能建议 -2. 扫描下方二维码可以加入雷池社区版用户讨论群进行详细讨论 - - - -## ✨ CTStack - - - -雷池 SafeLine 现已加入 [CTStack](https://stack.chaitin.com/tool/detail?id=717) 社区 diff --git a/homepage/src/static/release/latest/setup.sh b/homepage/src/static/release/latest/setup.sh deleted file mode 120000 index cbe3ae3..0000000 --- a/homepage/src/static/release/latest/setup.sh +++ /dev/null @@ -1 +0,0 @@ -../../../setup.sh \ No newline at end of file diff --git a/homepage/src/utils/posts.ts b/homepage/src/utils/posts.ts index 5905848..583eb24 100644 --- a/homepage/src/utils/posts.ts +++ b/homepage/src/utils/posts.ts @@ -43,12 +43,13 @@ const dealWithData: (data: MenuItem[]) => GroupItem[] = (data) => { cur?.list.push(ele); } }); + let categorys = ["上手指南", "常见问题排查", "关于雷池"]; return list.map((item) => { return { category: item.category, list: item.list.sort((a, b) => a.weight - b.weight), }; - }); + }).sort((a,b)=> categorys.indexOf(a.category) - categorys.indexOf(b.category)); }; export const getPostsGroup = () => {