Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
service:ircd [2010/02/26 12:07] – Further revisions.. cyanservice:ircd [2023/09/09 10:40] (current) – [Using JSexec with systemd] Refer to the ircd.service file from the Git repo instead of copy/pasting stale example here digital man
Line 4: Line 4:
  
 The Synchronet IRCd (IRC daemon) service is a static service written in 100% Javascript.  It's currently the largest (and perhaps The Synchronet IRCd (IRC daemon) service is a static service written in 100% Javascript.  It's currently the largest (and perhaps
-the most complex) service available for Synchronet.  The IRCd service aims tobe a 'communications bridge' of sorts which will allows multiple BBS's to link together in a network so that users may talk to one another from the comfort of their home BBS or IRC client.  The Synchronet IRCd is a fully-functional IRC daemon that rivals the bigger, legacy UNIX IRC daemons in terms of features.  This way, everyone who wishes to chat on a common network will be able to use the local BBS, or a standard IRC client (if they wish.)+the most complex) service available for Synchronet.  The IRCd service aims to be a 'communications bridge' of sorts which will allows multiple BBS's to link together in a network so that users may talk to one another from the comfort of their home BBS or IRC client.  The Synchronet IRCd is a fully-functional IRC daemon that rivals the bigger, legacy UNIX IRC daemons in terms of features.  This way, everyone who wishes to chat on a common network will be able to use the local BBS, or a standard IRC client (if they wish.)
  
 ====== About this document ====== ====== About this document ======
Line 20: Line 20:
 In short, this document assumes that you know: In short, this document assumes that you know:
  
-* How to use your computer and operating system effectively. +  * How to use your computer and operating system effectively. 
-* The basics of IRC and its terminology. +  * The basics of IRC and its terminology. 
-* How to use, configure, and make basic modifications to Synchronet. +  * How to use, configure, and make basic modifications to Synchronet. 
-* The basics of the Internet (or at least the ability to visualize a routed, distributed network)+  * The basics of the Internet (or at least the ability to visualize a routed, distributed network)
  
 ====== Installation ====== ====== Installation ======
Line 31: Line 31:
 By default, the Synchronet IRCd is installed as a service.  It should already be present in your "services.ini" file inside the BBS 'ctrl' directory.  The IRCd will automatically start when you start your BBS.  The default entry for the IRCd inside of services.ini looks like this: By default, the Synchronet IRCd is installed as a service.  It should already be present in your "services.ini" file inside the BBS 'ctrl' directory.  The IRCd will automatically start when you start your BBS.  The default entry for the IRCd inside of services.ini looks like this:
  
 +<code>
 [IRC] [IRC]
 Port=6667 Port=6667
 Options=STATIC | LOOP Options=STATIC | LOOP
 Command=ircd.js Command=ircd.js
 +</code>
  
 The 'maximum clients' value used inside of the services configuration is *ignored* by Synchronet Services since that value is managed by the IRCd itself.  The maximum number of IRC clients can be changed on a Y:Line in your ircd.conf, and is set to 100 by default (more on the ircd.conf later.) The 'maximum clients' value used inside of the services configuration is *ignored* by Synchronet Services since that value is managed by the IRCd itself.  The maximum number of IRC clients can be changed on a Y:Line in your ircd.conf, and is set to 100 by default (more on the ircd.conf later.)
