A web-based self-hosted terminal is a terminal interface that can be accessed through a web browser. It allows users to remotely manage and interact with their systems or databases without the need for physical access to the server.

For DevOps and system administrators, a web-based self-hosted terminal provides several use-cases. It enables them to perform administrative tasks, monitor system performance, troubleshoot issues, deploy updates, and configure settings from anywhere with an internet connection. This flexibility is particularly beneficial for remote or distributed teams, as it eliminates the need for direct physical access to the servers. Additionally, it allows for easier collaboration and coordination among team members, as they can access the terminal interface simultaneously and work together on tasks or projects.

In summary, a web-based self-hosted terminal is a valuable tool for DevOps and system administrators, empowering them to efficiently manage systems, databases, and applications remotely, improving productivity and flexibility in their work.

In this list, we offer you the best open-source self-hosted terminals that you can download, install locally or on your server and use for free.

1- Web Terminal

Web-based terminal is an open-source free self-hosted terminal for InterSystems products. It provides a convenient and user-friendly way to access your database from any location around the world. With this web-based terminal, you have the flexibility to manage your InterSystems products remotely, allowing you to perform various tasks and operations without the need for physical access to the server.

Features

  • Native browser app: Allows to access Caché terminal both from desktop and mobile devices.
  • Autocompletion: Type faster. Autocomplete is available for class names, variable and global names, methods, properties, etc.
  • Tracing: Monitor any changes in globals or files.
  • SQL mode: A convenient way to execute SQL queries.
  • Syntax highlighting: Intelligently highlighted input both for ObjectScript and SQL.
  • Favorites: Save commands you execute frequently.
  • Security: All you need is to protect /terminal/ web application, and all sessions are guaranteed to be secure.
  • Self-updating: WebTerminal of version 4 and higher prompts to update automatically when new version is available, so you will never miss the important update.
Webterminal: Open-source Web-based SSH Terminal with Multi-user Support
The Webterminal, implemented by Django, is a project that is primarily focused on DevOps and Continuous Delivery. With its ability to support almost 90% of remote management protocols including VNC, SSH, RDP, Telnet, and SFTP, it is a versatile platform that caters to a wide range of user needs. Add…
GitHub - intersystems-community/webterminal: The first and the most powerful web-based terminal for InterSystems IRIS®, InterSystems Caché®, Ensemble®, HealthShare®, TrakCare® and other products built on top of InterSystems Data Platforms.
The first and the most powerful web-based terminal for InterSystems IRIS®, InterSystems Caché®, Ensemble®, HealthShare®, TrakCare® and other products built on top of InterSystems Data Platforms. -…

2- butterfly

Butterfly is a web-based xterm-compatible terminal that runs in your browser.

Features

  • xterm compatible (support a lot of unused features!)
  • Native browser scroll and search
  • Theming in css / sass (20 preset themes) endless possibilities!
  • HTML in your terminal! cat images and use <table>
  • Multiple sessions support (à la screen -x) to simultaneously access a terminal from several places on the planet!
  • Secure authentication with X509 certificates!
  • 16,777,216 colors support!
  • Keyboard text selection!
  • Desktop notifications on terminal output!
  • Geolocation from browser!
  • May work on firefox too!
GitHub - paradoxxxzero/butterfly: A web terminal based on websocket and tornado
A web terminal based on websocket and tornado. Contribute to paradoxxxzero/butterfly development by creating an account on GitHub.

3- GoTTY

GoTTY is a simple command line tool that turns your CLI tools into web applications.

GitHub - yudai/gotty: Share your terminal as a web application
Share your terminal as a web application. Contribute to yudai/gotty development by creating an account on GitHub.

4- Xterm.js

Xterm.js is a front-end component written in TypeScript that lets applications bring fully-featured terminals to their users in the browser. It's used by popular projects such as VS Code, Hyper and Theia.

Features

  • Terminal apps just work: Xterm.js works with most terminal apps such as bashvim, and tmux, including support for curses-based apps and mouse events.
  • Performant: Xterm.js is really fast, it even includes a GPU-accelerated renderer.
  • Rich Unicode support: Supports CJK, emojis, and IMEs.
  • Self-contained: Requires zero dependencies to work.
  • Accessible: Screen reader and minimum contrast ratio support can be turned on.
  • And much more: Links, theming, addons, well documented API, etc.
GitHub - xtermjs/xterm.js: A terminal for the web
A terminal for the web. Contribute to xtermjs/xterm.js development by creating an account on GitHub.

