An open source live media chat.
JavaScript CSS HTML Other
Clone or download
Latest commit 366ddb1 Dec 26, 2017
Failed to load latest commit information.
lib Tons of various changes Dec 26, 2017
node_modules/captcha Revert "odili fork pull request" Dec 26, 2017
AD.png Revert "odili fork pull request" Dec 26, 2017
LICENSE added initial license file May 19, 2014
Procfile Separate routes and models Jan 29, 2014 readme changes Dec 26, 2017
block_tor modified tor blocking to use iptables Jan 31, 2014
bower.json remove vulnerable BBCode script, reimplement some tags Feb 17, 2014 remove vulnerable BBCode script, reimplement some tags Feb 17, 2014
config.js Tons of various changes Dec 26, 2017 new files Dec 26, 2017
package.json Tons of various changes Dec 26, 2017
run_livechan new files Dec 26, 2017
tor_list.txt new files Dec 26, 2017


livechan is a live IRC like image board written in node.js.



Suggested OS is ubuntu 14.04

The commands below are based on a Debian installation, other distros / operating systems will vary.

  1. Install git:

    sudo apt-get install git

  2. Install node.js and NPM:

    sudo apt-get install nodejs npm nodejs-legacy

(nodejs-legacy creates a symlink from /usr/bin/node to Debian's location /usr/bin/nodejs, needed for installation scripts that call "node".)

  1. Install MongoDB:

    sudo apt-get install mongodb

  2. Install ImageMagick:

    sudo apt-get install imagemagick

  3. Install the dependencies of the canvas module:

    sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++

  4. Install FFmpeg. See instructions at

Add the sources from to your /etc/apt/sources.list and do:

sudo apt-get update
sudo apt-get install deb-multimedia-keyring
sudo apt-get update
sudo apt-get install ffmpeg

Alternately you can download a static build from and copy the extracted binaries to /usr/local/bin:

sudo cp ffmpeg ffprobe /usr/local/bin

Note that many distributions come with Libav in place of FFmpeg. FFmpeg is recommended. Using Libav instead should be possible, but will require appropriate changes to format-image.js and generate-thumbnail.js in lib/utils.

If you do not want audio/video support, you should edit your config.js so that video_formats and audio_formats are both empty arrays.

  1. Clone the git repo

    git clone

8.a) Install the dependencies with npm install

cd livechan-js; npm install

8.b) Download a country lookup database

wget; gunzip GeoLiteCity.dat.gz
  1. Restore the changes to the captcha module which were overwritten by npm install:

    git checkout node_modules/captcha/captcha.js

  2. Get ircd.js modified for livechan

    cd ..; git clone; cd ircd.js; npm install; cd ../livechan-js

  3. Make sure the public/tmp/uploads and public/tmp/thumb folders are writable

    chmod 777 public/tmp/uploads public/tmp/thumb

  4. Set the admin password

    node lib/set-password.js

This is used for the admin commands to delete/change posts and ban users.

  1. Run LiveChan

    npm start

Nginx proxy config

Requires nginx 1.3+:

# the IP(s) on which your node server is running. I chose port 8083.
upstream app_livechan {

# the nginx server instance
server {
    access_log /var/log/nginx/livechan.log;

    # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options
    location / {
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;

      proxy_pass http://app_livechan/;
      proxy_redirect off;

Relevant links

Live instance: