DeepSeek Harness Docker image with Nginx reverse proxy, HTTPS, optional Basic Authentication and Supervisor.
本镜像将 DeepSeek Harness、Nginx 和 Supervisor 集成到一个容器中。
DeepSeek Harness 保持默认仅监听:
127.0.0.1:3080
外部访问统一通过容器内的 Nginx。
默认启用 HTTPS。如果没有提供证书,容器启动时会自动通过 OpenSSL 生成自签名证书。
默认情况下启用 HTTPS。
docker run -d \
--name deepseek-harness \
--restart unless-stopped \
-p 8443:8443 \
-e HTTPS_HOST=192.168.1.100 \
-v deepseek-harness-data:/data/dsh \
-v "$(pwd)/workspace:/workspace" \
1013461195/deepseek-harness:latest
访问:
https://192.168.1.100:8443
如果没有提供正式证书,容器会自动生成自签名证书。
浏览器第一次访问时可能提示证书不受信任。
建议启用 Basic Authentication,尤其是在服务可以被其他用户访问时。
docker run -d \
--name deepseek-harness \
--restart unless-stopped \
-p 8443:8443 \
-e HTTPS_HOST=192.168.1.100 \
-e BASIC_AUTH_USERNAME=admin \
-e BASIC_AUTH_PASSWORD='your-strong-password' \
-e DSH_TRUSTED_HOSTS='192.168.1.100,192.168.1.100:8443' \
-v deepseek-harness-data:/data/dsh \
-v "$(pwd)/workspace:/workspace" \
1013461195/deepseek-harness:latest
同时配置:
BASIC_AUTH_USERNAME
BASIC_AUTH_PASSWORD
时启用 Basic Auth。
如果两个变量没有同时配置,则 Basic Auth 自动关闭。
.htpasswd 会在容器启动时动态生成,密码不会以明文形式写入 .htpasswd。
Docker Start
│
▼
DISABLE_SSL=true?
/ \
YES NO
│ │
│ HTTPS_CERT + KEY?
│ / \
│ YES NO
│ │ │
│ │ OpenSSL
│ │ Self-Signed
│ │ │
▼ ▼ ▼
HTTP :8080 HTTPS :8443
│ │
└────────┬────────┘
▼
Nginx Basic Auth
│
▼
127.0.0.1:3080
│
▼
DeepSeek Harness
默认:
DISABLE_SSL=false
因此容器使用:
HTTPS :8443
启动逻辑:
DISABLE_SSL=false
|
+-- HTTPS_CERT + HTTPS_KEY provided
| |
| +-- Use custom certificate
|
+-- No certificate provided
|
+-- Generate self-signed certificate
如果没有配置:
HTTPS_CERT
HTTPS_KEY
容器会自动通过 OpenSSL 生成自签名证书。
例如:
environment:
HTTPS_HOST: "10.10.10.12"
容器会生成包含:
IP:10.10.10.12
SAN 的证书。
如果使用域名:
environment:
HTTPS_HOST: "dsh.example.com"
则会生成包含:
DNS:dsh.example.com
SAN 的证书。
默认有效期:
3650 days
可以通过:
HTTPS_CERT_DAYS
修改。
如果已经有自己的证书,可以通过环境变量直接传入 PEM 内容。
Docker Compose 示例:
services:
deepseek-harness:
image: 1013461195/deepseek-harness:latest
container_name: deepseek-harness
restart: unless-stopped
ports:
- "443:8443"
environment:
HTTPS_CERT: |
-----BEGIN CERTIFICATE-----
YOUR_CERTIFICATE
-----END CERTIFICATE-----
HTTPS_KEY: |
-----BEGIN PRIVATE KEY-----
YOUR_PRIVATE_KEY
-----END PRIVATE KEY-----
DSH_TRUSTED_HOSTS: "dsh.example.com"
BASIC_AUTH_USERNAME: "admin"
BASIC_AUTH_PASSWORD: "your-password"
volumes:
- deepseek-harness-data:/data/dsh
- ./workspace:/workspace
volumes:
deepseek-harness-data:
容器启动时会检查:
如果 HTTPS_CERT 和 HTTPS_KEY 只配置其中一个,容器会拒绝启动。
如果前面已经有 Nginx、Nginx Proxy Manager、Lucky、Traefik、Cloudflare Tunnel 或其他 HTTPS Reverse Proxy,可以关闭容器自身 SSL。
设置:
DISABLE_SSL=true
此时容器:
不会生成 HTTPS 证书
不会监听 8443
使用 HTTP 8080
Docker Compose:
services:
deepseek-harness:
image: 1013461195/deepseek-harness:latest
container_name: deepseek-harness
restart: unless-stopped
ports:
- "42315:8080"
environment:
DISABLE_SSL: "true"
BASIC_AUTH_USERNAME: "admin"
BASIC_AUTH_PASSWORD: "your-password"
DSH_TRUSTED_HOSTS: "dsh.example.com"
volumes:
- deepseek-harness-data:/data/dsh
- ./workspace:/workspace
volumes:
deepseek-harness-data:
此时访问链路建议为:
Browser
|
| HTTPS
v
External Nginx / NPM / WAF
|
| HTTP
v
Docker :8080
|
v
Container Nginx
|
v
DeepSeek Harness
127.0.0.1:3080
当:
DISABLE_SSL=true
时,可以由上级 Nginx 负责 HTTPS。
例如容器地址:
10.10.10.12:42315
上级 Nginx:
server {
listen 443 ssl;
server_name dsh.example.com;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
location / {
proxy_pass http://10.10.10.12:42315;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 60s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
proxy_buffering off;
}
}
然后:
DSH_TRUSTED_HOSTS=dsh.example.com
浏览器访问:
https://dsh.example.com
推荐部署方式:
services:
deepseek-harness:
image: 1013461195/deepseek-harness:latest
container_name: deepseek-harness
restart: unless-stopped
ports:
- "8443:8443"
environment:
HTTPS_HOST: "192.168.1.100"
DSH_HOME: "/data/dsh"
DSH_PORT: "3080"
DSH_TRUSTED_HOSTS: "192.168.1.100,192.168.1.100:8443"
BASIC_AUTH_USERNAME: "admin"
BASIC_AUTH_PASSWORD: "your-strong-password"
volumes:
- deepseek-harness-data:/data/dsh
- ./workspace:/workspace
volumes:
deepseek-harness-data:
启动:
docker compose up -d
日志:
docker compose logs -f
更新:
docker compose pull
docker compose up -d
| Variable | Default | Description |
|---|---|---|
DSH_HOME | /data/dsh | DeepSeek Harness 数据目录 |
DSH_PORT | 3080 | Harness 内部监听端口 |
DSH_TRUSTED_HOSTS | Empty | Harness Trusted Hosts,多个使用逗号分隔 |
BASIC_AUTH_USERNAME | Empty | Nginx Basic Auth 用户名 |
BASIC_AUTH_PASSWORD | Empty | Nginx Basic Auth 密码 |
DISABLE_SSL | false | 设置为 true 时禁用容器 HTTPS |
HTTPS_HOST | localhost | 自动生成自签名证书使用的域名或 IP |
HTTPS_CERT | Empty | PEM 格式 HTTPS Certificate |
HTTPS_KEY | Empty | PEM 格式 HTTPS Private Key |
HTTPS_CERT_DAYS | 3650 | 自动生成自签名证书的有效期 |
| Port | Mode | Description |
|---|---|---|
8443 | HTTPS | 默认 HTTPS 入口 |
8080 | HTTP | DISABLE_SSL=true 时使用 |
3080 | Internal | DeepSeek Harness,仅监听 127.0.0.1 |
不要将 Harness 的 3080 端口暴露到宿主机。
/data/dsh
建议持久化:
-v deepseek-harness-data:/data/dsh
/workspace
Harness 工作目录。
推荐:
-v "$(pwd)/workspace:/workspace"
Harness 创建或修改的项目文件会直接保存在宿主机。
镜像自带 Docker Health Check。
HTTPS 模式:
https://127.0.0.1:8443/healthz
HTTP 模式:
http://127.0.0.1:8080/healthz
健康检查接口不需要 Basic Authentication。
查看状态:
docker ps
查看实时日志:
docker logs -f deepseek-harness
启动日志会显示当前模式。
例如:
[ENTRYPOINT] Basic authentication enabled
[ENTRYPOINT] SSL enabled
[ENTRYPOINT] Generating self-signed certificate
或者:
[ENTRYPOINT] SSL disabled
[ENTRYPOINT] Nginx will listen on HTTP port 8080
docker exec -it deepseek-harness bash
查看 Harness 版本:
dsh --version
检查 Nginx:
nginx -t
查看进程:
ps aux
DeepSeek Harness 的部分 Web 功能使用浏览器 Secure Context API,例如:
crypto.randomUUID()
因此浏览器直接通过普通局域网 HTTP 地址访问,例如:
http://192.168.1.100:8080
可能导致部分功能不可用。
推荐最终用户访问地址使用:
https://...
如果使用自动生成的自签名证书,推荐将证书或对应 CA 加入客户端信任。
如果设置:
DISABLE_SSL=true
则建议确保上级 Reverse Proxy 对浏览器提供 HTTPS。
例如:
Browser
|
| HTTPS
v
External Nginx
|
| HTTP
v
DeepSeek Harness Container
容器内部使用 HTTP 不影响浏览器的 Secure Context,只要浏览器最终访问的是可信 HTTPS 地址即可。
建议:
3080DSH_TRUSTED_HOSTS/data/dshBasic Authentication 在普通 HTTP 上传输时没有加密保护。
因此如果:
DISABLE_SSL=true
应确保该 HTTP 端口仅用于内部网络或上级 HTTPS Reverse Proxy。
Default HTTPS mode:
Docker Container
+------------------------------------------------+
| |
| Supervisor |
| / \ |
| / \ |
| v v |
| Nginx DeepSeek Harness |
| HTTPS :8443 127.0.0.1:3080 |
| | ^ |
| +------------+ |
| Reverse Proxy |
| |
+------------------------------------------------+
^
|
HTTPS
|
Browser
External Reverse Proxy mode:
Browser
|
| HTTPS
v
External Reverse Proxy
|
| HTTP
v
Docker :8080
|
v
Nginx
|
v
DeepSeek Harness
127.0.0.1:3080
docker pull 1013461195/deepseek-harness:latest
This project provides a containerized runtime environment for DeepSeek Harness.
DeepSeek Harness is developed and maintained by its respective upstream project.
This image mainly provides additional Docker deployment capabilities including:
Content type
Image
Digest
sha256:a26ce97c2…
Size
179.9 MB
Last updated
8 days ago
docker pull 1013461195/deepseek-harness:master