Dockerized DeepSeek Harness (
dsh) web UI.
The image carries dsh and pnpm, and bakes a profile built from this repository's plugins — the settings page over a LAN address, the touch-device CSS with Enter as a line break, and the WebSocket keep-alive — installed by name, so a restart never downloads anything.
export UID # both shells define the real UID
export GID="$(id -g)" # bash defines only UID; zsh defines GID too
cp docker-compose.example.yml docker-compose.yml
docker compose up -d
The template publishes 15080 on the host for dsh's own 3080, and mounts ./.dsh for state and
credentials. Grab the one-time token from docker compose logs dsh and open
http://<host>:15080/?token=<token>.
The DeepSeek API key is not an environment variable: add it once in the web UI's settings, where it is kept in the state directory.
| variable | purpose | default |
|---|---|---|
PUID / PGID | uid/gid dsh runs as, and owns bind-mounted files as | $UID / $GID |
DSH_TRUSTED_HOSTS | host authorities the browser-trust fence accepts | dsh.example.com |
DSH_PUBLIC_URL | public root to advertise behind a prefix-stripping proxy | — |
DSH_BIND_HOST | concrete address to bind; the wildcard is refused | this container |
http_proxy / https_proxy / all_proxy / no_proxy | outbound proxy for dsh | — |
Read the notes on remote exposure before publishing the port beyond a trusted network, and keep the
Host header intact if you front it with nginx (WebSocket upgrade headers too).
The full documentation — requirements, the profile and plugin behaviour, the release flow — lives in the repository README.
MIT © JounQin
Content type
Image
Digest
sha256:a07a23fcf…
Size
293.9 MB
Last updated
6 days ago
docker pull devockr/idsh