
Shout: The self-hosted web IRC client - rocky1138
http://shout-irc.com/
======
Scene_Cast2
I've switched to Matrix[1] with auto-bridging to freenode. It automatically
syncs new notifications across all devices, that way when I read something on
the desktop, the notifications on my phone are gone. It has a slew of other
cool features, too.

I use vector.im for desktop and matrix console for android.

[1] [http://matrix.org/](http://matrix.org/)

~~~
mintplant
The homepage says

> Fully distributed persistent chatrooms with no single points of control or
> failure

but looking at vector.im, channels seem to be based at specific servers, like
"#matrix:matrix.org". How does that work? Also, what's the plan to deal with
banning spammers and so forth if there's no central control?

~~~
Scene_Cast2
Disclosure: I'm not a matrix dev.

The API intro page[1] is a good start. Basically, a client authenticates with
their homeserver. Multiple homeservers can "access" a single room. There is a
server-server API for synchronization. I don't know how this maps onto
vector.im / matrix.org

Lots of good discussion by official devs here
[https://news.ycombinator.com/item?id=8997844](https://news.ycombinator.com/item?id=8997844)
and
[https://news.ycombinator.com/item?id=8267610](https://news.ycombinator.com/item?id=8267610)

Spammers: each room can have mods / admins, just like in IRC. I don't know how
bans are enforced on a technical level.

[1]
[http://matrix.org/docs/spec/r0.0.1/intro.html](http://matrix.org/docs/spec/r0.0.1/intro.html)

------
fiatjaf
I've used this for months. It stops working for no reason. I think it eats up
too much memory and keeps increasing memory usage. I don't know, but I know it
crashes after a few days.

~~~
sbarre
How are you running it?

I've had a shout server running on my DO droplet for 8 months now, and I've
never had any issues.

I run it using nginx and Passenger (and the setup was quite simple, I had
never set up a node app in production before doing this).

~~~
gravypod
Could you do a blog post or something to show what you did?

I used it until I got the crashes just like parent.

------
colinbartlett
It's great to see projects have detailed deployment instructions for getting
up and running very quickly:

[http://shout-irc.com/docs/deployment/docker.html](http://shout-
irc.com/docs/deployment/docker.html)

I've seen some projects now even have "Deploy to Heroku" buttons, which is
fantastic. I wish Digital Ocean had something similar. Looks like you should
be able to run this on a cheap $5 droplet?

~~~
fiatjaf
A cheap $5 droplet can run 20 instances of this, probably.

~~~
Kihashi
I don't know about 20 instances. It uses up about 173MB of memory on my
instance.

~~~
fiatjaf
Yeah, probably not 20. See related comment thread:
[https://news.ycombinator.com/item?id=11013579](https://news.ycombinator.com/item?id=11013579)

------
xena
I run this for PonyChat and run into memory leaking issues. It runs out of
memory on a 1 GB node about weekly.

~~~
Kihashi
I've been using it for over 6 months now with multiple users connected to
multiple servers with quite a few active channels. I've had it crash from
memory leaks (on a 1GB Linode VPS) once in all that time. Maybe PonyChat is
just waaaay more active than the channels I'm in? At the moment, HTOP reports
it using about 17% of my memory.

~~~
josegonzalez
Not a memory leak. Messages are persisted in-memory. So more messages == more
memory usage.

~~~
duaneb
> Messages are persisted in-memory.

Unbounded storage is a leak. What kind of server would one build that would
always eventually crash under completely normal usage?

~~~
goldbrick
Lots of them in fact, when you consider logging to disk.

~~~
duaneb
...and I sincerely hope you are using log rotation or your server will
eventually become useless, too.

~~~
xena
I have 4 years of IRC logs in about 4 GB of uncompressed text. YMMV but IRC is
not bandwidth or disk-intensive.

~~~
duaneb
Sure. It would also be a pretty shitty server if it crashed because nobody had
the forethought to realize history uses memory. 4GB of memory will always be
enough....

------
forbiddenlake
As a (small) network owner, this is not yet ready to use on the network web
site, because it does not support WEBIRC and so all web clients appear to come
from the same IP. There's an issue open on GitHub about it.

------
gmfawcett
What does "self-hosted" mean in this context? Just that you host your own
instance of the Web application?

~~~
Kihashi
Pretty much. You would run your own instance of Shout on your own server.

------
pieterhg
It would be great if you could add some kind of avatar system on top of (or
outside of) IRC with this client. Also auto expandable URLs, emoji support and
pretty much everything Slack offers.

We need an IRC-based Slack alternative badly!

~~~
scrollaway
I'm going to put this out there because I'm not sure where else to.

Recently I had the need for a better gitter-irc two-way gateway than gitter-
irc-bot. Specifically, I wanted to be able to run multiple mirrors off a
single bot/account. I started writing a multi-protocol gateway and the goal
was to support slack, gitter, mattermost, irc and possibly matrix with a
plugin API.

Here's the prototype:
[https://github.com/jleclanche/gitterway](https://github.com/jleclanche/gitterway)

It's in python. I started rewriting it in Go and then found out toml support
in go was lacking, then I sort of gave up... if anyone's interested in picking
it up, file an issue on there!

~~~
heavenlyhash
Toml support in go is... lacking? Did you try
[https://github.com/BurntSushi/toml](https://github.com/BurntSushi/toml) ?

That author also wrote a test suite in go that compares all the _other_ toml
implementations for interoperability. I'd say it's pretty high quality.

~~~
scrollaway
I did! I should have said it's incomplete. I ran across #70[1] which is kind
of really needed for the config structure I had in mind. After that I just
went back to working on other stuff...

[1]
[https://github.com/BurntSushi/toml/issues/70](https://github.com/BurntSushi/toml/issues/70)

~~~
heavenlyhash
Ah. Bummer. Interesting to know, though.

I'm kind of un-bullish on toml in general, sadly. I tried toml in a couple of
projects, and found for structures nested beyond a certain level, it doesn't
really seem all that simple anymore. I ended up going back to json or yaml
(only with a parser that doesn't implement most of the fancy features of yaml,
for conservation-of-sanity reasons, of course).

~~~
scrollaway
Have you seen inline tables? It solves what you mention pretty well, which is
why I was looking for it for this project.

------
CompConf
I've used Quassel ( [http://www.quassel-irc.org](http://www.quassel-irc.org) )
for a similar purpose.

An Android client, QuasselDroid (
[http://quasseldroid.iskrembilen.com/](http://quasseldroid.iskrembilen.com/)
), has been my best IRC experience on Android.

~~~
kuschku
By the way, we are currently rewriting the Android client — with material
design, far more features, and hopefully better notifications.

ETA is around April.

------
felixrieseberg
If anyone wants to give Shout a try - you can run it in Azure for free (via
free web apps). Also, you can deploy it with one click:
[https://github.com/felixrieseberg/shout-
azure](https://github.com/felixrieseberg/shout-azure)

Disclaimer: Love Shout, just made this

------
kehrlann
Interesting app, I've been using it here and there, mostly with a self-hosted
IRC server. More or less a completely self-hosted chat system.

The UI is clean, and once it's up and running the experience is pretty smooth
for users. However : \- Quite a hassle to install and maintain your own IRC
server ... \- The server stores everything in memory. Pretty neat the first
time you use it, but it tends to leak. \- Your user DB is just a bunch of json
files, with no extensibility built-in. It could really use a "users" plugin,
that connects to an external auth system ...

------
rly_ItsMe
I use ZNC ([http://wiki.znc.in/ZNC](http://wiki.znc.in/ZNC)) as bouncer for
years now. It is stable, fully developed, has support for multiple networks,
SSL support, IPv6, a Web interface and lots of other features. Plus its easy
installed as 'yum install znc'. I did not read any advantage, neither in
comfort nor in features that Shout has compared to ZNC. What reason could one
have to switch? Except to be on the bleeding edge?

------
hardwaresofton
Thanks for including a demo, I enjoyed getting the preview and using it. It
looks like a bunch of people from HN are enjoying it right now as well.

------
vertex-four
I've been using this as my primary IRC client for a while now, and am really
enjoying it, aside from it being difficult to reconnect to IRC servers when it
occasionally disconnects. It's perfect for use with Chromebooks, tablets, and
similar.

------
M2Ys4U
You can self-host Kiwi IRC,[0] which is also a web-based IRC client.

Disclosure: I'm one of the Kiwi devs.

[0] [https://kiwiirc.com](https://kiwiirc.com)

------
jfuhrman
I use IRCCloud.com, but this looks very interesting to throw on my Linux
server on Google Cloud to play around with.

------
pbreit
Love the clean, simple UI.

What utilities were used to build? I see Node, obviously. Socket.io it looks
like? Any sort of framework?

------
rekoros
Will it work with [https://sameroom.io](https://sameroom.io)?

------
gchokov
oh, how I miss the days when everyone was on IRC. Unrelated question, but what
is IRC used for nowadays, most often?

~~~
galaktor
Similar to mailing lists, IRC might be less mainstream but is still heavily
used in niches, i.e. for development and support of open source projects. The
simplicity of the protocol makes it easy to use for automation (bots), i.e. CI
servers or similar. I've also seen networks dedicated to file sharing.

~~~
gchokov
Interesting, would never think of CI use! Thanks for the reply!

