Uptime :: Server


Compiling / making / setting up and IRC server and service


Page List : if you want page by page howto :
same rules applys

Page 1 / Page 2 / Page 3 / Page 4 / Page 5 / Page 6 / Page 7

lets get down to work : this is about 7 pages : if you wanted to save an copy to hard drive

look for the -----page ----- to work out what page 1 and page 2 so on :)

Before we start

what we need to get

a DNS name : get one for free from like no-ip or dyndns

IF you dont want SSL on the server

you gotta edit my .conf files to make them work or you going to have an error on

but it will tell you what line the error is on

this had being tested on

-> OpenSuse ver 10.2

-> Fedora Core ver 6 (I386)

who did what

Writen / Tested by ZcWorld
Helped / Tested by Craz1
Tested by Granddad

Check List

what we need

- > Linux OS ( fc 6 or opensuse )

- > UnrealIRCD 3.2

- > anope services

- > compiler

- > SU access rights (superuser)

- > and a LOT of time

- > and a good signing voice (joke) but im sureyou will be
doing a lot of yelling dueing this

- > water and coffee n something to eat as well (there is a
lot of waiting at times. .. when its does the compiling and building )

my setup

i got a personal account on my server pc

SUB Notes :::

if working in an Vm make a bakcup of the OS

just in case it does goes ass up or u can redo the test to make sure you got it



if its on a real pc .. than arrr goodluck and hope it doest stuff up first time
around thats all i can say

step 1

time to get a copy of the UnrealIRC server

and a coyp of anope serivces for the server

in total about 3.5 MB



my demo .conf files ( are in .RAR and .ZIP format :)

16 KB

20 KB

if you downloading them on another pc than the linux pc

than copy them over via winSCP or something else

if you downloaded them on the pc .. just move them over to a build folder

like at /home/zcworld/src/ ( you may have to make a build folder ;) )

make folder called src than open the folder on server side in winscp

than drag and drop the files over and click copy

it will take an min or two to copy over

than thats it

step 2

log in as your normal user

than type

su - <ENTER>

<password> <ENTER>

<< find your OS your using and do how what its says here >>

user info

username : ircadmin

password : what you want

group : ircadmin




OpenSuse OS

step 1 : type

yast <enter>

step 2 : than pick from the list " security and users " than tab pick group

step 3 : alt + a than in the group name box type : ircadmin : than alt +a ( make
sure you write down what was in there first : normal just users )

step 4 : than alt +u than alt + x than enter on default for new

step 5 : pick from the list the "ircadmin" as default group : nothing in the
secondary groups than ALT + A

step 6 : than ALT + A : than type the full name for the ircadmin account /
account name / password than alt + A

step 7 : ALT +F than wait 10 secs than ALT + Q


FC 6

arrr < sorry i don't know how to add users via command line on FC :( sorry >


page 3


Step 3


su - <ENTER>

root password here <ENTER>

(if the bin folder is there than skip this part but do the chown part)

cd /home/ircadmin

make bin

make conf

chown -R ircadmin:ircadmin ./

ls -al

( note : im sure you will seen that i dont have a conf folder in my screenshot <
bad me > )

exit out of SuperUser access


to make sure you are in your home folder


cd src

tar -zxf Unreal3.2.6.tar.gz

tar -zxf anope-1.6.5.tar.gz 33

cd Unreal3.2


( heres my screen dump of mine when i build mine up :) )

Do you want to enable the server anti-spoof protection?

[No] -> Yes <ENTER>

What directory are all the server configuration files in?

[/home/zcworld/src/Unreal3.2] -> /home/ircdadmin/conf

What is the path to the ircd binary including the name of the binary?

[/home/zcworld/src/Unreal3.2/src/ircd] -> /home/ircadmin/bin/ircd

Would you like to compile as a hub or as a leaf?

Type Hub to select hub and Leaf to select leaf.

[Hub] ->hub <ENTER>

What is the hostname of the server running your IRCd?

[dhcppc2] -> irc.zcworld-evil.mine.nu <ENTER>

