ZNC
Table of Contents
A basic ZNC configuration
znc --makeconf
Edit ~/.znc/configs/znc.conf
to preference. I disable the web interface using AllowWeb
in the Listener
section. I set BindHost
for my user section to drislock.org. Most other config can be done via messaging on IRC.
For sasl authentication with a cert the cert and sasl modules need to be loaded for that network. Then the certificate needs to be placed at ~/.znc/users/<username>/networks/<network>/moddata/cert/user.pem
.
Some example configuration done via IRC (/msg *status):
AddNetwork <name> JumpNetwork <name> AddServer irc.example.com +6697 LoadModule sasl LoadModule cert Connect SaveConfig
Changing the password is via manual invocation of znc --makepass
. Then the ZNC needs to be taken down and the config edited to change the Hash
, Method
, and Salt
fields.
My typical ZNC server entry in hexchat. Each network gets its own entry like this. You can also do this through the GUI.
N=drislock/EFnet I=Nickname i=Nickname_ U=Username/EFnet R=user P=<password> L=7 E=UTF-8 (Unicode) F=61 D=0 S=myznc.com/43025
There are some issues with inconsistent SSL protocol support. By default ZNC only enables TLS 1.1 and 1.2. You can enable other supported protocols with:
SSLProtocols = -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
In order to check supported SSL protocols on a server use nmap:
nmap --script ssl-enum-ciphers -p 9999 example.com -Pn
ZNC systemd user unit
I never could get the service to autostart despite enabling linger, and trying different WantedBy targets (multi-user, default). Leaving here for reference, and because using the systemd unit keeps a log of output whereas running znc in the background does not.
systemctl --user edit --force --full znc
[Unit] Description=ZNC IRC Bouncer After=network-online.target [Service] ExecStart=/usr/bin/znc -f --datadir=%h/.znc [Install] WantedBy=default.target
systemctl --user start znc.service systemctl --user enable znc.service sudo loginctl enable-linger <username>