如何在 Ubuntu 14.04 上使用 InspIRCd 2.0 和 Shaltúre 安装 IRC 服务器

介绍

本指南解释了如何在 Ubuntu 14.04 上安装和配置 IRC 服务器 InspIRCd 2.0。

在本教程结束时,您应该有一个功能齐全的IRC服务器,您可以通过大多数IRC客户端连接。

前提条件

请注意,标记为可选的项目将有助于,但不必要。

  • 一个 Ubuntu 14.04 Droplet
  • 具有 sudo 特权的非根用户(初始服务器设置与 Ubuntu 14.04解释了如何设置此设置)
  • RVM 安装在最新 Ruby 版本中。 查找 此教程的帮助。
  • 如果您有域名,您可以配置 irc.your_domain_nameservices.your_domain_name 以指向 Droplet。 转到 此教程 来设置域名和 A 和 AAAAA 记录。 如果您想要重定向两个子域,请使用 此教程

若要在 IRC 服务器上使用免费 SSL 证书,请遵循 如何在 VPS 上设置 Apache 使用免费签名 SSL 证书并请求为 irc.your_domain_name 提供证书。

如果您已经从证书授权机构获得了付费的SSL证书,则需要带来的*.pem,*.crt*.key文件。

本教程中的所有命令都应该作为非根用户运行,如果命令需要 root 访问,则将被sudo提前。

步骤 1 – 安装 InspIRCd

为了安装 InspIRCd,我们需要为它创建一个新的包。不幸的是,对于我们来说,Ubuntu 14.04 存储库中的 InspIRCd 包已经过时了。幸运的是,有一个脚本可以创建一个可安装的 .deb 文件,从源头的 tarball。

我们开始安装一些脚本使用的软件包:

1sudo apt-get install rake git gnutls-bin libgnutls-dev

现在克隆用于创建包的 Git 存储库:

1git clone https://github.com/SaberUK/inspircd-packages.git

然后,切换到它被克隆的目录:

1cd ./inspircd-packages

我们需要告诉脚本使用InspIRCd的稳定版本,这是版本 2.0。我们还需要告诉它我们需要SSL支持。

1export INSPIRCD_REVISION=insp20
2export INSPIRCD_MODULES="regex_posix ssl_gnutls"

此外,删除存在但导致版本 2.0 问题的额外补丁。

1rm ./extras/fix-data-and-log-paths.patch

创建.deb 文件来安装:

1rake deb

这将需要一段时间,所以在运行时拿起一杯咖啡。一旦完成,运行以下命令,以查看创建的文件的文件名称:

1ls *.deb

然后使用以下命令安装 .deb 文件(使用您刚刚在最后一步中找到的文件名):

1sudo dpkg -i ./inspircd_2.0.20_amd64.deb

现在我们将删除 InspIRCd 的源文件,所以如果黑客获得访问,他们无法使用恶意代码重构。

1cd ~
2rm -rf ./inspircd-packages

步骤 2 – 配置 InspIRCd

在 InspIRCd 实际上可以运行之前,我们需要正确配置它. 这样做时,我们还设置了一些对服务器运作至关重要的选项. 有些东西对我们来说是独一无二的,例如网络名称。

创建inspircd.conf文件:

1sudo nano /etc/inspircd/inspircd.conf

