Installing Atheme
Atheme is a set of IRC services. It is cross-platform (runs on Linux and BSD) and works well with a variety of IRCds such as ngircd.
Atheme provides users with the NickServ, ChanServ and other *Serv that users expect from IRC. This allows users to register their nicknames, channels, and much more.
Building
First, install cmake
and gettext-tools
(internationalization support):
Please note that you may have to update your gcc compiler to a newer version.
$ doas pkg_add cmake gettext-tools
Create a new user for atheme:
$ doas useradd -m -g =uid -c "atheme" -d /home/atheme -s /bin/ksh atheme $ doas su atheme $ cd
Next, download the latest https://github.com/atheme/atheme/releases of Atheme:
$ ftp https://github.com/atheme/atheme/releases/download/v7.2.12/atheme-services-v7.2.12.tar.xz $ unxz atheme-services-v7.2.12.tar.xz $ tar -xf atheme-services-v7.2.12.tar $ cd atheme-services-v7.2.12
Before proceeding, make sure to thoroughly read README.md and the doc/ folder.
$ ./configure
This will now build a default configuration.
You will now see a default configuration like this below:
Configuration:
Atheme version : 7.2.12 Installation prefix : /home/atheme/atheme Module root directory: ${exec_prefix}/modules Config directory : ${prefix}/etc Logfile directory : ${prefix}/var Data directory : ${prefix}/etc PID directory : ${prefix}/var Reproducible builds : no Large network support: no OpenSSL support : yes GNU libidn support : no Contrib modules : no Mowgli installation : Internal PCRE support : no Perl support : no QR Code support : no CFLAGS : -I/home/atheme/atheme-services-v7.2.12/libmowgli-2/src/libmowgli -g -O2 Internationalization : no
Once you see this you are now ready to start building.
Please note that using 'make' or 'make install' might cause errors so please use 'gmake' and 'gmake install' instead to avoid compiling errors.
$ gmake $ gmake install
Lets now create your atheme.conf:
$ cd ~/atheme/etc/ $ cp atheme.conf.example atheme.conf
Now before you start editing your atheme.conf we need to make sure that we create a new services.db file else atheme will NOT work.
To do this:
$ touch services.db
editing atheme.conf:
#loadmodule "modules/crypto/argon2d"; loadmodule "modules/crypto/posix";
Change 'loadmodule "modules/crypto/posix";' to 'loadmodule "modules/crypto/pbkdf2v2";' so your configuration looks like this.
#loadmodule "modules/crypto/argon2d"; loadmodule "modules/crypto/pbkdf2v2";
Let's now start adding your ircd's link block to atheme.conf:
serverinfo { name = "services.int"; desc = "Atheme IRC Services"; numeric = "00A"; recontime = 10; netname = "misconfigured network"; hidehostsuffix = "users.misconfigured"; adminname = "misconfigured admin"; adminemail = "misconfigured@admin.tld"; registeremail = "noreply@admin.tld"; #hidden; mta = "/usr/sbin/sendmail"; loglevel = { error; info; admin; network; wallops; }; maxlogins = 5; maxusers = 5; mdlimit = 30; emaillimit = 10; emailtime = 300; auth = none; casemapping = rfc1459; };
Replace 'services.int' with your real services link block name example: services.ircnow.org
Then set your netname to your networks name example: IRCNow
Once you have configured this then it's now time to move on to your uplink settings in atheme.conf:
uplink "irc.example.net" { host = "127.0.0.1"; #vhost = "192.0.2.5"; send_password = "mypassword"; receive_password = "theirpassword"; port = 16667; };
Please change up host to your servers host example: irc.ircnow.org
The localhost ip 127.0.0.1
should be fine if running atheme services from the same machine otherwise please use the real ip address of the server you are linking to.
You can leave #vhost commented out for running on localhost otherwise uncomment out for your real machines ip address.
Send and receive password in most cases can be set the same password as some ircd's only need 1 password for linking.
We now need to set your ircd's protocol module for atheme to work in this case we will be using ngircd.
you will see this line in your atheme.conf:
#loadmodule "modules/protocol/charybdis";
We need to change this to use ngircd's protocol module by changing it to this:
loadmodule "modules/protocol/ngircd";
Once you have done this then go ahead and set what hostname your services will use normally services.yourserver.com
there will be a line in each service such as ChanServ NickServ for the host they should use.
host = "services.int";
Set them to any services name you wish for them to use heres a example:
host = "services.ircnow.org";
Configuring ngircd.conf
In ngircd.conf, you need a block that looks like this:
[Server] Name = services.example.com Host = 127.0.0.1 ;Bind = 192.168.0.1 Port = 16667 MyPassword = NGIRCDMYPASSWORD PeerPassword = NGIRCDPEERPASSWORD ;Group = 123 Passive = yes SSLConnect = false ServiceMask = *Serv,Global
Replace services.example.com
with the actual services hostname. The host will likely be 127.0.0.1 (again, because atheme is running on the same server as ngircd). The port should be 16667.
Make sure that MyPassword matches the server password for the uplink block in atheme. Set Passive to yes so that ngircd does not automatically connect to atheme (let atheme initiate the connection), and turn off SSL.
Finally, we set the ServiceMask. This lets ngircd know that the nicknames *Serv and Global belong to IRC Services.
If ngircd is already running, remember to reload changes to ngircd.conf:
$ doas rcctl reload ngircd
NOTE: restarting ngircd is unnecessary and results in downtime.
To start services:
$ cd ~/atheme/bin $ ./atheme-services
If './atheme-services' fails, please double check the conf file.
No Automation At This Time
Troubleshooting
If you run into issues, check /home/atheme/atheme/var/ for log files.