{"id":2312,"date":"2014-04-22T11:14:31","date_gmt":"2014-04-22T15:14:31","guid":{"rendered":"http:\/\/antipaucity.com\/?p=2312"},"modified":"2014-04-22T11:14:31","modified_gmt":"2014-04-22T15:14:31","slug":"setting-up-an-unreal-irc-server-on-centos-6","status":"publish","type":"post","link":"https:\/\/merikebi.warrenmyers.com\/?p=2312","title":{"rendered":"setting up an unreal irc server on centos 6"},"content":{"rendered":"<p>Ever want to run an IRC server? I recently set one up at irc.datente.com using a <a href=\"https:\/\/digitalocean.com\/?refcode=d197a961987a\">Digital Ocean<\/a> VM running CentOS 6.5 x64.<\/p>\n<p>Here&#8217;s what I did, if you want to replicate the process for yourself (full <a href=\"http:\/\/unrealircd.com\/support.php\">documentation<\/a> available from Unreal&#8217;s <a href=\"http:\/\/unrealircd.com\">website<\/a>):<\/p>\n<ul>\n<li>acquire CentOS 6.5 x64 server (as I mentioned, I used <a href=\"https:\/\/digitalocean.com\/?refcode=d197a961987a\">Digital Ocean<\/a>)<\/li>\n<li>`yum -y install screen wget gcc`<\/li>\n<li>`yum -y upgrade`<\/li>\n<li><span style=\"line-height: 1.5em;\">`adduser unreal`<\/span><\/li>\n<li><span style=\"line-height: 1.5em;\">`su &#8211; unreal`<\/span><\/li>\n<li><span style=\"line-height: 1.5em;\">download Unreal to your server (http:\/\/www.unrealircd.com\/downloads\/unreal\/source &#8211; `wget http:\/\/www.unrealircd.com\/downloads\/Unreal3.2.10.2.tar.gz`)<\/span><\/li>\n<li><span style=\"line-height: 1.5em;\">`tar zxf Unreal*.gz`<\/span><\/li>\n<li>`cd Unreal*`<\/li>\n<li>`make clean`<\/li>\n<li>`.\/Config`\n<ul>\n<li>answer prompts &#8211; most can be left default<\/li>\n<\/ul>\n<\/li>\n<li>`make`<\/li>\n<li>`cp doc\/example.conf unrealircd.conf`<\/li>\n<li>edit unrealircd.conf (use your editor of choice)\n<ul>\n<li>see sample config file below for what I did (minus passwords \/ emails)<\/li>\n<\/ul>\n<\/li>\n<li>if all has gone well, start Unreal\n<ul>\n<li>`screen\u00a0.\/unreal start`<\/li>\n<\/ul>\n<\/li>\n<li>create a startup script to ensure Unreal launches on reboot as user `unreal`<\/li>\n<\/ul>\n<p>That&#8217;s it. Thankfully, while the config file isn&#8217;t pleasant to play with, it&#8217;s a lot better than it used to be.<\/p>\n<blockquote>\n<pre>loadmodule \"src\/modules\/commands.so\";\nloadmodule \"src\/modules\/cloak.so\";\n\ninclude \"help.conf\";\ninclude \"badwords.channel.conf\";\ninclude \"badwords.message.conf\";\ninclude \"badwords.quit.conf\";\ninclude \"spamfilter.conf\";\n\nme\n{\n        name \"your.irc.server.tld\";\n        info \"Your IRC Server\";\n        numeric 1;\n};\n\nadmin {\n        \"Your Name\";\n        \"yournick\";\n        \"your@email.tld\";\n};\n\nclass           clients\n{\n        pingfreq 90;\n        maxclients 500;\n        sendq 100000;\n        recvq 8000;\n};\n\nclass           servers\n{\n        pingfreq 90;\n        maxclients 10;          \/* Max servers we can have linked at a time *\/\n        sendq 1000000;\n        connfreq 100; \/* How many seconds between each connection attempt *\/\n};\n\nallow {\n        ip             *@*;\n        hostname       *@*;\n        class           clients;\n        maxperip 25;\n};\n\n\/* Passworded allow line *\/\nallow {\n        ip             *@255.255.255.255;\n        hostname       *@*.passworded.ugly.people;\n        class           clients;\n        password \"f00Ness\";\n        maxperip 1;\n};\n\nallow channel {\n        channel \"#WarezSucks\";\n        class \"clients\";\n};\n\noper youroperatornick {\n        class           clients;\n        from {\n                userhost bob@smithco.com;\n        };\n        password \"yourpassword\";\n        flags\n        {\n                netadmin;\n                can_zline;\n                can_gzline;\n                can_gkline;\n                global;\n        };\n};\n\nlisten         *:6697\n{\n        options\n        {\n\/\/ uncomment this line if you chose to compile Unreal with SSL support\n\/\/              ssl;\n                clientsonly;\n        };\n};\n\nlisten         *:8067;\nlisten         *:6667;\n\n\/* not linking to any other servers right now\nlink            hub.mynet.com\n{\n        username        *;\n        hostname        1.2.3.4;\n        bind-ip         *;\n        port            7029;\n        hub             *;\n        password-connect \"LiNk\";\n        password-receive \"LiNk\";\n        class           servers;\n                options {\n                        \/* Note: You should not use autoconnect when linking services *\/\n                        autoconnect;\n                        ssl;\n                        zip;\n                };\n};\n*\/\n\nulines {\n        services.roxnet.org;\n        stats.roxnet.org;\n};\n\ndrpass {\n        restart \"I-love-to-restart\";\n        die \"die-you-stupid\";\n};\n\nlog \"ircd.log\" {\n        \/* Delete the log file and start a new one when it reaches 20MB, leave this out to always use the \n           same log *\/\n        maxsize 20971520;\n        flags {\n                oper;\n                connects;\n                server-connects;\n                kills;\n                errors;\n                sadmin-commands;\n                chg-commands;\n                oper-override;\n                spamfilter;\n        };\n};\n\nalias NickServ { type services; };\nalias ChanServ { type services; };\nalias OperServ { type services; };\nalias HelpServ { type services; };\nalias StatServ { type stats; };\n\nalias \"identify\" {\n        format \"^#\" {\n                target \"chanserv\";\n                type services;\n                parameters \"IDENTIFY %1-\";\n        };\n        format \"^[^#]\" {\n                target \"nickserv\";\n                type services;\n                parameters \"IDENTIFY %1-\";\n        };\n        type command;\n};\n\nalias \"services\" {\n        format \"^#\" {\n                target \"chanserv\";\n                type services;\n                parameters \"%1-\";\n        };\n        format \"^[^#]\" {\n                target \"nickserv\";\n                type services;\n                parameters \"%1-\";\n        };\n        type command;\n};\n\nalias \"identify\" {\n        format \"^#\" {\n                target \"chanserv\";\n                type services;\n                parameters \"IDENTIFY %1-\";\n        };\n        format \"^[^#]\" {\n                target \"nickserv\";\n                type services;\n                parameters \"IDENTIFY %1-\";\n        };\n        type command;\n};\n\nalias \"glinebot\" {\n        format \".+\" {\n                command \"gline\";\n                type real;\n                parameters \"%1 2d Bots are not allowed on this server, please read the faq at http:\/\/www.example.com\/faq\/123\";\n        };\n        type command;\n};\n\nfiles\n{\n        \/* The Message Of The Day shown to users who log in: *\/\n        \/* motd ircd.motd; *\/\n\n        \/*\n         * A short MOTD. If this file exists, it will be displayed to\n         * the user in place of the MOTD. Users can still view the\n         * full MOTD by using the \/MOTD command.\n         *\/\n        \/* shortmotd ircd.smotd; *\/\n\n        \/* Shown when an operator \/OPERs up *\/\n        \/* opermotd oper.motd; *\/\n\n        \/* Services MOTD append. *\/\n        \/* svsmotd ircd.svsmotd; *\/\n\n        \/* Bot MOTD *\/\n        \/* botmotd bot.motd; *\/\n\n        \/* Shown upon \/RULES *\/\n        \/* rules ircd.rules; *\/\n\n        \/*\n         * Where the IRCd stores and loads a few values which should\n         * be persistent across server restarts. Must point to an\n         * existing file which the IRCd has permission to alter or to\n         * a file in a folder within which the IRCd may create files.\n         *\/\n        \/* tunefile ircd.tune; *\/\n\n        \/* Where to save the IRCd's pid. Should be writable by the IRCd. *\/\n        \/* pidfile ircd.pid; *\/\n};\n\n\/*\ntld {\n        mask *@*.fr;\n        motd \"ircd.motd.fr\";\n        rules \"ircd.rules.fr\";\n};\n*\/\n\n\/* note: you can just delete the example block above,\n * in which case the defaults motd\/rules files (ircd.motd, ircd.rules)\n * will be used for everyone.\n *\/\n\nban nick {\n        mask \"*C*h*a*n*S*e*r*v*\";\n        reason \"Reserved for Services\";\n};\n\nban ip {\n        mask 195.86.232.81;\n        reason \"Delinked server\";\n};\n\nban server {\n        mask eris.berkeley.edu;\n        reason \"Get out of here.\";\n};\n\nban user {\n        mask *tirc@*.saturn.bbn.com;\n        reason \"Idiot\";\n};\n\nban realname {\n        mask \"sub7server\";\n        reason \"sub7\";\n};\n\nexcept ban {\n        \/* don't ban stskeeps *\/\n        mask           *stskeeps@212.*;\n};\n\ndeny dcc {\n        filename \"*sub7*\";\n        reason \"Possible Sub7 Virus\";\n};\n\ndeny channel {\n        channel \"*warez*\";\n        reason \"Warez is illegal\";\n        class \"clients\";\n};\n\nvhost {\n        vhost           i.hate.microsefrs.com;\n        from {\n                userhost       *@*.image.dk;\n        };\n        login           stskeeps;\n        password        moocowsrulemyworld;\n};\n\nset {\n        network-name            \"Datente\";\n        default-server          \"irc.datente.com\";\n        services-server         \"irc.datente.com\";\n        stats-server            \"irc.datente.com\";\n        help-channel            \"#datente\";\n        hiddenhost-prefix       \"rox\";\n        \/* prefix-quit          \"no\"; *\/\n        \/* Cloak keys should be the same at all servers on the network.\n         * They are used for generating masked hosts and should be kept secret.\n         * The keys should be 3 random strings of 5-100 characters\n         * (10-20 chars is just fine) and must consist of lowcase (a-z),\n         * upcase (A-Z) and digits (0-9) [see first key example].\n         * HINT: On *NIX, you can run '.\/unreal gencloak' in your shell to let\n         *       Unreal generate 3 random strings for you.\n         *\/\n        cloak-keys {\n                \"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW\";\n                \"aaAr1HnR6gl3sJ7hVz4Zb7x4YwpW\";\n                \"aeAr1HnR6gl3sJ7hVz4Zb7x4YwpW\";\n        };\n        \/* on-oper host *\/\n        hosts {\n                local           \"locop.roxnet.org\";\n                global          \"ircop.roxnet.org\";\n                coadmin         \"coadmin.roxnet.org\";\n                admin           \"admin.roxnet.org\";\n                servicesadmin   \"csops.roxnet.org\";\n                netadmin        \"netadmin.roxnet.org\";\n                host-on-oper-up \"no\";\n        };\n};\n\nset {\n        kline-address \"your@email.tld\";\n        modes-on-connect \"+ixw\";\n        modes-on-oper    \"+xwgs\";\n        oper-auto-join \"#opers\";\n        options {\n                hide-ulines;\n                \/* You can enable ident checking here if you want *\/\n                \/* identd-check; *\/\n                show-connect-info;\n        };\n\n        maxchannelsperuser 10;\n        \/* The minimum time a user must be connected before being allowed to use a QUIT message,\n         * This will hopefully help stop spam *\/\n        anti-spam-quit-message-time 10s;\n        \/* Make the message in static-quit show in all quits - meaning no\n           custom quits are allowed on local server *\/\n        \/* static-quit \"Client quit\";   *\/\n\n        \/* You can also block all part reasons by uncommenting this and say 'yes',\n         * or specify some other text (eg: \"Bye bye!\") to always use as a comment.. *\/\n        \/* static-part yes; *\/\n\n        \/* This allows you to make certain stats oper only, use * for all stats,\n         * leave it out to allow users to see all stats. Type '\/stats' for a full list.\n         * Some admins might want to remove the 'kGs' to allow normal users to list\n         * klines, glines and shuns.\n         *\/\n        oper-only-stats \"okfGsMRUEelLCXzdD\";\n\n        \/* Throttling: this example sets a limit of 3 connection attempts per 60s (per host). *\/\n        throttle {\n                connections 3;\n                period 60s;\n        };\n\n        \/* Anti flood protection *\/\n        anti-flood {\n                nick-flood 3:60;        \/* 3 nickchanges per 60 seconds (the default) *\/\n        };\n\n        \/* Spam filter *\/\n        spamfilter {\n                ban-time 1d; \/* default duration of a *line ban set by spamfilter *\/\n                ban-reason \"Spam\/Advertising\"; \/* default reason *\/\n                virus-help-channel \"#help\"; \/* channel to use for 'viruschan' action *\/\n                \/* except \"#help\"; channel to exempt from filtering *\/\n        };\n};\n\n\n<\/pre>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Ever want to run an IRC server? I recently set one up at irc.datente.com using a Digital Ocean VM running CentOS 6.5 x64. Here&#8217;s what I did, if you want to replicate the process for yourself (full documentation available from Unreal&#8217;s website): acquire CentOS 6.5 x64 server (as I mentioned, I used Digital Ocean) `yum &hellip;<br \/><a href=\"https:\/\/merikebi.warrenmyers.com\/?p=2312\" class=\"more-link pen_button pen_element_default pen_icon_arrow_double\">Continue reading <span class=\"screen-reader-text\">setting up an unreal irc server on centos 6<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[6,41,45],"tags":[390,419,789,800],"keyring_services":[],"class_list":["post-2312","post","type-post","status-publish","format-standard","hentry","category-code","category-technical","category-tutorial","tag-how-to","tag-irc","tag-tutorial","tag-unreal"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=\/wp\/v2\/posts\/2312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2312"}],"version-history":[{"count":0,"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=\/wp\/v2\/posts\/2312\/revisions"}],"wp:attachment":[{"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2312"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/merikebi.warrenmyers.com\/index.php?rest_route=%2Fwp%2Fv2%2Fkeyring_services&post=2312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}