๐Ÿณ ๋„์ปค๋ฅผ ์ด์šฉํ•ด ์‰ฝ๊ฒŒ IRC ์„œ๋ฒ„ ๊ตฌ์ถ•ํ•˜๊ธฐ

rajephonยท2019๋…„ 5์›” 4์ผ
1
post-thumbnail

Photo by SpaceX on Unsplash

์ด ํฌ์ŠคํŠธ๋Š” ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์— ๋™์‹œ ๊ฐœ์ œ์ค‘์ž…๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ

์˜ค๋Š˜์€ Let's Encrypt์™€ Docker๋ฅผ ํ™œ์šฉํ•ด ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํžˆ IRC ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ด๋ด…์‹œ๋‹ค. IRC๋Š” ๊ณต๊ฐœ๋œ ๋ช…์„ธ๊ฐ€ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ด๊ธฐ์— ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๊ณ , ์„œ๋ฒ„ ๊ตฌํ˜„์ฒด ๋˜ํ•œ UnrealIRCd, Bahamut, Inspircd ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ IRC๋Š” ์˜ค๋ž˜๋œ ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ ์˜ค๋Š˜๋‚  ์˜ˆ์ „๋งŒํผ ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์•„ dockerhub์— ๊ณต์‹ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ณ„๋กœ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์™€์ค‘์— ๋‹คํ–‰ํžˆ Inspircd๋Š” ๊ณต์‹ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ , ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ๋„ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์‹ค์Šต์—๋Š” Inspircd๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ด๋ด…์‹œ๋‹ค!

Ready

๐Ÿ’ฌ IRC๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชฐ๋ผ์š”

ํ•œ ๋‹จ์–ด๋กœ ์š”์•ฝ์„ ํ•˜๋ฉด, ์ฑ„ํŒ… ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ์œ„ํ‚ค๋ฐฑ๊ณผ ์ธํ„ฐ๋„ท ๋ฆด๋ ˆ์ด ์ฑ—์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
ํŠนํžˆ ์˜๋ฌธํŒ ๋ฌธ์„œ๋Š” ๋งค์šฐ ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋งŽ์€ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ›ฐ Server Setup

IRC ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” AWS์˜ Lightsail ์ธ์Šคํ„ด์Šค๋ฅผ ์ด์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋„์ปค๋ฅผ ์„ค์น˜ํ•ด์ฃผ์‹œ๊ณ ..

๋ฐฉํ™”๋ฒฝ์ด ์žˆ์„ ๊ฒฝ์šฐ ์žŠ์ง€ ๋ง๊ณ  ํฌํŠธ๋ฅผ ์—ด์–ด์ค์‹œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ 6667, 6697, 7000, 7001๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. 6667๊ณผ 6697์€ ํด๋ผ์ด์–ธํŠธ์™€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ , 7000, 7001์€ ๋‹ค๋ฅธ IRC ์„œ๋ฒ„์™€ ๋งํฌ ๋“ฑ ํ†ต์‹ ์„ ํ•  ๋•Œ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ 6667, 7000์€ plain text, 6697, 7001์€ TLS ํ†ต์‹ ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ ์—†์ด ๋‹จ๋…์œผ๋กœ ์šด์˜ํ•  ์˜ˆ์ •์ด๊ธฐ์—, 6667, 6697 ํฌํŠธ๋งŒ ์—ด์–ด์คฌ์Šต๋‹ˆ๋‹ค.

๐Ÿ” Let's encrypt!

๊ทธ๋ฆฌ๊ณ  ์ธ์ฆ์„œ๋ฅผ ์ค€๋น„ํ•ฉ์‹œ๋‹ค. ์‚ฌ์‹ค ๋‹จ์ง€ ํ…Œ์ŠคํŠธ๋งŒ์„ ์œ„ํ•จ์ด๋ผ๋ฉด self-generated certificate๋ฅผ ์‚ฌ์šฉํ•˜์…”๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค(inspircd-docker์—์„œ ๊ด€๋ จ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค). ํ•˜์ง€๋งŒ ์ผ๋ถ€ IRC ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ๋ณด์ฆ๋œ ์ธ์ฆ์„œ๋งŒ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ, Let's encrypt๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ์ด์šฉํ•ด๋ด…์‹œ๋‹ค.

wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto

์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ํด๋ผ์ด์–ธํŠธ certbot์„ ๋‚ด๋ ค๋ฐ›๊ณ , ์›ํ™œํ•œ ๋™์ž‘์„ ์œ„ํ•ด ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

./certbot-auto certonly --standalone -d your.irc.domain.com
Requesting to rerun ./certbot-auto with root privileges...
FATAL: Amazon Linux support is very experimental at present...
if you would like to work on improving it, please ensure you have backups
and then run this script again with the --debug flag!
Alternatively, you can install OS dependencies yourself and run this script
again with --no-bootstrap.

๋งŒ์•ฝ, Amazon Linux๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋งˆ์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฌธ๊ตฌ๋Œ€๋กœ ์•„์ง Amazon Linux ์šฉ ๋™์ž‘์€ experimental๋ผ์„œ ์‚ฌ์šฉ์€ --debug ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

--debug ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ด…์‹œ๋‹ค. ์ฐธ๊ณ ๋กœ, ๋ฐœ๊ธ‰ ๋„์ค‘์—๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ์ž ์‹œ ๋‚ด๋ ค์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

./certbot-auto certonly --standalone --debug -d your.irc.domain.com
# ์ฃผ์˜ : ์ด๋ฏธ ์›น ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋™ ์ค‘์ด๋ผ๋ฉด ์ž ์‹œ ๋‚ด๋ ค์ฃผ์„ธ์š”.
# ...
# ...
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): # ์ด๋ฉ”์ผ ์ž…๋ ฅ

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a # ๋™์˜

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n # ๋‰ด์Šค๋ ˆํ„ฐ๋ฅผ ๋ฐ›๊ณ ์‹ถ๋‹ค๋ฉด y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for your.irc.domain.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your.irc.domain.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your.irc.domain.com/privkey.pem
   Your cert will expire on 2019-07-27. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

์„ฑ๊ณต! ๋ช‡ ๊ฐ€์ง€ ์งˆ์˜์‘๋‹ต์„ ๊ฑฐ์น˜๋ฉด ์ธ์ฆ์„œ ๋ฐœ๊ธ‰์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
์ธ์ฆ์„œ๋Š” /etc/letsencrypt/live/your.irc.domain.com/ ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ž! ์ด์ œ ๋ชจ๋“  ์ค€๋น„๋Š” ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด์ œ Docker-compose๋ฅผ ์ž‘์„ฑํ•ด๋ด…์‹œ๋‹ค.

Docker Compose

์™œ ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜ ๋„์šฐ๋Š”๋ฐ, docker-compose๋ฅผ ์ž‘์„ฑํ•˜๋‚˜์š”? docker run ํ•˜๋ฉด ์•ˆ ๋˜๋‚˜์š”

์•ˆ๋  ์ด์œ  ์—†์Šต๋‹ˆ๋‹ค :D ์‹ค์ œ๋กœ ์•„๋ž˜์˜ ํ•œ ์ค„ ๋ช…๋ น์–ด๋กœ IRC ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker run --name ircd -p 6667:6667 inspircd/inspircd-docker

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ docker-compose๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ์ง€ ์ข€ ๋” ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์›ํ•˜๋Š” ๋Œ€๋กœ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ํ•˜๊ณ  ์‹ถ์€๋ฐ, ๋ช…๋ น์–ด ํ•œ ์ค„์— ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ํฌํŠธ ๋“ฑ์˜ ์„ค์ •์„ ์ž‘์„ฑํ•˜๊ธฐ์—” ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šฐ๋‹ˆ๊นŒ์š”. ๊ทธ๋ž˜์„œ ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” docker-compose๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์•ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž, ๊ทธ๋Ÿฌ๋ฉด ์ ๋‹นํ•œ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ , docker-compose.yml ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. ์ €๋Š” inspircd-docker๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ๊ณณ์— ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์†์‰ฝ๊ฒŒ ์„ค์ • ํŒŒ์ผ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐํ•  config ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

mkdir inspircd-docker
cd inpircd-docker
touch docker-compose.yml
mkdir config

๊ทธ๋ฆฌ๊ณ  docker-compose.yml๋ฅผ ์ž‘์„ฑํ•ด๋ด…์‹œ๋‹ค.

version: "3.5"
services:
        irc:
                container_name: irc_server
                image: inspircd/inspircd-docker:2.0.27
                ports:
                        - "6667:6667"
                        - "6697:6697"
                environment:
                        - INSP_NET_SUFFIX=.irc.your.domain.com
                        - INSP_ADMIN_NAME=Admin Name
                        - INSP_ADMIN_NICK=admin
                        - INSP_ADMIN_EMAIL=admin@your.domain.com
                        - INSP_CONNECT_HASH=sha256
                        - INSP_CONNECT_PASSWORD=aaaaaaabbbbbbbbccccccdddddddeeeeefffffggggggghhhhhh
                volumes:
                        - ./config:/inspircd/conf/

irc๋ผ๋Š” ์ด๋ฆ„์˜ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€๋Š” inspircd/inspircd-docker์˜ ๊ฐ€์žฅ ์ตœ๊ทผ ๋ฒ„์ „์ธ 2.0.27๋กœ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๊ธ‰์  latest ํƒœ๊ทธ ์‚ฌ์šฉ์€ ์ž์ œํ•ด์ฃผ์„ธ์š”. latest๋Š” ๋ฌด์กฐ๊ฑด ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ์ถ”ํ›„ ๋ฒ„์ „์ด ๋ฐ”๋€Œ๊ณ  ์…‹์—…์ด ๋งž์งˆ ์•Š์•„ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฑ„ํŒ…์„ ์œ„ํ•ด 6667, 6697 ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๊ณ , ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์…‹์—… ํ•ฉ๋‹ˆ๋‹ค. INSP_NET_SUFFIX์™€ ์–ด๋“œ๋ฏผ ์ง€์ • ๊ด€๋ จ ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์ œ๊ฐ€ ์•„๋Š” ์‚ฌ๋žŒ๋“คํ•˜๊ณ ๋งŒ IRC ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๊ธธ ์›ํ•˜๋ฏ€๋กœ, ์ ‘์† ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ๋“ค๋งŒ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด SHA256์œผ๋กœ ํ•ด์‹œ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
INSP_CONNECT_HASH๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ , INSP_CONNECT_PASSWORD์— plaintext๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ Let's Encrypt๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  self-generated certificate๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ INSP_TLS_CN, INSP_TLS_MAIL ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์‚ฌํ•ญ์€ inspircd/inspircd-docker์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ŠคํŠธ ./config ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ /inspircd/conf/์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ inspircd์˜ ์„ค์ • ํŒŒ์ผ๋“ค์ด ํ˜ธ์ŠคํŠธ๋กœ ๋…ธ์ถœ๋˜์–ด ์ œ์–ด๊ฐ€ ํ›จ์”ฌ ํŽธํ•ด์ง‘๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ์ ์šฉ

์•ž์„œ ์ƒ์„ฑํ•œ ์ธ์ฆ์„œ๋ฅผ ํ™œ์šฉํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. config ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ธ์ฆ์„œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
fullchain.pem ์€ config/cert.pem๋กœ, privkey.pem๋Š” config/key.pem๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

sudo cp /etc/letsencrypt/live/your.irc.domain.com/fullchain.pem ./config/cert.pem
sudo cp /etc/letsencrypt/live/your.irc.domain.com/privkey.pem ./config/key.pem

๊ทธ๋ฆฌ๊ณ , ์ธ์ฆ์„œ ์ ‘๊ทผ์— ๊ถŒํ•œ์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก config ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ owner UID๋ฅผ 10000๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ 

chown 10000 ./config/ -R

๐Ÿš€ docker-compose up!

๋ชจ๋“  ์ค€๋น„๋Š” ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด์ œ IRC ์„œ๋ฒ„๋ฅผ ๊ฐ€๋™ํ•ด๋ด…์‹œ๋‹ค.
docker-compose.yml๋ฅผ ์ž‘์„ฑํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ ๋‹ค์Œ, docker-compose up ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ docker-compose up
Starting irc_server ... done
Attaching to irc_server
irc_server | Inspire Internet Relay Chat Server, compiled on Apr  9 2019 at 04:07:34
irc_server | (C) InspIRCd Development Team.
irc_server |
irc_server | Developers:
irc_server | 	Brain, FrostyCoolSlug, w00t, Om, Special, peavey
irc_server | 	aquanight, psychon, dz, danieldg, jackmcbarn
irc_server | 	Attila
irc_server |
irc_server | Others:			See /INFO Output
irc_server |
irc_server |
irc_server | Loading core commands.Sat May  4 08:27:55 2019: Log started for InspIRCd-2.0.27 (v2.0.27, inspircd_module_200_11) - compiled on Linux 
### .....
### ์ƒ๋žต
### .....
irc_server | Sat May  4 08:27:55 2019: New module introduced: m_userip.so (Module version InspIRCd-2.0.27 rv2.0.27)
irc_server | [*] Loading module:	m_spanningtree.so
irc_server | Sat May  4 08:27:55 2019: New module introduced: m_spanningtree.so (Module version InspIRCd-2.0.27 rv2.0.27)
irc_server | Sat May  4 08:27:55 2019: m_ssl_gnutls.so: Enabling SSL for port [::]:6697
irc_server | InspIRCd is now running as '0644f77bfd34.irc.your.domain.com'[973] with 1024 max open sockets
irc_server | Sat May  4 08:27:55 2019: Keeping pseudo-tty open as we are running in the foreground.
irc_server | Sat May  4 08:27:55 2019: Startup complete as '0644f77bfd34.irc.your.domain.com'[973], 1024 max open sockets

์ค‘๊ฐ„์— ์˜ค๋ฅ˜ ๋ฌธ๊ตฌ ์—†์ด, Startup complete as ~ max open sockets๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ๋™์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค! Yeah!
๋งŒ์•ฝ ์ค‘๊ฐ„์— ์—๋Ÿฌ ๋กœ๊ทธ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค๋ฉด ์นจ์ฐฉํžˆ ์›์ธ์„ ํŒŒ์•…ํ•ด๋ด…์‹œ๋‹ค. ๊ฝค๋‚˜ ๋””ํ…Œ์ผํ•˜๊ฒŒ ๋‚˜์™€์„œ ์›์ธ์„ ์ฐพ๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ก Connect to IRC server

IRC ํด๋ผ์ด์–ธํŠธ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์„œ๋ฒ„๋กœ ์ ‘์†ํ•ด๋ด…์‹œ๋‹ค. IRC ํด๋ผ์ด์–ธํŠธ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ •๋ง ๋‹ค์–‘ํ•˜๊ฒŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ค‘์—์„œ ์ €๋Š” Irssi๋ฅผ ์ด์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Install Irssi

์—ฌ๊ธฐ์„œ ๊ฐ ํ”Œ๋žซํผ ๋ณ„ ์„ค์น˜๋ฒ•์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์— ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ • ์•ˆ๋˜๋ฉด ์ง์ ‘ ๋‚ด๋ ค๋ฐ›๊ณ  ๋นŒ๋“œ๋ฅผ ํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” macOS ํ™˜๊ฒฝ์ด๋ฏ€๋กœ homebrew๋ฅผ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

brew install irssi

Connect

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ์ ‘์†์„ ํ•ด๋ด…์‹œ๋‹ค. ๋จผ์ €, irssi๋ฅผ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”.

/connect ๋ช…๋ น์„ ์ด์šฉํ•ด ์„œ๋ฒ„์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.

/connect -tls irc.your.domain.com 6697 password

์ €๋Š” ํŒจ์Šค์›Œ๋“œ๋ฅผ ์…‹์—… ํ•ด๋’€๊ณ , ๋ณด์•ˆ ์ ‘์†์„ ์ด์šฉํ•˜๊ธธ ํฌ๋งํ•˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์คฌ์Šต๋‹ˆ๋‹ค.

IRC ์„œ๋ฒ„ ์ ‘์† ์„ฑ๊ณต!
Docker ๋กœ๊ณ ์˜ ์•„์Šคํ‚ค ์•„ํŠธ๊ฐ€ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ๋„ ์ ‘์† ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์™• ์ ‘์†ํ•œ ๊น€์— ์ฑ„๋„์„ ๋งŒ๋“ค๊ณ , ๊ฐ„๋‹จํ•œ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ ๋ดค์Šต๋‹ˆ๋‹ค.
ํ˜น์‹œ Irssi ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•œ ๋ถ„๋“ค์ด ์žˆ์„๊นŒ ํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ ์–ด๋‘ก๋‹ˆ๋‹ค.

Irssi ๋ช…๋ น์–ด

  • /nick new-nick ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ
  • /channel #channel-name ์ฑ„๋„ ์ ‘์†
  • /leave ์ฑ„๋„ ๋‚˜๊ฐ€๊ธฐ
  • /help ๋„์›€๋ง
  • /exit irssi ์ข…๋ฃŒ

๐ŸŽ One more thing

docker-compose up์œผ๋กœ ๋„์ปค ์„œ๋ฒ„๋ฅผ ํ•œ ๋ฒˆ ๊ตฌ๋™ํ•˜๊ณ  ๋‚˜๋ฉด ./config ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์—ฌ๋Ÿฌ ์„ค์ • ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ๋“ค์„ ์ˆ˜์ •ํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ์•Œ๋งž๊ฒŒ ๋‹ค๋“ฌ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด docker.motd๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์† ์‹œ ๋ณด์ด๋Š” ๋ฉ”์„ธ์ง€์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ ์ˆ˜์ • ํ›„ docker-compose restart๋ฅผ ํ•  ๊ฒฝ์šฐ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€

  • docker-compose up ๋ช…๋ น์„ ํ•œ ๋‹ค์Œ์—, ๋กœ๊ทธ ์ถœ๋ ฅ ๋ชจ๋“œ์—์„œ ๋‚˜์˜ค๊ณ  ์‹ถ์œผ๋ฉด(detach mode), Ctrl + z๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.
  • docker-compose up ๋ช…๋ น์„ ํ•  ๋•Œ๋ถ€ํ„ฐ Detach mode๋กœ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด, -d ํ˜น์€ --detach ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
  • Detach mode์—์„œ ๋‹ค์‹œ ๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด docker-compose logs ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋กœ๊ทธ๋ฅผ ๊ณ„์† ์ถœ๋ ฅํ•˜๋Š” ์ƒํƒœ๋กœ ๋‘๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ --follow ์˜ต์…˜์„ ๋ถ™์—ฌ์ฃผ์„ธ์š”.
  • motd๋Š” 'message of the day(์˜ค๋Š˜์˜ ๋ฉ”์‹œ์ง€)'๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
  • TLS๋กœ๋งŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ, ๋ฐฉํ™”๋ฒฝ์—์„œ plain text๋ฅผ ์ด์šฉํ•˜๋Š” 6667ํฌํŠธ๋ฅผ ๋‹ซ์•„๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ ‘์†์„ ํ•  ๋•Œ ๊ผญ TLS ์˜ต์…˜๊ณผ ํฌํŠธ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

profile
https://blog.rajephon.dev/

0๊ฐœ์˜ ๋Œ“๊ธ€