Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
bed820f
Initial commit
runbgp Mar 12, 2025
7758750
Update actions to use main rather than master
runbgp Mar 12, 2025
30866ac
Bump @rollup/plugin-node-resolve from 16.0.0 to 16.0.1 (#1)
dependabot[bot] Mar 12, 2025
9c5cd14
Bump package version
runbgp Mar 12, 2025
7baa5e7
Update README.md
runbgp Mar 12, 2025
a4817a8
Bump globals from 16.0.0 to 16.2.0 (#23)
dependabot[bot] Jun 25, 2025
18a2aa9
Bump eslint from 9.22.0 to 9.29.0 (#29)
dependabot[bot] Jun 25, 2025
f497656
Bump @eslint/js from 9.22.0 to 9.29.0 (#30)
dependabot[bot] Jun 25, 2025
cdc085b
Bump @rollup/plugin-commonjs from 28.0.3 to 28.0.6 (#32)
dependabot[bot] Jun 25, 2025
b6ade3b
Bump rollup from 4.35.0 to 4.44.0 (#33)
dependabot[bot] Jun 25, 2025
ec274fb
Bump brace-expansion from 1.1.11 to 1.1.12 (#34)
dependabot[bot] Jun 25, 2025
a8970eb
Deprecate Node.js 20.x, add 24.x
runbgp Jun 25, 2025
463624d
Add Node.js 24.x, update actions
runbgp Jun 25, 2025
78c6bc8
Bump package to 1.3.2
runbgp Jun 25, 2025
ac6d48e
Bump globals from 16.2.0 to 16.3.0 (#39)
dependabot[bot] Aug 21, 2025
763d746
Bump @eslint/js from 9.29.0 to 9.33.0 (#51)
dependabot[bot] Aug 21, 2025
a9a5443
Bump eslint from 9.29.0 to 9.33.0 (#52)
dependabot[bot] Aug 21, 2025
dcd5846
Bump rollup from 4.44.0 to 4.46.4 (#54)
dependabot[bot] Aug 21, 2025
3fd1a7c
Bump eslint from 9.33.0 to 9.34.0 (#56)
dependabot[bot] Aug 26, 2025
cd43c9e
Bump rollup from 4.46.4 to 4.48.0 (#58)
dependabot[bot] Aug 26, 2025
a7000eb
Release version 1.3.3
runbgp Aug 26, 2025
103071f
Bump js-yaml from 4.1.0 to 4.1.1 (#79)
dependabot[bot] Jan 15, 2026
709c036
Bump @eslint/js from 9.34.0 to 9.38.0 (#78)
dependabot[bot] Jan 15, 2026
404a918
Bump rollup from 4.48.0 to 4.52.5 (#77)
dependabot[bot] Jan 15, 2026
18c3f12
Bump on-headers and serve (#80)
dependabot[bot] Jan 15, 2026
ee9f2ae
Bump eslint from 9.34.0 to 9.38.0 (#76)
dependabot[bot] Jan 15, 2026
9ced05a
Bump globals from 16.3.0 to 16.4.0 (#66)
dependabot[bot] Jan 15, 2026
c6b8d51
chore: update dependencies and fix security vulnerabilities
runbgp Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 0 additions & 38 deletions .eslintrc.json

This file was deleted.

2 changes: 0 additions & 2 deletions .github/FUNDING.yml

This file was deleted.

17 changes: 14 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
directory: "/" # Location of package manifests
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
interval: "weekly"
target-branch: "main"
open-pull-requests-limit: 10
groups:
eslint:
patterns:
- "eslint"
- "@eslint/js"
rollup:
patterns:
- "rollup"
- "@rollup/*"
12 changes: 6 additions & 6 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ name: "CodeQL"

on:
push:
branches: [ master ]
branches: [ main ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
branches: [ main ]
schedule:
- cron: '45 11 * * 3'
- cron: '0 14 * * 1'

jobs:
analyze:
Expand All @@ -43,7 +43,7 @@ jobs:

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -54,7 +54,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@v3

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
Expand All @@ -68,4 +68,4 @@ jobs:
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v3
10 changes: 5 additions & 5 deletions .github/workflows/node.js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ name: Node.js CI

on:
push:
branches: [ master ]
branches: [ main ]
pull_request:
branches: [ master ]
branches: [ main ]

jobs:
build:
Expand All @@ -16,13 +16,13 @@ jobs:

strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
node-version: [22.x, 24.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
Expand Down
16 changes: 13 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
FROM keymetrics/pm2:16-alpine
COPY . /usr/src/app
FROM node:22-alpine

WORKDIR /usr/src/app

# Copy package.json and package-lock.json first for better caching
COPY package*.json ./
RUN npm install --no-cache --production

# Copy the rest of the application
COPY . .

# Expose the port the app runs on
EXPOSE 8080
CMD [ "pm2-runtime", "start", "pm2.json" ]

# Run the application using npm start
CMD ["npm", "start"]
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because this Dockerfile does not specify a non-root USER, the npm start process runs as root inside the container, which significantly increases the impact of any remote code execution or container breakout vulnerability. An attacker who gains code execution in the app would immediately have root in the container, making it easier to access host resources or other services if the container or runtime is misconfigured. Consider running the app as a dedicated unprivileged user (for example the built-in node user) before CMD ["npm", "start"] or enforcing a non-root user at runtime.

Copilot uses AI. Check for mistakes.
3 changes: 1 addition & 2 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2014-2021 Hexagon <github.com/Hexagon>
Copyright (c) 2025 runbgp <github.com/runbgp>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

62 changes: 22 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,79 +1,61 @@
![cryptalk](/screenshot.png)

![Node.js CI](https://github.com/Hexagon/cryptalk/workflows/Node.js%20CI/badge.svg?branch=master)
[![npm version](https://badge.fury.io/js/cryptalk.svg)](https://badge.fury.io/js/cryptalk)
![Node.js CI](https://github.com/runbgp/cryptalk/actions/workflows/node.js.yml/badge.svg)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b96b4b6aa6df417aafd3d823a722e30f)](https://app.codacy.com/gh/runbgp/cryptalk/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![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&amp;utm_medium=referral&amp;utm_content=Hexagon/cryptalk&amp;utm_campaign=Badge_Grade)

# Cryptalk

Cyptalk is a HTML5/Node.js based, client side (E2EE) encrypted instant chat
**Cryptalk** is a client-side (E2EE) encrypted instant chat application built on HTML5 and Node.js.

This project is a fork of [Hexagon's Cryptalk](https://github.com/Hexagon/cryptalk) and is actively maintained. It has been updated to support Node.js 22 and includes the latest packages.

## Features

* 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
* Messages torched after a configurable delay (default is 600s)
* Simple setup using Docker or Heroku
* Notification sounds (mutable)
* Native popup notifications
* Configurable page title
* Nicknames, optional.
* Quick-links using http://server/#Room:Passphrase, optional and insecure
* Nicknames (optional)
* Quick-links using http://server/#Room:Passphrase (optional and insecure)

## Installing
## Deployment

### Docker setup
### Docker

To run latest cryptalk with docker, exposed on host port 80, simply run the following command to pull it from docker hub
To run latest cryptalk with Docker, exposed on host port 80, simply run the following command to pull it from GitHub Container registry:

```bash
sudo docker run -d --restart=always -p 80:8080 hexagon/cryptalk
sudo docker run -d --restart=unless-stopped -p 80:8080 ghcr.io/runbgp/cryptalk
```

### Heroku setup
### Heroku

Click the button below

[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/hexagon/cryptalk)
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/runbgp/cryptalk)

### Docker setup without using docker hub
### Docker build

Clone this repo, enter the new directory.

Build image
Build the image
```bash
docker build . --tag="hexagon/cryptalk"
docker build . --tag="runbgp/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
sudo docker run -d --restart=always -p 80:8080 runbgp/cryptalk
```

Browse to ```http://<ip-of-server>/```

Done!

### npm setup

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!

## Usage

```
Expand Down Expand Up @@ -114,11 +96,11 @@ to prevent browsers from keeping history or cache.

## Development

Install node.js (development require >=12.0), exact procedure is dependant on platform and distribution.
Install node.js (development requires >=18.0), exact procedure is dependant on platform and distribution.
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README states development requires Node.js >=18.0, but package.json declares engines.node as ">=22.0.0". This is confusing for contributors and can lead to setup issues; update the README to match the actual supported Node version range.

Suggested change
Install node.js (development requires >=18.0), exact procedure is dependant on platform and distribution.
Install Node.js (development requires >=22.0.0), exact procedure is dependant on platform and distribution.

Copilot uses AI. Check for mistakes.

Clone this repo
```bash
git clone https://github.com/Hexagon/cryptalk.git
git clone https://github.com/runbgp/cryptalk.git
cd cryptalk
```

Expand All @@ -127,7 +109,7 @@ Pull dependencies from npm
npm install
```

Start server
Start the server
```bash
npm run start
```
Expand Down
8 changes: 4 additions & 4 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

## Supported Versions

| Version | Supported |
| Version | Status |
| ------- | ------------------ |
| 4.0.x | :white_check_mark: |
| < 4.0 | :x: |
| 1.3.x | ✅ Supported |
| < 1.3 | ❌ Not Supported |

## Reporting a Vulnerability

Email hexagon@56k.guru. Do NOT report an issue, we will have a look at it asap.
If you discover a vulnerability, please report it via email to [runbgp@ix0.io](mailto:runbgp@ix0.io). Do not create an issue in the repository; we will address your report as soon as possible.
2 changes: 1 addition & 1 deletion app.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
"chat",
"e2ee"
],
"repository": "https://github.com/Hexagon/cryptalk"
"repository": "https://github.com/runbgp/cryptalk"
}
2 changes: 1 addition & 1 deletion client/public/js/cryptalk.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion client/public/js/cryptalk.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion client/source/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export default {
'░ ░░ ░ ▒ ▒ ░░ ░░ ░ ░ ▒ ░ ░ ░ ░░ ░ \n' +
'░ ░ ░ ░ ░ ░ ░ ░ ░░ ░ \n' +
'░ ░ ░ \n' +
' https://github.com/hexagon/cryptalk \n' +
' https://github.com/runbgp/cryptalk \n' +
' \n' +
' Tip of the day: /help \n' +
'----------------------------------------------------------------------' +
Expand Down
31 changes: 31 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import js from '@eslint/js';
import globals from 'globals';

export default [
js.configs.recommended,
{
languageOptions: {
ecmaVersion: 2020,
sourceType: 'module',
globals: {
...globals.browser,
...globals.node,
...globals.commonjs,
...globals.amd
}
},
rules: {
'indent': ['error', 'tab'],
'linebreak-style': 0,
'quotes': ['error', 'single'],
'semi': ['error', 'always'],
'eqeqeq': ['error', 'always'],
'no-undef': ['warn'],
'no-console': ['warn']
},
ignores: [
'client/public/js/cryptalk.min.js',
'node_modules/**'
]
}
];
Loading