现在,将下面的示例配置文件复制到其中. 红色值需要定制. 将内容复制到 'inspircd.conf'后,我们将从顶部开始,并将其更改为正确的值。

  1[label  /etc/inspircd/inspircd.conf]
  2# This is just a more or less working example configuration file, please
  3# customize it for your needs!
  4<server name="irc.example.com"
  5        description="Example IRC Server"
  6        network="ExampleNet"
  7        id="00A">
  8
  9<admin name="Hameer Abbasi"
 10       nick="habbasi"
 11       email="[email protected]">
 12
 13<bind address="" port="6667" type="clients">
 14
 15<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">
 16
 17<connect allow="*"
 18         timeout="60"
 19         flood="20"
 20         threshold="1"
 21         pingfreq="120"
 22         sendq="262144"
 23         recvq="8192"
 24         localmax="3"
 25         globalmax="3">
 26
 27<class name="Shutdown"
 28       commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOAD">
 29<class name="ServerLink"
 30       commands="CONNECT SQUIT RCONNECT MKPASSWD MKSHA256">
 31<class name="BanControl"
 32       commands="KILL GLINE KLINE ZLINE QLINE ELINE">
 33<class name="OperChat"
 34       commands="WALLOPS GLOBOPS SETIDLE SPYLIST SPYNAMES">
 35<class name="HostCloak"
 36       commands="SETHOST SETIDENT SETNAME CHGHOST CHGIDENT">
 37
 38<type name="NetAdmin"
 39      classes="OperChat BanControl HostCloak Shutdown ServerLink"
 40      host="netadmin.omega.org.za">
 41<type name="GlobalOp"
 42      classes="OperChat BanControl HostCloak ServerLink"
 43      host="ircop.omega.org.za">
 44<type name="Helper"
 45      classes="HostCloak"
 46      host="helper.omega.org.za">
 47
 48<oper name="habbasi"
 49      password="secretpass"
 50      host="*@localhost"
 51      type="NetAdmin">
 52
 53<files motd="/etc/inspircd/inspircd.motd"
 54       rules="/etc/inspircd/inspircd.rules">
 55
 56<channels users="20"
 57          opers="60">
 58
 59<dns server="208.67.222.222" timeout="5">
 60<dns server="208.67.220.220" timeout="5">
 61
 62<options prefixquit="Quit: "
 63         noservices="no"
 64         qaprefixes="no"
 65         deprotectself="no"
 66         deprotectothers="no"
 67         flatlinks="no"
 68         hideulines="no"
 69         syntaxhints="no"
 70         cyclehosts="yes"
 71         ircumsgprefix="no"
 72         announcets="yes"
 73         disablehmac="no"
 74         hostintopic="yes"
 75         quietbursts="yes"
 76         pingwarning="15"
 77         allowhalfop="yes"
 78         exemptchanops="">
 79
 80<security hidewhois=""
 81          userstats="Pu"
 82          customversion=""
 83          hidesplits="no"
 84          hidebans="no"
 85          operspywhois="no"
 86          hidemodes="eI"
 87          maxtargets="20">
 88
 89<performance nouserdns="no"
 90             maxwho="128"
 91             softlimit="1024"      
 92             somaxconn="128"
 93             netbuffersize="10240">
 94
 95<log method="file"
 96     type="* -USERINPUT -USEROUTPUT"
 97     level="default"
 98     target="/var/log/inspircd.log">
 99
100<whowas groupsize="10"
101        maxgroups="100000"
102        maxkeep="3d">
103
104<timesync enable="no" master="no">
105
106<badnick nick="NickServ" reason="Reserved For Services">    
107<badnick nick="ChanServ" reason="Reserved For Services">
108<badnick nick="Global" reason="Reserved For S
109ervices">
110<badnick nick="InfoServ" reason="Reserved For Services">
111<badnick nick="OperServ" reason="Reserved For Services">
112<badnick nick="SaslServ" reason="Reserved For Services">
113<badnick nick="StatServ" reason="Reserved For Services">
114<badnick nick="ALIS" reason="Reserved For Services">

我们需要更改一些对您和您的 Droplet 特定的值。 顶部,找到服务器部分。 将其更改为您想要的主机名称、描述和网络名称。

1[label  /etc/inspircd/inspircd.conf]
2<server name="irc.yourdomain.com"
3        description="Example description for the IRC server"
4        network="ExampleNet"
5        id="46T">

现在,找到admin块,将值更改为IRC网络操作员的信息,操作员用户将能够在网络上做任何事情。

1[label  /etc/inspircd/inspircd.conf]
2<admin name="Hameer Abbasi"
3       nick="habbasi"
4       email="[email protected]">

我们需要能够重新启动或关闭服务器。这是在电力块中完成的。在这里,您需要更改密码。diepass的值是网络管理员将使用的密码来关闭服务器,而restartpass的值是他们将使用的密码来重新启动它。pause的值告诉服务器,如果输入了错误的密码,在几秒内阻止操作执行这些操作的时间是多少。

