Skip to content

canonical/irc-bridge-operator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IRC Bridge Operator

A Juju charm deploying and managing an IRC Bridge (with Ident server) Integrator on bare metal.

This charm is meant to be used in conjunction with Synapse and related to it.

High-level overview of IRC Bridge

The IRC Bridge is implemented as an Application Service, as defined in the Matrix specification. This means it interacts with Synapse through the Application Service API, allowing it to manage virtual users, handle messages and bridge communications between Matrix and IRC efficiently.

C4Deployment
  Deployment_Node("IRC", "IRC Bridge Juju Machine Model") {
    Container(PostgreSQL, "PostgreSQL", "Database for IRC Bridge")
    Container(IRC_Bridge, "IRC Bridge", "IRC Bridge")
    Container(HAProxy, "HAProxy", "Proxy")
  }

  System(IRC, "IRC", "Internet Relay Chat")

  Person(User, "User", "Connects to Synapse")

  Deployment_Node("Synapse", "Synapse Juju K8S Model") {
    Container(Synapse, "Synapse", "Matrix homeserver")
  }

  Rel(User, Synapse, "HTTPS", "443")
  Rel(Synapse, HAProxy, "HTTPS", "443")
  Rel(HAProxy, IRC_Bridge, "HTTP", "8090")
  Rel(IRC_Bridge, IRC, "TLS", "6697")
  Rel(IRC_Bridge, PostgreSQL, "TCP", "5432")
  Rel(IRC_Bridge, Synapse, "HTTPS", "443")
  Rel(IRC, IRC_Bridge, "Identd", "1113")

  UpdateRelStyle(IRC_Bridge, IRC, $offsetY="-20", $offsetX="60")
  UpdateRelStyle(IRC, IRC_Bridge, $offsetY="-10", $offsetX="-90")
  UpdateRelStyle(IRC_Bridge, PostgreSQL, $offsetY="-30")
  UpdateRelStyle(User, Synapse, $offsetY="-30")
  UpdateRelStyle(IRC_Bridge, Synapse, $offsetY="-30", $offsetX="-20")

  UpdateElementStyle(User,  $bgColor="#E95420", $borderColor="#E95420")
  UpdateElementStyle(IRC,  $bgColor="#5555ff", $borderColor="#5555ff")
  UpdateElementStyle(PostgreSQL,  $bgColor="#77216F", $borderColor="#77216F")
  UpdateElementStyle(IRC_Bridge,  $bgColor="#77216F", $borderColor="#77216F")
  UpdateElementStyle(HAProxy,  $bgColor="#77216F", $borderColor="#77216F")
  UpdateElementStyle(Synapse,  $bgColor="#77216F", $borderColor="#77216F")
Loading

Integrations overview:

  • User → Synapse: The user connects to the Matrix homeserver (Synapse) via HTTPS (port 443).
  • Synapse → HAProxy: Synapse routes traffic to HAProxy via HTTPS (port 443).
  • HAProxy → IRC Bridge: HAProxy forwards Matrix-IRC traffic to the bridge using HTTP (port 8090).
  • IRC Bridge → IRC: The bridge connects to the IRC network using TLS (port 6697).
  • IRC Bridge → PostgreSQL: It stores relevant data in PostgreSQL via TCP (port 5432).
  • IRC Bridge ↔ Synapse: Maintains communication with Synapse over HTTPS (port 443).
  • IRC → IRC Bridge: The IRC server connects back to the bridge via Identd (port 1113) for user identity verification.

Get started

To begin, refer to the Deploy IRC Bridge tutorial for step-by-step instructions.

Integrations

  • HAProxy: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.
  • PostgreSQL: PostgreSQL is a powerful, open source object-relational database system.
  • Synapse: Synapse is an open-source homeserver that is part of the Matrix.org Foundation. Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP.

Learn more

Project and community

Packages

No packages published

Contributors 12

Languages