Sign inSign up

1013461195/deepseek-harness

By 1013461195

Updated 8 days ago

Image
Developer tools
0

327

1013461195/deepseek-harness repository overview

DeepSeek Harness Docker

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 生成自签名证书。


Features

  • DeepSeek Harness
  • Node.js 24
  • Nginx Reverse Proxy
  • Supervisor Process Management
  • HTTPS enabled by default
  • Automatic self-signed certificate generation
  • Custom HTTPS certificate support
  • Optional HTTP Basic Authentication
  • HTTP mode for external reverse proxy
  • WebSocket support
  • SSE / Streaming support
  • Long-running Agent tasks
  • Persistent Harness data
  • Persistent workspace
  • Docker Health Check
  • Git / SSH / Python / ripgrep / jq
  • Bubblewrap support

Quick Start

默认情况下启用 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

建议启用 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


SSL / HTTPS

Startup Flow

                        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

Default Behavior

默认:

DISABLE_SSL=false

因此容器使用:

HTTPS :8443

启动逻辑:

DISABLE_SSL=false
        |
        +-- HTTPS_CERT + HTTPS_KEY provided
        |       |
        |       +-- Use custom certificate
        |
        +-- No certificate provided
                |
                +-- Generate self-signed certificate

Automatic 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

修改。


Custom HTTPS Certificate

如果已经有自己的证书,可以通过环境变量直接传入 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:

容器启动时会检查:

  • Certificate 是否有效
  • Private Key 是否有效
  • Certificate 和 Private Key 是否匹配

如果 HTTPS_CERTHTTPS_KEY 只配置其中一个,容器会拒绝启动。


Disable SSL

如果前面已经有 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

External Nginx Example

当:

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

Docker Compose - HTTPS

推荐部署方式:

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

Environment Variables

VariableDefaultDescription
DSH_HOME/data/dshDeepSeek Harness 数据目录
DSH_PORT3080Harness 内部监听端口
DSH_TRUSTED_HOSTSEmptyHarness Trusted Hosts,多个使用逗号分隔
BASIC_AUTH_USERNAMEEmptyNginx Basic Auth 用户名
BASIC_AUTH_PASSWORDEmptyNginx Basic Auth 密码
DISABLE_SSLfalse设置为 true 时禁用容器 HTTPS
HTTPS_HOSTlocalhost自动生成自签名证书使用的域名或 IP
HTTPS_CERTEmptyPEM 格式 HTTPS Certificate
HTTPS_KEYEmptyPEM 格式 HTTPS Private Key
HTTPS_CERT_DAYS3650自动生成自签名证书的有效期

Ports

PortModeDescription
8443HTTPS默认 HTTPS 入口
8080HTTPDISABLE_SSL=true 时使用
3080InternalDeepSeek Harness,仅监听 127.0.0.1

不要将 Harness 的 3080 端口暴露到宿主机。


Volumes

Harness Data

/data/dsh

建议持久化:

-v deepseek-harness-data:/data/dsh

Workspace

/workspace

Harness 工作目录。

推荐:

-v "$(pwd)/workspace:/workspace"

Harness 创建或修改的项目文件会直接保存在宿主机。


Health Check

镜像自带 Docker Health Check。

HTTPS 模式:

https://127.0.0.1:8443/healthz

HTTP 模式:

http://127.0.0.1:8080/healthz

健康检查接口不需要 Basic Authentication。

查看状态:

docker ps

Logs

查看实时日志:

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

Enter Container

docker exec -it deepseek-harness bash

查看 Harness 版本:

dsh --version

检查 Nginx:

nginx -t

查看进程:

ps aux

Browser Secure Context

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 地址即可。


Security Recommendations

建议:

  • 对外提供服务时启用 Basic Authentication
  • 公网访问必须使用 HTTPS
  • 不直接暴露 3080
  • 使用强密码
  • 配置正确的 DSH_TRUSTED_HOSTS
  • 持久化 /data/dsh
  • 定期更新 Docker Image
  • 生产环境优先使用可信 CA 签发的 HTTPS Certificate

Basic Authentication 在普通 HTTP 上传输时没有加密保护。

因此如果:

DISABLE_SSL=true

应确保该 HTTP 端口仅用于内部网络或上级 HTTPS Reverse Proxy。


Architecture

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

Pull Image

docker pull 1013461195/deepseek-harness:latest

Disclaimer

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:

  • Nginx reverse proxy
  • HTTPS
  • automatic self-signed certificates
  • custom certificates
  • optional Basic Authentication
  • Supervisor process management
  • persistent workspace and data

Tag summary

Content type

Image

Digest

sha256:a26ce97c2

Size

179.9 MB

Last updated

8 days ago

docker pull 1013461195/deepseek-harness:master