Git Product home page Git Product logo

raspchat's Introduction

An IRC like chat system written in Node.js

Build Status

Demo

Basic demo is available Here.

Why?

I had a spare Raspberry Pi and I wanted to use it! One of ideas in my head was to have your own on-premise chat server that you can use for cheap and own your data (< $50 hardware) forever and free!

Requirements

For compiling you need:

  • Node 8+ (with npm5)
  • libsqlite3
  • OpenSSL 1.x.x (for uWebsockets)
  • zlib 1.x (for uWebsockets)
  • libuv 1.3+ or Boost.Asio 1.x (both optional on Linux)

You can use following commands to install them:

  • Fedora: sudo dnf install openssl-devel zlib-devel
  • Homebrew: brew install openssl zlib libuv
  • Vcpkg: vcpkg install openssl zlib libuv and/or vcpkg install openssl:x64-windows zlib:x64-windows libuv:x64-windows

Once you have installed dependencies above just do npm install && gulp (creates a dist folder that you can upload to your machine). Project can run on almost any machine that nodejs supports. I have successfully tested it on Raspberry Pi, Orange Pi etc.

Configurations

You can use a .env file or environment variables to configure the server, here are the environment variables you can change:

  • RC_URL (default http://localhost:3000/) Raspchat URL where server would start listening
  • DB_PATH (default chat-log.db) Database path for SQLite database
  • WS_URL (default ws://localhost:3000/chat) Websocket URL if you are running it behind some proxy
  • WSS_URL (default wss://localhost:3000/chat) Websocket secure URL if you are running it behind some proxy

You can read about .env file here

Features:

  • Basic GIF support
  • Basic nick support
  • Channel (join/leave/list-members) support
  • Markdown support
  • Message history on group join

Pending:

  • Refactor frontend using hyperapp
  • Scrollable history
  • Unit tests
  • Introduce admin panel with:
    • Reserved alias authorization
    • IP limiting/banning
    • Fixed alias with passwords

raspchat's People

Contributors

chefkeeper avatar emedvedev avatar maxpert avatar mehedih avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.