CyberChef 两种部署方式实测:从源码构建到容器化加解密编码服务
【免费下载链接】CyberChefThe Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef
CyberChef 是一款浏览器端数据处理工具,支持 AES、DES、Blowfish 等加解密、Base64 等编码、压缩、哈希与二进制分析运算。本文以 11.4.0 版本为例说明 CyberChef 的安装、部署与配置流程,覆盖源码构建和 Docker 容器化两条路线,并附常见报错与调优参数。所有运算在浏览器本地完成,服务端只负责分发静态文件,因此部署本身没有后端状态。
| 项目 | 要求 |
|---|---|
| 当前稳定版本 | 11.4.0,见 package.json |
| Node.js | >=24 <27,推荐 24 LTS,见 .nvmrc |
| npm | 随 Node.js 附带,建议 9+ |
| Docker | 24.x 及以上(仅容器化路线需要) |
| 操作系统 | Windows 10/11、macOS、Linux(Ubuntu 18.04+) |
📋 前置条件自检
按顺序执行以下验证命令,全部通过再进入部署:
- 必须:Node.js v24。
node -v输出应为v24.x.x。低于 24 或高于 27 时,npm install会因 engine 校验直接失败。 - 必须:git。
git --version输出形如git version 2.34.1。 - 可选:Docker(走容器化路线才需要)。
docker version应能同时输出 Client 与 Server 信息,Server 部分报错说明 Docker 守护进程未启动。
🚀 部署实操
路线一:源码构建
步骤 1:拉取仓库并进入项目目录。
git clone https://gitcode.com/GitHub_Trending/cy/CyberChef cd CyberChef预期输出:当前目录下出现CyberChef,其中包含package.json与Gruntfile.js。
步骤 2:安装依赖。postinstall钩子会自动修补crypto-api依赖的导入方式,不要跳过。
npm install预期输出:结尾出现added 700+ packages in xx s,全程无npm ERR!。国内网络慢可先执行npm config set registry https://registry.npmmirror.com。
步骤 3:生产构建(仅在需要自托管静态产物时执行)。
npm run build预期输出:build/prod目录生成,内含index.html、cyberchef.js与static资源目录。
步骤 4:启动开发服务器(带热更新,适合日常验证)。
npm start预期输出:webpack 编译完成后终端提示Project is running at http://localhost:8080/,浏览器打开即可看到输入区、输出区、左侧操作列表与中间配方区。
路线二:Docker 容器化
官方 Dockerfile 为两阶段构建:node:24-alpine负责npm ci与npm run build,产物拷贝进nginxinc/nginx-unprivileged(非特权 nginx 镜像,默认监听 8080 端口)。
步骤 1:构建镜像。
docker build --tag cyberchef --ulimit nofile=10000 .预期输出:每个阶段末尾出现Successfully built,总耗时数分钟,主要花在npm ci与构建阶段。
步骤 2:运行容器,同时完成端口映射、数据卷挂载与资源限制。
docker run -d --name cyberchef -p 8080:8080 --memory=2g --cpus=2 -v /opt/cyberchef/static:/usr/share/nginx/html cyberchef三个要点:
- 端口映射
-p 8080:8080:宿主机 8080 对应容器内 nginx 的 8080;与本机服务冲突时改左侧端口,如-p 9000:8080。 - 数据卷挂载
-v:CyberChef 无服务端数据,默认可以不挂;仅当要用本地build/prod的产物覆盖镜像内静态文件时才挂载到/usr/share/nginx/html。 - 资源限制
--memory=2g --cpus=2:防止容器异常占用宿主机内存,nginx 分发静态文件时该配额足够。
预期输出:docker ps中 STATUS 为Up,PORTS 列显示0.0.0.0:8080->8080/tcp。
部署验证
浏览器访问http://localhost:8080,确认四个主要区域(输入、输出、操作列表、配方区)正常渲染后,用仓库自带的 OCR 样例图验证操作链路:将图片拖入输入框,添加 Optical Character Recognition 操作,能识别出图中文字即说明依赖加载完整。
⚙️ 进阶配置与调优
1. 提高 Node 堆内存上限。改哪里:package.json中的setheapsize脚本;改成什么:设置NODE_OPTIONS=--max_old_space_size=2048;为什么:大配方在 webpack 构建阶段容易触发堆溢出,先把上限固定到 2048MB 再重跑构建。
npm run setheapsize npm run build2. 更换监听端口。改哪里:Gruntfile.js 中 devServer 的端口读取grunt.option("port"),默认 8080;改成什么:启动命令追加--port=9000;为什么:8080 常被其他服务占用,通过命令行参数切换端口不需要改任何源码。
npx grunt dev --port=90003. 容器运行期限额。改哪里:docker run启动参数;改成什么:--memory=2g --cpus=2;为什么:镜像是纯静态分发,构建与运行解耦,运行时只需 nginx 服务文件,限额可以挡住资源被异常占满的情况。
⚠️ 高频故障速查
| 现象(错误信息原文) | 原因 | 解决命令 |
|---|---|---|
npm ERR! Unsupported engine ... required: { node: '>=24 <27' } | Node 版本不在支持区间 | nvm install 24 && nvm use 24 |
EADDRINUSE: address already in use :::8080 | 8080 端口已被占用 | npx grunt dev --port=9000 |
FATAL ERROR: ... Allocation failed - JavaScript heap out of memory | 构建阶段堆内存不足 | npm run setheapsize后重跑npm run build |
npm ERR! code EACCES(npm install期间) | npm 缓存或全局目录权限不足 | npm cache clean --force && npm install |
docker: Error response from daemon: pull access denied(拉取官方预构建镜像时) | 网络受限无法访问镜像仓库 | docker build --tag cyberchef --ulimit nofile=10000 . |
各操作的实现代码集中在 src/core/operations/,排查具体运算行为时可从对应文件入手。部署完成后,浏览器访问对应端口即可开始使用,全部数据处理在浏览器本地完成,不会发送到服务器。
【免费下载链接】CyberChefThe Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考