1[label  /etc/inspircd/inspircd.conf]
2<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">

我们需要定义操作员帐户和密码。您之前定义的管理员和操作员可能是同一个人。如果您有静态IP地址或可信域名,请更改主机以包括它。

1[label  /etc/inspircd/inspircd.conf]
2<oper name="habbasi"
3      password="secretPassword"
4      host="*@localhost *@your.local.ip.here *@your.local.domain.here"
5      type="NetAdmin">

对于主机值,将多个 IP 地址和域分隔为间隔,您还应该添加当前 Droplet 的 IP 地址和域(如果有),保存您的更改,然后关闭文件。

步骤 3 – 编辑当天的信息

每当用户连接到 IRC 网络时,都会显示当天的消息. 要定制它,请在 /etc/inspircd/ 中创建一个 inspircd.motd 文件:

1sudo nano /etc/inspircd/inspircd.motd

在此文件中,添加您想要向用户显示的那一天的消息. 通常,您想要一个友好的提醒,通知用户有关规则。

1[label  /etc/inspircd/inspircd.motd]
2This is ExampleNet. We are the world's newest IRC network.
3
4Support us by joining and becoming regular!
5
6Be sure to view the rules by typing "/rules" and hitting ENTER.

接下来,编辑规则文件。

1sudo nano /etc/inspircd/inspircd.rules

在此文件中,不论规则是什么,都将显示给用户每次他们输入‘/rules’命令。

1[label  /etc/inspircd/inspircd.rules]
21. No children under 13 are allowed to be on this network without the knowledge and consent of their parent or legal guardian.
32. No discussion or links involving pirated software is allowed on the network.
43. No discussion of drugs or other narcotics.
54. No trading of weapons.
65. No porn. There are minors on this network.

第4步:启动IRC服务器

在启动 IRC 服务器之前,我们需要修复权限和文件所有权:

1sudo find /etc/inspircd -type d -exec chmod 770 {} \;
2sudo find /etc/inspircd -type f -exec chmod 644 {} \;
3sudo chown -R irc:irc /etc/inspircd

接下来,我们需要为 PID 文件和日志文件目录设置正确的权限。

1sudo chown -R irc:irc /var/inspircd/
2sudo chown -R irc:irc /var/log/inspircd

您现在正在阅读开始Inspircd:

1sudo service inspircd start

您应该收到接近尾声的以下消息,这意味着我们已经成功启动了 InspIRCd:

1InspIRCd is now running as 'irc.example.com'[46T] with 1024 max open sockets

步骤五:测试基本功能

由于基本功能应该是,尝试连接到你新创建的IRC网络. 我们将指导你安装一个简单的命令行基于您的Droplet的IRC客户端。

1sudo apt-get install irssi

然后开始 IRC 客户端:

1irssi

您应该能够在底部的窗口中键入[(状态)]。 请注意,所有IRC命令都以前进缩略开始。

1/connect irc.example.com

如果您没有为您的服务器配置主机名称,您可以使用 Droplet 的 IP 地址. 如果您正确配置您的服务器,您应该看到一个类似于以下的屏幕:

Connected successfully!

现在登录作为操作员,键入以下命令:

1/oper habbasi secretPassword

如果它工作了,你应该看到你现在是NetAdmin。这意味着你的运营商权限正在工作。

1/quit

推荐IRC客户端

几乎任何设备都可以使用大量的IRC客户端,以下是推荐客户端的简短列表:

  • HexChat for Windows、Mac OS X、Linux
  • mIRC for Windows
  • Colloquy for Mac OS X 和 iOS
  • IRSSI for Linux 和 Mac OS X
  • AndChat for Android
  • Kiwi IRC (网页浏览器客户端)

请注意,在 Kiwi IRC 中,您将遇到使用 oper 权限的困难。Kiwi 通过代理连接,而不会保留您的 IP 地址。如果您选择仅列出允许连接的特定 IP 地址以进行操作员操作(这建议用于安全),则 oper 权限不会与 Kiwi IRC 一起工作。

步骤 6 – 设置 SSL (可选)

