InspIRCd2.0とShaltúreを使用してUbuntu14.04でIRCサーバーをセットアップする方法
序章
このガイドでは、Ubuntu14.04にIRCサーバーであるInspIRCd2.0をインストールして構成する方法について説明します。 独自のサーバーにインストールすると、ユーザーの管理、ニックネームの変更、チャネルプロパティの変更などを柔軟に行うことができます。
このチュートリアルを終了すると、ほとんどのIRCクライアントを介して接続できる完全に機能するIRCサーバーができあがります。
前提条件
オプションとマークされたアイテムは役に立ちますが、必須ではないことに注意してください。
- Ubuntu14.04ドロップレット
- sudo権限を持つroot以外のユーザー( Ubuntu 14.04 を使用した初期サーバーセットアップでは、これをセットアップする方法について説明しています。)
- 最新のRubyバージョンでインストールされたRVM。 ヘルプについては、このチュートリアルを確認してください。
- ドメイン名をお持ちの場合は、設定できます
irc.your_domain_name
とservices.your_domain_name
ドロップレットを指す。 このチュートリアルに移動して、ドメイン名とそのAおよびAAAAレコードを設定します。 2つのサブドメインだけをリダイレクトする場合は、このチュートリアルを使用してください。 - (オプション)ローカルマシンにすでにインストールされているIRCクライアント
- (オプション)SSL証明書
IRCサーバーで使用する無料のSSL証明書を取得するには、VPSで無料の署名付きSSL証明書を使用してApacheを設定する方法に従って証明書をリクエストしてください。 irc.your_domain_name
.
認証局からの有料SSL証明書を既にお持ちの場合は、 *.pem
, *.crt
また *.key
付属のファイル。
このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前に sudo
.
ステップ1—InspIRCdをインストールする
InspIRCdをインストールするには、新しいパッケージを作成する必要があります。 残念ながら、Ubuntu14.04リポジトリにあるInspIRCdのパッケージは古くなっています。 幸いなことに、インストール可能なものを作成するスクリプトが利用可能です .deb
ソースtarballからのファイル。 オープンソースなので、要件に合わせて変更できます。
スクリプトが使用するいくつかのパッケージをインストールすることから始めます。
- sudo apt-get install rake git gnutls-bin libgnutls-dev
次に、パッケージの作成に使用したGitリポジトリのクローンを作成します。
- git clone https://github.com/SaberUK/inspircd-packages.git
次に、クローンが作成されたディレクトリに切り替えます。
cd ./inspircd-packages
安定バージョンのInspIRCd(バージョン2.0)を使用するようにスクリプトに指示する必要があります。 また、SSLサポートが必要であることを伝える必要があります。 このために、スクリプトが読み取り、それに応じて動作する2つの環境変数をエクスポートします。
export INSPIRCD_REVISION=insp20
export INSPIRCD_MODULES="regex_posix ssl_gnutls"
また、存在するがバージョン2.0で問題を引き起こす余分なパッチを削除します。
- rm ./extras/fix-data-and-log-paths.patch
を生成します .deb
インストール用のファイル:
- rake deb
これにはしばらく時間がかかりますので、実行中にコーヒーを飲みに行ってください。 完了したら、次のコマンドを実行して、作成されたファイルのファイル名を確認します。
ls *.deb
次に、をインストールします .deb
次のコマンドでファイルを作成します(最後の手順で見つけたファイル名を使用します)。
- sudo dpkg -i ./inspircd_2.0.20_amd64.deb
InspIRCdのソースファイルを削除するので、ハッカーがアクセスした場合、悪意のあるコードで再コンパイルすることはできません。
- cd ~
- rm -rf ./inspircd-packages
ステップ2—InspIRCdを構成する
InspIRCdを実際に実行する前に、適切に構成する必要があります。 これを行う際に、サーバーの機能に不可欠ないくつかのオプションも設定します。 ネットワーク名など、私たちに固有のものもあります。
を作成します inspircd.conf
ファイル:
- sudo nano /etc/inspircd/inspircd.conf
次に、次の設定例ファイルをコピーします。 赤字の値はカスタマイズする必要があります。 内容をコピーした後 inspircd.conf
、一番上から始めて、正しい値に変更します。
# This is just a more or less working example configuration file, please
# customize it for your needs!
<server name="irc.example.com"
description="Example IRC Server"
network="ExampleNet"
id="00A">
<admin name="Hameer Abbasi"
nick="habbasi"
email="[email protected]">
<bind address="" port="6667" type="clients">
<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">
<connect allow="*"
timeout="60"
flood="20"
threshold="1"
pingfreq="120"
sendq="262144"
recvq="8192"
localmax="3"
globalmax="3">
<class name="Shutdown"
commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOAD">
<class name="ServerLink"
commands="CONNECT SQUIT RCONNECT MKPASSWD MKSHA256">
<class name="BanControl"
commands="KILL GLINE KLINE ZLINE QLINE ELINE">
<class name="OperChat"
commands="WALLOPS GLOBOPS SETIDLE SPYLIST SPYNAMES">
<class name="HostCloak"
commands="SETHOST SETIDENT SETNAME CHGHOST CHGIDENT">
<type name="NetAdmin"
classes="OperChat BanControl HostCloak Shutdown ServerLink"
host="netadmin.omega.org.za">
<type name="GlobalOp"
classes="OperChat BanControl HostCloak ServerLink"
host="ircop.omega.org.za">
<type name="Helper"
classes="HostCloak"
host="helper.omega.org.za">
<oper name="habbasi"
password="secretpass"
host="*@localhost"
type="NetAdmin">
<files motd="/etc/inspircd/inspircd.motd"
rules="/etc/inspircd/inspircd.rules">
<channels users="20"
opers="60">
<dns server="208.67.222.222" timeout="5">
<dns server="208.67.220.220" timeout="5">
<options prefixquit="Quit: "
noservices="no"
qaprefixes="no"
deprotectself="no"
deprotectothers="no"
flatlinks="no"
hideulines="no"
syntaxhints="no"
cyclehosts="yes"
ircumsgprefix="no"
announcets="yes"
disablehmac="no"
hostintopic="yes"
quietbursts="yes"
pingwarning="15"
allowhalfop="yes"
exemptchanops="">
<security hidewhois=""
userstats="Pu"
customversion=""
hidesplits="no"
hidebans="no"
operspywhois="no"
hidemodes="eI"
maxtargets="20">
<performance nouserdns="no"
maxwho="128"
softlimit="1024"
somaxconn="128"
netbuffersize="10240">
<log method="file"
type="* -USERINPUT -USEROUTPUT"
level="default"
target="/var/log/inspircd.log">
<whowas groupsize="10"
maxgroups="100000"
maxkeep="3d">
<timesync enable="no" master="no">
<badnick nick="NickServ" reason="Reserved For Services">
<badnick nick="ChanServ" reason="Reserved For Services">
<badnick nick="Global" reason="Reserved For S
ervices">
<badnick nick="InfoServ" reason="Reserved For Services">
<badnick nick="OperServ" reason="Reserved For Services">
<badnick nick="SaslServ" reason="Reserved For Services">
<badnick nick="StatServ" reason="Reserved For Services">
<badnick nick="ALIS" reason="Reserved For Services">
あなたとあなたのドロップレットに固有のいくつかの値を変更する必要があります。 上部で、 server
セクション。 目的のホスト名、説明、およびネットワーク名に変更します。 The id
2つの数字と1つの文字になるように変更する必要があります。 例えば:
<server name="irc.yourdomain.com"
description="Example description for the IRC server"
network="ExampleNet"
id="46T">
今、見つけます admin
ブロック。 値をIRCネットワークのオペレーター向けの情報に変更します。 オペレーターユーザーは、ネットワーク上ですべてを行うことができます。
<admin name="Hameer Abbasi"
nick="habbasi"
email="admin@example.com">
サーバーを再起動またはシャットダウンできる必要があります。 これはで行われます power
ブロック。 ここで、パスワードを変更する必要があります。 の値 diepass
ネットワーク管理者がサーバーをシャットダウンするために使用するパスワードと、 restartpass
再起動に使用するパスワードです。 の値 pause
間違ったパスワードが入力された場合に、operがこれらの操作を実行するのをブロックする時間(秒単位)をサーバーに通知します。 先に進み、パスワードを変更します。 離れる pause
デフォルト値で。
<power diepass="SecretPassword" restartpass="OtherSecretPassword" pause="2">
を見つける oper
ブロック。 オペレーターアカウントとパスワードを定義する必要があります。 以前に定義した管理者とオペレーターは同じ人物にすることができます。 静的IPアドレスまたは信頼できるドメイン名がある場合は、それを含めるようにホストを変更します。 可能であれば、この値をに設定しないでください *@*
、これにより、オペレーターはどこからでも接続できます。
<oper name="habbasi"
password="secretPassword"
host="*@localhost *@your.local.ip.here *@your.local.domain.here"
type="NetAdmin">
のために host
値、複数のIPアドレスとドメインをスペースで区切ります。 また、現在のドロップレットのIPアドレスとドメイン(存在する場合)を追加する必要があります。 変更を保存して、ファイルを閉じます。
ステップ3—今日のメッセージを編集する
その日のメッセージは、ユーザーがIRCネットワークに接続するたびに表示されます。 カスタマイズするには、 inspircd.motd
のファイル /etc/inspircd/
:
- sudo nano /etc/inspircd/inspircd.motd
このファイルに、ユーザーに表示する日のメッセージを追加します。 通常、ルールをユーザーに通知するわかりやすいリマインダーが必要です。 また、ネットワーク全体で何かが変化している場合は、ここで通知します。 例えば:
<^>This is ExampleNet. We are the world's newest IRC network.
Support us by joining and becoming regular!
Be sure to view the rules by typing "/rules" and hitting ENTER.<^>
次に、ルールファイルを編集します。
- sudo nano /etc/inspircd/inspircd.rules
このファイルには、ルールが何であれ入れてください。 これらは、ユーザーが入力するたびに表示されます /rules
指図。 例えば、
1. No children under 13 are allowed to be on this network without the knowledge and consent of their parent or legal guardian.
2. No discussion or links involving pirated software is allowed on the network.
3. No discussion of drugs or other narcotics.
4. No trading of weapons.
5. No porn. There are minors on this network.
ステップ4—IRCサーバーを起動する
IRCサーバーを起動する前に、アクセス許可とファイルの所有権を修正する必要があります。
- sudo find /etc/inspircd -type d -exec chmod 770 {} \;
- sudo find /etc/inspircd -type f -exec chmod 644 {} \;
- sudo chown -R irc:irc /etc/inspircd
次に、PIDファイルとログファイルディレクトリに正しい権限を設定する必要があります。
- sudo chown -R irc:irc /var/inspircd/
- sudo chown -R irc:irc /var/log/inspircd
これで、InspIRCdを開始するための準備が整いました。
- sudo service inspircd start
終わり近くに次のメッセージが表示されるはずです。これは、InspIRCdが正常に開始されたことを意味します。
InspIRCd is now running as 'irc.example.com'[46T] with 1024 max open sockets
ステップ5—基本機能のテスト
基本的な機能がアップしているはずなので、新しく作成したIRCネットワークに接続してみてください。 ドロップレットに簡単なコマンドラインベースのIRCクライアントをインストールする手順を説明します。 まず、IRSSIをインストールします。
- sudo apt-get install irssi
次に、IRCクライアントを起動します。
- irssi
下部のウィンドウに次のように入力できるはずです [(status)]
. すべてのIRCコマンドはスラッシュで始まることに注意してください。 IRCネットワークに接続するには、次のように入力します。
/connect irc.example.com
サーバーのホスト名を構成していない場合は、ドロップレットのIPアドレスを使用できます。 サーバーを適切に構成すると、次のような画面が表示されます。
次のコマンドを入力して、オペレーターとしてログインします。
/oper habbasi secretPassword
それが機能した場合は、「あなたは今NetAdminです」という言葉が表示されるはずです。 これは、オペレーター特権が機能していることを意味します。 終了するには、別のコマンドを使用します。
/quit
推奨されるIRCクライアント
ほとんどすべてのデバイスで利用できるIRCクライアントは多種多様です。 推奨されるクライアントのリストは次のとおりです。
- Windows、Mac OS X、およびLinux用のHexChat
- Windows用のmIRC
- MacOSXおよびiOS用のColloquy
- LinuxおよびMacOSX用のIRSSI
- AndChat for Android
- Kiwi IRC(Webブラウザクライアント)
Kiwi IRCを使用すると、oper特権を使用する際に問題が発生することに注意してください。 Kiwiはプロキシ経由で接続し、IPアドレスを維持しません。 オペレーターアクション(セキュリティのために推奨)のために接続を許可された特定のIPアドレスのみをリストすることを選択した場合、オペレーター特権はKiwiIRCでは機能しません。
手順6— SSLの設定(オプション)
このセクションの目的は、ユーザーのプライバシーを保護し、パスワードや、ISPなどの送信されたデータを監視しているすべての人に表示されるその他のものを保護することです。 もちろん、これはオプションですが、強くお勧めします。
まず、SSL証明書を正しいディレクトリにコピーする必要があります。 このためには、IRCサーバー構成ディレクトリ内にディレクトリを作成する必要があります。
- sudo mkdir /etc/inspircd/sslcerts
次に、関連するSSL証明書とキーを新しく作成した構成ディレクトリにコピーする必要があります。
- sudo cp /path/to/ssl/private.key /etc/inspircd/sslcerts/private.key
- sudo cp /path/to/ssl/certificate.crt /etc/inspircd/sslcerts/cert.pem
- sudo cp /path/to/ca/validation.crt /etc/inspircd/sslcerts/ca.pem
自己署名証明書を使用している場合は、コピーを省略できます ca.pem
ファイル。 これは、上記の最後のコマンドで実行されます。
の適切な権限を設定します inspircd
証明書を保護するためのディレクトリ。これにより、InspIRCdは証明書を読み取ることができます。
- sudo find /etc/inspircd -type d -exec chmod 770 {} \;
- sudo find /etc/inspircd -type f -exec chmod 644 {} \;
- sudo chown -R irc:irc /etc/inspircd
構成ファイルを編集して、SSLを使用するように指示します。
- sudo nano /etc/inspircd/inspircd.conf
これを見つけてください:
<bind address="" port="6667" type="clients">
バインドセクションの下に、次の行を追加します。
<bind address="" port="6697" type="clients" ssl="gnutls">
<gnutls cafile="/etc/inspircd/sslcerts/ca.pem"
certfile="/etc/inspircd/sslcerts/cert.pem"
keyfile="/etc/inspircd/sslcerts/private.key"
priority="SECURE192:-VERS-SSL3.0">
<module name="m_ssl_gnutls.so">
自己署名証明書を使用している場合は、省略できます cafile
指令。
サーバーを再起動して変更を有効にします。
- sudo service inspircd restart
これで、SSLがポート6697で有効になります。
ステップ7— SSLのテスト(オプション)
繰り返しになりますが、SSLをテストするには、IRSSIを使用します。 IRSSIを開始するには、前と同じように次のように入力します。
- irssi
次に、次のコマンドを入力して、SSLを有効にして接続します。
/connect -SSL -SSL_Verify irc.example.com 6697
自己署名証明書を使用している場合は、 -SSL_Verify
オプション。
成功すると、次のような画面が表示されます。
先に進み、クライアントを終了します /quit
.
ステップ8—Shaltúreサービスのインストール
IRCサーバーが機能し、接続できます。 しかし、何を推測しますか? ニックネームは登録できません。 チャネルの所有権と役割を管理することはできません。 メモを送受信することはできません。 そのために、私たちはサービスを利用しています。 最も人気のあるサービスプラットフォームはAthemeですが、その開発は停止しており、深刻なセキュリティの脆弱性にパッチを適用する場合を除いて、更新されません。 このため、Shaltúreと呼ばれる活発に開発されたAthemeのフォークをインストールする方法を説明します。
まず、前提条件パッケージをインストールします。
- sudo apt-get install gettext
Shaltúreはrootとして実行しないのが最善です。 ただし、メインユーザーとして実行すると、セキュリティに影響する可能性があります。 このため、Shaltúreのパスワードを持たないユーザーを作成します。 このアカウントにログインすることはできません。アクセスするには、 sudo
.
- sudo adduser --disabled-password shalture
これにより、いくつかのプロンプトが表示されますが、それらを介してEnterキーを押すだけです。 次に、ユーザーに切り替えます。
- sudo -i -u shalture
ディレクトリをホームディレクトリに変更し、クローンを作成します。 shalture
リポジトリ。 にインストールしたいので、別のディレクトリにクローンを作成します ~/shalture
ディレクトリ。
- git clone git://github.com/shalture/shalture.git shalture-devel
ActiveDirectoryをに変更します shalture-devel
ディレクトリを作成し、他の必要なリポジトリのクローンを作成します。
- cd ./shalture-devel
- git submodule init
- git submodule update
コンパイルの段階を設定する構成を実行してから、コンパイルしてインストールします。
- ./configure --enable-contrib
- make
- make install
2番目のコマンドがコンパイルされるまでしばらく時間がかかるので、歩き回って足を少し伸ばします。 完了したら、ソースファイルを削除します。
- cd ~
- rm -rf ./shalture-devel/
ステップ9—Shaltúreサービスの構成
インストールが完了したら、ディレクトリをShaltúre構成ディレクトリに変更して、構成できるようにします。 設定ファイルの例から始めます。
- cd ~/shalture/etc
- cp shalture.conf.example shalture.conf
- nano shalture.conf
ファイルでこれを見つけてください:
#loadmodule "modules/protocol/charybdis";
行の先頭にある#文字を削除して行のコメントを解除し、charybdisをinspircdに置き換えます。
loadmodule "modules/protocol/inspircd";
次に、検索します。
name = "services.int";
変化する int
IRCサーバーのドメイン名またはIPアドレスと一致させるには:
name = "services.your_domain_name_or_IP";
この行を見つけます:
numeric = "00A";
の値を変更します numeric
サーバーとは違います id
前に指定しましたが、2桁の数字と次のような文字が含まれている必要があります。
numeric = "07C";
今見つけます:
netname = "misconfigured network";
の値を変更します netname
で設定したネットワーク名に server
InspIRCd構成ファイルのブロック。 例えば:
netname = "ExampleNet";
また見つける:
hidehostsuffix = "users.misconfigured";
そして、後の引用符内のすべてを削除します users
:
hidehostsuffix = "users";
次に、これを見つけます:
adminname = "misconfigured admin";
引用符で囲まれた部分を自分の名前または仮名に変更します。
次に、ネットワークの連絡先メールアドレスを変更します。 探す:
adminemail = "[email protected]";
の値を変更します adminemail
あなたのメールアドレスに。
次に、これを見つけます:
registeremail = "[email protected]";
の値を変更します registeremail
に noreply@your_domain_name
. これは、ユーザーがネットワークにニックネームを最初に登録したときにユーザーへのウェルカムメールに表示されるメールアドレスです。 また、パスワードのリセット手順とアクティベーション手順を送信する電子メールでもあります。 実際の受信トレイが混雑しないように、またこれらのメールへの返信が不要なため、存在しないメールに設定しました。
最初を見つける uplink
ブロックをコード化し、追加してブロック全体をコメントアウトします /*
前と */
その後。 次のようになります。
/* uplink "irc.example.net" {
// The server name of the ircd you're linking to goes above.
// host
// The hostname to connect to.
host = "127.0.0.1";
// vhost
// The source IP to connect from, used on machines with multiple interfaces.
#vhost = "192.0.2.5";
// send_password
// The password sent for linking.
send_password = "mypassword";
// receive_password
// The password received for linking.
receive_password = "theirpassword";
// port
// The port to connect to.
port = 6667;
}; */
次のセクション(コメントしたセクションの後)で、次を見つけます。
uplink "irc6.example.net" {
host = "::1";
// password
// If you want to have same send_password and accept_password, you
// can specify both using 'password' instead of individually.
password = "linkage";
port = 6667;
};
変化する irc6.example.net
に services.your_domain_name
. (前提条件の一部として、services。 your_domain_name のAレコードを設定する必要があります。)パスワードを安全なものに変更します。 ポートをに変更します 7001
. これで、次のようになります。
uplink "services.your_domain_name" {
host = "::1";
// password
// If you want to have same send_password and accept_password, you
// can specify both using 'password' instead of individually.
password = "SuperSecret123";
port = 7001;
};
次に、で以下を見つけます nickserv
ブロック:
nickserv {
...
host = "services.int";
...
};
NickServに持たせたいホストに変更します。 そのようです:
host = "ExampleNet/services/NickServ"
以下のサービスについて、前回と同様の変更を行ってください。 それぞれの構成ファイルにブロックがあります。
- ChanServ
- グローバル
- InfoServ
- OperServ
- SaslServ
- MemoServ
- GroupServ
- StatServ
- アリス
これらのサービスは、Shaltúreでデフォルトで有効になっているサービスです。 次に、次の行を見つけます。
operator "jilles" {
そしてそれを変更して、あなたが選択したニックネームを持っているようにします oper
InspIRCd構成のブロック:
operator "habbasi" {
最後に、後で使用するデフォルトのcron構成ファイルをコピーします。
- cp /home/shalture/shalture/etc/shalture.cron.example /home/shalture/shalture/etc/shalture.cron
サービスの構成に成功しました。 ここで、プロンプトを終了して、 sudo
非rootユーザー。
- exit
ステップ10—Shaltúreと連携するようにInspIRCdを構成する
次に、Shaltúreとうまく連携するようにInspIRCdを構成する必要があります。 InspIRCd構成ファイルをもう一度編集します。
- sudo nano /etc/inspircd/inspircd.conf
ファイルの最後に次の行を追加します。
<bind address="::1" port="7001" type="servers">
<uline server="services.example.com">
<link name="services.example.com"
ipaddr="::1"
port="7001"
allowmask="::1"
sendpass="password"
recvpass="password">
<chanprotect noservices="no"
qprefix="~"
aprefix="&">
# Modules needed for services to function
<module name="m_chanprotect.so">
<module name="m_halfop.so">
<module name="m_services_account.so">
<module name="m_deaf.so">
<module name="m_spanningtree.so">
<module name="m_globops.so">
<module name="m_cban.so">
<module name="m_svshold.so">
<module name="m_hidechans.so">
<module name="m_servprotect.so">
<module name="m_chghost.so">
<module name="m_namesx.so">
<module name="m_uhnames.so">
赤で強調表示されている値については、値をドメイン名と両方に変更してください sendpass
と recvpass
で使用したパスワードに uplink
Shaltúre構成のセクション。
保存して、テキストエディタを終了します。
これですべて構成されました。 今やらなければならないのは、サーバーとサービスを再起動することだけです。
- sudo service inspircd restart
- sudo -i -u shalture /home/shalture/shalture/bin/shalture-services
最後に、次のようなメッセージが表示されます。
[2015-07-24 22:21:10] running in background mode from /home/shalture/shalture
これは、Shaltúreが正常に開始されたことを意味します。
ステップ11—Shaltúreサービスのテスト
もう一度、手順5または7で行ったように、IRSSIを使用してサーバーに接続します。 次のような画面が表示されます。
これは、Shaltúreが正しく機能しており、InspIRCdに正常にリンクされていることを意味します。
ステップ12—再起動後もInspIRCdとShaltúreを永続化する
IRCサーバーを構成しました。 それで? ええと、Shaltúreはサービスとしてインストールされていませんでした。つまり、再起動しても存続しません。 これを行うには、次のように入力します。
- sudo -i -u shalture crontab -e
使用するエディターに関するプロンプトが表示されたら、2を押して選択します nano
、またはその他の必要なエディタ。
そして、ファイルの最後に、これを追加します。
*/5 * * * * /home/shalture/shalture/etc/shalture.cron >/dev/null 2>&1
これにより、5分ごとに、サービスが実行されているかどうかが確認されます。 そうでない場合は、それらを開始します。 残念ながら、InspIRCdもスタートアップリストに追加されませんでしたが、リストに追加するのは簡単なコマンドの1つです。
- sudo update-rc.d inspircd defaults
これで、InspIRCdとShaltúreの両方が起動時に実行されます。
結論
InspIRCdを使用すると、カスタマイズされたIRCネットワークをセットアップできます。これは、自分で管理および管理できるネットワークです。 Shaltúreは、ニックネームの所有権、チャネルの所有権、メモなどの機能を追加することで、これを補完します。
IRCサーバーをさらに構成するには、 InspIRCdwikiまたはShaltúreに含まれている構成ファイルの例を確認してください。