No description
- JavaScript 46.4%
- Python 26.7%
- CSS 14.9%
- HTML 9.4%
- Shell 2.4%
- Other 0.2%
Align the self-hosted webssh fork to the shared stack, build and documentation
conventions.
- Move the application under containers/webssh/ (one image per containers/<service>/),
preserving history via git mv.
- Replace the root compose with a convention-compliant stack/ (Forgejo image,
${ENV}-first naming, bind-mount /docker/appdata/${ENV}-webssh/data, fail-fast
vars, no env_file; APP_PORT 8130 -> internal 5000).
- Add the shared build-and-push.sh plus the build-version wrapper (build.sh +
scripts/) and containers/webssh/app/version.py; surface display_version() in the
login footer, a /version endpoint and an in-app /changelog page (changelog.py).
- Add the documentation set: docs/{changelog-develop,changelog,TECHNICAL,DESIGN}.md
and a root CLAUDE.md; rewrite README.md as a short front door.
- Strip upstream marketing/community files (CONTRIBUTING, CODE_OF_CONDUCT,
SECURITY, .github, assets, .env.example, docs screenshots/gifs).
Database stays SQLite (no Postgres/Adminer) as a deliberate deviation, documented
in docs/TECHNICAL.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| containers/webssh | ||
| docs | ||
| scripts | ||
| stack | ||
| .gitignore | ||
| build-and-push.sh | ||
| build.sh | ||
| CLAUDE.md | ||
| LICENSE | ||
| README.md | ||
webssh
A self-hosted, web-based SSH terminal with an integrated SFTP file manager. Multi-user, with per-user accounts, SSH keys, connection profiles and settings — a browser terminal (xterm.js) backed by server-side SSH/SFTP (paramiko).
Self-hosted fork, aligned to the shared shared-integrations/tooling standard
(stack / build / documentation conventions).
Quick start
Deployed with Portainer from the stack/ directory. Portainer injects the
environment and holds the real values per stack.
- Stack:
stack/docker-compose.yml+stack/stack.env - Image:
forgejo.oskamp.info/ivooskamp/webssh:${IMAGE_TAG} - App is published on
APP_PORT(default8130), proxied to internal5000. - Persistent data (SQLite DB, SSH keys, profiles, logs) bind-mounts at
/docker/appdata/${ENV}-webssh/data.
Build & release
./build.sh t # dev: bump build number, push :dev, push dev branch
./build.sh r # release: validate version, push :vX.Y.Z/:dev/:latest, tag main
The release version comes from the top heading of
docs/changelog.md. Building from this host needs a prior
docker login forgejo.oskamp.info.
Documentation
- docs/TECHNICAL.md — architecture, stack, data model.
- docs/DESIGN.md — visual language, theming, components.
- docs/changelog.md — per-release summary.
- docs/changelog-develop.md — append-only dev log.
- CLAUDE.md — guidance for coding agents.
The application also serves an in-app changelog at /changelog and reports its
build via /version.
License
MIT — see LICENSE.