메신저 만들기라는 이름은 거창하지만 사실 오픈소스 ROCKET.CHAT을 서버에 구축해서 실제 메신저처럼 사용하는거다.
보통 메신저로 카카오톡, 행아웃, 슬랙등등 여러가지 어플리케이션들이 있지만 구축형이 아니기 때문에 기업 or 나처럼 심심한 사람들은 선호하지 않는다.
그래서 직접 서버 구축을 해서 채팅서버를 만들어보도록 하겠다.
준비물 : Linux Cent OS 8.1 1911
물론 AWS, Google Cloud 플랫폼등을 이용해서 만들어도 되고 나처럼 집에 홈서버를 구축해서 만들어도 된다.
서버생성
언제나 설치후에는 dnf update
ROCKET.CHAT 설치파일 다운로드
들어가서 스크롤을 쭈욱 내리면 Server Install이 있는데 여기서 자기 환경에 맞는버전을 다운로드하자.(나는 Cent OS)
참조 : https://rocket.chat/docs/installation/manual-installation/centos/
필수 패키지 설치하기
- Mongodb 4.0.9
- NodeJS 12.14.0
yum -y check-update
몽고DB 레포 등록
cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
NodeJS 패키지 다운로드
yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash -
빌드 도구, MongoDB, nodejs 및 graphicsmagick를 설치
yum install -y gcc-c++ make mongodb-org nodejs
yum install -y epel-release && sudo yum install -y GraphicsMagick
npm install -g inherits n && sudo n 12.14.0
ROCKET.CHAT 설치
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
tar -xzf /tmp/rocket.chat.tgz -C /tmp
압축풀고 이동해서 npm으로 설치파일 install
cd /tmp/bundle/programs/server && npm install
/opt 경로는 다른경로로 변경해도 된다 (ex. /etc)
mv /tmp/bundle /opt/Rocket.Chat
Rocket.Chat 서비스 구성
rocketchat 사용자를 추가하고 Rocket.Chat 폴더에 대한 권한을 설정하고 Rocket.Chat 서비스 파일을 작성
유저생성
sudo useradd -M rocketchat && sudo usermod -L rocketchat
폴더권한
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
서비스 파일 작성. 여기에 MongDB정보와 Root URL이 들어가니 변경하려면 수정하자.
기본적으로 몽고 DB는 27017, Web URL은 3000 포트를 사용한다.
cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
EOF
MongoDB의 스토리지 엔진 및 복제를 설정하고 (버전 1 이상 필수) MongoDB 및 Rocket을 활성화하고 시작
sudo sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
sudo sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf
sudo systemctl enable mongod && sudo systemctl start mongod
mongo --eval "printjson(rs.initiate())"
sudo systemctl enable rocketchat && sudo systemctl start rocketchat
잘 복붙만 하면 된다.
방화벽 오픈
firewall-cmd --zone=public --permanent --add-port=3000/tcp
firewall-cmd --reload
설치 확인
먼저 netstat -lntp로 포트 오픈이 잘되었는지 확인
웹으로 접근
4단계까지 잘입력해주자.
게이트웨이 서버를 만들자신이 있으면 아래걸로.. 아니면 위에꺼하자
완료
나는 리버스 프록시 후 도메인 부여까지 해보겠다.
감사합니다.! 깔끔하게 정리해주신 덕분에 사내메신저로 잘 사용하고 있습니다.
사용중 채팅창에 한글 파일 .hwp 을 업로드 할때 지원하는 미디어 타입이 아니하고 뜹니다.
혹시 해결방법이 있을까요? ㅠㅠ
미디어 타입의 경우 설정에서 관리하는 탭이 있었던걸로.. 기억합니다
지금은 제가 운영하고있지않아서 바로 확인은 안되네요 ㅠㅠ