Blame


1 61ac8be2 2020-03-29 alex # [ngIRCd](https://ngircd.barton.de) - Internet Relay Chat Server
2 61ac8be2 2020-03-29 alex
3 61ac8be2 2020-03-29 alex This document explains how to install ngIRCd, the lightweight Internet Relay
4 61ac8be2 2020-03-29 alex Chat (IRC) server.
5 61ac8be2 2020-03-29 alex
6 61ac8be2 2020-03-29 alex The first section lists noteworthy changes to earlier releases; you definitely
7 61ac8be2 2020-03-29 alex should read this when upgrading your setup! But you can skip over this section
8 61ac8be2 2020-03-29 alex when you do a fresh installation.
9 61ac8be2 2020-03-29 alex
10 61ac8be2 2020-03-29 alex All the subsequent sections describe the steps required to install and
11 61ac8be2 2020-03-29 alex configure ngIRCd.
12 61ac8be2 2020-03-29 alex
13 61ac8be2 2020-03-29 alex ## Upgrade Information
14 9c5e4245 2020-03-29 alex
15 9c5e4245 2020-03-29 alex Differences to version 25
16 42e8654d 2020-04-20 alex
17 42e8654d 2020-04-20 alex - **Attention**:
18 42e8654d 2020-04-20 alex All already deprecated legacy options (besides the newly deprecated *Key* and
19 42e8654d 2020-04-20 alex *MaxUsers* settings, see below) were removed in ngIRCd 26, so make sure to
20 42e8654d 2020-04-20 alex update your configuration before upgrading, if you haven't done so already
21 42e8654d 2020-04-20 alex (you got a warning on daemon startup when using deprecated options): you can
22 42e8654d 2020-04-20 alex check your configuration using `ngircd --configtest` -- which is a good idea
23 42e8654d 2020-04-20 alex anyway ;-)
24 9c5e4245 2020-03-29 alex
25 9c5e4245 2020-03-29 alex - Setting modes for predefined channels in *[Channel]* sections has been
26 9c5e4245 2020-03-29 alex enhanced: now you can set *all* modes, like in IRC "MODE" commands, and have
27 9c5e4245 2020-03-29 alex this setting multiple times per *[Channel]* block. Modifying lists (ban list,
28 9c5e4245 2020-03-29 alex invite list, exception list) is supported, too.
29 9c5e4245 2020-03-29 alex
30 9c5e4245 2020-03-29 alex Both the *Key* and *MaxUsers* settings are now deprecated and should be
31 9c5e4245 2020-03-29 alex replaced by `Modes = +l <limit>` and `Modes = +k <key>` respectively.
32 61ac8be2 2020-03-29 alex
33 61ac8be2 2020-03-29 alex Differences to version 22.x
34 61ac8be2 2020-03-29 alex
35 61ac8be2 2020-03-29 alex - The *NoticeAuth* `ngircd.conf` configuration variable has been renamed to
36 61ac8be2 2020-03-29 alex *NoticeBeforeRegistration*. The old *NoticeAuth* variable still works but
37 61ac8be2 2020-03-29 alex is deprecated now.
38 61ac8be2 2020-03-29 alex
39 61ac8be2 2020-03-29 alex - The default value of the SSL *CipherList* variable has been changed to
40 61ac8be2 2020-03-29 alex "HIGH:!aNULL:@STRENGTH:!SSLv3" (OpenSSL) and "SECURE128:-VERS-SSL3.0"
41 61ac8be2 2020-03-29 alex (GnuTLS) to disable the old SSLv3 protocol by default.
42 61ac8be2 2020-03-29 alex
43 61ac8be2 2020-03-29 alex To enable connections of clients still requiring the weak SSLv3 protocol,
44 61ac8be2 2020-03-29 alex the *CipherList* must be set to its old value (not recommended!), which
45 61ac8be2 2020-03-29 alex was "HIGH:!aNULL:@STRENGTH" (OpenSSL) and "SECURE128" (GnuTLS), see below.
46 61ac8be2 2020-03-29 alex
47 61ac8be2 2020-03-29 alex Differences to version 20.x
48 61ac8be2 2020-03-29 alex
49 61ac8be2 2020-03-29 alex - Starting with ngIRCd 21, the ciphers used by SSL are configurable and
50 61ac8be2 2020-03-29 alex default to "HIGH:!aNULL:@STRENGTH" (OpenSSL) or "SECURE128" (GnuTLS).
51 61ac8be2 2020-03-29 alex Previous version were using the OpenSSL or GnuTLS defaults, "DEFAULT"
52 61ac8be2 2020-03-29 alex and "NORMAL" respectively.
53 61ac8be2 2020-03-29 alex
54 61ac8be2 2020-03-29 alex - When adding GLINE's or KLINE's to ngIRCd 21 (or newer), all clients matching
55 61ac8be2 2020-03-29 alex the new mask will be KILL'ed. This was not the case with earlier versions
56 61ac8be2 2020-03-29 alex that only added the mask but didn't kill already connected users.
57 61ac8be2 2020-03-29 alex
58 61ac8be2 2020-03-29 alex - The *PredefChannelsOnly* configuration variable has been superseded by the
59 61ac8be2 2020-03-29 alex new *AllowedChannelTypes* variable. It is still supported and translated to
60 61ac8be2 2020-03-29 alex the appropriate *AllowedChannelTypes* setting but is deprecated now.
61 61ac8be2 2020-03-29 alex
62 61ac8be2 2020-03-29 alex Differences to version 19.x
63 61ac8be2 2020-03-29 alex
64 61ac8be2 2020-03-29 alex - Starting with ngIRCd 20, users can "cloak" their hostname only when the
65 61ac8be2 2020-03-29 alex configuration variable *CloakHostModeX* (introduced in 19.2) is set.
66 61ac8be2 2020-03-29 alex Otherwise, only IRC operators, other servers, and services are allowed to
67 61ac8be2 2020-03-29 alex set mode +x. This prevents regular users from changing their hostmask to
68 61ac8be2 2020-03-29 alex the name of the IRC server itself, which confused quite a few people ;-)
69 61ac8be2 2020-03-29 alex
70 61ac8be2 2020-03-29 alex Differences to version 17.x
71 61ac8be2 2020-03-29 alex
72 61ac8be2 2020-03-29 alex - Support for ZeroConf/Bonjour/Rendezvous service registration has been
73 61ac8be2 2020-03-29 alex removed. The configuration option *NoZeroconf* is no longer available.
74 61ac8be2 2020-03-29 alex
75 61ac8be2 2020-03-29 alex - The structure of `ngircd.conf` has been cleaned up and three new configuration
76 61ac8be2 2020-03-29 alex sections have been introduced: *[Limits]*, *[Options]*, and *[SSL]*.
77 61ac8be2 2020-03-29 alex
78 61ac8be2 2020-03-29 alex Lots of configuration variables stored in the *[Global]* section are now
79 61ac8be2 2020-03-29 alex deprecated there and should be stored in one of these new sections (but
80 61ac8be2 2020-03-29 alex still work in *[Global]*):
81 61ac8be2 2020-03-29 alex
82 61ac8be2 2020-03-29 alex - *AllowRemoteOper* -> [Options]
83 61ac8be2 2020-03-29 alex - *ChrootDir* -> [Options]
84 61ac8be2 2020-03-29 alex - *ConnectIPv4* -> [Options]
85 61ac8be2 2020-03-29 alex - *ConnectIPv6* -> [Options]
86 61ac8be2 2020-03-29 alex - *ConnectRetry* -> [Limits]
87 61ac8be2 2020-03-29 alex - *MaxConnections* -> [Limits]
88 61ac8be2 2020-03-29 alex - *MaxConnectionsIP* -> [Limits]
89 61ac8be2 2020-03-29 alex - *MaxJoins* -> [Limits]
90 61ac8be2 2020-03-29 alex - *MaxNickLength* -> [Limits]
91 61ac8be2 2020-03-29 alex - *NoDNS* -> [Options], and renamed to *DNS*
92 61ac8be2 2020-03-29 alex - *NoIdent* -> [Options], and renamed to *Ident*
93 61ac8be2 2020-03-29 alex - *NoPAM* -> [Options], and renamed to *PAM*
94 61ac8be2 2020-03-29 alex - *OperCanUseMode* -> [Options]
95 61ac8be2 2020-03-29 alex - *OperServerMode* -> [Options]
96 61ac8be2 2020-03-29 alex - *PingTimeout* -> [Limits]
97 61ac8be2 2020-03-29 alex - *PongTimeout* -> [Limits]
98 61ac8be2 2020-03-29 alex - *PredefChannelsOnly* -> [Options]
99 61ac8be2 2020-03-29 alex - *SSLCertFile* -> [SSL], and renamed to *CertFile*
100 61ac8be2 2020-03-29 alex - *SSLDHFile* -> [SSL], and renamed to *DHFile*
101 61ac8be2 2020-03-29 alex - *SSLKeyFile* -> [SSL], and renamed to *KeyFile*
102 61ac8be2 2020-03-29 alex - *SSLKeyFilePassword* -> [SSL], and renamed to *KeyFilePassword*
103 61ac8be2 2020-03-29 alex - *SSLPorts* -> [SSL], and renamed to *Ports*
104 61ac8be2 2020-03-29 alex - *SyslogFacility* -> [Options]
105 61ac8be2 2020-03-29 alex - *WebircPassword* -> [Options]
106 61ac8be2 2020-03-29 alex
107 61ac8be2 2020-03-29 alex You should adjust your `ngircd.conf` and run `ngircd --configtest` to make
108 61ac8be2 2020-03-29 alex sure that your settings are correct and up to date!
109 61ac8be2 2020-03-29 alex
110 61ac8be2 2020-03-29 alex Differences to version 16.x
111 61ac8be2 2020-03-29 alex
112 61ac8be2 2020-03-29 alex - Changes to the *MotdFile* specified in `ngircd.conf` now require a ngIRCd
113 61ac8be2 2020-03-29 alex configuration reload to take effect (HUP signal, *REHASH* command).
114 61ac8be2 2020-03-29 alex
115 61ac8be2 2020-03-29 alex Differences to version 0.9.x
116 61ac8be2 2020-03-29 alex
117 61ac8be2 2020-03-29 alex - The option of the configure script to enable support for Zeroconf/Bonjour/
118 61ac8be2 2020-03-29 alex Rendezvous/WhateverItIsNamedToday has been renamed:
119 61ac8be2 2020-03-29 alex
120 61ac8be2 2020-03-29 alex - `--with-rendezvous` -> `--with-zeroconf`
121 61ac8be2 2020-03-29 alex
122 61ac8be2 2020-03-29 alex Differences to version 0.8.x
123 61ac8be2 2020-03-29 alex
124 61ac8be2 2020-03-29 alex - The maximum length of passwords has been raised to 20 characters (instead
125 61ac8be2 2020-03-29 alex of 8 characters). If your passwords are longer than 8 characters then they
126 61ac8be2 2020-03-29 alex are cut at an other position now.
127 61ac8be2 2020-03-29 alex
128 61ac8be2 2020-03-29 alex Differences to version 0.6.x
129 61ac8be2 2020-03-29 alex
130 61ac8be2 2020-03-29 alex - Some options of the configure script have been renamed:
131 61ac8be2 2020-03-29 alex
132 61ac8be2 2020-03-29 alex - `--disable-syslog` -> `--without-syslog`
133 61ac8be2 2020-03-29 alex - `--disable-zlib` -> `--without-zlib`
134 61ac8be2 2020-03-29 alex
135 61ac8be2 2020-03-29 alex Please call `./configure --help` to review the full list of options!
136 61ac8be2 2020-03-29 alex
137 61ac8be2 2020-03-29 alex Differences to version 0.5.x
138 61ac8be2 2020-03-29 alex
139 61ac8be2 2020-03-29 alex - Starting with version 0.6.0, other servers are identified using asynchronous
140 61ac8be2 2020-03-29 alex passwords: therefore the variable *Password* in *[Server]*-sections has been
141 61ac8be2 2020-03-29 alex replaced by *MyPassword* and *PeerPassword*.
142 61ac8be2 2020-03-29 alex
143 61ac8be2 2020-03-29 alex - New configuration variables, section *[Global]*: *MaxConnections*, *MaxJoins*
144 61ac8be2 2020-03-29 alex (see example configuration file `doc/sample-ngircd.conf`!).
145 61ac8be2 2020-03-29 alex
146 61ac8be2 2020-03-29 alex ## Standard Installation
147 61ac8be2 2020-03-29 alex
148 61ac8be2 2020-03-29 alex *Note*: This sections describes installing ngIRCd *from sources*. If you use
149 61ac8be2 2020-03-29 alex packages available for your operating system distribution you should skip over
150 61ac8be2 2020-03-29 alex and continue with the *Configuration* section, see below.
151 61ac8be2 2020-03-29 alex
152 61ac8be2 2020-03-29 alex ngIRCd is developed for UNIX-based systems, which means that the installation
153 61ac8be2 2020-03-29 alex on modern UNIX-like systems that are supported by GNU autoconf and GNU
154 61ac8be2 2020-03-29 alex automake ("`configure` script") should be no problem.
155 61ac8be2 2020-03-29 alex
156 61ac8be2 2020-03-29 alex The normal installation procedure after getting (and expanding) the source
157 61ac8be2 2020-03-29 alex files (using a distribution archive or Git) is as following:
158 61ac8be2 2020-03-29 alex
159 61ac8be2 2020-03-29 alex 1) Satisfy prerequisites
160 61ac8be2 2020-03-29 alex 2) `./autogen.sh` [only necessary when using "raw" sources with Git]
161 61ac8be2 2020-03-29 alex 3) `./configure`
162 61ac8be2 2020-03-29 alex 4) `make`
163 61ac8be2 2020-03-29 alex 5) `make install`
164 61ac8be2 2020-03-29 alex
165 61ac8be2 2020-03-29 alex (Please see details below!)
166 61ac8be2 2020-03-29 alex
167 61ac8be2 2020-03-29 alex Now the newly compiled executable "ngircd" is installed in its standard
168 61ac8be2 2020-03-29 alex location, `/usr/local/sbin/`.
169 61ac8be2 2020-03-29 alex
170 61ac8be2 2020-03-29 alex If no previous version of the configuration file exists (the standard name
171 61ac8be2 2020-03-29 alex is `/usr/local/etc/ngircd.conf)`, a sample configuration file containing all
172 61ac8be2 2020-03-29 alex possible options will be installed there. You'll find its template in the
173 61ac8be2 2020-03-29 alex `doc/` directory: `sample-ngircd.conf`.
174 61ac8be2 2020-03-29 alex
175 61ac8be2 2020-03-29 alex The next step is to configure and afterwards start the daemon. See the section
176 61ac8be2 2020-03-29 alex *Configuration* below.
177 61ac8be2 2020-03-29 alex
178 61ac8be2 2020-03-29 alex ### Satisfy prerequisites
179 61ac8be2 2020-03-29 alex
180 61ac8be2 2020-03-29 alex When building from source, you'll need some other software to build ngIRCd:
181 61ac8be2 2020-03-29 alex for example a working C compiler, make tool, and a few libraries depending on
182 61ac8be2 2020-03-29 alex the feature set you want to enable at compile time (like IDENT, SSL, and PAM).
183 61ac8be2 2020-03-29 alex
184 61ac8be2 2020-03-29 alex And if you aren't using a distribution archive ("tar.gz" file), but cloned the
185 61ac8be2 2020-03-29 alex plain source archive, you need a few additional tools to generate the build
186 61ac8be2 2020-03-29 alex system itself: GNU automake and autoconf, as well as pkg-config.
187 61ac8be2 2020-03-29 alex
188 61ac8be2 2020-03-29 alex If you are using one of the "big" operating systems or Linux distributions,
189 61ac8be2 2020-03-29 alex you can use the following commands to install all the required packages to
190 61ac8be2 2020-03-29 alex build the sources including all optional features and to run the test suite:
191 61ac8be2 2020-03-29 alex
192 61ac8be2 2020-03-29 alex #### Red Hat / Fedora based distributions
193 61ac8be2 2020-03-29 alex
194 61ac8be2 2020-03-29 alex ``` shell
195 61ac8be2 2020-03-29 alex yum install \
196 61ac8be2 2020-03-29 alex autoconf automake expect gcc glibc-devel gnutls-devel \
197 61ac8be2 2020-03-29 alex libident-devel make pam-devel pkg-config tcp_wrappers-devel \
198 61ac8be2 2020-03-29 alex telnet zlib-devel
199 61ac8be2 2020-03-29 alex ```
200 61ac8be2 2020-03-29 alex
201 61ac8be2 2020-03-29 alex #### Debian / Ubuntu based distributions
202 61ac8be2 2020-03-29 alex
203 61ac8be2 2020-03-29 alex ``` shell
204 61ac8be2 2020-03-29 alex apt-get install \
205 61ac8be2 2020-03-29 alex autoconf automake build-essential expect libgnutls28-dev \
206 61ac8be2 2020-03-29 alex libident-dev libpam-dev pkg-config libwrap0-dev libz-dev telnet
207 ed9d8e79 2020-06-20 alex ```
208 ed9d8e79 2020-06-20 alex
209 ed9d8e79 2020-06-20 alex #### ArchLinux based distributions
210 ed9d8e79 2020-06-20 alex
211 ed9d8e79 2020-06-20 alex ``` shell
212 ed9d8e79 2020-06-20 alex pacman -S --needed \
213 ed9d8e79 2020-06-20 alex autoconf automake expect gcc gnutls inetutils libident libwrap \
214 ed9d8e79 2020-06-20 alex make pam pkg-config zlib
215 61ac8be2 2020-03-29 alex ```
216 61ac8be2 2020-03-29 alex
217 61ac8be2 2020-03-29 alex ### `./autogen.sh`
218 61ac8be2 2020-03-29 alex
219 61ac8be2 2020-03-29 alex The first step, to run `./autogen.sh`, is *only* necessary if the `configure`
220 61ac8be2 2020-03-29 alex script itself isn't already generated and available. This never happens in
221 61ac8be2 2020-03-29 alex official ("stable") releases in "tar.gz" archives, but when cloning the source
222 61ac8be2 2020-03-29 alex code repository using Git.
223 61ac8be2 2020-03-29 alex
224 61ac8be2 2020-03-29 alex **This step is therefore only interesting for developers!**
225 61ac8be2 2020-03-29 alex
226 61ac8be2 2020-03-29 alex The `autogen.sh` script produces the `Makefile.in`'s, which are necessary for
227 61ac8be2 2020-03-29 alex the configure script itself, and some more files for `make(1)`.
228 61ac8be2 2020-03-29 alex
229 61ac8be2 2020-03-29 alex To run `autogen.sh` you'll need GNU autoconf, GNU automake and pkg-config: at
230 61ac8be2 2020-03-29 alex least autoconf 2.61 and automake 1.10 are required, newer is better. But don't
231 61ac8be2 2020-03-29 alex use automake 1.12 or newer for creating distribution archives: it will work
232 61ac8be2 2020-03-29 alex but lack "de-ANSI-fication" support in the generated Makefile's! Stick with
233 61ac8be2 2020-03-29 alex automake 1.11.x for this purpose ...
234 61ac8be2 2020-03-29 alex
235 61ac8be2 2020-03-29 alex So *automake 1.11.x* and *autoconf 2.67+* is recommended.
236 61ac8be2 2020-03-29 alex
237 61ac8be2 2020-03-29 alex Again: "end users" do not need this step and neither need GNU autoconf nor GNU
238 61ac8be2 2020-03-29 alex automake at all!
239 61ac8be2 2020-03-29 alex
240 61ac8be2 2020-03-29 alex ### `./configure`
241 61ac8be2 2020-03-29 alex
242 61ac8be2 2020-03-29 alex The `configure` script is used to detect local system dependencies.
243 61ac8be2 2020-03-29 alex
244 61ac8be2 2020-03-29 alex In the perfect case, `configure` should recognize all needed libraries, header
245 61ac8be2 2020-03-29 alex files and so on. If this shouldn't work, `./configure --help` shows all
246 61ac8be2 2020-03-29 alex possible options.
247 61ac8be2 2020-03-29 alex
248 61ac8be2 2020-03-29 alex In addition, you can pass some command line options to `configure` to enable
249 61ac8be2 2020-03-29 alex and/or disable some features of ngIRCd. All these options are shown using
250 61ac8be2 2020-03-29 alex `./configure --help`, too.
251 61ac8be2 2020-03-29 alex
252 61ac8be2 2020-03-29 alex Compiling a static binary will avoid you the hassle of feeding a chroot dir
253 61ac8be2 2020-03-29 alex (if you want use the chroot feature). Just do something like:
254 61ac8be2 2020-03-29 alex
255 61ac8be2 2020-03-29 alex ``` shell
256 61ac8be2 2020-03-29 alex CFLAGS=-static ./configure [--your-options ...]
257 61ac8be2 2020-03-29 alex ```
258 61ac8be2 2020-03-29 alex
259 61ac8be2 2020-03-29 alex Then you can use a void directory as ChrootDir (like OpenSSH's `/var/empty`).
260 61ac8be2 2020-03-29 alex
261 61ac8be2 2020-03-29 alex ### `make`
262 61ac8be2 2020-03-29 alex
263 61ac8be2 2020-03-29 alex The `make(1)` command uses the `Makefile`'s produced by `configure` and
264 61ac8be2 2020-03-29 alex compiles the ngIRCd daemon.
265 61ac8be2 2020-03-29 alex
266 61ac8be2 2020-03-29 alex ### `make install`
267 61ac8be2 2020-03-29 alex
268 61ac8be2 2020-03-29 alex Use `make install` to install the server and a sample configuration file on
269 61ac8be2 2020-03-29 alex the local system. Normally, root privileges are necessary to complete this
270 61ac8be2 2020-03-29 alex step. If there is already an older configuration file present, it won't be
271 61ac8be2 2020-03-29 alex overwritten.
272 61ac8be2 2020-03-29 alex
273 61ac8be2 2020-03-29 alex These files and folders will be installed by default:
274 61ac8be2 2020-03-29 alex
275 61ac8be2 2020-03-29 alex - `/usr/local/sbin/ngircd`: executable server
276 61ac8be2 2020-03-29 alex - `/usr/local/etc/ngircd.conf`: sample configuration (if not already present)
277 61ac8be2 2020-03-29 alex - `/usr/local/share/doc/ngircd/`: documentation
278 61ac8be2 2020-03-29 alex - `/usr/local/share/man/`: manual pages
279 61ac8be2 2020-03-29 alex
280 61ac8be2 2020-03-29 alex ### Additional features
281 61ac8be2 2020-03-29 alex
282 61ac8be2 2020-03-29 alex The following optional features can be compiled into the daemon by passing
283 61ac8be2 2020-03-29 alex options to the `configure` script. Most options can handle a `<path>` argument
284 61ac8be2 2020-03-29 alex which will be used to search for the required libraries and header files in
285 61ac8be2 2020-03-29 alex the given paths (`<path>/lib/...`, `<path>/include/...`) in addition to the
286 61ac8be2 2020-03-29 alex standard locations.
287 61ac8be2 2020-03-29 alex
288 61ac8be2 2020-03-29 alex - Syslog Logging (autodetected by default):
289 61ac8be2 2020-03-29 alex
290 61ac8be2 2020-03-29 alex `--with-syslog[=<path>]` / `--without-syslog`
291 61ac8be2 2020-03-29 alex
292 61ac8be2 2020-03-29 alex Enable (disable) support for logging to "syslog", which should be
293 61ac8be2 2020-03-29 alex available on most modern UNIX-like operating systems by default.
294 61ac8be2 2020-03-29 alex
295 61ac8be2 2020-03-29 alex - ZLib Compression (autodetected by default):
296 61ac8be2 2020-03-29 alex
297 61ac8be2 2020-03-29 alex `--with-zlib[=<path>]` / `--without-zlib`
298 61ac8be2 2020-03-29 alex
299 61ac8be2 2020-03-29 alex Enable (disable) support for compressed server-server links.
300 61ac8be2 2020-03-29 alex The Z compression library ("libz") is required for this option.
301 61ac8be2 2020-03-29 alex
302 61ac8be2 2020-03-29 alex - IO Backend (autodetected by default):
303 61ac8be2 2020-03-29 alex
304 61ac8be2 2020-03-29 alex - `--with-select[=<path>]` / `--without-select`
305 61ac8be2 2020-03-29 alex - `--with-poll[=<path>]` / `--without-poll`
306 61ac8be2 2020-03-29 alex - `--with-devpoll[=<path>]` / `--without-devpoll`
307 61ac8be2 2020-03-29 alex - `--with-epoll[=<path>]` / `--without-epoll`
308 61ac8be2 2020-03-29 alex - `--with-kqueue[=<path>]` / `--without-kqueue`
309 61ac8be2 2020-03-29 alex
310 61ac8be2 2020-03-29 alex ngIRCd can use different IO "backends": the "old school" `select(2)` and
311 61ac8be2 2020-03-29 alex `poll(2)` API which should be supported by most UNIX-like operating systems,
312 61ac8be2 2020-03-29 alex or the more efficient and flexible `epoll(7)` (Linux >=2.6), `kqueue(2)`
313 61ac8be2 2020-03-29 alex (BSD) and `/dev/poll` APIs.
314 61ac8be2 2020-03-29 alex
315 61ac8be2 2020-03-29 alex By default the IO backend is autodetected, but you can use `--without-xxx`
316 61ac8be2 2020-03-29 alex to disable a more enhanced API.
317 61ac8be2 2020-03-29 alex
318 61ac8be2 2020-03-29 alex When using the `epoll(7)` API, support for `select(2)` is compiled in as
319 61ac8be2 2020-03-29 alex well by default, to enable the binary to run on older Linux kernels (<2.6),
320 61ac8be2 2020-03-29 alex too.
321 61ac8be2 2020-03-29 alex
322 61ac8be2 2020-03-29 alex - IDENT-Support:
323 61ac8be2 2020-03-29 alex
324 61ac8be2 2020-03-29 alex `--with-ident[=<path>]`
325 61ac8be2 2020-03-29 alex
326 61ac8be2 2020-03-29 alex Include support for IDENT ("AUTH") lookups. The "ident" library is
327 61ac8be2 2020-03-29 alex required for this option.
328 61ac8be2 2020-03-29 alex
329 61ac8be2 2020-03-29 alex - TCP-Wrappers:
330 61ac8be2 2020-03-29 alex
331 61ac8be2 2020-03-29 alex `--with-tcp-wrappers[=<path>]`
332 61ac8be2 2020-03-29 alex
333 61ac8be2 2020-03-29 alex Include support for Wietse Venemas "TCP Wrappers" to limit client access
334 61ac8be2 2020-03-29 alex to the daemon, for example by using `/etc/hosts.{allow|deny}`.
335 61ac8be2 2020-03-29 alex The "libwrap" is required for this option.
336 61ac8be2 2020-03-29 alex
337 61ac8be2 2020-03-29 alex - PAM:
338 61ac8be2 2020-03-29 alex
339 61ac8be2 2020-03-29 alex `--with-pam[=<path>]`
340 61ac8be2 2020-03-29 alex
341 61ac8be2 2020-03-29 alex Enable support for PAM, the Pluggable Authentication Modules library.
342 61ac8be2 2020-03-29 alex See `doc/PAM.txt` for details.
343 61ac8be2 2020-03-29 alex
344 61ac8be2 2020-03-29 alex - SSL:
345 61ac8be2 2020-03-29 alex
346 61ac8be2 2020-03-29 alex - `--with-openssl[=<path>]`
347 61ac8be2 2020-03-29 alex - `--with-gnutls[=<path>]`
348 61ac8be2 2020-03-29 alex
349 61ac8be2 2020-03-29 alex Enable support for SSL/TLS using OpenSSL or GnuTLS libraries.
350 61ac8be2 2020-03-29 alex See `doc/SSL.txt` for details.
351 61ac8be2 2020-03-29 alex
352 61ac8be2 2020-03-29 alex - IPv6:
353 61ac8be2 2020-03-29 alex
354 61ac8be2 2020-03-29 alex `--enable-ipv6`
355 61ac8be2 2020-03-29 alex
356 61ac8be2 2020-03-29 alex Adds support for version 6 of the Internet Protocol.
357 61ac8be2 2020-03-29 alex
358 61ac8be2 2020-03-29 alex ## Configuration
359 61ac8be2 2020-03-29 alex
360 61ac8be2 2020-03-29 alex Please have a look at the `ngircd(8)` and `ngircd.conf(5)` manual pages for
361 61ac8be2 2020-03-29 alex details and all possible command line and configuration options -- **and don't
362 61ac8be2 2020-03-29 alex forget to run `ngircd --configtest` to validate your configuration file!**
363 61ac8be2 2020-03-29 alex
364 61ac8be2 2020-03-29 alex After installing ngIRCd, a sample configuration file will be set up (if it
365 61ac8be2 2020-03-29 alex does not exist already). By default, when installing from sources, the file is
366 61ac8be2 2020-03-29 alex named `/usr/local/etc/ngircd.conf` (other common names, especially for
367 61ac8be2 2020-03-29 alex distribution packages, are `/etc/ngircd.conf` or `/etc/ngircd/ngircd.conf`).
368 61ac8be2 2020-03-29 alex
369 61ac8be2 2020-03-29 alex You can find the template of the sample configuration file in the `doc/`
370 61ac8be2 2020-03-29 alex directory as `sample-ngircd.conf` and
371 61ac8be2 2020-03-29 alex [online](https://ngircd.barton.de/doc/sample-ngircd.conf) on the homepage. It
372 61ac8be2 2020-03-29 alex contains all available options.
373 61ac8be2 2020-03-29 alex
374 61ac8be2 2020-03-29 alex In the sample configuration file, there are comments beginning with `#` *or*
375 61ac8be2 2020-03-29 alex `;` -- this is only for the better understanding of the file, both comment
376 61ac8be2 2020-03-29 alex styles are equal.
377 61ac8be2 2020-03-29 alex
378 61ac8be2 2020-03-29 alex The file is separated in five blocks: *[Global]*, *[Features]*, *[Operator]*,
379 61ac8be2 2020-03-29 alex *[Server]*, and *[Channel]*.
380 61ac8be2 2020-03-29 alex
381 61ac8be2 2020-03-29 alex In the *[Global]* section, there is the main configuration like the server
382 61ac8be2 2020-03-29 alex name and the ports, on which the server should be listening. Options in
383 61ac8be2 2020-03-29 alex the *[Features]* section enable or disable functionality in the daemon.
384 61ac8be2 2020-03-29 alex IRC operators of this server are defined in *[Operator]* blocks, remote
385 61ac8be2 2020-03-29 alex servers are configured in *[Server]* sections, and *[Channel]* blocks are
386 61ac8be2 2020-03-29 alex used to configure pre-defined ("persistent") IRC channels.
387 61ac8be2 2020-03-29 alex
388 61ac8be2 2020-03-29 alex ### Manual Pages Online
389 61ac8be2 2020-03-29 alex
390 61ac8be2 2020-03-29 alex - Daemon: [ngircd.8](https://manpages.debian.org/ngircd.8)
391 61ac8be2 2020-03-29 alex - Configutation file: [ngircd.conf.5](https://manpages.debian.org/ngircd.conf.5)
392 61ac8be2 2020-03-29 alex
393 61ac8be2 2020-03-29 alex ## Command line options
394 61ac8be2 2020-03-29 alex
395 61ac8be2 2020-03-29 alex ngIRCd supports the following command line options:
396 61ac8be2 2020-03-29 alex
397 61ac8be2 2020-03-29 alex - `-f`, `--config <file>`
398 61ac8be2 2020-03-29 alex
399 61ac8be2 2020-03-29 alex The daemon uses the file `<file>` as configuration file rather than
400 61ac8be2 2020-03-29 alex the standard configuration `/usr/local/etc/ngircd.conf`.
401 61ac8be2 2020-03-29 alex
402 61ac8be2 2020-03-29 alex - `-n`, `--nodaemon`
403 61ac8be2 2020-03-29 alex
404 61ac8be2 2020-03-29 alex ngIRCd should be running as a foreground process.
405 61ac8be2 2020-03-29 alex
406 61ac8be2 2020-03-29 alex - `-p`, `--passive`
407 61ac8be2 2020-03-29 alex
408 61ac8be2 2020-03-29 alex Server-links won't be automatically established.
409 61ac8be2 2020-03-29 alex
410 61ac8be2 2020-03-29 alex - `-t`, `--configtest`
411 61ac8be2 2020-03-29 alex
412 61ac8be2 2020-03-29 alex Reads, validates and dumps the configuration file as interpreted
413 61ac8be2 2020-03-29 alex by the server. Then exits.
414 61ac8be2 2020-03-29 alex
415 61ac8be2 2020-03-29 alex Use `--help` to see a short help text describing all available parameters
416 61ac8be2 2020-03-29 alex the server understands, with `--version` the ngIRCd shows its version
417 61ac8be2 2020-03-29 alex number. In both cases the server exits after the output.
418 61ac8be2 2020-03-29 alex
419 61ac8be2 2020-03-29 alex Please see the `ngircd(8)` manual page for more details!