Установка rocket chat(latest version) с помощью докер и openldap интеграция
В чем преимущества rocket chat:
- все храним у себя;
- не надо беспокоиться об истории как в slack (ограничена на бесплатной версии);
- интеграция с openldap;
- так же есть бот;
- поддержка markdown в сообщениях;
- и множество плюшек.
Запуск rocket-chat через docker-compose
Создадим docker-compose и необходимые диры.
На данный момент последняя версия чата – rocketchat:3.8.0,ее мы и прописали в docker-compose.
mkdir -p /docker-compose/SWARM/services/rocketchat/data/rocketchat/{uploads,sounds,emod}
mkdir -p /docker-compose/SWARM/services/rocketchat/database/mongodb4/{rc,dump}
chmod 777 -R /docker-compose/SWARM/services/rocketchat/data/rocketchat/uploads
Собираем докер из исходов.
nano Dockerfile
FROM node:12-slim
ARG IMAGE_TAG
MAINTAINER a.v.galushko86@gmail.com
VOLUME /app/uploads
WORKDIR /app
RUN groupadd -r rocketchat \
&& useradd -r -g rocketchat rocketchat \
&& mkdir -p /app/uploads \
&& chown rocketchat.rocketchat /app/uploads \
&& apt-get update && apt-get install gpg-agent curl -y \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 0E163286C20D07B9787EBE9FD7F9D0414FD08104 \
&& cd /app \
&& curl -fSL "https://releases.rocket.chat/${IMAGE_TAG}/download" -o rocket.chat.tgz \
&& curl -fSL "https://releases.rocket.chat/${IMAGE_TAG}/asc" -o rocket.chat.tgz.asc \
&& gpg --batch --verify rocket.chat.tgz.asc rocket.chat.tgz \
&& tar zxvf rocket.chat.tgz \
&& rm rocket.chat.tgz rocket.chat.tgz.asc \
&& cd bundle/programs/server \
&& npm install
USER rocketchat
WORKDIR /app/bundle
ENV DEPLOY_METHOD=docker-official
MONGO_URL=mongodb://db:27017/meteor \
HOME=/tmp \
PORT=3000 \
ROOT_URL=http://localhost:3000 \
Accounts_AvatarStorePath=/app/uploads
EXPOSE 3000
CMD ["node", "main.js"]
Собираем докер devsadds/rocketchat:3.8.0
docker build --build-arg IMAGE_TAG=3.8.0 --tag devsadds/rocketchat:3.8.0 .
Редактируем docker-compose.yml
version: '2'
services:
rocketchat:
image: devsadds/rocketchat:3.8.0
restart: unless-stopped
ports:
- 127.0.0.1:3000:3000
- 127.0.0.1:9200:9100
volumes:
- ./data/rocketchat/uploads:/app/uploads
- ./data/rocketchat/sounds:/app/sounds
- ./data/rocketchat/emod:/app/emod
environment:
- PORT=3000
- ROOT_URL=https://rc.itc-life.ru
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- MAIL_URL=smtp://smtp.email
#- MAIL_URL=smtp://smtp.mandrillapp.com
#- MONGO_URL=mongodb://db:27017/rocketchat
#- ROOT_URL=https://community.storj.io
#- Accounts_UseDNSDomainCheck=True
depends_on:
- mongo
networks:
rc-net:
aliases:
- rocketchat
mongo:
image: mongo:4.0-rc
restart: unless-stopped
volumes:
- ./database/mongodb4/rc:/data/db
- ./database/mongodb4/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
networks:
rc-net:
aliases:
- mongo.rc.db
mongo-init-replica:
image: mongo:4.0-rc
command: 'mongo mongo/rocketchat --eval "rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})"'
depends_on:
- mongo
networks:
rc-net:
aliases:
- mongo.init
##NETWORKS
networks:
rc-net:
driver: bridge
Теперь cпулим все оставшиеся образы.
docker-compose pull --no-parallels
И запустим все по очереди – сначала монго, потом произведем инициализацию реплик монго, затем стартанем сам чат.
docker-compose up -d monogo
docker-compose up -d mongo-init-replica
docker-compose up -d rocketchat
Готово, как мы видим здесь мы открыли порт 3000 на 127.0.0.1. Создадим конфиг nginx для проксирования на наш чат
upstream rc {
server 127.0.0.1:3000;
}
# let rc deal with the redirection
server {
listen 80;
server_name
rc.itc-life.ru
;
server_tokens off;
root /dev/null;
access_log /dev/null;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl http2;
server_name
rc.itc-life.ru
;
server_tokens off;
root /dev/null;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl.d/itc-life.ru/certificate.crt;
ssl_certificate_key /etc/nginx/ssl.d/itc-life.ru/private.key;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:2m;
ssl_stapling on;
ssl_stapling_verify on;
access_log /dev/null;
location / {
proxy_pass http://rc;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
Передергиваем nginx и заходим на наш чат.
nginx -s reload
Зайдем на наш созданный rocket char
rc.itc-life.ru
ОК. ВСё запустилось. Заполняем данные для первого входа, потом немного подождем и если ничего не произойдет, обновим страницу.
Залогинимся.
Первочанальная настройка
Настроим размер загружаемых файлов и другое тут
Включим обсуждения и потоки
Настроим сообщения
Настроим учетные записи
здесь можно включить двухфакторную авторизацию
Настройка OPENLDAP интеграции для rocket-chat
Некоторые моменты. В openldap у пользователй у вас должны быть слеюущие поля:
cn – это будет логином для входа в чат
Email – email user
JpegPhote – user photo
givenName – имя
-sn – фамилия
Приводим к виду как у меня на скринах. А именно.
И нажимаем кнопку выполнить синхронизацю сейчас.
Установка клиентов на ubuntu
sudo snap install rocketchat-desktop
Установка клиентов на телефон
В магазинах есть оф приложения.