• Stars
    star
    419
  • Rank 103,397 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A chat server that can run on Raspberry Pi

An IRC like chat system written in Node.js

Build Status

Project Status

The original goal of the project was to build fun little project to let people build their local communities. It was fun talking to many folks, getting contributions, and a journey from Go to Node. Maintaining an opensource project, is not an easy chore. It requires immense energy, and hours of careful thinking. Unfortunately I no longer have the time or energy to continue doing that. With the limited success, I feel leaving this project in it's current state is the most prudent thing I can do. I am still reachable by email, and maintainance PRs are welcome.

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

More Repositories

1

marmot

A distributed SQLite replicator built on top of NATS
Go
1,550
star
2

LevelDBWinRT

Windows Runtime Component for LevelDB. This is an unofficial port of LevelDB for Windows 10 Universal Platform (UWP)
C++
90
star
3

drep

dynamic regular expression print
Rust
89
star
4

node-cache-manager-sqlite

A modern SQLite store for node-cache-manager
JavaScript
50
star
5

oorja

Library for Object Oriented Javascript
JavaScript
37
star
6

moousture

A mouse gesture library written soley in javascript with power and flexiblity to mould itself for you. Implemented on Mootools following the Object Oriented standards. Library is aimed to set out a future framework for mouse guesters for any browser including modern mobile devices.
JavaScript
36
star
7

RedisDirectory

Lucene Directory Storage on top of Redis
Java
28
star
8

marmot-pocketbase-flyio

A demo setup of Marmot with PocketBase + Fly.io
Shell
17
star
9

rues

Rule evaluation sidecar
Rust
17
star
10

wadda

Wadda is a lightweight JavaScript library that uses HTML5 canvas for zooming images.
JavaScript
13
star
11

sqlite-y-crdt

Y-CRDT extension for SQLite
Rust
10
star
12

htmxido

HTMX generation in Python 3 using DSL
Python
10
star
13

lsm-windows

A port of SQLite LSM for Windows platform
C
9
star
14

KoduStore

A basic object store built for LevelDB UWP with secondary index support
C#
5
star
15

Bluraity

Javascript base arbitaray HTML element Blur effect!
JavaScript
3
star
16

phanpy

Phanpy is dead simple JSON streaming HTTP interface over Postgres to execute your queries.
Go
3
star
17

crankshaft

An pluggable go web server
Go
1
star
18

heimdall

1
star