글 작성자: drizzle_
728x90

Rocket.Chat은 무료 오픈 소스, 자체 호스팅 채팅 응용 프로그램으로자체 채팅 서버를 호스팅 할 수 있다.

Slack과 매우 유사하며 파일 공유, 티켓팅 시스템, 비디오 채팅 및 회의를 포함한 유사한 기능을 제공한다.

Rocket.Chat을 사용하면 팀원과 채팅하고, 채널 및 개인 그룹을 만들고, 화상 및 음성 통화를하고, 화면을 공유하고 파일을 업로드 할 수 있다.


서버 설정하기

RAM이 2GB 이상으로(권장), 설치 환경: Ubuntu 20.04

1. 패키지 업데이트

apt-get update -y && apt-get upgrade -y

2. Node.js 설치

Rocket.Chat에는 소스에서 npm 패키지를 빌드하기위한 Node.js 및 기타 종속성이 필요하다.

먼저 다음 명령을 실행하여 Node.js를 추가한다.

curl -sL https://deb.nodesource.com/setup_12.x — Node.js 12 LTS "Erbium"| bash -

패키지를 업데이트 하고 node.js를 설치한다.

apt-get update -y
apt-get install nodejs build-essential curl software-properties-common graphicsmagick -y

3. MongoDB설치

Rocket.Chat을 사용하려면 서버에 MongoDB를 설치해야한다. 기본적으로 최신 버전의 MongoDB는 Ubuntu 18.04 기본 패키지에서 사용할 수 없으므로 MongoDB 저장소를 서버에 추가해야한다.

먼저 다음 커맨드로 공식 저장소 키를 다운로드하여 추가한다.

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

MongoDB를 추가한다.

add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multive

다음 커맨드를 입력하여 MongoDB를 설치한다.

apt-get update -y
apt-get install mongodb-org -y

시스템이 재시작 되었을 때 MongoDB가 자동으로 시작될 수 있게 한다.

systemctl start mongod
systemctl enable mongod

4. MongoDB테스트

Rocket.Chat은 MongoDB 복제 세트를 사용하여 성능을 향상 시키므로 MongoDB 복제 세트를 구성해야한다.

echo -e "replication:\n replSetName: \"rs01\"" | tee -a /etc/mongod.conf

DB를 재시작한다.

systemctl restart mongod

쉘에 접속한다.

mongo
rs.initiate()

Exit을 입력하여 몽고DB를 빠져나온다.

Rocket.chat 설치하기

5. Rocket.chat설치

시작하기 전에 Rocket.Chat을 실행할 새 사용자 및 그룹을 작성하는 것이 좋다(권장)

먼저 다음 커맨드로 이름이 rocket 인 새 사용자를 만든다.

sudo adduser rocket

다음으로 로켓 사용자를 www-data 그룹에 추가하여 Nginx가 Rocket.Chat 디렉토리에 액세스하도록 허용한다.

usermod -a -G rocket www-data

아래 커맨드를 실행해 Rocket.Chat을 다운로드 한다.

su - rocket
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

압축을 해제한다.

tar zxf rocket.chat.tgz

폴더 이름을 변경한다.

mv bundle Rocket.Chat

다음 커맨드를 사용하여 필요한 모든 npm 패키지를 설치한다.

cd Rocket.Chat/programs/server
npm install

다음으로 필요한 환경 변수를 설정하여 Rocket.Chat 설치를 테스트한다.

export PORT=3000
export ROOT_URL=http://0.0.0.0:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat
export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01

다음으로 디렉토리를 Rocket.Chat으로 변경하고 다음 명령을 사용하여 Rocket.Chat 서버를 시작한다.

cd ~/Rocket.Chat
node main.js

오류가 나지 않는다면 Ctrl+C를 눌러 빠져나온다.

 

메인 유저로 바꾼다(아까 Rocketchat유저를 생성한 경우에 한함)

exit

6. Rocket.chat 시작 준비하기

nano /etc/systemd/system/rocketchat.service

다음을 입력한다.

[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target


[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01 ROOT_URL=http://node1.example.com PORT=3000
ExecStart=/usr/bin/nodejs /home/rocket/Rocket.Chat/main.js


[Install]
WantedBy=multi-user.target

rocket유저를 생성하지 않았다면 rocket을 모두 자신의 유저 이름으로 바꾸면 된다.

 

위의 작업이 끝났다면, deamon을 다시 로드한다.

systemctl daemon-reload

rocket.chat이 시스템이 재시작 되었을 때 자동으로 시작될 수 있게 한다.

systemctl start rocketchat
systemctl enable rocketchat

오류가 없는지 본다.

systemctl status rocketchat

7. Nginx로 리버스 프록시 설정

다음으로 포트 3000에서 오는 클라이언트 요청을 Nginx 포트 80으로 전달하기 위해 Nginx를 리버스 프록시로 설치 및 구성해야한다.

먼저 다음 커맨드를 사용하여 Nginx 웹 서버를 설치한다.

apt-get install nginx -y

Nginx를 설정한다.

nano /etc/nginx/sites-available/rocket

아래의 라인을 추가한다.

server {
  listen 80;

  server_name    node1.example.com;
  access_log /var/log/nginx/rocket-access.log;
  error_log /var/log/nginx/rocket-error.log;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:3000/;
  }
}

위의 작업이 끝났다면, Vhost를 활성화한다.

ln -s /etc/nginx/sites-available/rocket /etc/nginx/sites-enabled/

Nginx를 재시작한다.

systemctl restart nginx

8. Rocket.chat 웹 접속

http://서버아이피 로 접속하면, 자동으로 설치 페이지로 이동할것이다.

항목을 채우고, Continue를 클릭한다.

언어와 서버 타입을 선택, 사이트 이름을 변경하고 Continue를 클릭한다.

용도에 맞게 선택한다.

성공 :D

728x90
Email: b1@yeonw.me / 여기를 눌러 다른 연락 수단들 알아보기