5- Interactive Web Terminal

Personal terminal-like website.

GitHub - philippwulff/pw-term: Personal terminal-like website.
Personal terminal-like website. Contribute to philippwulff/pw-term development by creating an account on GitHub.

6- Termino.js

Termino.js is a highly customizable front-end component written in pure JavaScript. It is ideal for creating web-based terminal animations, games, and apps on any website. It supports curses-based apps, custom functions on user commands, key-code and mouse events, and much more!

Features

  • Fast: Termino.js is lightweight - being built in pure JavaScript
  • Self-contained: Requires zero dependencies to work.
  • Great for animations: You can make terminal animations with ease & bring your favourite typewriter library in or etc!
  • Customizable: Bring your own HTML, CSS & customize / create a terminal to your liking!
  • Inputs: Supports inputs for questions returned via a promised / await based value
  • Multiple instances: Create more than one custom terminal in a page!
  • HTML support: Add HTML elements such as links and more to your terminal!
  • Custom functions: Create your own custom functions with ease (including user-command functions, key-code functions & your own mouse event functions)
GitHub - MarketingPipeline/Termino.js: Create a web based terminal on any website - great for games, animations and real world apps!
Create a web based terminal on any website - great for games, animations and real world apps! - GitHub - MarketingPipeline/Termino.js: Create a web based terminal on any website - great for games,…

7- jQuery Terminal Emulator

jQuery Terminal Emulator is a plugin for creating command line interpreters in your applications. It can automatically call JSON-RPC service when a user types commands or you can provide your own function in which you can parse user commands. It's ideal if you want to provide additional functionality for power users. It can also be used to debug your application.

You can use this JavaScript library to create a web based terminal on any website.

Features

  • You can create an interpreter for your JSON-RPC service with one line of code (just use url as first argument).
  • Support for authentication (you can provide functions when users enter login and password or if you use JSON-RPC it can automatically call login function on the server and pass token to all functions).
  • Stack of interpreters - you can create commands that trigger additional interpreters (eg. you can use couple of JSON-RPC service and run them when user type command)
  • Command Tree - you can use nested objects. Each command will invoke a function (own REPL), if the value is an object it will create a new interpreter and use the function from that object as commands. You can use as many nested object/commands as you like. If the value is a string it will create JSON-RPC service.
  • Support for command line history, it uses Local Storage if possible.
  • Support for tab completion.
  • Includes keyboard shortcut from bash like CTRL+A, CTRL+D, CTRL+E etc.
  • Bash reverse history search (CTRL+R / CTRL+G).
  • You can create and overwrite existing keyboard shortcuts.
  • Multiple terminals on one page (every terminal can have different commands, its own authentication function and its own command history).
  • It catches all exceptions and displays error messages in the terminal (you can see errors in your javascript and php code in terminal if they are in the interpreter function).
  • Using extended commands you can change working of the terminal without touching the front-end code (using echo method and terminal formatting like syntax). Read more in docs.
  • Easy way to change the style of the terminal (like color or cursor animation).
  • Chinese and Japanese character support.
  • You can use ASCII forms and collect information from users.
  • Animation (including typing effect and Canvas canvas adapter).
  • Support ANSI escapes codes.
  • Experimental mobile support.
GitHub - jcubic/jquery.terminal: jQuery Terminal Emulator - JavaScript library for creating web-based terminals with custom commands
jQuery Terminal Emulator - JavaScript library for creating web-based terminals with custom commands - GitHub - jcubic/jquery.terminal: jQuery Terminal Emulator - JavaScript library for creating web…

8- webterm

Web terminal based on xterm.js in rust.

GitHub - fubarnetes/webterm: web terminal based on xterm.js in rust
web terminal based on xterm.js in rust. Contribute to fubarnetes/webterm development by creating an account on GitHub.

9- WebTermJS

WebTermJS is a simple linux terminal for web. It supports all the commands which can be executed by shell_exec), in addition to other commands which are executed interpreted by PHP or NodeJS. In order to work, WebTermJS requires NodeJS with express or PHP (at least PHP 5.3.0) and jQuery (at least 1.6).

GitHub - veeso/WebTermJS: A simple web terminal implemented using NodeJS. (Or PHP)
A simple web terminal implemented using NodeJS. (Or PHP) - GitHub - veeso/WebTermJS: A simple web terminal implemented using NodeJS. (Or PHP)

10- Web-Terminal