What should the default permissions for your configuration files be? (Set this
to 0 to disable)

It is strongly recommended that you use 0600 to prevent unwanted reading of the

[0600] -> <ENTER>

Do you want to support SSL (Secure Sockets Layer) connections?

[No] -> y <ENTER>

If you know the path to OpenSSL on your system, enter it here. If not

leave this blank

[] -> <ENTER>

Do you want to enable IPv6 support?

[No] -> <ENTER>

Do you want to enable ziplinks support?

[No] -> y <ENTER>

If you know the path to zlib on your system, enter it here. If not

leave this blank

[] -> <ENTER>

Do you want to enable remote includes?

[No] -> <ENTER>

Do you want to enable prefixes for chanadmin and chanowner?

This will give +a the & prefix and ~ for +q (just like +o is @)

Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,

PJIRC, irssi, CGI:IRC, etc.)

This feature should be enabled/disabled network-wide.

[Yes] -> y <ENTER>

What listen() backlog value do you wish to use? Some older servers

have problems with more than 5, others work fine with many more.

[5] -> <ENTER>

How far back do you want to keep the nickname history?

[2000] -> <ENTER>

What is the maximum sendq length you wish to have?

[3000000] -> <ENTER>

How many buffer pools would you like?

This number will be multiplied by MAXSENDQLENGTH.

[18] -> <ENTER>

How many file descriptors (or sockets) can the IRCd use?

[1024] -> <ENTER>

Would you like any more parameters to configure?

Write them here:

[]-> <ENTER>

./configure --with-showlistmodes --enable-nospoof --enable-hub --enable-ssl
--enable-ziplinks --enable-prefixaq --with-listen=5
--with-dpath=/home/ircadmin/conf --with-spath=/home/ircadmin/bin/ircd
--with-nick-history=2000 --with-sendq=3000000 --with-bufferpool=18
--with-hostname=irc.zcworld-evil.mine.nu --with-permissions=0600
--with-fd-setsize=1024 --enable-dynamic-linking

checking for gcc... gcc

if you enabled SSL than just do what its says on screen

If you didn't pick that this miss this step

( looks like this )


page 4


step 4

after its done


su <ENTER>


( should be in the folder you where in but with SuperUser access )

make install

( screen dump)

zcworld@dhcppc2:~/build/Unreal3.2> su -


dhcppc2:~ # cd /home/zcworld/src/Unreal3.2/

dhcppc2:/home/zcworld/src/Unreal3.2 # make install

Building src

make[1]: Entering directory `/home/zcworld/src/Unreal3.2/src'

cd modules; make 'CFLAGS=-I../include
-I/home/zcworld/src/Unreal3.2/extras/c-ares/include -L../extras/c-ares/lib -pipe
-g -O2 -funsigned-char -fno-strict-aliasing -Wno-pointer-sign -DZIP_LINKS
-export-dynamic ' 'CC=gcc' 'IRCDLIBS=-lcrypt -lnsl -lz -ldl
-L/home/zcworld/src/Unreal3.2/extras/regexp/lib -ltre -lcares' 'LDFLAGS='
'IRCDMODE=711' 'BINDIR=/home/ircadmin/bin/ircd' 'INSTALL=/usr/bin/install'
'INCLUDEDIR=../include' 'IRCDDIR=/home/ircadmin/conf' 'MANDIR=' 'RM=/bin/rm'
'CP=/bin/cp' 'TOUCH=/usr/bin/touch' 'RES=' 'SHELL=/bin/sh' 'STRTOUL='
'CRYPTOLIB=-lssl -lcrypto' 'CRYPTOINCLUDES=' 'URL=' all

make[2]: Entering directory `/home/zcworld/src/Unreal3.2/src/modules'

make[2]: Nothing to be done for `all'.

make[2]: Leaving directory `/home/zcworld/src/Unreal3.2/src/modules'

