Skip to content

Latest commit

 

History

268 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSHChat

Languages: English (this file) · 中文说明

SSHChat is a multi-user chat server over SSH/TCP with room chat, private messages, offline leave-messages, secure HTTP file transfer, RSS news, a small library reader, dictionary lookup, and room mini-games (chess, gomoku, go, xiangqi, poker variants, werewolf, and more). An optional Electron GUI is included.

UI language defaults to English. Switch with /lang zh (preference is saved per nickname). The Electron client defaults to English and syncs /lang on connect. Sanguosha (sanguo) move/skill text is still mostly Chinese in this release; other games localize at send time.


Quick start (users)

Ask your admin for host, SSH port, and username, then:

ssh -p <port> <user>@<host>

On first connect you will see an active-room tip line. Useful commands:

Command Purpose
/help Full command help
/lang en / /lang zh UI language (saved per nick)
/names Users in the active room
/rooms Rooms you joined (* = active)
/join <room> Join and switch
/msg <nick> <text> PM (or leave-message if offline)
/sendfile File to current room
/sendfile <nick> File to a user
/game help Mini-game help
/news RSS headlines
/library Browse books
/dict <word> Dictionary
/dnd on Terminal do-not-disturb for game spam

Beginner phone client (iSH): docs/en/ish-beginner.md · Chinese: 小白使用说明书-iSH.md

File sharing guide: docs/en/file-sharing.md · Chinese: USER_GUIDE_FILE_SHARING.md


Deploy (admins)

# Typical Linux VPS
./deploy.sh

# iSH (Alpine on iPhone/iPad) as a *server*
# See docs/en/deploy-ish.md and DEPLOY-iSH.md

Common env vars:

Variable Meaning
SSHCHAT_PORT Chat TCP port (default 12345)
SSHCHAT_DEFAULT_LOCALE en (default) or zh
SSHCHAT_LOCALE_STORE Path for per-nick language prefs (default user_locales.json)
SSHCHAT_RATING_STORE Game ratings JSON
SSHCHAT_SESSION_STORE In-progress game sessions
SSHCHAT_OFFLINE_MSG_STORE Offline leave-messages

Federation (multi-server), users, firewall, and Cloudflare file HTTPS are documented in detail in README.zh.md.

iSH server notes: docs/en/deploy-ish.md · DEPLOY-iSH.md


Mini-games

Games are per room (one active match at a time). Host can /game on|off <name>.

Id Notes Aliases
chess International chess
gomoku 15×15
go 19×19 weiqi, baduk
xiangqi Chinese chess cchess
sanguo Sanguosha (UI mostly ZH for now) sgs, 三国杀
werewolf 5–12 players langrensha
holdem Texas Hold'em poker, texas
zjh Zha Jin Hua zhajinhua
niutou Niu Tou Wang
mahjong 4 players (+ AI fill)
doushou Jungle / Dou Shou Qi

Typical flow:

/game new chess
/game join
/game move e2e4
/game show
/game resign

Many move verbs accept Chinese or English aliases (e.g. holdem 跟注 / call).


Electron GUI

cd electron
npm ci
npm run dev

Portable Windows build: npm run build:portableelectron/release/.

The GUI has its own locale toggle (default English). On connect it sends /lang so server chat text matches.


File transfer security (summary)

/sendfile opens a one-time HTTP(S) upload/download page. Keys are not embedded in URLs; upload and download tokens are single-use. Details: docs/en/file-sharing.md.

Upload/download HTML defaults to English; add ?lang=zh for Chinese pages.


Development

python3 -m unittest tests.test_i18n
python3 -m unittest tests.test_client_dnd
python3 test_file_preview.py

Locale catalogs live under locales/ (en.py, zh.py, game_phrases.py). Core API: i18n.py, persistence: locale_store.py.


License

See LICENSE.

About

Deploy a private chat system on Linux with a single command. Built on SSH for secure, private communication in an era when many messaging platforms are subject to surveillance.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages