irslackd
Slack ended IRC support on May 15, 2018. So, we built our own Slack-IRC gateway.
irslackd is actively developed and used daily on a 1000+ user Slack workspace.
Features
- TLS-encrypted IRCd
- Multiple Slack accounts/workspaces
- Channels, private channels, DMs, group DMs, threads
- Receive reactions, message edits, message deletes, attachments
- Proper en/decoding of @user, #channel, @team tags
Setup
Using docker-compose
-
Clone irslackd and run docker-compose:
$ git clone https://github.com/adsr/irslackd.git $ docker-compose up
Recommendation: Watch docker-compose build output for the generated certificate's fingerprint (used later for verification).
-
Connect your IRC client to irslackd which listens on
127.0.0.1:6697
. See: Configure your Slack account and IRC client
Manual
-
Install Node >=8.x and npm. You can check your version of Node by running
node --version
. -
Clone irslackd:
$ git clone https://github.com/adsr/irslackd.git $ cd irslackd $ npm install # Fetch dependencies into local `node_modules/` directory
-
Run
./bin/create_tls_key.sh
to create a TLS key and cert. This will put a private key and cert in~/.irslackd
. Note the fingerprint. -
Run irslackd:
$ ./irslackd
By default irslackd listens on
127.0.0.1:6697
. Set the command line options-p <port>
and/or-a <address>
to change the listen address.
Configure your Slack account and IRC client
-
Follow the link below to obtain an irslackd token for your Slack workspace:
NOTE: This is broken at the time of writing (25-Jan-2022). The callback was hosted on hook.io which appears to be dead. Need to find a new host. See the wiki for setting up an
xoxc
token instead which should still work.Select the desired workspace in the dropdown in the upper right corner. Click 'Authorize', and copy the access token. It will look something like this:
xoxp-012345678901-012345678901-012345678901-0123456789abcdef0123456789abcdef
-
Connect to irslackd via your IRC client, e.g., WeeChat:
/server add irslackd_workspace localhost/6697 /set irc.server.irslackd_workspace.ssl on /set irc.server.irslackd_workspace.ssl_fingerprint fingerprint-from-step-3 /set irc.server.irslackd_workspace.password access-token-from-step-5 /connect irslackd_workspace
Check the wiki for more client configuration notes.
-
Repeat steps 1 and 2 for each Slack workspace you'd like to connect to.
-
Enjoy a fresh IRC gateway experience.
Contribute
- Add more client configuration notes.
- File bug reports and feature requests via Github issues.
- Feel free to submit PRs. Make sure to include tests.
Tests
- To run all tests:
npm test
- To run a single test, e.g.:
npm test test_join
Related projects
- https://github.com/ltworf/localslackirc (another gateway, Python)
- https://github.com/insomniacslk/irc-slack (another gateway, Go)
- https://github.com/wee-slack/wee-slack (a terminal client, WeeChat-based)
- https://github.com/erroneousboat/slack-term (a terminal client, Go)
- https://github.com/42wim/matterircd (an IRCd for Mattermost and Slack)
- https://github.com/dylex/slack-libpurple (Slack plugin for libpurple)
irslackd Slack workspace
- Feel free to join the irslackd Slack workspace for testing your irslackd setup.