make[1]: Leaving directory `/home/zcworld/src/Unreal3.2/src'


| Compile is now complete. |

| You should now read the documentation and learn |

| how to configure your IRCd. |

| |

| If you really like UnrealIRCd, and would like to |

| make a donation, please read the Donation file in |

| this archive. :) |

| |

| Thanks for using Unreal IRCd! If you are in need |

| for any kind of help regarding the IRCd please |

| read the Unreal.nfo file. |


/usr/bin/install -m 0700 -d /home/ircadmin/conf

/usr/bin/install -m 0700 src/ircd /home/ircadmin/bin/ircd

/usr/bin/install -m 0700 -d /home/ircadmin/conf/networks

/usr/bin/install -m 0600 networks/*.network /home/ircadmin/conf/networks

/usr/bin/install -m 0700 networks/makenet /home/ircadmin/conf/networks

/usr/bin/install -m 0600 networks/networks.ndx /home/ircadmin/conf/networks

/usr/bin/install -m 0700 -d /home/ircadmin/conf/doc

/usr/bin/install -m 0600 doc/Authors doc/example.conf doc/coding-guidelines
doc/tao.of.irc doc/unreal32docs.html /home/ircadmin/conf/doc

/usr/bin/install -m 0700 -d /home/ircadmin/conf/aliases

/usr/bin/install -m 0600 aliases/*.conf /home/ircadmin/conf/aliases

/usr/bin/touch /home/ircadmin/conf/unrealircd.conf

chmod 0600 /home/ircadmin/conf/unrealircd.conf

/usr/bin/install -m 0600 spamfilter.conf dccallow.conf /home/ircadmin/conf

/usr/bin/install -m 0600 badwords.*.conf help.conf LICENSE Donation

/usr/bin/install -m 0700 unreal /home/ircadmin/conf

/usr/bin/install -m 0700 -d /home/ircadmin/conf/modules

/usr/bin/install -m 0700 src/modules/*.so /home/ircadmin/conf/modules

( if you didn't do ssl than skip this line )

cp server.*.pem ~ircadmin/conf/

dhcppc2:/home/zcworld/src/Unreal3.2 # cd ~ircadmin/

Copy over the conf folder to the /home/ircadmin root and replace any files

( if you are going to use my demo config files for the first run : if so make
sure you log in with the ircadmin account in winscp to upload / copy the files
over with)

if not

cp /home/zcworld/src/Unreal3.2/doc/example.conf

after that


cd /home/ircadmin <ENTER>

chown -R ircadmin:ircadmin ./ <ENTER>

to set all the files over to the ircadmin user / group

open up a new term windows

and log in as ircadmin user / password

than type

cd conf/

ln -s $(pwd)/unreal ~/bin/unreal

cd ../bin

ls -al

total 1928

drwxr-xr-x 2 ircadmin ircadmin 4096 2007-01-20 23:02 .

drwxr-xr-x 10 ircadmin ircadmin 4096 2007-01-20 22:32 ..

-rwx------ 1 ircadmin ircadmin 1959302 2007-01-20 22:20 ircd

lrwxrwxrwx 1 ircadmin ircadmin 26 2007-01-20 23:02 unreal ->



page 5


Step 5

ircadmin@dhcppc2:~/bin> ./unreal start

Starting UnrealIRCd

_ _ _ ___________ _____ _

| | | | | |_ _| ___ \/ __ \ | |

| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |

| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |

| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |

\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|


using TRE 0.7.2 (GPL)

using OpenSSL 0.9.8d 28 Sep 2006

using zlib 1.2.3

* Loading IRCd configuration ..

* Configuration loaded without any problems ..

* Initializing SSL.

* Dynamic configuration initialized .. booting IRCd.



open up an IRC client

and try to connect to the servers IP address


you will get something like this if its working
* Connecting to (6667)
-irc.zcworld-evil.mine.nu- *** Looking up your hostname...
-irc.zcworld-evil.mine.nu- *** Couldn't resolve your hostname; using your IP address instead
«(~ Welcome to the zcworld IRC Network Zc_Au!Zcworld@ ~)»
«(~ Your host is irc.zcworld-evil.mine.nu, running version Unreal3.2.6 ~)»
«(~ server was Created This server was created Sat Jan 20 2007 at 23:12:19 CST
«(~ Info ~)
Local host: server (
«(~ Current Server User Statistics for zcworld ~)»
«(~ There are 1 users and 0 invisible on 1 servers ~)»
«(~ Local Users Current Local Users: 1 Max: 1 ~)»
«(~ Global Users Current Global Users: 1 Max: 1 ~)»
MOTD File is missing

once its working

type in

su - <ENTER>

Password: <ENTER>

cd /home/zcworld/src/ <ENTER>

/home/zcworld/build # find . |grep -i cron










find the ircdchk file

than type :

cp ./Unreal3.2/ircdcron/ircdchk ~ircadmin/bin/

cd ~ircadmin/bin

chown ircadmin:ircadmin ircdchk

cd ~ircadmin/bin

crontab -e

type in the window that pops up ( push the insert key )

# this is to check the server every 2 mins

*/2 * * * * /home/ircadmin/bin/ircdchk >/dev/null 2>&1

than push the esc key once or twice times than :wq

crontab: installing new crontab


crontab -l

now thats the IRC server itself

time for the IRC services

whats the point of an IRC server without the services unless your linking into
an network with services than ... you are all good to go :) ...


page 6


Step 6


su <ENTER>

password <ENTER>

cd /home/zcworld/src/anope-1.6.5/


**** this is a screen dump : for me when i did my config / install ***

-========================= A N O P E ==========================-

For more detailed information on the features of Anope1.6 please

read the self-named documentation found on the 'docs' directory.

Anope is a set of IRC Service expanded upon Lara's Epona, based

on Andy Church's IRC Services. For all your Anope needs please

visit our portal at http://www.anope.org/

Please read the INSTALL file for install/upgrade instructions.

Reading the FAQ and README files would be a good idea too. (all

documentation is located on directory 'docs').


Beginning Services configuration.

Note: press Return for the default, or enter a new value.

In what directory do you want the binaries to be installed?

[/root/services] /home/ircadmin/services

/home/ircadmin/services does not exist. Create it?

[y] y <ENTER>

Where do you want the data files to be installed?

[/home/ircadmin/services] /home/ircadmin/services

Which group should all Services data files be owned by? (If Services

should not force files to be owned by a particular group, just press


[] <ENTER>

What should the default umask for data files be (in octal)?

(077 = only accessible by owner; 007 = accessible by owner and group)

[077] <ENTER>

Select the closest to the type of server on your IRC network:

1) DreamForge 4.6.7 [dated IRCd, upgrade to a current one]

2) Bahamut 1.4.27 [or later]

3) UnrealIRCd 3.1.1 [or later]

4) UltimateIRCd 2.8.2 [or later]

5) UltimateIRCd 3.0.0 [alpha26 or later]

6) Hybrid IRCd 7.0 [experimental]

7) ViagraIRCd 1.3.x [or later]

8) PTlink 6.15.0 [experimental]

[no default] 3 <ENTER>

Do you want to use the MD5 message-digest algorithm to encrypt passwords?

(Selecting "yes" protects your passwords from being stolen if someone

gains access to the Services databases, but makes it impossible to recover

forgotten passwords. There is no way to reverse this operation, so make

sure you really want to enable it.)

[no] <ENTER>

Do you want to compile Anope with threading support?

If you want to use the proxy detector, you MUST have this. If you get

compilation errors, you should disable this feature and try again.

[no] <ENTER>

Do you want to compile Anope with MySQL support?

At this time Anope is able to dump all databases into MySQL. That means

you get a read-only copy of the data. If you plan to run any module that

uses MySQL, you should enable this option as well.

[no] <ENTER>

Do you want to compile Anope with Module support?

This will allow you to load and unload external modules of code without

restarting services. You can find several Anope modules on our website.

This requires libdl, if you have problems compiling disable this option.

(this option is ignored on OpenBSD for the time being)

[no] y <ENTER>

Where do you want the modules installed? (The trailing / is important)

[/home/ircadmin/services/modules/] /home/ircadmin/services/modules

/home/ircadmin/services/modules does not exist. Create it?

[y] y <ENTER>

End of interactive configuration.

Searching for a suitable compiler... great, found gcc!

Testing default compiler flags (-O2)... looks good.

Let's see what libraries are lying around... -lnsl -lresolv


Looking for OS specific needs...

Looking for a 16-bit integer type... short

Looking for a 32-bit integer type... int

Checking for presence of include files (it's okay if some aren't there):

strings.h... present

sys/select.h... present

sys/sysproto.h... not present

Seeing if your system defines int16/int32... not found (this is good).

How to complain when something goes wrong... ah, strerror() is here.

Looking for other routines we want that you don't have...

Checking how to install files... looks like "install" will work.

Checking how to copy directories... /bin/cp -dpr

Creating sysconf.h... done.

Creating Makefile.inc... done.

Saving configuration results in config.cache... done.

All done! Now run "make" (or possibly "gmake") to compile Services.

See the INSTALL, README and FAQ files if you have any problems.

dhcppc2:/home/zcworld/src/anope-1.6.5 #


touch services.h

(cd lang ; make language.h)

make[1]: Entering directory `/home/zcworld/src/anope-1.6.5/lang'

