/irslackd

self-hosted IRC gateway to Slack

Primary LanguageJavaScriptApache License 2.0Apache-2.0

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.

Build Status

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

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

  2. Connect your IRC client to irslackd which listens on 127.0.0.1:6697. See: Configure your Slack account and IRC client

Manual

  1. Install Node >=8.x and npm. You can check your version of Node by running node --version.

  2. Clone irslackd:

    $ git clone https://github.com/adsr/irslackd.git
    $ cd irslackd
    $ npm install    # Fetch dependencies into local `node_modules/` directory
    
  3. 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.

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

  1. Follow the link below to obtain an irslackd token for your Slack workspace:

    Authorize irslackd

    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

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

  3. Repeat steps 1 and 2 for each Slack workspace you'd like to connect to.

  4. Enjoy a fresh IRC gateway experience.

Contribute

Tests

  • To run all tests: npm test
  • To run a single test, e.g.: npm test test_join

Related projects

irslackd Slack workspace