本节的目的是保护用户的隐私,并保护密码和其他东西,任何观看传输数据的用户都可以看到,例如ISP。

首先,我们需要将您的SSL证书复制到正确的目录. 为此,我们需要在IRC服务器配置目录中创建目录。

1sudo mkdir /etc/inspircd/sslcerts

接下来,我们需要复制相应的SSL证书和键到您新创建的配置目录:

1sudo cp /path/to/ssl/private.key /etc/inspircd/sslcerts/private.key
2sudo cp /path/to/ssl/certificate.crt /etc/inspircd/sslcerts/cert.pem
3sudo cp /path/to/ca/validation.crt /etc/inspircd/sslcerts/ca.pem

如果您正在使用自签证书,您可以省略复制ca.pem文件,这是在上面的最后一个命令中完成的。

设置inspircd目录的适当权限来保护您的证书,以便 InspIRCd 能够读取它们。

1sudo find /etc/inspircd -type d -exec chmod 770 {} \;
2sudo find /etc/inspircd -type f -exec chmod 644 {} \;
3sudo chown -R irc:irc /etc/inspircd

编辑配置文件,告诉它使用SSL:

1sudo nano /etc/inspircd/inspircd.conf

找到这个:

1[label /etc/inspircd/inspircd.conf]
2<bind address="" port="6667" type="clients">

在 bind 部分下方,添加这些行:

1[label /etc/inspircd/inspircd.conf]
2<bind address="" port="6697" type="clients" ssl="gnutls">
3<gnutls cafile="/etc/inspircd/sslcerts/ca.pem"
4        certfile="/etc/inspircd/sslcerts/cert.pem"
5        keyfile="/etc/inspircd/sslcerts/private.key"
6        priority="SECURE192:-VERS-SSL3.0">
7
8<module name="m_ssl_gnutls.so">

如果您使用的是自签证,则可以省略cafile指令。

重新启动服务器以启用更改。

1sudo service inspircd restart

现在应该在端口6697上启用SSL。

第7步:测试SSL(可选)

再一次,要测试SSL,我们将使用IRSSI。输入此作为之前启动IRSSI:

1irssi

接下来,输入以下命令以连接 SSL 启用:

1/connect -SSL -SSL_Verify irc.example.com 6697

如果您正在使用自签名的证书,则应省略-SSL_Verify选项。

如果成功了,你应该看到这样的屏幕:

Your server with SSL

继续前进并用/QUIT离开客户端。

第8步 - 安装 Shaltúre 服务

你的IRC服务器工作,你可以连接到它,但猜猜什么?你不能注册尼克斯,你不能管理频道所有权和角色,你不能发送或接收备忘录,所以我们使用服务,最受欢迎的服务平台是Atheme,但它的开发已经停止,它不会更新,除非可能修补严重的安全漏洞。

我们开始安装一个先决条件包:

1sudo apt-get install gettext

Shaltúre最好不要作为 root 运行,但如果我们将其运行为我们的主要用户,可能会有安全影响,因此,我们将为 Shaltúre 创建一个没有密码的用户,您无法登录这个帐户,只需使用sudo访问它。

1sudo adduser --disabled-password shalture

这会给你一些提示,但你可以通过它们按入。

1sudo -i -u shalture

我们继续通过将目录更改为您的主目录并克隆shalture存储库,我们将克隆到另一个目录,因为我们希望在~/shalture目录中安装。

1git clone git://github.com/shalture/shalture.git shalture-devel

将您的活跃目录更改为shalture-devel目录,并克隆一些其他需要的存储库。

1cd ./shalture-devel
2git submodule init
3git submodule update

运行设置编译阶段的配置,然后编译和安装:

1./configure --enable-contrib
2make
3make install

第二个命令后,在编译过程中需要一些时间,所以走一走,稍微拉伸腿部。

1cd ~
2rm -rf ./shalture-devel/

步骤 9 – 配置 Shaltúre 服务

安装完成后,更改目录到 Shaltúre 配置目录,以便我们可以配置它。

1cd ~/shalture/etc
2cp shalture.conf.example shalture.conf
3nano shalture.conf