Generating language.h... 1410 strings

make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/lang'

cp -p lang/language.h .

touch pseudo.h

sh version.sh

gcc -O2 -Wall -g -c actions.c

gcc -O2 -Wall -g -c botserv.c

gcc -O2 -Wall -g -c channels.c

gcc -O2 -Wall -g -c chanserv.c

gcc -O2 -Wall -g -c commands.c

gcc -O2 -Wall -g -c compat.c

gcc -O2 -Wall -g -c converter.c

gcc -O2 -Wall -g -c config.c

gcc -O2 -Wall -g -c datafiles.c

gcc -O2 -Wall -g -c encrypt.c

gcc -O2 -Wall -g -c helpserv.c

gcc -O2 -Wall -g -c hostserv.c

gcc -O2 -Wall -g -c init.c

gcc -O2 -Wall -g -c language.c

gcc -O2 -Wall -g -c list.c

gcc -O2 -Wall -g -c log.c

gcc -O2 -Wall -g -c mail.c

gcc -O2 -Wall -g -c main.c

gcc -O2 -Wall -g -c memory.c

gcc -O2 -Wall -g -c memoserv.c

gcc -O2 -Wall -g -c messages.c

gcc -O2 -Wall -g -c misc.c

gcc -O2 -Wall -g -c modules.c

