如何快速部署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/的轻量服务。换句话说,第一条命令拿源码,后三条依次完成装依赖、生成站点、对外发布。
环境与依赖清单
开始前确认环境满足以下条件:
| 项目 | 要求 | 说明 |
|---|---|---|
| Python | 3.8 及以上 | 仓库的 Docker 构建基于 3.8 基线,对齐即可 |
| pip | 任意现代版本 | 用于安装依赖 |
| Git | 任意版本 | 用于拉取仓库 |
| 网络 | 首次需要 | 下载依赖包,之后可离线使用 |
requirements.txt 里一共列了 6 个依赖,pip 会一次装齐:
| 依赖 | 作用 |
|---|---|
| mkdocs | 静态站点生成器 |
| mkdocs-material | Material 风格主题 |
| pymdown-extensions | 高级 Markdown 扩展语法 |
| mkdocs-minify-plugin | 压缩输出的 HTML |
| typer | scripts/docs.py的命令行入口 |
| Markdown | Markdown 文本解析 |
分步安装:从拉取代码到启动服务
第一步:拉取仓库
进入一个空目录执行克隆,然后进入项目:
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),仅供参考