Changes

From SME Server
Jump to navigationJump to search
1,774 bytes added ,  16:49, 15 November 2023
Line 1: Line 1: −
'''[[Rocket_Chat#smeserver-rocketchat_contrib|Contrib]]''': [mailto:jcrisp@safeandsound.co.uk[[User:ReetP|John Crisp]]]
+
'''[[Rocket_Chat#smeserver-rocketchat_contrib|Contrib]]''': [mailto:jcrisp@safeandsound.co.uk][[User:ReetP|John Crisp]]
{{Note box|Please note that there is also a howto on manually installing Rocket.Chat [[Rocket_Chat|'''here''']]}}
+
{{Note box|Please note that there is also a howto on manually installing Rocket.Chat [[Rocket_Chat|'''here''' This is largely obsolete.]]}}
 +
 
 +
Later versions will need my newer smeserver-rocketchat-0.4.x contrib which uses docker.
 +
 
 
==smeserver-rocketchat contrib==
 
==smeserver-rocketchat contrib==
 
{{WIP box}}
 
{{WIP box}}
This contrib aims to reduce some of the setup for rocketchat and add some flexibility with settings
+
 
 +
===Version===
 +
{{ #smeversion: smeserver-rocketchat }}
 +
 
 +
 
 +
==Required repos==
    
Add repos:
 
Add repos:
    
* [[epel]]
 
* [[epel]]
* [[Centos-sclo-rh]]
+
* [[mongoDB]]
 +
* [[Docker]]
 
* [[User:ReetP|reetp]]  
 
* [[User:ReetP|reetp]]  
* [[Fws]]
     −
==RocketChat 0.40+==
+
===Installation===
   −
From Rocketchat 0.40 onwards you require a higher version of node than the one in the EPEL repos.
+
There is now a smeserver-rocketchat contrib to install Rocket.Chat with docker.
   −
Rocket.Chat v 48.1 requires:
+
Install Mongo DB natively as per the wiki page https://wiki.koozali.org/MongoDB
node: v4.6.2
  −
npm: v3.10.9
     −
===Setup===
+
Currently it is suggested to use Mongo 4.4
   −
Add the following repos:
+
Mongo 5+ requires additional instructions in the CPU that older CPUs may not have. See teh wiki page for more.
   −
/sbin/e-smith/db yum_repositories set epel repository \
+
Do not go further than initiating the replicaset. Users are not required.
Name 'Epel - EL6' \
  −
BaseURL 'http://download.fedoraproject.org/pub/epel/6/$basearch' \
  −
MirrorList 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch' \
  −
EnableGroups no \
  −
GPGCheck yes \
  −
GPGKey http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL \
  −
Exclude perl-Razor-Agent \
  −
Visible no \
  −
status disabled
     −
/sbin/e-smith/db yum_repositories set reetp repository \
+
Next install smeserver-docker following the wiki page https://wiki.koozali.org/Docker
BaseURL http://www.reetspetit.com/smeserver/\$releasever \
  −
EnableGroups no \
  −
GPGCheck no \
  −
Name "ReetP Repo" \
  −
GPGKey http://www.reetspetit.com/RPM-GPG-KEY \
  −
Visible yes status disabled
     −
/sbin/e-smith/db yum_repositories set centos-sclo-rh \
  −
repository Name 'Centos-RH Software collections' \
  −
BaseURL 'http://mirror.centos.org/centos/$releasever/sclo/$basearch/rh/' \
  −
EnableGroups no Visible yes status disabled
     −
/sbin/e-smith/db yum_repositories set nodejs \
  −
repository Name 'Node JS 4' \
  −
BaseURL https://rpm.nodesource.com/pub_4.x/el/6/x86_64 \
  −
EnableGroups no GPGCheck no Visible yes status disabled
     −
signal-event yum-modify
+
Settings
   −
  yum --enablerepo=nodejs install nodejs nodejs-devel
+
  config set rocketchat service TCPPort 3000 mailPort 25 mailURL localhost access private status enabled SSLProxy yes Version 5.4.9 rootURL chat.domain.com
   −
Setup node versions:
  −
  −
Install latest version:
  −
npm install -g npm
  −
  −
Install specific version:
  −
npm install -g npm@3.10.9
  −
  −
Install n version manager:
  −
npm install -g n
  −
  −
[root@test ~]# node -v
  −
v4.7.0
  −
  −
[root@test ~]# npm --version
  −
3.10.9
  −
  −
yum --enablerepo=centos-sclo-rh,epel install scl-utils rh-python34-python rh-mongodb26-mongodb rh-mongodb26-mongodb-server \
  −
GraphicsMagick
  −
  −
You should be able to install the smeserver-rocketchat RPM now
  −
  −
yum --enablerepo=reetp install smeserver-rocketchat
  −
  −
Don't post-upgrade yet.
  −
  −
config set rocketchat service TCPPort 3000 mailPort 25 mailURL localhost access public status enabled
  −
config set rh-mongodb26-mongod service TCPPort 27017 mongoURL localhost access private status enabled
      
  signal-event post-upgrade;signal-event reboot
 
  signal-event post-upgrade;signal-event reboot
   −
Now we should be able to install rocketchat itself
  −
yum --enablerepo=reetp install rocketchat
  −
  −
Check the progress:
  −
tailf /var/log/rocketchat.log
      
  System ➔ startup
 
  System ➔ startup
Line 119: Line 69:  
  use rocketchat
 
  use rocketchat
 
  db.rocketchat_settings.update({"_id" : "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
 
  db.rocketchat_settings.update({"_id" : "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
  db.rocketchat_settings.update({"_id" : "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
+
  db.rocketchat_settings.update({"_id": "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
exit
+
      exit<
 
  −
Restart Rocket.Chat to be sure:
  −
 
  −
service rocketchat restart
  −
 
  −
You should now be able to register a new account and get a confirmation email
  −
 
  −
===Errors===
  −
 
  −
If you have issues make sure you stop the rocket chat service
  −
 
  −
service rocketchat stop
  −
 
  −
Check /var/log/rocketchat.log
  −
 
  −
Try running main.js
  −
/opt/Rocket.Chat
  −
node main.js
  −
 
  −
===SSL with Proxypass===
  −
{{Note box|This is still experimental and there may be issues with SSL only for the Primary iBay and Letsencrypt. You will need a minimum version of smeserver-rocketchat-0.1-5 }}
  −
 
     −
It is recommended to add Letsencrypt support as detailed below.
     −
We need some extra settings to enable SSL with ProxyPass.
+
===Reverse proxy===
   −
Add the FWS repo:
+
Now we need to setup our subdomain for the reverse proxy
 
  −
db yum_repositories set fws repository \
  −
BaseURL http://repo.firewall-services.com/centos/\$releasever \
  −
EnableGroups no GPGCheck yes \
  −
Name "Firewall Services" \
  −
GPGKey http://repo.firewall-services.com/RPM-GPG-KEY \
  −
Visible yes status disabled
  −
 
  −
Update the repos:
  −
signal-event yum-modify
  −
 
  −
Install proxy pass rpm:
  −
yum --enablerepo=fws install mod_proxy_wstunnel
  −
 
  −
Regenerate httpd.conf
  −
signal-event remoteaccess-update
  −
 
  −
Now we need to setup our subdomain
      
  db domains set chat.mycompany.local domain Description RocketChat Nameservers internet \
 
  db domains set chat.mycompany.local domain Description RocketChat Nameservers internet \
Line 173: Line 82:  
It should look like this:
 
It should look like this:
 
  chat.mycompany.local=domain
 
  chat.mycompany.local=domain
   Nameservers=internet
+
   Nameservers=internet (can be localhost)
 
   ProxyPassTarget=http://127.0.0.1:3000/
 
   ProxyPassTarget=http://127.0.0.1:3000/
 
   TemplatePath=ProxyPassVirtualRocketchat
 
   TemplatePath=ProxyPassVirtualRocketchat
 +
  letsencryptSSLcert=enabled (with letsencrypt support)
    
We need to set Rocket.Chat to listen on localhost now:
 
We need to set Rocket.Chat to listen on localhost now:
    
  config setprop rocketchat rootURL chat.mycompany.domain SSLProxy yes
 
  config setprop rocketchat rootURL chat.mycompany.domain SSLProxy yes
  signal-event remoteaccess-update
+
  signal-event smeserver-rocketchat-update
  service rocketchat restart
+
 
 +
Now start the docker container (always run compose from the docker directory)
 +
 
 +
  cd /home/e-smith/files/docker/configs
 +
docker-compose up -d rocketchat
 +
docker logs -f rocketchat
 +
 
 +
db accounts setprop Primary SSL enabled
 +
signal-event ibay-modify Primary
   −
If you can now successfully get to Rocketchat on your subdomain https://chat.mycompany.local you can disable default access on port 3000:
     −
config setprop rocketchat access private
+
==Bugs==
signal-event remoteaccess-update
     −
===Bugs===
+
Please raise bugs under the SME-Contribs section in {{BugzillaFileBug|product=|component=|title=bugzilla}}and select the smeserver-rocketchat component or use
Look for bugs :-) As the contrib is not in CVS please report them in the forum and I will try and keep an eye out.
+
{{BugzillaFileBug|product=SME%20Contribs|component=smeserver-rocketchat |title=this link}}.
   −
==Manual config of templates==
  −
expand-template /etc/rc.d/init.d/rocketchat
  −
expand-template /etc/profile.d/scls-rh-mongodb26.sh
  −
expand-template /etc/profile.d/scls-rh-python34.sh
  −
expand-template /etc/profile.d/scls-rh-java-common.sh
  −
expand-template /etc/opt/rh/rh-mongodb26/mongod.conf
     −
/etc/rc.d/init.d/rocketchat start
+
{{#bugzilla:columns=id,product,version,status,summary |sort=id |order=desc |disablecache=1 |component=smeserver-rocketchat |noresultsmessage="No open bugs found."}}
/etc/rc.d/init.d/rh-mongodb26-mongos start
         
==Mongo DB examples==
 
==Mongo DB examples==
 +
 +
===Usage===
    
Example using mongo itself:
 
Example using mongo itself:
Line 209: Line 120:     
  use rocketchat
 
  use rocketchat
 +
 +
Show all collections in DB
 +
show collections
 +
 +
Show all entries in a collection
 +
db.rocketchat_avatars.chunks.find()
    
  db.rocketchat_settings.find({"_id" : "SMTP_Host"})
 
  db.rocketchat_settings.find({"_id" : "SMTP_Host"})
 
  db.rocketchat_settings.find({"_id" : "From_Email"})
 
  db.rocketchat_settings.find({"_id" : "From_Email"})
 +
 +
db.getCollection("rocketchat_settings").find({"name":"Joe Blogs"})
 +
 +
db.getCollection("rocketchat_settings").find({"_id":{$regex:"^LDAP"}})
    
  db.rocketchat_settings.findOne({_id : "From_Email"}, {_id:0, value: 1})
 
  db.rocketchat_settings.findOne({_id : "From_Email"}, {_id:0, value: 1})
 
  db.rocketchat_settings.findOne({_id : "SMTP_Host"}, {_id:0, value: 1})
 
  db.rocketchat_settings.findOne({_id : "SMTP_Host"}, {_id:0, value: 1})
    +
db.rocketchat_settings.update({"_id":"From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
 +
db.rocketchat_settings.update({"_id":"SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
 +
 +
 +
Remove all entries in a collection (CAREFUL!!!!!!)
 +
db.rocketchat_avatars.chunks.remove({})
 +
 +
Help
 +
help
 +
 +
Some more mongo commands for reference
 +
 +
https://github.com/RocketChat/Rocket.Chat/issues/15880#issuecomment-570070433
 +
 +
Directly check a specific user ID from bash:
 +
mongo rocketchat --eval "db.users.find({'username':'usernamehere'}).forEach( function(u) { print(u._id + \" ; \" + u.username); } )"
 +
 +
Log into rocketchat database:
 +
mongo rocketchat
 +
 +
Check out all the user IDs in the database:
 +
db.users.find().forEach( function(u) { print(u._id + ";" + u.username); } )
 +
 +
Or just a specific user's ID:
 +
db.users.find({'username':'usernamehere'}).forEach( function(u) { print(u._id + \" ; \" + u.username); } )
 +
 +
Replace specific user ID's password in the database:
 +
db.users.update( {'_id': 'useridhere'}, {$set: {'services.password.bcrypt': 'bcryptedpasswordhere'}}, {multi:true} )
 +
 +
My only issue with above (only time I needed it for recovery purposes), was that I didn't know which tool to use to generate a bcrypted password. So in the hurry I copied the hash from one account I already knew (my own). If someone knows a good command for creating one directly in bash, I assume it would do.
 +
 +
There are bcrypt password generators online, and various libraries you can use
   −
db.rocketchat_settings.update({"_id" : "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
+
For listing out any passwords in the database I used:
  db.rocketchat_settings.update({"_id" : "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
+
 
 +
  db.users.find().forEach( function(u) { print(u.services.password.bcrypt + " ; " + u.username); } )
 +
 
 +
If you have deactivated users it may fail so use this for individual accounts.
 +
 
 +
However, you can get it for an individual user with:
 +
 
 +
db.users.find({'username':'SomeUserName'}).forEach( function(u) { print(u.services.password.bcrypt + " ; " + u.username); } )
 +
 
 +
Set a user config item:
 +
 
 +
db.users.update( {'username': 'SomeUserName'}, {$set: {'settings.preferences.showMessageInMainThread': 'true'}} )
 +
 
 +
Find a single user:
 +
 
 +
db.getCollection('users').find( {'username':'SomeUserName'} )
 +
 
 +
Get limited information:
 +
 
 +
db.getCollection('users').find({}, {"username":1, "settings.preferences.showMessageInMainThread":1})
 +
 
 +
Reset 2FA nonsense:
 +
 
 +
db.users.update({'username': 'SomeUserName'}, {$unset: {'services.totp': 1}});
 +
  db.users.update({'username': 'SomeUserName'}, {$unset: {'services.email2fa': 1}});
 +
 
 +
===Database Backup===
 +
 
 +
You can dump the tables to a directory of your choice:
 +
 
 +
mongodump --dumpDbUsersAndRoles -d rocketchat -o /root/rocketchatmongo
 +
 
 +
===Database Restore===
 +
 
 +
You can restore you database as follows:
 +
 
 +
mongorestore --restoreDbUsersAndRoles -d rocketchat -dir  /root/rocketchatmongo/rocketchat --quiet
 +
 
 +
===Database Fix tables===
 +
 
 +
To remove user data file links a variation on this link
 +
https://github.com/RocketChat/feature-requests/issues/718
 +
 
 +
mongo
 +
use rocketchat
 +
db.rocketchat_user_data_files.remove( { } )
 +
db.runCommand({ compact: 'rocketchat_user_data_files', force: true });
 +
quit;
    
==Node usage==
 
==Node usage==
 +
 +
* This should go to a new Node page for reference
    
Use n, an extremely simple Node version manager that can be installed via npm (See http://stackoverflow.com/questions/7718313/how-to-change-to-an-older-version-of-node-js)
 
Use n, an extremely simple Node version manager that can be installed via npm (See http://stackoverflow.com/questions/7718313/how-to-change-to-an-older-version-of-node-js)
Line 272: Line 274:  
     status=enabled
 
     status=enabled
   −
  rh-mongodb26-mongod=service
+
 
    TCPPort=27017
+
 
    access=private
+
==Koozali SME v10==
    mongoURL=localhost
+
 
    status=enabled
+
I am starting to look at running this under docker on v10
 +
 
 +
Some quick notes.
 +
 
 +
You will need
 +
 
 +
Docker
 +
https://wiki.contribs.org/Docker
 +
 
 +
Docker Compose (because it makes it easier to template)
 +
https://github.com/docker/compose/releases
 +
 
 +
Docker environment settings to disable 2FA
 +
 
 +
  - OVERWRITE_SETTING_Accounts_TwoFactorAuthentication_Enforce_Password_Fallback=false
 +
  - OVERWRITE_SETTING_Accounts_TwoFactorAuthentication_Enabled=false
 +
 
 +
Mongo (I prefer to run a full instance rather than a docker one)
 +
https://wiki.contribs.org/MongoDB
 +
 
 +
Make sure you add replicaset support in Mongo and set it up:
 +
 
 +
mongo --eval "printjson(rs.initiate())"
 +
 
 +
 
 +
I'll add more later, and try and make a full contrib in due course
 +
 
 +
FAQ
 +
 
 +
https://handbook.rocket.chat/company/tools/rocket.chat
 +
 
 +
==Bugs==
 +
 
 +
Please raise bugs under the SME-Contribs section in {{BugzillaFileBug|product=|component=|title=bugzilla}}and select the smeserver-rocketchat component or use
 +
{{BugzillaFileBug|product=SME%20Contribs|component=smeserver-rocketchat |title=this link}}.
 +
 
 +
 
 +
{{#bugzilla:columns=id,product,version,status,summary |sort=id |order=desc |disablecache=1 |component=smeserver-rocketchat |noresultsmessage="No open bugs found."}}

Navigation menu