在文件中找到这个:

1[label /home/shalture/shalture/etc/shalture.conf]
2#loadmodule "modules/protocol/charybdis";

通过在行开始时删除 # 字符,并用 inspircd 取代 charybdis:

1[label /home/shalture/shalture/etc/shalture.conf]
2loadmodule "modules/protocol/inspircd";

接下来,找到:

1[label /home/shalture/shalture/etc/shalture.conf]
2name = "services.int";

更改int,以匹配您的 IRC 服务器的域名或 IP 地址:

1[label /home/shalture/shalture/etc/shalture.conf]
2name = "services.your_domain_name_or_IP";

找到这条线:

1[label /home/shalture/shalture/etc/shalture.conf]
2numeric = "00A";

更改数值,使其与您之前提供的服务器id不同,但必须包含两个数字和一个字母:

1[label /home/shalture/shalture/etc/shalture.conf]
2numeric = "07C";

现在找到:

1[label /home/shalture/shalture/etc/shalture.conf]
2netname = "misconfigured network";

netname的值更改为您在 InspIRCd 配置文件的服务器块中设置的网络名称。

1[label /home/shalture/shalture/etc/shalture.conf]
2netname = "ExampleNet";

也找到:

1[label /home/shalture/shalture/etc/shalture.conf]
2hidehostsuffix = "users.misconfigured";

然后在用户后删除引用标记中的所有内容:

1[label /home/shalture/shalture/etc/shalture.conf]
2hidehostsuffix = "users";

接下来,找到这个:

1[label /home/shalture/shalture/etc/shalture.conf]
2adminname = "misconfigured admin";

将引用标记中的部分更改为您的姓名或伪名。

现在,更改网络的联系电子邮件. 查找:

1[label /home/shalture/shalture/etc/shalture.conf]
2adminemail = "[email protected]";

adminemail的值更改为您的电子邮件地址。

接下来,找到这个:

1[label /home/shalture/shalture/etc/shalture.conf]
2registeremail = "[email protected]";

更改 registeremail 的值为 noreply@your_domain_name. 这是电子邮件地址,在用户第一次在您的网络上注册他们的名称时将显示在欢迎电子邮件中。 它也是电子邮件,将发送密码重置指令和激活指令。

找到第一个上链接代码块,并通过添加/*之前和*/之后评论整个块。

 1[label /home/shalture/shalture/etc/shalture.conf]
 2/* uplink "irc.example.net" {
 3    // The server name of the ircd you're linking to goes above.
 4
 5    // host
 6    // The hostname to connect to.
 7    host = "127.0.0.1";
 8
 9    // vhost
10    // The source IP to connect from, used on machines with multiple interfaces.
11    #vhost = "192.0.2.5";
12
13    // send_password
14    // The password sent for linking.
15    send_password = "mypassword";
16
17    // receive_password
18    // The password received for linking.
19    receive_password = "theirpassword";
20
21    // port
22    // The port to connect to.
23    port = 6667;
24}; */

在下一个部分(你评论的后面),找到:

 1[label /home/shalture/shalture/etc/shalture.conf]
 2uplink "irc6.example.net" {
 3        host = "::1";
 4
 5        // password
 6        // If you want to have same send_password and accept_password, you
 7        // can specify both using 'password' instead of individually.
 8        password = "linkage";
 9
10        port = 6667;
11};

irc6.example.net更改为services.your_domain_name (作为前提的一部分,您应该为 services.your_domain_name 设置一个 A 记录)。

 1[label /home/shalture/shalture/etc/shalture.conf]
 2uplink "services.your_domain_name" {
 3        host = "::1";
 4
 5        // password
 6        // If you want to have same send_password and accept_password, you
 7        // can specify both using 'password' instead of individually.
 8        password = "SuperSecret123";
 9
10        port = 7001;
11};

接下来,在nickserv块中找到以下内容:

1[label /home/shalture/shalture/etc/shalture.conf]
2nickserv {
3...
4host = "services.int";
5...
6};

将其更改为您希望 NickServ 拥有的主机。

1[label /home/shalture/shalture/etc/shalture.conf]
2host = "ExampleNet/services/NickServ"

