4 Servers can be connected together to improve redundancy, distribute bandwidth,
5 lower latency, and connect network services.
7 This document is an introduction to connecting servers. It assumes you are
8 already somewhat familiar with Solanum's configuration (if not, read
9 :file:`ircd.conf.example`, and set up your own server by editing it
12 Solanum uses the TS6 protocol, and can only be connected with other servers
13 using this protocol. We recommend you only connect Solanum with other Solanum
16 Unlike some other IRCd implementations, all connections are reciprocal in
17 Solanum, which means a single configuration block is used for both incoming
18 and outgoing connections.
19 Additionally, the same ports are used for server and client connections.
24 If you already have a server running, copy its configuration to a new machine,
25 and edit ``serverinfo`` for the new server. In particular, you must change the
26 ``name`` and ``sid``, but keep the same ``network_name``.
27 We recommend you keep both configurations in sync using some external
28 configuration management systems, so server configurations do not drift apart
29 over time, as you change them.
31 For each of the two servers, you must create a ``connect`` block to represent
32 the connection with the other server. For example, if you have servers A and B
33 respectively at a.example.org and b.example.org, use respectively::
36 name = "a.example.org";
40 connect "b.example.org" {
44 send_password = "password";
45 accept_password = "anotherpassword";
47 flags = topicburst, autoconn;
55 name = "b.example.org";
59 connect "a.example.org" {
63 send_password = "anotherpassword";
64 accept_password = "password";
66 flags = topicburst, autoconn;
71 Note the reversed passwords.
73 The ports should be any of the ports defined in a ``listen {}`` block of the
76 The ``autoconn`` flag indicates a server should automatically connect using
77 this ``connect {}`` block. At least one of the two servers should have it,
78 or the servers won't try to connect.
80 If you are connecting servers over an unencrypted link, you should use SSL/TLS
81 for the connection; see :file:`reference.conf`.
87 In addition to regular servers, you can also connect service packages such
90 These services typically do not accept incoming connections, and connect to
91 one of the existing servers of the network.
93 To allow connections from such a service server, you should create
94 a new ``connect {}`` block for this package, on the server the services
97 connect "services.example.org" {
101 send_password = "password";
102 accept_password = "anotherpassword";
104 flags = topicburst; // No autoconn, services don't accept incoming connections
109 And create the appropriate config in your services' configuration so that
110 they connect to your server on the configured port, and from the configured
113 For example, with atheme::
115 loadmodule "modules/protocol/charybdis";
117 uplink "a.example.org" {
120 send_password = "anotherpassword";
121 receive_password = "password"
124 Finally, you must configure all servers in your network to recognize the
128 name = "services.example.org";