Skip to main content

Setting Up the IRC Bridge

Overview

The IRC bridge allows you to bridge IRC servers into your Element server.

From the Installer's Integrations page, click "Install" under "IRC Bridge"

Edit the provided bridge.yml based on the following documentation:

  • key_file: irc-passkey.pem To generate the irc-passkey.pem file, please run the following in the ~/.element-enterprise-server/legacy/certs/ directory: openssl genpkey -out passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048
  • postgres_fqdn: ircbridge-postgres Use ircbridge-postgres if using postgres-create-in-cluster otherwise point this at your external database.
  • postgres_user: ircbridge Leave this if you are using postgres-create-in-cluster.
  • postgres_db: ircbridge Leave this if you are using postgres-create-in-cluster.
  • postgres_password: postgres_password Set this to either your password for the user connecting to an existing database, or if using postgres_create_in_cluster, set this to a new password with pwgen 32 1.
  • # postgres_create_in_cluster: true # uncomment if you want the installer to install postgresql for you. Not supported with the multi-node installer, where you must use an external postgres.
  • postgres_port Can be used to specify a non-standard port. 5432 is used if not specified. Optional
  • postgres_sslmode Can be used to specify the sslmode for the Postgres connection. Options are 'disable', 'no-verify' or 'verify-full'. 'disable' is used if not specified. Optional
  • Now specify a list of Matrix IDs that have admin access to the IRC bridge such as:
    admins:
    - "@adminuser:dev.local"
    - "@adminuser2:dev2.local"
    
  • enable_presence: true This determines if presence is presented to IRC or not.
  • drop_matrix_messages_after_seconds: 0
  • bot_username: "ircbridgebot" The name of the bot.
  • enable_ident: false Whether or not to enable IRC ident.
  • ident_port_type: # HostPort or NodePort Required if enabling ident.
  • ident_port_number: 10230 Required if enabling ident.
  • logging_level: info Set the default logging level of the bridge.
  • enable_provisioning: true

Next, we have the provisioning rules section, which will make sure that rooms are not bridged if a match is made on these rules. This is useful for preventing bad actors on Matrix from flooding IRC. This section looks like:

provisioning_rules:
 # The bridge checks the joined members of a propective room and checks to see
 # if any users matching these regex sets are in the room. `exempt` users never
 # match, and will be ignored. If any user matches `conflict`, the room will not
 # be allowed to be bridged until the user is removed. Both sets take a regular expression.
 userIds:
   exempt:
     # These users never conflict, even if matching
     - "@doubleagent:badguys.com"
   conflict:
     # These users will deny a room from being bridged.
     - "@.*:badguys.com"
provisioning_room_limit: 50
  • rmau_limit: 100 Set this to the maximum number of remote monthly active users that you would like to allow in a bridged IRC room.
  • users_prefix: "irc_" Set a user prefix for irc users.
  • alias_prefix: "irc_" Set an alias prefix for irc users.
  • address: irc.someserver.net The adress of the irc server to bridge. Now for the above IRC server, we have a set of parameters that can be set:
  • name: "Server Name" The server name to show on the bridge. Now below that, you'll see the botConfig with these parameters:
  • enabled: true Leave this on.
  • nick: "MatrixBot" Nick of the bridge bot
  • username: "matrixbot" Username of the bridge bot.
  • password: "some_password" Password of the bridge bot. Generate this with pwgen 32 1

For other settings that can also be applied to this config file, please see:https://github.com/matrix-org/matrix-appservice-irc/blob/develop/config.sample.yaml#L52

You will need to re-run the installer for changes to take effect.

Connecting to the Bridge

  1. From Element, send a DM to the bridge bot /msg @ircbridgebot:element.local where element.local is you servers domain name
  2. Send the bridge !whois to see if you can get logged in to the IRC network