虽然已经有网友做出了Docker版本的DeepSeek Harness,但是作为第三方可能很多人和我一样“不太放心”,虽然现在AI遍地,直接可以借助AI来审查代码,但是实际你深入了解GitHub以后,实际并不是那么回事。
所以很简单,我们直接用官方源码仓库构建一个绝对【纯净】的Docker版本。
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
如上,官方也支持这样来跑,那么就是有戏的意思。
下面我就以极空间NAS为例,借助compose来一键完成这套Docker的构建,首先说明几点:
yaml会创建一个node.js的slim版本镜像; yaml会创建几个必须用到的工具; yaml调用的是官方源; yaml调用的工具是走的清华加速镜像; 初次使用会pull相关,但是第二次启动会检测; 如果已经建立了,就不用再去pull了 第一次初始化大概要几分钟 我的极空间没挂梯子 但不同网络可能需要梯子 yaml里面可以不用填写key 可以进入后再自己填写key
第一步,建立个固态硬盘目录
在根目录建立一个config的文件夹,当然也可以是别的名字,重点是后期需要调用它:

这个文件夹会生成相关的配置,工作区,也就说后期你可以利用极空间NAS的双向同步直接将工作区同步到本地,这样就可以快速的实现本地和NAS数据的一致性,把NAS的本质工作给利用起来了。
第二步,创建compose项目
很简单,我们在极空间的Docker的Compose中建立一个项目,如下:
deepseek-harness,这个是项目名称,可以自己定义。

重点是加入存储位置,也就是我们刚才config的根目录;其次是需要勾选下面的【所有合规文件夹添加最大读写权限】,这个一定要勾选上,不勾选就没法创建工作空间了哦。这个是必须要给的权限。
接下来是导入大路哥适配出来的yaml文件?不是的,你还需要用极空间查询路径,否则没法映射啊。
查询路径
点击上图的查询路径:

第一件事,找到刚才创建的config文件夹(如果你改了别的就指向别的),勾选后点击【复制路径】,因为要用到这个去映射,否则Docker找不到你正确的路径。
第三步,粘贴并修改yaml文件
代码如下,完全公开,粘贴到上图2中那个黑色区域:
version:'3.8'
services:
deepseek-harness:
image:node:24-slim
container_name:deepseek-harness
restart:unless-stopped
ports:
-"3018:3018"
environment:
-DEEPSEEK_API_KEY=这里可以填写你的key,也可以后面填
-DSH_ALLOW_REMOTE_CONFIGURATION=1
-DSH_TRUSTED_HOSTS=*
-DSH_TELEMETRY_DISABLED=1
-DSH_HOME=/root/.dsh
volumes:
-粘贴刚才的复制路径:/root/.dsh
command:
-sh
--c
-|
set-e
# 1.基础依赖补全
if!command-vsocat>/dev/null2>&1||!command-vgit>/dev/null2>&1;then
sed-i's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.list.d/debian.sources
sed-i's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g'/etc/apt/sources.list.d/debian.sources
apt-getupdate-y&&apt-getinstall-ygitsocatprocps
fi
if!command-vpnpm>/dev/null2>&1;then
npminstall-gpnpm--registry=https://registry.npmmirror.com
fi
# 2.直连GitHub官方仓库拉取与编译
if[!-d"/deepseek-harness"];then
gitclone--depth=1https://github.com/deepseek-ai/deepseek-harness.git/deepseek-harness
cd/deepseek-harness
pnpmconfigsetregistryhttps://registry.npmmirror.com
pnpminstall--no-frozen-lockfile
pnpmrunbuild
else
cd/deepseek-harness
fi
# 3.基础目录权限打通
mkdir-p/root/.dsh/workspace
chmod-R777/root/.dsh/workspace
# 4.彻底清理旧版遗留数据(包含旧版.credentials.yaml以及profiles缓存目录)
if[-f/root/.dsh/.credentials.yaml]&&!grep-q"version: 1"/root/.dsh/.credentials.yaml;then
echo"检测到旧架构配置,正在彻底清除旧配置与 Web Profile 缓存..."
rm-rf/root/.dsh/.credentials.yaml/root/.dsh/profiles/root/.dsh/config.json
fi
# 5.若配置了Key环境变量,则按新版规范(version:1+refs:架构)生成凭据文件
if[!-f/root/.dsh/.credentials.yaml]&&[-n"$$DEEPSEEK_API_KEY"];then
cat<<EOF>/root/.dsh/.credentials.yaml
version:1
refs:
deepseek:
apiKey:"$$DEEPSEEK_API_KEY"
EOF
fi
# 6.统一锁定凭据文件为600权限(通过安全校验)
if[-f/root/.dsh/.credentials.yaml];then
chmod600/root/.dsh/.credentials.yaml
fi
# 7.启动服务
socatTCP-LISTEN:3018,fork,reuseaddrTCP:127.0.0.1:3080&
pnpmdshweb--no-open
实际主要改的就这几个地方:

如果端口不冲突,不建议修改它,key可以进入以后填写,而那个路径是至关重要的。
做完这些,就可以点击创建了……
建立成功后会自动进入项目……

可以看到待机的时候内存消耗不多,但是跑的时候可能会拉高到1GB,所以空闲的还是要预留一些。建立的镜像node的slim版本大概就两百多MB,但实际极空间的Docker还有一个隐藏层面,也就是pull的源码和环境,实际会有大概3个GB左右,说人话你的固态硬盘区域应该有个至少5GB空间。
日志中看到这个就是成功了
如下,启动了3080端口(不要去改):

怎么访问呢?
如果你没玩过极空间的Docker我就原谅你吧,回到主页,点这里:

如果你想在edge浏览器打开使用,点下面的这里粘贴地址:

实际极空间会给你创建一个代理,但是复制粘贴打开后不要关闭极空间上面这个窗口,否则停止会话!言下之意就是这个代理关闭了,然后浏览器无法访问了。当然如果你和极空间都在一个局域网,本身也可以通过:
http://192.168.50.xx:3018
访问,IP就是极空间的局域网IP,端口是3018,冒号必须是英文模式。当然你的极空间用了域名、IP v6、ddnsgo之类的,也可以用IP v6的形式去外部访问。也就说手机打开浏览器实际也可以用。

互联网自然使用域名,或者IP v6地址访问。
