How to Install JSXC on Linux Mint

JSXC is a powerful and easy-to-use web-based chat system, which you can use to chat with friends and family or even to communicate with colleagues at work. In this tutorial, we will guide you through the steps of installing JSXC on Linux Mint.

Prerequisites

Before we start, make sure your system meets the following requirements:

Step 1: Install Apache and PHP

JSXC requires Apache and PHP, so if you haven't installed them yet, you can do so by running the following command:

sudo apt-get install apache2 libapache2-mod-php

Step 2: Install MYSQL

If MYSQL is not already installed on your system, you can install it by running the command:

sudo apt-get install mysql-server mysql-client

Step 3: Install JSXC

Follow these steps to install JSXC

  1. Download the latest JSXC from https://jsxc.org
  2. Extract the contents from the downloaded archive and move them to the web server's directory. The default directory for Apache on Linux Mint is /var/www/html. So, to move the extracted JSXC files to the default directory, run the following command:
sudo mv jsxc /var/www/html/
  1. Assign the required permissions:
sudo chown -R www-data:www-data /var/www/html/jsxc
sudo chmod -R 755 /var/www/html/jsxc
  1. Create a new MySQL database, username, and password. You can create a new database and user using the following command:
sudo mysql -u root -p
CREATE DATABASE jsxc_db;
CREATE USER 'jsxc_user'@'localhost' IDENTIFIED BY 'new_password_here';
GRANT ALL PRIVILEGES ON jsxc_db.* TO 'jsxc_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
  1. Rename the config.js.dist to config.js file, which is located in the /var/www/html/jsxc/settings directory:
sudo mv /var/www/html/jsxc/settings/config.js.dist /var/www/html/jsxc/settings/config.js
  1. Edit the config.js file, which will be used to configure JSXC. Please replace database name, user name, password with your own database information
sudo nano /var/www/html/jsxc/settings/config.js
/* create a config object only when used from within mod */
var config = {};

config.defaultTemplate = '/templates/jsxc.html';
config.loginForm = {
  form: '#login-form',
  jid: '#userjid',
  pass: '#password',
  username: '[name=username]',
  domain: '[name=domain]'
};
config.xmpp = {
  url: 'wss://REPLACE_WITH_YOUR_DOMAIN:/xmpp-websocket',
  domain: 'REPLACE_WITH_YOUR_DOMAIN',
  overwrite: true,
  jid: 'jsxc_user@REPLACE_WITH_YOUR_DOMAIN/JSXC',
  password: 'REPLACE_WITH_YOUR_PASSWORD',
  resource: 'JSXC',
  onlogin: true
};
config.status = {
  // this is called if the user clicks on the status message
  // should be a function with one string message parameter
  onClick: null
};
config.checkFlash = function() { return false; };
config.rest = {
  //this must be adapted to your installation. For further instructions see https://github.com/jsxc/xmpp-cloud-auth/wiki/rest-authentication
  endpoint: 'https://REPLACE_WITH_YOUR_DOMAIN/api/jsxc/authenticate',
  method: 'json'
},
config.otr = {
  debug: true,
  SEND_WHITESPACE_TAG: true,
  WHITESPACE_START_AKE: true,
  ERROR_START_AKE: true,
  TIMEOUT: 120000,
  POLICY: {
    ALLOW_V2: 'NEVER',
    ALLOW_V3: 'OPPORTUNISTIC',
    REQUIRE_ENCRYPTION: 'ALWAYS',
    SEND_WHITESPACE_TAG: 'IF_SENDING',
    WHITESPACE_START_AKE: 'IF_SENDING',
    ERROR_START_AKE: 'NEVER',
    SEND_TAG: 'IF_SENDING'
  },
  TRANSPORTS: {
    'end-to-end': 1,
    'scram-sha-1': 1,
    'scram-sha-256': 1,
    'scram-sha-512': 1
  }
}, config.getDBConnection = function() {
  return {
    host: 'localhost',
    database: 'jsxc_db',
    user: 'jsxc_user',
    password: 'new_password_here',
    type: 'mysql'
  };
};
config.bookmarks = {
  url: 'https://emacs.dk/bookmarks.json',
  removeServerName: true,
};

module.exports = config;

Step 4: Restart Apache

After completing all the steps mentioned above, restart your Apache server:

sudo service apache2 restart

Congratulations! You have successfully installed JSXC on your Linux Mint system, and you are now ready to start using it to chat with your friends and colleagues.

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!