gcc -O2 -Wall -g -c news.c

gcc -O2 -Wall -g -c nickserv.c

nickserv.c: In function âload_old_ns_dbaseâ:

nickserv.c:479: warning: dereferencing type-punned pointer will break
strict-aliasing rules

gcc -O2 -Wall -g -c operserv.c

gcc -O2 -Wall -g -c process.c

gcc -O2 -Wall -g -c protocol.c

gcc -O2 -Wall -g -c proxy.c

gcc -O2 -Wall -g -c send.c

gcc -O2 -Wall -g -c sessions.c

gcc -O2 -Wall -g -c slist.c

gcc -O2 -Wall -g -c sockutil.c

gcc -O2 -Wall -g -c timeout.c

gcc -O2 -Wall -g -c users.c

gcc actions.o botserv.o channels.o chanserv.o commands.o compat.o converter.o
config.o datafiles.o encrypt.o helpserv.o hostserv.o init.o language.o list.o
log.o mail.o main.o memory.o memoserv.o messages.o misc.o modules.o news.o
nickserv.o operserv.o process.o protocol.o proxy.o send.o sessions.o slist.o
sockutil.o timeout.o users.o -lnsl -lresolv -rdynamic -o services -ldl

(cd lang ; make CFLAGS=" -O2 -Wall -g")