Line 44: Line 46:
 You will know if the IRCd has started successfully if you see entries like this in your BBS log: You will know if the IRCd has started successfully if you see entries like this in your BBS log:
  
 +<code>
 srvc 0007 IRC SynchronetIRCd-1.1b(1.102) started. srvc 0007 IRC SynchronetIRCd-1.1b(1.102) started.
 srvc 0007 IRC Reading Config: /sbbs/ctrl/ircd.conf srvc 0007 IRC Reading Config: /sbbs/ctrl/ircd.conf
 +</code>
  
 You may have to scroll up to see the message.  Any errors should be self-explanatory (and usually involve not being able to read the configuration file.)  If you get an error about not being able to bind to a socket, or that a socket is already in use, then you already have something running on the port you defined in your services configuration.  Could it be another IRC server running?  Try disabling any other IRC servers or proxies and restart the BBS.  If you recently restarted Synchronet with users connected to an already operating IRCd, then it's likely that some of your sockets are in a 'TIME_WAIT' state.  Wait a minute or two for the condition to clear up, then try again.  Repeat this process of elimination until your IRCd starts successfully. You may have to scroll up to see the message.  Any errors should be self-explanatory (and usually involve not being able to read the configuration file.)  If you get an error about not being able to bind to a socket, or that a socket is already in use, then you already have something running on the port you defined in your services configuration.  Could it be another IRC server running?  Try disabling any other IRC servers or proxies and restart the BBS.  If you recently restarted Synchronet with users connected to an already operating IRCd, then it's likely that some of your sockets are in a 'TIME_WAIT' state.  Wait a minute or two for the condition to clear up, then try again.  Repeat this process of elimination until your IRCd starts successfully.
Line 51: Line 55:
 Test your new IRCd by connecting to it with an IRC client. At the very least, using 'telnet' to connect to the IRCd port (port 6667 by default) should give you something similar to the following line: Test your new IRCd by connecting to it with an IRC client. At the very least, using 'telnet' to connect to the IRCd port (port 6667 by default) should give you something similar to the following line:
  
 +<code>
 :rrx.synchro.net NOTICE * :*** SynchronetIRCd-1.1b(1.102) (RoadRunner X) Ready. :rrx.synchro.net NOTICE * :*** SynchronetIRCd-1.1b(1.102) (RoadRunner X) Ready.
 +</code>
  
 This is the standard Synchronet IRCd banner, informing you that the IRCd is accepting new connections correctly. This is the standard Synchronet IRCd banner, informing you that the IRCd is accepting new connections correctly.
Line 75: Line 81:
 (3) Edit your ircd.conf and include a C/N line pair for connecting to 'vert.synchro.net' These should be commented out in the stock ircd.conf, and will look like this: (3) Edit your ircd.conf and include a C/N line pair for connecting to 'vert.synchro.net' These should be commented out in the stock ircd.conf, and will look like this:
  
 +<code>
 #C:vert.synchro.net:QWK_PASSWORD:*.synchro.net:6667:30 #C:vert.synchro.net:QWK_PASSWORD:*.synchro.net:6667:30
 #N:vert.synchro.net:*:*.synchro.net::30 #N:vert.synchro.net:*:*.synchro.net::30
 +</code>
  
 Remove the '#' from each line, and replace 'QWK_PASSWORD' with the password you were assigned (or selected) when registering for a QWK-ID.  The ircd.conf contains a description of what each of the lines (and fields) mean. It is very important that you leave the asterisks as they are, especially on the N:Line.  This is because the server you're connecting to may be randomly Remove the '#' from each line, and replace 'QWK_PASSWORD' with the password you were assigned (or selected) when registering for a QWK-ID.  The ircd.conf contains a description of what each of the lines (and fields) mean. It is very important that you leave the asterisks as they are, especially on the N:Line.  This is because the server you're connecting to may be randomly
 assigned, and the server will never echo your QWK password back to you, so it chooses to echo a '*' back instead.  An asterisk in the N:Line also forbids any servers from connecting *to* you, which is important, since you'll only be doing outbound connects with this C/N pair. assigned, and the server will never echo your QWK password back to you, so it chooses to echo a '*' back instead.  An asterisk in the N:Line also forbids any servers from connecting *to* you, which is important, since you'll only be doing outbound connects with this C/N pair.
  
