ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何快速部署CTF Wiki:一份完整的多语言知识库本地安装指南

如何快速部署CTF Wiki:一份完整的多语言知识库本地安装指南

如何快速部署CTF Wiki:一份完整的多语言知识库本地安装指南

【免费下载链接】ctf-wikiCome and join us, we need you!项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki

网络时断时续,CTF 学习进度被迫中断?资料查得到处都是,回头却找不到出处?CTF Wiki 本地部署只要 4 条命令、约 5 分钟,就能把这套开源 CTF 知识库完整搬进你的电脑,覆盖 Web、密码学、逆向、Pwn 等主要方向。

搭好之后你可以:

  • 跑起来:离线浏览全部 CTF 学习资料,断网也不影响
  • 切换:中、英、繁中三种语言版本一键来回切
  • 更新:改动 Markdown 后页面实时刷新,适合边改边看

先跑起来:4 条命令让服务上线

想先看效果的话,在终端按顺序执行下面 4 条命令,稍后再回来看每一步的原理:

git clone https://gitcode.com/gh_mirrors/ct/ctf-wiki cd ctf-wiki && pip install -r requirements.txt python3 scripts/docs.py build-all python3 scripts/docs.py serve

为什么要这样拆:build-all负责把全部 Markdown 编译成静态网页并输出到site/目录,serve则是一个指向site/的轻量服务。换句话说,第一条命令拿源码,后三条依次完成装依赖、生成站点、对外发布。

环境与依赖清单

开始前确认环境满足以下条件:

项目要求说明
Python3.8 及以上仓库的 Docker 构建基于 3.8 基线,对齐即可
pip任意现代版本用于安装依赖
Git任意版本用于拉取仓库
网络首次需要下载依赖包,之后可离线使用

requirements.txt 里一共列了 6 个依赖,pip 会一次装齐:

依赖作用
mkdocs静态站点生成器
mkdocs-materialMaterial 风格主题
pymdown-extensions高级 Markdown 扩展语法
mkdocs-minify-plugin压缩输出的 HTML
typerscripts/docs.py的命令行入口
MarkdownMarkdown 文本解析

分步安装:从拉取代码到启动服务

第一步:拉取仓库

进入一个空目录执行克隆,然后进入项目:

git clone https://gitcode.com/gh_mirrors/ct/ctf-wiki cd ctf-wiki

成功标志:ls能看到docs/、scripts/、requirements.txt,其中docs/zh/、docs/en/、docs/zh-tw/分别是三种语言的内容源文件。

第二步:安装依赖

pip install -r requirements.txt

-r表示按文件清单安装。成功标志:结尾出现Successfully installed,列出刚装好的包。

第三步:生成静态站点

python3 scripts/docs.py build-all

这一步会并行构建中文、英文、繁中三种语言(工作进程数为 CPU 核数的两倍),未翻译的页面会自动补上“缺少翻译”的提示页。成功标志:终端依次打印Successfully built docs for: zh、en、zh-tw,项目根目录新增site/文件夹。

第四步:启动本地服务

python3 scripts/docs.py serve

成功标志:终端输出Serving at: http://127.0.0.1:8008,服务固定监听 8008 端口。

启动成功如何验证

浏览器打开 http://127.0.0.1:8008 ,核对以下三点 ✅

  • 首页是中文“简介”页面,左侧边栏列出了完整目录
  • 页面右上角可切换到英文、繁中版本,切完无需重新构建
  • 搜索框输入 AES、ROP 这类关键词,会实时给出建议结果

也可以到终端用ls site确认:应有index.html以及en/、zh-tw/两个语言目录。

内容覆盖广度:从杂项、密码学、Web 到 Pwn、逆向、Android、区块链都有对应章节。以密码学为例,AES 这类算法配有加解密流程图解:

而 Pwn 方向的 Linux 内核模块,则用特权环模型图帮助理解攻击面:

进阶用法:内容热重载与容器化部署

热重载模式:边改内容边预览

serve只展示已构建好的静态页,如果你想修改 Markdown 并即时看到效果,改用热重载模式:

python3 scripts/docs.py live

它基于 mkdocs 的 live 服务启动,默认加载中文版(传live en可指定英文),端口同样是 8008。注意它只呈现该语言真实存在的页面,不含全语言占位页;需要完整三种语言时,还是走build-all+serve的组合。

容器化部署 🐳

仓库自带 Dockerfile:构建阶段用 python:3.8-alpine 编译出站点,运行阶段由 nginx 提供静态服务。在仓库根目录执行:

docker build -t ctfwiki/ctf-wiki . docker run -d --name=ctf-wiki -p 4100:80 ctfwiki/ctf-wiki

-p 4100:80把容器内 nginx 的 80 端口映射到宿主机 4100,之后访问 http://localhost:4100/ 即可。这种方式生成的站点是纯静态快照,适合“只读查阅”场景。

部署问题速查 🔍

问题:浏览器 404 或首页为空原因:只执行了serve,没有先跑build-all——它只展示site/里已有的文件,脚本启动时也会提示这一点。 解决:先执行build-all生成站点,再启动serve。

问题:提示 8008 端口被占用原因:serve与live都固定使用 8008 端口,本机另有服务在监听。 解决:找到并停掉占用该端口的进程后重启;或改用容器方式部署在 4100 端口。

问题:首次 build-all 跑了好几分钟,正常吗?原因:它要并行生成三种语言,且会先把内容复制到docs_build/目录再逐一编译,文件量大属正常现象。 解决:无需处理,等它完成即可,不要中途 Ctrl+C。

问题:pip 安装依赖超时失败原因:首次安装依赖需要外网下载,网络不稳定时容易中断。 解决:重试一次;仍不行可换用其他可用的 pip 源后重新执行安装命令。

写在最后

页面能打开的那一刻,你的离线 CTF 知识库就上线了——从“查得到”到“随时查”,差的就是这 4 条命令。后续想动手修改或补充内容,先读一遍贡献指南;想知道配套有哪些学习资源,可以看资源汇总。

【免费下载链接】ctf-wikiCome and join us, we need you!项目地址: https://gitcode.com/gh_mirrors/ct/ctf-wiki

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进