Hacker News new | past | comments | ask | show | jobs | submit login
Shout: The self-hosted web IRC client (shout-irc.com)
222 points by rocky1138 on Feb 1, 2016 | hide | past | web | favorite | 62 comments

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/

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?

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 and 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

Is there an emacs client?

Wonderful! Thank you :)

I spent 20 minutes with this the other day and could not get connected to anything on Freenode. The user interface for this is just about as friendly as IRC. Any pointers?

I was just playing with Matrix too (Vector.im is a decent web interface for it), and managed to connect to Freenode by using #freenode_#channelname:matrix.org as the room name. Hope that helps!

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.

Yes, I believe it keeps the whole message history in memory. I also used it for a few months and had to reboot it once in a while.

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).

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

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

Classic node

That's not a Node problem, it's just a bug in the chat software.

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


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?

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

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

Yeah, probably not 20. See related comment thread: https://news.ycombinator.com/item?id=11013579

I believe so considering this is just a client for the most part, so long as you don't have 10,000 people trying to use it all at once.

I did in fact run this on a cheap $5 droplet, along with an apache2 server. Worked fine except it crashes about once a week, I think due to memory usage. I switched to weechat in a tmux session

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

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.

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

> 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?

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

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

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

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....

What is this PonyChat you speak of?

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.

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

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


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!

Nice, web client on mobile isn't responsibe though.

There's native mobile clients :)

See the recent story on IRCv3:


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

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!

Very cool! If it's helpful, here's an existing IRC server for Mattermost: https://github.com/42wim/matterircd

Toml support in go is... lacking? Did you try 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.

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

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).

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

Are avatars really that big of a feature of slack?

Emojis work just fine over IRC, https://i.imgur.com/2EeZYpP.png

Not sure what you mean with "auto expandable URLs", but there probably already exists a script for that.

Auto-expandable URL's are supported, they just need to be enabled (by running 'shout configure').

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

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

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

ETA is around April.

You can also get a web UI for Quassel. https://github.com/magne4000/quassel-webserver

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

Disclaimer: Love Shout, just made this

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 ...

I use 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?

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.

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.

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

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

Love the clean, simple UI.

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

Will it work with https://sameroom.io?

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

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.

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

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact