From 55fc8ebef5798e66e5613c326c7542435c66473e Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Wed, 16 Oct 2019 17:03:04 +0200 Subject: [PATCH] Started the tutorial --- src/posts/0006-irc-most-modern-chat.org | 131 ++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/src/posts/0006-irc-most-modern-chat.org b/src/posts/0006-irc-most-modern-chat.org index 492cfc6..7fdc9fb 100644 --- a/src/posts/0006-irc-most-modern-chat.org +++ b/src/posts/0006-irc-most-modern-chat.org @@ -159,14 +159,145 @@ and finally abandoned (I certainly forgot a few ones): :PROPERTIES: :CUSTOM_ID: self-host :END: +You might use an external IRC server. +But it is a lot safer to self-host it. + +Self-hosting might not be easy if you are not familiar about how to do +that. + +1. buy a domain name +2. buy a machine (VPS, baremetal, host it at your home) +3. configure the DNS for your domaine name go to your machine +4. configure letsencrypt to support wildcard hostnames. +5. know how to create reverse proxy + +I couldn't find a nice resource to link to with all those details. +This is certainly a call to write such article myself. + ** Install/configure ngircd :PROPERTIES: :CUSTOM_ID: install-configure-ngircd :END: + +There are multiple IRC server. +I gave my preference to [[https://github.com/ngircd/ngircd][ngircd]] because it appeared lightweight, easy to +install and configure. + +So use your preferred package manager to install it: + +#+begin_src +sudo apt-get install ngircd +#+end_src + +Configure the =/etc/ngircd/ngircd.conf= file. +I only show the really interesting lines for a private small IRC for a team. + +#+begin_src src +[Global] + Name = irc.your.domain + Info = My Incredible IRC + Password = privateIRCSecretPassword + +[Options] + # prevent channel creation + AllowedChannelTypes = + +[SSL] + Certfile = /etc/letsencrypt/live/your.domain/fullchain.pem + Keyfile = /etc/letsencrypt/live/your.domain/privkey.pem + Ports = 6667,9999 + +[Channel] + # predefined channel + Name = #general + Topic = Main team channel + MaxUsers = 23 + +[Channel] + Name = #status + Topic = Status update channel + MaxUsers = 23 +#+end_src + ** Install/configure ZNC :PROPERTIES: :CUSTOM_ID: install-configure-znc :END: + +Install ZNC from sources or via your package manager. +I choose sources. Choose the latest version if you can. + +#+begin_src +> wget https://znc.in/releases/archive/znc-1.7.5.tar.gz +> tar xzf znc-1.7.5.tar.gz +> cd znc-1.7.5 +> mkdir build +> cd build +> make +> make install +#+end_src + +Then create your config file for example via: + +#+begin_src +> znc --makeconf +#+end_src + +For the question, keep buffers after replay, you should certainly answer +yes. +To use znc web interface behind an nginx reverse proxy: + +#+begin_src conf + + AllowIRC = false + AllowWeb = true + Host = localhost + IPv4 = true + IPv6 = false + Port = 10001 + SSL = false + URIPrefix = / + + + + AllowIRC = true + AllowWeb = false + IPv4 = true + IPv6 = true + Port = 10002 + SSL = true + URIPrefix = / + +#+end_src + +*** Playback module +:PROPERTIES: +:CUSTOM_ID: playback-module +:END: + +#+begin_src +> cd ~/.znc/modules +> wget ...../playback.cpp +> znc-buildmod playback.cpp +#+end_src + +Should create a =playback.so=. + +*** Palaver push module +:PROPERTIES: +:CUSTOM_ID: palaver-push-module +:END: + +#+begin_src +> git clone ... znc-palaver +> cd znc-palaver +> znc-buildmod palaver.cpp +> cp palaver.so ~/.znc/modules/ +#+end_src + +That's it. +The major modernizer of IRC are here in ZNC. + ** Install/configure clients :PROPERTIES: :CUSTOM_ID: install-configure-clients