Web-Terminal is a very lightweight terminal server that provides remote CLI via standard web browser and HTTP protocol. It works on all operating systems supported by Node.js, it doesn't depend on native modules. Fast and easy to install. Supports multiple sessions.

GitHub - rabchev/web-terminal: Web-Terminal is a terminal server that provides remote CLI via standard web browser and HTTP protocol.
Web-Terminal is a terminal server that provides remote CLI via standard web browser and HTTP protocol. - GitHub - rabchev/web-terminal: Web-Terminal is a terminal server that provides remote CLI vi…

11- Web-Shell

This is a web-shell with PHP, You can run system commands and upload files to the server.

GitHub - hctilg/web-shell
Contribute to hctilg/web-shell development by creating an account on GitHub.

12- flask-vue-term

flask-vue-term is a web base terminal . Using python Flask-Sockets and Vue.js.

GitHub - vasukushwah/flask-vue-term: flask-vue-term is a web base terminal . Using python Flask,gevent and Vuejs.
flask-vue-term is a web base terminal . Using python Flask,gevent and Vuejs. - GitHub - vasukushwah/flask-vue-term: flask-vue-term is a web base terminal . Using python Flask,gevent and Vuejs.

13- wShell

Web-based terminal emulator for Android based on Shell In A Box.

GitHub - meefik/wshell: Web-based terminal emulator for Android
Web-based terminal emulator for Android. Contribute to meefik/wshell development by creating an account on GitHub.

14- jaxMaTe

This is just a prototype to test MathJax I/O. The file jsmt_devel.html contains everything required to demonstrate the rendering process (standalone). See tutorial how to use it in a node.js client/server application.

GitHub - nilqed/jaxMaTe: MathJax enabled Mathematics Terminal
MathJax enabled Mathematics Terminal. Contribute to nilqed/jaxMaTe development by creating an account on GitHub.

15- wetty

Wetty is a self-hosted Terminal over HTTP and HTTPS. WeTTY is an alternative to ajaxterm and anyterm but much better than them because WeTTY uses xterm.js which is a full-fledged implementation of terminal emulation written entirely in JavaScript. WeTTY uses websockets rather than Ajax and hence better response time.

GitHub - butlerx/wetty: Terminal in browser over http/https. (Ajaxterm/Anyterm alternative, but much better)
Terminal in browser over http/https. (Ajaxterm/Anyterm alternative, but much better) - GitHub - butlerx/wetty: Terminal in browser over http/https. (Ajaxterm/Anyterm alternative, but much better)

16- OliveTin

OliveTin gives safe and simple access to predefined shell commands from a web interface.

Use cases

Safely give access to commands, for less technical people;

  • eg: Give your family a button to podman restart plex
  • eg: Give junior admins a simple web form with dropdowns, to start your custom script. backupScript.sh --folder {{ customerName }}
  • eg: Enable SSH access to the server for the next 20 mins firewall-cmd --add-service ssh --timeout 20m

Simplify complex commands, make them accessible and repeatable;

  • eg: Expose complex commands on touchscreen tablets stuck on walls around your house. wake-on-lan aa:bb:cc:11:22:33
  • eg: Run long running on your servers from your cell phone. dnf update -y
  • eg: Define complex commands with lots of preset arguments, and turn a few arguments into dropdown select boxes. docker rm {{ container }} && docker create {{ container }} && docker start {{ container }}

Features

  • Responsive, touch-friendly UI - great for tablets and mobile
  • Super simple config in YAML - because if it's not YAML now-a-days, it's not "cloud native" :-)
  • Dark mode - for those of you that roll that way.
  • Accessible - passes all the accessibility checks in Firefox, and issues with accessibility are taken seriously.
  • Container - available for quickly testing and getting it up and running, great for the selfhosted community.
  • Integrate with anything - OliveTin just runs Linux shell commands, so theoretially you could integrate with a bunch of stuff just by using curl, ping, etc. However, writing your own shell scripts is a great way to extend OliveTin.
  • Lightweight on resources - uses only a few MB of RAM and barely any CPU. Written in Go, with a web interface written as a modern, responsive, Single Page App that uses the REST/gRPC API.
  • Good amount of unit tests and style checks - helps potential contributors be consistent, and helps with maintainability.

GitHub - OliveTin/OliveTin at noted.lol
OliveTin gives safe and simple access to predefined shell commands from a web interface. - GitHub - OliveTin/OliveTin at noted.lol