-(4) Restart your BBS (or, if you know how to become an IRC operator, simply use the /REHASH command)and you should see a message similar to the following in your Synchronet console:+(4) If you know how to become an IRC operator, simply use the /REHASH command. If not, you can try **touch /sbbs/ctrl/ircd.rehash** otherwise restart your BBS. You should see a message similar to the following in your Synchronet console:
  
 +<code>
 srvc 0008 IRC Routing: Auto-connecting to rrx.synchro.net srvc 0008 IRC Routing: Auto-connecting to rrx.synchro.net
 srvc 0008 IRC Routing: Connected!  Sending info... srvc 0008 IRC Routing: Connected!  Sending info...
 srvc 0008 IRC 0018 Accepted new connection: 154.5.119.21 port 6667 srvc 0008 IRC 0018 Accepted new connection: 154.5.119.21 port 6667
 srvc 0008 IRC Routing: Link with rrx.synchro.net established, states: TS srvc 0008 IRC Routing: Link with rrx.synchro.net established, states: TS
 +</code>
  
 If you see any messages in regards to "Server not configured" or "Connection reset by peer", it's highly likely that you've mistyped your QWK password into the C:Line in your ircd.conf.  Double-check to make sure that the password is correct, and that you haven't otherwise malformed the C/N line pair.  In particular, make sure all the asterisks (as per the default) are where they should be. If you see any messages in regards to "Server not configured" or "Connection reset by peer", it's highly likely that you've mistyped your QWK password into the C:Line in your ircd.conf.  Double-check to make sure that the password is correct, and that you haven't otherwise malformed the C/N line pair.  In particular, make sure all the asterisks (as per the default) are where they should be.
Line 104: Line 114:
 The above command is typed from within the Synchronet 'exec' directory. All console commands and errors are logged to the terminal that JSexec was started from.  You should see the standard IRCd startup messages, which means that the IRCd is now operational through JSexec.  Connecting to the IRCd should now work as per normal. The above command is typed from within the Synchronet 'exec' directory. All console commands and errors are logged to the terminal that JSexec was started from.  You should see the standard IRCd startup messages, which means that the IRCd is now operational through JSexec.  Connecting to the IRCd should now work as per normal.
  
 +====== Using JSexec with systemd ======
 +
 +A sample ''ircd.service'' file for starting/managing a JSexec-invoked ircd.js instance is provided [[https://gitlab.synchro.net/main/sbbs/-/blob/master/install/systemd/ircd.service|in the Synchronet Git repository]].
 +
 +Then run:
 +systemctl enable ircd
 +systemctl daemon-reload
 +systemctl start ircd
 +
 +===== Setting up TLS/Secure Connections =====
 +
 +If you are running with JSExec, you can add this line to your ircd.conf in order to accept secure requests:
 +
 +<code>
 +P:*:*:*:6697
 +</code>
 ====== About the Synchronet IRC Network (irc.synchro.net) ====== ====== About the Synchronet IRC Network (irc.synchro.net) ======
  
Line 234: Line 260:
     would execute the command like this: '/OPER Sysop <syspass>'.     would execute the command like this: '/OPER Sysop <syspass>'.
     Also check out the O:Line section in ircd.conf.     Also check out the O:Line section in ircd.conf.
 +
 + Q: My ipv6 O:Line isn't working even if I surround the address with
 +    square brackets.
 +        
 + A: You need to enclose the whole netmask within the square brackets. Do
 +    include leading zeros in the netmask. It should match your /whois netmask.
 +    For example:
 +    [~jsmith@2001:440:1fff:b0:99d2:3cde:43e7:c96]
  
  Q: I've been forced off of the server with a "Terminated." message.  Q: I've been forced off of the server with a "Terminated." message.
Line 288: Line 322:
     theory (especially as it relates to IRC3 proposals,) or general     theory (especially as it relates to IRC3 proposals,) or general
     banter among long-standing IRC users.     banter among long-standing IRC users.
 +
 +
  
 ===== See Also ===== ===== See Also =====