-# [ngIRCd](https://ngircd.barton.de) - Internet Relay Chat Server
+# [ngIRCd](https://ngircd.barton.de) - Installation
-This document explains how to install ngIRCd, the lightweight Internet Relay
+This document describes how to install ngIRCd, the lightweight Internet Relay
Chat (IRC) server.
The first section lists noteworthy changes to earlier releases; you definitely
should read this when upgrading your setup! But you can skip over this section
-when you do a fresh installation.
+when you are working on a fresh installation.
-All the subsequent sections describe the steps required to install and
-configure ngIRCd.
+The subsequent sections describe the steps required to build and install ngIRCd
+_from sources_. The information given here is not relevant when you are using
+packages provided by your operating system vendor or third-party repositories!
+
+Please see the file `doc/QuickStart.md` in the `doc/` directory or on
+[GitHub](https://github.com/ngircd/ngircd/blob/master/doc/QuickStart.md) for
+information about _setting up_ and _running_ ngIRCd, including some real-world
+configuration examples.
## Upgrade Information
+Differences to version 25
+
+- **Attention**:
+ All already deprecated legacy options (besides the newly deprecated *Key* and
+ *MaxUsers* settings, see below) were removed in ngIRCd 26, so make sure to
+ update your configuration before upgrading, if you haven't done so already
+ (you got a warning on daemon startup when using deprecated options): you can
+ check your configuration using `ngircd --configtest` -- which is a good idea
+ anyway ;-)
+
+- Setting modes for predefined channels in *[Channel]* sections has been
+ enhanced: now you can set *all* modes, like in IRC "MODE" commands, and have
+ this setting multiple times per *[Channel]* block. Modifying lists (ban list,
+ invite list, exception list) is supported, too.
+
+ Both the *Key* and *MaxUsers* settings are now deprecated and should be
+ replaced by `Modes = +l <limit>` and `Modes = +k <key>` respectively.
+
Differences to version 22.x
- The *NoticeAuth* `ngircd.conf` configuration variable has been renamed to
telnet zlib-devel
```
+*Note:* More recent versions use the DNF package manager; so substitute "yum"
+with "dnf" in the command above. And neither "libident-devel" (IDENT support)
+nor "tcp_wrappers-devel" (TCP Wrappers) are provided any more!
+
+So the resulting command looks like this:
+
+``` shell
+ dnf install \
+ autoconf automake expect gcc glibc-devel gnutls-devel \
+ make pam-devel pkg-config telnet zlib-devel
+```
+
#### Debian / Ubuntu based distributions
``` shell
libident-dev libpam-dev pkg-config libwrap0-dev libz-dev telnet
```
+#### ArchLinux based distributions
+
+``` shell
+ pacman -S --needed \
+ autoconf automake expect gcc gnutls inetutils libident libwrap \
+ make pam pkg-config zlib
+```
+
+#### macOS with Homebrew
+
+To build ngIRCd on Apple macOS, you need either Xcode or the command line
+development tools. You can install the latter with the `xcode-select --install`
+command.
+
+Additional tools and libraries that are not part of macOS itself are best
+installed with the [Homebrew](https://brew.sh) package manager:
+
+``` shell
+ brew install autoconf automake gnutls libident pkg-config
+```
+
+Note: To actually use the GnuTLS and IDENT libraries installed by Homebrew, you
+need to pass the installation path to the `./configure` command (see below). For
+example like this:
+
+``` shell
+ ./configure --with-gnutls=$(brew --prefix) --with-ident=$(brew --prefix) [...]
+```
+
### `./autogen.sh`
The first step, to run `./autogen.sh`, is *only* necessary if the `configure`
- `--with-gnutls[=<path>]`
Enable support for SSL/TLS using OpenSSL or GnuTLS libraries.
- See `doc/SSL.txt` for details.
-
-- IPv6:
-
- `--enable-ipv6`
-
- Adds support for version 6 of the Internet Protocol.
-
-## Configuration
-
-Please have a look at the `ngircd(8)` and `ngircd.conf(5)` manual pages for
-details and all possible command line and configuration options -- **and don't
-forget to run `ngircd --configtest` to validate your configuration file!**
-
-After installing ngIRCd, a sample configuration file will be set up (if it
-does not exist already). By default, when installing from sources, the file is
-named `/usr/local/etc/ngircd.conf` (other common names, especially for
-distribution packages, are `/etc/ngircd.conf` or `/etc/ngircd/ngircd.conf`).
-
-You can find the template of the sample configuration file in the `doc/`
-directory as `sample-ngircd.conf` and
-[online](https://ngircd.barton.de/doc/sample-ngircd.conf) on the homepage. It
-contains all available options.
-
-In the sample configuration file, there are comments beginning with `#` *or*
-`;` -- this is only for the better understanding of the file, both comment
-styles are equal.
-
-The file is separated in five blocks: *[Global]*, *[Features]*, *[Operator]*,
-*[Server]*, and *[Channel]*.
-
-In the *[Global]* section, there is the main configuration like the server
-name and the ports, on which the server should be listening. Options in
-the *[Features]* section enable or disable functionality in the daemon.
-IRC operators of this server are defined in *[Operator]* blocks, remote
-servers are configured in *[Server]* sections, and *[Channel]* blocks are
-used to configure pre-defined ("persistent") IRC channels.
-
-### Manual Pages Online
-
-- Daemon: [ngircd.8](https://manpages.debian.org/ngircd.8)
-- Configutation file: [ngircd.conf.5](https://manpages.debian.org/ngircd.conf.5)
-
-## Command line options
-
-ngIRCd supports the following command line options:
-
-- `-f`, `--config <file>`
-
- The daemon uses the file `<file>` as configuration file rather than
- the standard configuration `/usr/local/etc/ngircd.conf`.
-
-- `-n`, `--nodaemon`
-
- ngIRCd should be running as a foreground process.
-
-- `-p`, `--passive`
-
- Server-links won't be automatically established.
-
-- `-t`, `--configtest`
+ See `doc/SSL.md` for details.
- Reads, validates and dumps the configuration file as interpreted
- by the server. Then exits.
+- IPv6 (autodetected by default):
-Use `--help` to see a short help text describing all available parameters
-the server understands, with `--version` the ngIRCd shows its version
-number. In both cases the server exits after the output.
+ `--enable-ipv6` / `--disable-ipv6`
-Please see the `ngircd(8)` manual page for more details!
+ Enable (disable) support for version 6 of the Internet Protocol, which should
+ be available on most modern UNIX-like operating systems by default.