ZNC

ZNC is an advanced IRC bouncer that stays connected to the server, so an IRC client can disconnect/reconnect without losing the chat session.


Note

For this guide you should be familiar with the basic concepts of

License

All relevant legal information can be found here:

Prerequisites

To make the application accessible from the outside, open a port in the firewall:

[isabell@stardust ~]$ uberspace port add
Port 40132 will be open for TCP and UDP traffic in a few minutes.
[isabell@stardust ~]$

Installation

Create a new directory, download the latest version and enter the directory you just created:

[isabell@stardust ~]$ mkdir ~/znc
[isabell@stardust ~]$ curl https://znc.in/releases/znc-latest.tar.gz | tar -xzvC ~/znc --strip-components=1
[isabell@stardust ~]$ cd ~/znc
[isabell@stardust znc]$

Compile and install ZNC to your home directory:

[isabell@stardust znc]$ ./configure --prefix="$HOME/.local"
[...]
[isabell@stardust znc]$ make
[...]
[isabell@stardust znc]$ make install
[...]
[isabell@stardust znc]$

Configuration

Configure ZNC

Run the following command to create a config file:

[isabell@stardust ~]$ ~/.local/bin/znc --makeconf
[ .. ] Checking for list of available modules...
[ ** ]
[ ** ] -- Global settings --
[ ** ]
[ ?? ] Listen on port (1025 to 65534): 40132
[ ?? ] Listen using SSL (yes/no) [no]: yes
[ ?? ] Listen using both IPv4 and IPv6 (yes/no) [yes]:
[ .. ] Verifying the listener...
[ ** ] Enabled global modules [webadmin]
[ ** ]
[ ** ] -- Admin user settings --
[ ** ]
[ ?? ] Username (alphanumeric): myUsername
[ ?? ] Enter password:
[ ?? ] Confirm password:
[ ?? ] Nick [myUsername]: myNick
[ ?? ] Alternate nick [myNick_]:
[ ?? ] Ident [myUsername]:
[ ?? ] Real name (optional):
[ ?? ] Bind host (optional):
[ ** ] Enabled user modules [chansaver, controlpanel]
[ ** ]
[ ?? ] Set up a network? (yes/no) [yes]: no
[ ** ]
[ .. ] Writing config [/home/isabell/.znc/configs/znc.conf]...
[ ** ]
[ ** ] To connect to this ZNC you need to connect to it as your IRC server
[ ** ] using the port that you supplied.  You have to supply your login info
[ ** ] as the IRC server password like this: user/network:pass.
[ ** ]
[ ** ] Try something like this in your IRC client...
[ ** ] /server <znc_server_ip> +40132 myUsername:<pass>
[ ** ]
[ ** ] To manage settings, users and networks, point your web browser to
[ ** ] https://<znc_server_ip>:40132/
[ ** ]
[ ?? ] Launch ZNC now? (yes/no) [no]:
[isabell@stardust ~]$

Use your own certificate

ZNC ships with a self generated certificate which will cause a warning in all modern browsers. To prevent this, we have to use our own certificate. Enter the ~/.znc/configs directory and generate a dhparam.pem file:

[isabell@stardust ~]$ cd ~/.znc/configs
[isabell@stardust configs]$ openssl dhparam -out dhparam.pem 2048
[...]
[isabell@stardust configs]$

Warning

Replace isabell with your username!

Add the following lines to ~/.znc/configs/znc.conf above the line Version = 1.7.3 (your version number may differ):

SSLCertFile = /home/isabell/etc/certificates/isabell.uber.space.crt
SSLKeyFile = /home/isabell/etc/certificates/isabell.uber.space.key
SSLDHParamFile = /home/isabell/.znc/configs/dhparam.pem

Setup daemon

Create ~/etc/services.d/znc.ini with the following content:

[program:znc]
command=%(ENV_HOME)s/.local/bin/znc --foreground
autostart=yes
autorestart=yes

After creating the configuration, tell supervisord to refresh its configuration and start the service:

[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE                            RUNNING   pid 26020, uptime 0:03:14
[isabell@stardust ~]$

If it’s not in state RUNNING, check your configuration.

Open webadmin

Warning

Replace isabell with your username and 40132 with your port!

If ZNC is running, you can find the web interface for further configuration here:

Connect your client

Add a new server in your local IRC client:

  • Hostname: <username>.uber.space

  • Port: your port

  • Username: ZNC nickname

  • Password: ZNC password

  • Encryption: yes

Updates

Note

Check https://wiki.znc.in/ZNC regularly to stay informed about the newest version.

To update an existing installation remove the ~/znc directory (rm -rf ~/znc) and repeat the Installation steps. Execute supervisorctl restart znc to start the new version.


Tested with ZNC 1.7.3, Uberspace 7.3.1.1

Written by: no-one <https://github.com/no-one>