make[1]: Entering directory `/home/zcworld/src/anope-1.6.5/lang'

gcc -O2 -Wall -g langcomp.c -o langcomp

./langcomp cat.l

./langcomp de.l

./langcomp en_us.l

./langcomp es.l

./langcomp fr.l

./langcomp gr.l

./langcomp nl.l

./langcomp pt.l

./langcomp tr.l

./langcomp it.l

./langcomp ru.l

make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/lang'

All done! Now run "make" (or possibly "gmake") to compile your modules.

See the INSTALL, README and FAQ files if you have any problems.

make[1]: Entering directory `/home/zcworld/src/anope-1.6.5/modules'

gcc -O2 -Wall -g -c hs_moo.c

gcc -O2 -Wall -g -c ircd_catserv.c

make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/modules'

Now run "make install" to install Services.

dhcppc2:/home/zcworld/src/anope-1.6.5 #

make install

(cd lang ; make CFLAGS=" -O2 -Wall -g")

make[1]: Entering directory `/home/zcworld/src/anope-1.6.5/lang'

make[1]: Nothing to be done for `all'.

make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/lang'

install -m 700 services /home/ircadmin/services/services

rm -f /home/ircadmin/services/listnicks /home/ircadmin/services/listchans

ln /home/ircadmin/services/services /home/ircadmin/services/listnicks

ln /home/ircadmin/services/services /home/ircadmin/services/listchans

(cd lang ; make install)

make[1]: Entering directory `/home/zcworld/src/anope-1.6.5/lang'

mkdir -p /home/ircadmin/services/languages

chmod 700 /home/ircadmin/services/languages

cp cat de en_us es fr gr nl pt tr it ru /home/ircadmin/services/languages

chmod 600 /home/ircadmin/services/languages/*

make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/lang'

/bin/cp -dpr data/* /home/ircadmin/services

test -d /home/ircadmin/services/backups || mkdir /home/ircadmin/services/backups

test -d /home/ircadmin/services/logs || mkdir /home/ircadmin/services/logs

make[1]: Entering directory `/home/zcworld/src/anope-1.6.5/modules'

ld -shared hs_moo.o -o hs_moo.so

ld -shared ircd_catserv.o -o ircd_catserv.so

/bin/cp -dpr ./*.so /home/ircadmin/services/modules

make[1]: Leaving directory `/home/zcworld/src/anope-1.6.5/modules'

Don't forget to create/update your services.conf file! See

the README for details.

dhcppc2:/home/zcworld/src/anope-1.6.5 #

ok now time to reset the access rights


cd ~ircadmin/

chown -R ircadmin:ircadmin ./


page 7


step 7

ok now time to copy them demo files for the service over

just copy over the serivce folder and replace any files that its ask to replace

than go back to your ircadmin window

and type in

cd ../services/


now in the IRC client windows

type /oper zcworld zcworld

that will let you see if there any errors or not

( but the two serivces should auto connect :)

type /msg nickserv help

to see if thats displays anything

if so .. its gives you the normal help info

than its works

thats the basic of setting an server and services up and running

one last step to do

in your ircadmin terminal window type

crontab -e

** push the insert key **

copy !!!

*/3 * * * * /home/ircadmin/services/services.chk >/dev/null 2>&1

push the esc key two times than :wq <ENTER>


I used on my windows PC Context to edit the .conf files

and to change a lot of lines at once like from zcworld-evil.mine.nu to

and just for fun change the password

password : opername : /oper zcworld / zcworld

to restart : /restart restart

and to die the server its : /die die

( to restart / die you gotta be oper user :) )


when you make changes to the .conf files on the server typ ein the IRC client
when you are oper status


to reload the conf file


Do Not ask me How to Link two servers up, because i

don't know yet and i being working on it for 3 hrs ......

gotta wait for a while to find out some info

Bigs thanks to Craz1 for his help

checking my conf files for me ...

and grandad ( just a
screen name) for his help as well :) to test the server :)



please config your server yourself and don't use simple passwords

the CSS is from the howtoforge.com website .. this is an copy of the html code i
used to post the howto on the site :)



Post a Comment

<< Home