Back to Dashboard

Trust posture

πŸ“‹ SBOM ATTESTEDπŸ›‘ 577 open alertsπŸ— AMD64 + ARM64 πŸ”— 1/1 deps tracked daily πŸ” REPRODUCE THESE CHECKS LOCALLY
PULLS 17.1K 11012 to 16879 pulls across 30 recorded days 2026-09-18: 11012 pulls2026-09-19: 11575 pulls2026-09-20: 11846 pulls2026-09-21: 12234 pulls2026-09-22: 12326 pulls2026-09-23: 12464 pulls2026-09-24: 12495 pulls2026-09-25: 13413 pulls2026-09-26: 13692 pulls2026-09-27: 13766 pulls2026-09-28: 14287 pulls2026-09-29: 14588 pulls2026-09-30: 14870 pulls2026-10-01: 15195 pulls2026-10-02: 15437 pulls2026-10-03: 15677 pulls2026-10-04: 15729 pulls2026-10-05: 16015 pulls2026-10-06: 16016 pulls2026-10-07: 16284 pulls2026-10-08: 16297 pulls2026-10-09: 16759 pulls2026-10-10: 16762 pulls2026-10-11: 16765 pulls2026-10-12: 16769 pulls2026-10-13: 16775 pulls2026-10-14: 16778 pulls2026-10-15: 16858 pulls2026-10-16: 16869 pulls2026-10-17: 16879 pulls
STARS 0
COVERAGE 4 variants Β· amd64+arm64

VERIFIABLE TRUST ARTIFACTS

Provenance

Build commit
43b72a4
Build digest
sha256:2a82537ec15f0ce16a80cad3f5a7029e795e48aa2de540341273da749a26baff
Index digest
sha256:012bf166bf0dd5f21ed30b4c474e9cc7a7be8d83285b678eab2d811e59e7308d
Manifest digest (amd64)
sha256:688176435803bd33c7b03930276f1844a40c0702b01a63e1799777ffd8e16a74
Manifest digest (arm64)
sha256:eb28d1a850f697163d441ca508a84ba629911036b6cb1112a2baec977edc1fcd
SBOM attestation
56929569…
Trivy evidence
Code Scanning fetched 2026-10-17 11:24 UTC
Verify
gh attestation verify oci://ghcr.io/oorabona/web-shell:1.7.7 --owner oorabona guide β†’

Security evidence

Trivy Β· Code Scanning for image 1.7.7 fetched 2026-10-17

577 open Code Scanning alerts Β· fetched 2026-10-17 Β· advisory mode (does not block builds)

Code Scanning: 577 open alerts Β· fetched 2026-10-17Recorded scan: 632 findings Β· scanned 2026-10-17
7Critical
142High
195Medium
225Low
8Info

Top advisories (upstream, advisory)

  • CVE-2026-60002 (CRITICAL) β€” web-shell β€” openssh: OpenSSH: Use-after-free vulnerability during host key re-exchange on the client side
  • CVE-2026-60002 (CRITICAL) β€” web-shell β€” openssh: OpenSSH: Use-after-free vulnerability during host key re-exchange on the client side
  • CVE-2026-60002 (CRITICAL) β€” web-shell β€” openssh: OpenSSH: Use-after-free vulnerability during host key re-exchange on the client side
  • CVE-2026-6653 (CRITICAL) β€” web-shell β€” libxml2: mingw-libxml2: libxml2: Denial of Service via crafted XML input due to use-after-free
  • CVE-2019-16227 (CRITICAL) β€” web-shell β€” An issue was discovered in py-lmdb 0.97. For certain values of mn_flag ...

β†’ See verification steps.

Explore

Available variants

TagSize (amd64) Build status
1.7.7 default134.4MB OK
1.7.7-alpine27.6MB OK
1.7.7-ubuntu76.7MB OK
1.7.7-rocky116.6MB OK
Build lineage2a82537ec15f
Build Lineage
Build Digest sha256:2a82537ec15f0ce16a80cad3f5a7029e795e48aa2de540341273da749a26baff
ALPINE_BASE alpine
ROCKY_BASE rockylinux
TTYD_VERSION 1.7.7
UBUNTU_BASE ubuntu
VERSION 1.7.7
MAJOR_VERSION 1
FLAVOR debian
REMOTE_CR ghcr.io/oorabona
Package summary 181 packages
Recent changes
Build history 10 builds
Dependency health all up to date

Dependency Health

all up to date
1/1 dependencies monitored
Up-to-date dependencies
TTYD_VERSION 1.7.7

Documentation

README

Web Shell

Docker Hub GHCR Build

Secure browser-based terminal built on our Debian base image with ttyd for web terminal access. Includes common DevOps and hosting tools, optional SSH server, and flexible authentication options.

Verify this image

Every build ships a Sigstore-signed SBOM and a full Trivy scan β€” verify them yourself, no login required:

gh attestation verify oci://ghcr.io/oorabona/web-shell:latest --owner oorabona

Full walkthrough (SBOM payload, Trivy findings, multi-arch manifest inspection, upstream dependency tracking) β†’ https://oorabona.github.io/docker-containers/verify-images/

