/pychat

webchat via WebSockets/WebRTC that allows messaging/video call/screen sharing

Primary LanguageTypeScriptMIT LicenseMIT

Docker Cloud Build Status Docker Cloud Build Status Scrutinizer Code Quality Codacy Badge

Table of contents

About

This is free web (browser) chat, that features:

  • Sending instant text messages via websockets.
  • Sending images, smiles, anchors, embedded youtube, giphy, code highlight
  • Making calls and video conference using Peer to peer WebRTC.
  • Sharing screen during call or conference
  • Sending files directly to another PC (p2p) using WebRTC + FileSystem Api (up to 50MByte/s, limited by RTCDataChannel speed)
  • Editing images with integrated painter
  • Login in with facebook/google oauth.
  • Sending offline messages with Firebase push notifications
  • Responsive interface (bs like)+ themes

When should I use pychat:

Pychat Slack Skype Telegram Viber
Open Source + - - - -
Free + +/- +/- + +/-
Screen sharing + + - - -
Syntax highlight + - - - -
Unlimited history + +/- + + +
Mobile phone call - - +/- - +/-
Audio/Video conference + + + + -
Can run on your server + - - - -
Audio/Video messages + - - + +
P2P file sharing + - - - -
Desktop/mobile clients* - + + + +/-
3rd-party integration* - + - - -

* coming soon...

Get started:

You can always use pychat.org, but if you want to run Pychat yourself you have options below:

Run test docker image

Please don't use this build for production, as it uses debug ssl certificate, lacks a few features and all files are located inside of container, meaning you will lose all data on container destroy.

  • Download and run image:
docker run -p 443:443 deathangel908/pychat-test

Run prod docker image

  • You need create ssl certificates: server.key and certificate.crt. For example
openssl req -nodes -new -x509 -keyout server.key -out certificate.crt -days 3650
docker volume create pychat_data
containerid=`docker container create --name dummy -v pychat_data:/data hello-world`
docker cp settings.py dummy:/data/settings.py
docker cp production.json dummy:/data/production.json
docker cp certificate.crt dummy:/data/certificate.crt
docker cp server.key dummy:/data/server.key
docker rm dummy

If you need to edit files inside container you can use

docker run -i -t -v pychat_data:/tmp -it alpine /bin/sh
  • Run image with:
docker run -v pychat_data:/data -p 443:443 deathangel908/pychat

Run without docker

Take a look at INSTALL.md

Contributing and development setup: