This is web app version of electerm app, running in browser, almost has the same features as the desktop version.
Powered by manate
Open-sourced terminal/ssh/sftp/telnet/serialport/RDP/VNC/Spice/ftp client(linux, mac, win).
Features
- Works as a terminal/file manager or ssh/telnet/serialport/RDP/VNC/WEB/Spice/sftp/ftp client
- Global hotkey to toggle window visibility (similar to guake, default is
ctrl + 2) - Multi platform(linux, mac, win)
- πΊπΈ π¨π³ π§π· π·πΊ πͺπΈ π«π· πΉπ· ππ° π―π΅ πΈπ¦ π©πͺ π°π· Multi-language support(electerm-locales, contributions/fixes welcome)
- Double click to directly edit (small) remote files.
- Auth with publicKey + password.
- Support Zmodem(rz, sz).
- Support ssh tunnel.
- Support Trzsz(trz/tsz), similar to rz/sz, and compatible with tmux.
- Transparent window(Mac, win).
- Terminal background image.
- Global/session proxy.
- Quick commands
- UI/terminal theme
- Sync bookmarks/themes/quick commands to github/gitee secret gist
- Quick input to one or all terminals.
- Init from url query string wiki
- Support mobile device(responsive design)
- AI assistant integration (supporting DeepSeek, OpenAI, and other AI APIs) to help with command suggestions, script writing, and explaining selected terminal content
Migration from v2 to v3
Since electerm-web v3, the application uses SQLite instead of NeDB for better performance and stability. If you're upgrading from v2 and have existing data, you'll need to migrate your data.
Migration Steps
-
Install electerm-data-tool:
npm install -g electerm-data-tool
-
Export your data from NeDB:
# data folder should have a nedb-database child folder electerm-data-tool --data-path "/path/to/your/data-folder-which-has-nedb-database-sub-folder" --app-type web migrate
-
Start electerm-web v3 and go to the Data Sync panel
-
Import your data: Upload the
data.jsonfile in the Data Sync panel to restore your data
Download
todo
Upgrade
todo
Support
Would love to hear from you, please tell me what you think, submit an issue, Start a new discussion, create/fix language files or create pull requests, all welcome.
Sponsor this project
github sponsor
https://github.com/sponsors/electerm
kofi
wechat donate
Prerequisites
- git
- Nodejs 22, npm, recommend use fnm to install nodejs/npm
- python/make tools, for Linux:
sudo apt install -y make python g++ build-essential, for MacOS: install Xcode, for Windows, installvs studioornpm install --global --production windows-build-tools
One line script to deploy from source code
for Linux or Mac
curl -o- https://electerm.html5beta.com/scripts/one-line-web.sh | bashor
wget -qO- https://electerm.html5beta.com/scripts/one-line-web.sh | bashfor Windows
Invoke-WebRequest -Uri "https://electerm.html5beta.com/scripts/one-line-web.bat" -OutFile "one-line-web.bat" cmd.exe /c ".\one-line-web.bat"
Deploy from docker image
Check electerm-web-docker
Dev
# tested in ubuntu16.04+/mac os 10.13+ only # needs nodejs/npm, suggest using nvm to install nodejs/npm # https://github.com/creationix/nvm # with nodejs 22.x git clone git@github.com:electerm/electerm-web.git cd electerm-web cp .sample.env .env # edit DB_PATH to set db path, default path ./database # to use same data as desktop electerm # for Mac OS DB_PATH="/Users/<your-user-name>/Library/Application Support/electerm" # for Linux OS DB_PATH="/home/<your-user-name>/.config/electerm" # for Windows OS DB_PATH="C:\\Users\\<your-user-name>\\AppData\\Roaming\\electerm" npm config set legacy-peer-deps true npm i # start webpack dev server npm start # in a separate terminal session run app npm run dev #then visit http://127.0.0.1:5580 with browser # code format check npm run lint # code format fix npm run fix
Build && run in production
npm run build # run production server npm run prod # or ./build/bin/run-prod.sh #then visit http://127.0.0.1:5577 with browser
Run in server
# Edit .env, set ENABLE_AUTH=1 # if not enabled, everyone can use it without login SERVER_SECRET=some-server-secret SERVER_PASS=some-login-pass-word # run prod app ./run-electerm-web.sh # Check examples/nginx.conf examples/nginx-ssl.conf for domain binding nginx conf example
License
MIT