Quick Start

# Pull the image
docker pull ghcr.io/oorabona/web-shell:latest

# Run with default settings (web terminal on port 7681)
docker run -d --name web-shell -p 7681:7681 ghcr.io/oorabona/web-shell:latest

# Open in browser
# http://localhost:7681

# Run with password and SSH enabled
docker run -d --name web-shell \
  -p 7681:7681 -p 2222:2222 \
  -e SHELL_PASSWORD=mysecretpass \
  -e ENABLE_SSH=true \
  ghcr.io/oorabona/web-shell:latest

Build

# Build with latest upstream ttyd version
./make build web-shell

# Build with specific ttyd version
./make build web-shell 1.7.7

Build Args

Arg Default Description
VERSION latest Full version tag (set by build system)
TTYD_VERSION 1.7.7 ttyd release version
DEBIAN_TAG trixie Debian base image tag
SHELL_USER debian Default shell user (build-time)

Environment Variables

Variable Default Description
SHELL_USER debian User for terminal sessions
SHELL_PASSWORD (locked) Set user password at runtime (required for SSH/sudo)
TTYD_PORT 7681 Web terminal listen port
ENABLE_SSH false Start SSH daemon on port 2222
SSH_PUBLIC_KEY (none) Import SSH authorized key
TTYD_CREDENTIAL (none) Basic auth in user:password format
TTYD_SSL_CERT (none) Path to TLS certificate (enables HTTPS)
TTYD_SSL_KEY (none) Path to TLS private key
TTYD_AUTH_HEADER (none) Auth header for reverse proxy integration

Ports

Port Service
7681 ttyd web terminal (WebSocket-based)
2222 SSH server (when ENABLE_SSH=true)

Included Tools

Category Tools
Editors vim-tiny, nano
File management tree, file, less, findutils
Network curl, wget, dnsutils, iputils-ping, net-tools
Process management htop, procps
Data tools jq
Version control git
Archives bzip2, xz-utils, unzip, zip
Remote access openssh-server

Authentication

No Authentication (default)

Anyone with network access can use the terminal. Suitable for local development or behind a trusted reverse proxy.

Basic Auth (ttyd built-in)

docker run -d -p 7681:7681 \
  -e TTYD_CREDENTIAL="admin:secretpass" \
  ghcr.io/oorabona/web-shell:latest

TLS Encryption

docker run -d -p 7681:7681 \
  -v /path/to/cert.pem:/certs/cert.pem:ro \
  -v /path/to/key.pem:/certs/key.pem:ro \
  -e TTYD_SSL_CERT=/certs/cert.pem \
  -e TTYD_SSL_KEY=/certs/key.pem \
  ghcr.io/oorabona/web-shell:latest

Reverse Proxy Auth Header

For integration with authentication proxies (OAuth2 Proxy, Authelia, etc.):

docker run -d -p 7681:7681 \
  -e TTYD_AUTH_HEADER="X-Forwarded-User" \
  ghcr.io/oorabona/web-shell:latest

SSH Access

docker run -d -p 7681:7681 -p 2222:2222 \
  -e ENABLE_SSH=true \
  -e SSH_PUBLIC_KEY="ssh-ed25519 AAAA... user@host" \
  ghcr.io/oorabona/web-shell:latest

# Connect via SSH
ssh -p 2222 debian@localhost

Health Check

Built-in health check via ttyd token endpoint:

GET http://localhost:7681/token β†’ {"token": "..."}

Hosting Use Case

Web Shell is designed as a building block for web hosting platforms, providing browser-based terminal access to container environments. Combined with other containers from this project:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Client Browser                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚ Web App   β”‚  β”‚ phpMyAdmin β”‚  β”‚ Web Terminal      β”‚    β”‚
β”‚  β”‚ :80/:443  β”‚  β”‚ :8080      β”‚  β”‚ :7681 (ttyd)     β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚               β”‚                β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚ OpenResty β”‚  β”‚ PHP-FPM    β”‚  β”‚ Web Shell         β”‚    β”‚
β”‚  β”‚ (proxy)   β”‚  β”‚ WordPress  β”‚  β”‚ (tools + shell)   β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                           β”‚
β”‚  β”‚ PostgreSQLβ”‚  β”‚ Vector     β”‚                           β”‚
β”‚  β”‚ (database)β”‚  β”‚ (logs)     β”‚                           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                           β”‚
β”‚  Docker Host                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Security Considerations

  • Runs as root for chpasswd and sshd, but ttyd spawns shells as the configured SHELL_USER
  • No default password β€” set SHELL_PASSWORD at runtime (account is locked without it)
  • SSH listens on port 2222 (non-standard) with root login disabled
  • For production: use TTYD_CREDENTIAL or place behind an auth reverse proxy
  • Mount TLS certificates for encrypted connections
  • The --writable flag enables terminal input β€” remove for read-only sessions

Dependencies

Component Version Source Monitoring
ttyd 1.7.7 GitHub upstream-monitor
Debian (base) trixie ghcr.io/oorabona/debian upstream