对下列服务进行类似的更改. 每个服务的配置文件中都会有一个块:

全世界 全世界 全世界 全世界 全世界 全世界 全世界 全世界

这些服务是与Shaltúre默认启用的服务。接下来,找到这个行:

1[label /home/shalture/shalture/etc/shalture.conf]
2operator "jilles" {

然后更改它,以便它在InspIRCd配置中的oper块中拥有您选择的名称:

1[label /home/shalture/shalture/etc/shalture.conf]
2operator "habbasi" {

最后,复制默认 cron 配置文件,以便稍后使用:

1cp /home/shalture/shalture/etc/shalture.cron.example /home/shalture/shalture/etc/shalture.cron

我们已经成功配置了服务!现在,退出提示,回到你的sudo非根用户。

1exit

步骤 10 — 配置 InspIRCd 以与 Shaltúre 合作

接下来,我们需要配置 InspIRCd 以便与 Shaltúre 玩得很好. 再次修改 InspIRCd 配置文件:

1sudo nano /etc/inspircd/inspircd.conf

将这些行添加到文件的末尾:

 1[label /etc/inspircd/inspircd.conf]
 2<bind address="::1" port="7001" type="servers">
 3
 4<uline server="services.example.com">
 5
 6<link name="services.example.com"
 7      ipaddr="::1"
 8      port="7001"
 9      allowmask="::1"
10      sendpass="password"
11      recvpass="password">
12
13<chanprotect noservices="no"
14             qprefix="~"
15             aprefix="&">
16
17# Modules needed for services to function
18<module name="m_chanprotect.so">
19<module name="m_halfop.so">
20<module name="m_services_account.so">
21<module name="m_deaf.so">
22<module name="m_spanningtree.so">
23<module name="m_globops.so">
24<module name="m_cban.so">
25<module name="m_svshold.so">
26<module name="m_hidechans.so">
27<module name="m_servprotect.so">
28<module name="m_chghost.so">
29<module name="m_namesx.so">
30<module name="m_uhnames.so">

对于红色突出的值,请将值更改为您的域名,以及sendpassrecvpass到您在Shaltúre配置的上链接部分中使用的密码。

保存,然后离开文本编辑器。

我们都已经配置好了!我们现在所要做的就是重新启动服务器和服务!

1sudo service inspircd restart
2sudo -i -u shalture /home/shalture/shalture/bin/shalture-services

您应该在末尾看到一个消息,该消息类似于以下内容:

1[2015-07-24 22:21:10] running in background mode from /home/shalture/shalture

这意味着Shaltúre已经成功启动。

第11步 - 测试 Shaltúre 服务

再次连接到您的服务器使用IRSSI,就像您在步骤 5 或 7 中所做的那样,您应该看到一个类似于以下的屏幕:

Shaltúre works

这意味着Shaltúre正在正常工作,并已成功连接到InspIRCd。

步骤 12 – 使 InspIRCd 和 Shaltúre 在重启中持久

我们已经配置了您的IRC服务器,现在怎么办?好吧,Shaltúre没有作为服务安装,这意味着它不会幸存于重新启动。

1sudo -i -u shalture crontab -e

如果您收到有关使用哪个编辑器的提示,请按2来选择nano,或您想要的任何其他编辑器。

然后在文件的末尾,添加这个:

1*/5 * * * * /home/shalture/shalture/etc/shalture.cron >/dev/null 2>&1

这会检查每五分钟,看看服务是否正在运行。如果没有,它会启动它们。不幸的是,Inspircd也没有被添加到启动列表中,但将其添加到列表中只是一个简单的命令:

1sudo update-rc.d inspircd defaults

现在 InspIRCd 和 Shaltúre 都将启动!

结论

InspIRCd 允许您设置自定义的 IRC 网络,您可以自己管理和管理它,Shaltúre 通过添加名称所有权、频道所有权、备忘录等功能来补充它。

要进一步配置您的 IRC 服务器,请查看 InspIRCd wiki或 Shaltúre 中包含的示例配置文件。

Published At
Categories with 技术
comments powered by Disqus