# <code>./configure</code><br />(use '''<code>--prefix="$HOME/.local"</code>''' ('''<code>cmake -DCMAKE_INSTALL_PREFIX="$HOME/.local"</code>''') if you don't want a system wide installation or simply don't have root access; use <code>--with-openssl=/path/to/openssl</code> (<code>cmake -DOPENSSL_ROOT_DIR=/path/to/openssl</code>) if you have a non-standard SSL path)<br />(use <code>--help</code> to see other configure options)

+

# <code>mkdir build</code>

+

# <code>cd build</code>

+

# <code>cmake ..</code><br />(use <code>cmake .. -DCMAKE_INSTALL_PREFIX="$HOME/.local"</code> if you don't want a system wide installation or simply don't have root access; use <code>cmake -DOPENSSL_ROOT_DIR=/path/to/openssl</code> if you have a non-standard SSL path)<br />(use <code>ccmake</code> or <code>cmake-gui</code> to see other configure options)

# <code>make</code><br />(if you are on a dedicated server and your CPU has more than one core, you can use <code>make -jX</code> where X is the number of CPU cores to speed up compilation)

# <code>make</code><br />(if you are on a dedicated server and your CPU has more than one core, you can use <code>make -jX</code> where X is the number of CPU cores to speed up compilation)

Source Tarball

If you want to compile ZNC with OpenSSL support, you need the OpenSSL development package. On Debian/Ubuntu this is called libssl-dev, on CentOS/Fedora/Red Hat it's openssl-devel, and on openSUSE it's libopenssl-devel.
A good way to install this and other dependencies is the build dependency feature of package managers (apt-get build-dep / yum-builddep / zypper source-install --build-deps-only).

cmake ..(use cmake .. -DCMAKE_INSTALL_PREFIX="$HOME/.local" if you don't want a system wide installation or simply don't have root access; use cmake -DOPENSSL_ROOT_DIR=/path/to/openssl if you have a non-standard SSL path)(use ccmake or cmake-gui to see other configure options)

make(if you are on a dedicated server and your CPU has more than one core, you can use make -jX where X is the number of CPU cores to speed up compilation)

make install

Please note that compiling can take 5-10 minutes or more.

Once you have installed znc, you can use znc --makeconf to make a configuration file for ZNC. This config is stored in ~/.znc under the user you run it as. You should create a dedicated non root user to run znc under.

ZNC is run by just executing znc under the dedicated znc user, at which stage it goes to background. It does not automatically make an init.d service for itself (which can be done by following the instructions to running ZNC as a system daemon) nor does it need to be run in screen or something similar.

Linux

Docker

ZNC is available as an image in Docker Hub, and can be downloaded with:

docker pull znc

Follow the link above for additional instructions.

If you want to test great new features (and bugs!), unstable ZNC image is here.

Debian

Prior to Debian Sid (Unstable) including Wheezy the ZNC packages included in the repositories for those older releases are extremely old. There could be security issues and even bugs in the code. If you are having issues with ZNC from your Debian package manager (prior to Sid), it is recommended to uninstall that package and build from source, or use the third-party repository (noted below).

Debian provides ZNC packages which may be installed using (stretch/stable, buster/testing, sid)

If you want to build znc from source to get a newer version than Debian provides, you may need the following packages:

build-essential
libssl-dev
libperl-dev
pkg-config
libicu-dev

You can use the command

aptitude build-dep znc

to install build dependencies automatically. Note that sometimes these build-depedencies are outdated and won't work with the current version of ZNC.

Fedora/CentOS/Red Hat Enterprise Linux

Fedora has znc packaged in it's main repository and their Extra Packages for Enterprise Linux (EPEL) repository provides them for CentOS/RHEL.

If using RHEL install the EPEL repository by downloading the appropriate package linked on EPEL's website.

Once you have EPEL installed (or are on Fedora), execute:

sudo yum install znc

or dnf

sudo dnf install znc

Once installed you can configure znc by running:

sudo -u znc znc --makeconf # this creates /var/lib/znc/.znc

Then finally to start it you can run:

sudo systemctl start znc # or enable if you want it to autostart

Build from Source: CentOS 7+ only

If you really wish to build from source, then please follow the instructions here, written by Thomas Ward. Note that these instructions do utilize the EPEL repository in order to get all the necessary build dependencies (and there's a lot of them). These instructions work properly to create a basic ZNC installation. CentOS 7 or newer is needed because of the C++ standards being used, and older CentOS not having the required compilers for those standards.

Ubuntu

You can either build ZNC from source, or use a PPA that was made by a community member to contain pre-built ZNC packages for all supported Ubuntu releases. Note that the PPA does not contain packages for every Ubuntu release, and the support dates for various Ubuntu versions is detailed here. If the release of Ubuntu you are on is not supported on the PPA, you will have to compile it from source yourself.

Build From Source

If you want to build znc from source to get a newer version than Ubuntu provides, you may need to determine capability of your system to build ZNC 1.6.0 (and newer) based on the version of Ubuntu.

Building from Git Master

If you are building from a source tarball for a stable release, skip this section. It is only needed for those building the development release (the master branch) on Git.

If you are trying to use the Git master version of the source code, then you will also need to ensure the following packages are also installed. You will not need to install these if you are using a stable release tarball, only if you are using Git master:

aclocal
pkg-config
automake
autoconf

After you have installed these packages, then continue onward for the additional dependencies you will need.

After installing dependencies, you will have to run autogen.sh to generate the configure script.

Add Build Dependency Sources

DO NOT add these dependency sources or PPAs if you are only trying to install from the ZNC PPA; instead skip this section and go to the Install via PPA second instead. This section is only for those intending to compile themselves from-source.

Older than Ubuntu 12.04

If you have any version of Ubuntu older than 12.04, you are incapable of building ZNC 1.6 or newer, due to the inability to install or build the ZNC build dependencies.

Ubuntu 12.04

If you are on Ubuntu 12.04, you will need to add three PPAs to your system, with the following commands:

Ubuntu 14.04

If you are on Ubuntu 14.04, you will need to add one PPA to your system, with the following command:

sudo add-apt-repository -y ppa:teward/swig3.0

Newer than Ubuntu 14.04

You will not need any additional PPAs or sources for build dependencies.

Other Build Dependencies

After verifying you have the required build dependency sources, you will need to install the following packages:

build-essential
libssl-dev
libperl-dev
pkg-config
swig3.0
libicu-dev

If you are on Ubuntu 12.04, you will also need to install the following package:

g++-4.7

After you have done this, you can follow the instructions on this page for compiling from the source tarball.

Install via PPA

Debian users:do not use this PPA or you will risk forfeiting all support from Debian or breaking your system! Use the Debian repository described on the Debian section instead.

NOTICE: The PPA here has recently had its signing keys updated (as of approx. Jan 9, 2019); you may need to go through the process of downloading missing keys if apt starts to complain about NO_PUBKEY errors with the PPA.

Cygwin

If you don't want to use the provided packages, you can compile ZNC from source; for that you'll need the following packages installed: automake, gcc-g++, libicu-devel, make, mpfr, pkg-config, openssl-devel, zlib-devel. After installing these packages proceed to source tarball section (or git)