cryptalk/README.md

138 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

2021-11-03 15:35:57 -04:00
![cryptalk](/screenshot.png)
2021-11-03 16:05:59 -04:00
![Node.js CI](https://github.com/Hexagon/cryptalk/workflows/Node.js%20CI/badge.svg?branch=master)
2021-11-03 15:35:57 -04:00
[![npm version](https://badge.fury.io/js/cryptalk.svg)](https://badge.fury.io/js/cryptalk)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/753ef40cec1747c2b5025f834635375b)](https://www.codacy.com/gh/Hexagon/cryptalk/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Hexagon/cryptalk&utm_campaign=Badge_Grade)
2021-11-09 17:43:21 -05:00
# Cryptalk
2021-11-03 15:35:57 -04:00
2021-11-09 17:43:21 -05:00
Cyptalk is a HTML5/Node.js based, client side (E2EE) encrypted instant chat
2021-11-03 15:35:57 -04:00
2021-11-09 17:43:21 -05:00
## Features
2021-11-03 15:35:57 -04:00
2021-11-09 17:43:21 -05:00
* Client side AES-256-CBC encryption/decryption (the server is just a messenger)
* 256 bit key derived from your passphrase using PBKDF2
* Messages torched after a configurable delay, default is 600s.
* Simple setup using npm, Docker or Heroku
* Notification sounds (mutable)
* Native popup notifications
* Configurable page title
* Nicknames, optional.
* Quick-links using http://server/#Room:Passphrase, optional and insecure
2021-11-03 15:35:57 -04:00
2021-11-09 17:43:21 -05:00
## Installing
2021-11-03 15:35:57 -04:00
2021-11-09 17:43:21 -05:00
### Docker setup
2021-11-03 15:35:57 -04:00
To run latest cryptalk with docker, exposed on host port 80, simply run the following command to pull it from docker hub
```bash
sudo docker run -d --restart=always -p 80:8080 hexagon/cryptalk
```
2021-11-09 17:43:21 -05:00
### Heroku setup
2021-11-03 15:35:57 -04:00
Click the button below
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/hexagon/cryptalk)
2021-11-09 17:43:21 -05:00
### Docker setup without using docker hub
2021-11-03 15:35:57 -04:00
Clone this repo, enter the new directory.
Build image
```bash
docker build . --tag="hexagon/cryptalk"
```
Run container, enable start on boot, expose to port 80 at host
```bash
sudo docker run -d --restart=always -p 80:8080 hexagon/cryptalk
```
Browse to ```http://<ip-of-server>/```
Done!
2021-11-09 17:43:21 -05:00
### npm setup
2021-11-03 15:35:57 -04:00
Install node.js, exact procedure is dependant on platform and distribution.
Install the app from npm
```bash
npm install cryptalk -g
````
Then issue the following to start the app
```bash
cryptalk
```
Browse to ```http://localhost:8080```
Done!
2021-11-09 17:43:21 -05:00
## Usage
2021-11-03 15:35:57 -04:00
```
Available commands:
Client:
/key StrongPassphrase Sets encryption key
/nick NickName Sets an optional nick
/mute Audio on
/unmute Audio off
/clear Clear on-screen buffer
/help This
/title Set your local page title
/torch AfterSeconds Console messages are torched
after this amount of seconds
(default 600).
Room:
/join RoomId Join a room
/leave Leave the room
/count Count participants
Host:
/connect Connect to host
/disconnect Disconnect from host
You can select any of the five last commands/messages with up/down key.
Due to security reasons, /key command is not saved, and command
history is automatically cleared after one minute of inactivity.
It is highly recommended to use incognito mode while chatting,
to prevent browsers from keeping history or cache.
```
2021-11-09 17:43:21 -05:00
## Development
Install node.js (development require >=12.0), exact procedure is dependant on platform and distribution.
Clone this repo
```bash
git clone https://github.com/Hexagon/cryptalk.git
cd cryptalk
```
Pull dependencies from npm
```bash
npm install
```
Start server
```bash
2021-12-31 11:37:29 -05:00
npm run start
2021-11-09 17:43:21 -05:00
```
Browse to ```http://localhost:8080```
To work on the JavaScript, edit the code in ```client/source/```. To test the changes, first run ```npm run build``` to lint, build and minify the code. Then restart the server.