ZNC: Difference between revisions

From NixOS Wiki
imported>Mth
Created page with "=ZNC= [https://znc.in/ ZNC] is an [https://en.wikipedia.org/wiki/Internet_Relay_Chat IRC] bouncer: it stays connected to IRC networks so clients can disconnect without missin..."
 
Klinger (talk | contribs)
mNo edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=ZNC=
[https://znc.in/ ZNC] is an [https://en.wikipedia.org/wiki/Internet_Relay_Chat IRC] bouncer: it stays connected to IRC networks so clients can disconnect without missing messages or losing the session.
[https://znc.in/ ZNC] is an [https://en.wikipedia.org/wiki/Internet_Relay_Chat IRC] bouncer: it stays connected to IRC networks so clients can disconnect without missing messages or losing the session.


Line 10: Line 8:
   enable = true;
   enable = true;
   mutable = false; # Overwrite configuration set by ZNC from the web and chat interfaces.
   mutable = false; # Overwrite configuration set by ZNC from the web and chat interfaces.
   useLegacyConfig = false; # Use services.znc.config instead of services.znc.confOptions.
   useLegacyConfig = false; # Turn off services.znc.confOptions and their defaults.
  openFirewall = true; # ZNC uses TCP port 5000 by default.
};
};
</syntaxhighlight>
</syntaxhighlight>
Line 18: Line 17:
==Clients==
==Clients==


Generate a password with:
Choose a password, and extract a hash with:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ nix-shell --packages znc --command "znc --makepass"
$ nix-shell --packages znc --command "znc --makepass"
Line 25: Line 24:
Then, in <code>configuration.nix</code>:
Then, in <code>configuration.nix</code>:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
services.znc = {
services.znc.config = {
  # ...
  LoadModule = [ "adminlog" ]; # Write access logs to ~znc/moddata/adminlog/znc.log.  
  openFirewall = true;
  User.bob = {
  config = {
    Admin = true;
    LoadModule = [ "adminlog" ]; # Write logs to ~znc/moddata/adminlog/znc.log.
    Pass.password = {
    User.bob = {
      Method = "sha256"; # Fill out this section
      Admin = true;
      Hash = "...";     # with the generated hash.
      Pass.password = {
      Salt = "...";
        Method = "sha256"; # Fill out this section with the generated password.
        Hash = "...";
        Salt = "...";
      };
     };
     };
   };
   };
Line 47: Line 42:
</syntaxhighlight>
</syntaxhighlight>


See also [https://wiki.znc.in/Connecting_to_ZNC Connecting] and [https://wiki.znc.in/Category:Clients Category:Clients] on the ZNC wiki.
Next, see [https://wiki.znc.in/Connecting_to_ZNC Connecting] and [https://wiki.znc.in/Category:Clients Category:Clients] on the ZNC wiki.


==Networks==
==Networks==
SASL authentication is not yet supported from <code>configuration.nix</code>. Either <code>/msg *sasl</code> <ref>See [https://wiki.znc.in/Sasl Sasl] on the ZNC wiki.</ref> or use NickServ instead as shown below.


{{Expansion|This section is empty.}}
<syntaxhighlight lang="nix">
service.znc.config.User.bob = {
  Network.freenode = {
    Server = "chat.freenode.net +6697";
    Chan = { "#nixos" = {}; "#nixos-wiki" = {}; };
    Nick = "bob";                            # Supply your password as an argument
    LoadModule = [ "nickserv yourpassword" ]; # <- to the nickserv module here.
    JoinDelay = 2; # Avoid joining channels before authenticating.
  };
};
</syntaxhighlight>
[[Category:Applications]]

Latest revision as of 20:35, 24 April 2024

ZNC is an IRC bouncer: it stays connected to IRC networks so clients can disconnect without missing messages or losing the session.

Note: This page concerns NixOS 19.03 and later.

Start with the following:

services.znc = {
  enable = true;
  mutable = false; # Overwrite configuration set by ZNC from the web and chat interfaces.
  useLegacyConfig = false; # Turn off services.znc.confOptions and their defaults.
  openFirewall = true; # ZNC uses TCP port 5000 by default.
};

And use services.znc.config to configure ZNC as described in Configuration on the ZNC wiki.

Clients

Choose a password, and extract a hash with:

$ nix-shell --packages znc --command "znc --makepass"

Then, in configuration.nix:

services.znc.config = {
  LoadModule = [ "adminlog" ]; # Write access logs to ~znc/moddata/adminlog/znc.log. 
  User.bob = {
    Admin = true;
    Pass.password = {
      Method = "sha256"; # Fill out this section
      Hash = "...";      # with the generated hash.
      Salt = "...";
    };
  };
};

SSL is enabled by default and a self-signed certificate is generated to ~znc/znc.pem. A fingerprint can be extracted with:

cat ~znc/znc.pem | openssl x509 -sha512 -fingerprint -noout | tr -d ':' | tr 'A-Z' 'a-z' | cut -d = -f 2

Next, see Connecting and Category:Clients on the ZNC wiki.

Networks

SASL authentication is not yet supported from configuration.nix. Either /msg *sasl [1] or use NickServ instead as shown below.

service.znc.config.User.bob = {
  Network.freenode = {
    Server = "chat.freenode.net +6697";
    Chan = { "#nixos" = {}; "#nixos-wiki" = {}; };
    Nick = "bob";                             # Supply your password as an argument
    LoadModule = [ "nickserv yourpassword" ]; # <- to the nickserv module here.
    JoinDelay = 2; # Avoid joining channels before authenticating.
  };
};
  1. See Sasl on the ZNC wiki.