Changes

From SME Server
Jump to navigationJump to search
1,128 bytes removed ,  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
  −
  −
==Current version==
  −
  −
11th Jan 2018
  −
  −
Current RPM in my repo is 0.59.6
  −
  −
https://reetspetit.com/smeserver/6/repoview/rocketchat.html
  −
  −
Latest source is here:
     −
https://github.com/RocketChat/Rocket.Chat/tags
+
===Version===
 +
{{ #smeversion: smeserver-rocketchat }}
   −
{{Note box|Latest Development version is 0.60.4 but this is not working correctly due to upgrades to node and requiring a prebuilt fibers module.
  −
It will work by starting it manually with 'node main.js'}}
      
==Required repos==
 
==Required repos==
Line 25: Line 16:     
* [[epel]]
 
* [[epel]]
* [[Centos-sclo-rh]]
+
* [[mongoDB]]
 +
* [[Docker]]
 
* [[User:ReetP|reetp]]  
 
* [[User:ReetP|reetp]]  
* [[Fws]]
  −
  −
/sbin/e-smith/db yum_repositories set epel repository \
  −
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 \
  −
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 \
+
===Installation===
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 nodejs8 \
+
There is now a smeserver-rocketchat contrib to install Rocket.Chat with docker.
repository Name 'Node JS 8' \
  −
BaseURL https://rpm.nodesource.com/pub_8.x/el/6/x86_64 \
  −
EnableGroups no GPGCheck no Visible yes status disabled
     −
signal-event yum-modify
+
Install Mongo DB natively as per the wiki page https://wiki.koozali.org/MongoDB
   −
yum --enablerepo=nodejs install nodejs nodejs-devel
+
Currently it is suggested to use Mongo 4.4
   −
==RocketChat 0.40+==
+
Mongo 5+ requires additional instructions in the CPU that older CPUs may not have. See teh wiki page for more.
   −
From Rocketchat 0.40 onwards you require a higher version of node than the one in the SCL repos.
+
Do not go further than initiating the replicaset. Users are not required.
   −
Rocket.Chat v 49.0+ requires:
+
Next install smeserver-docker following the wiki page https://wiki.koozali.org/Docker
node: v4.7.2
  −
npm: v3.10.9
     −
This can be installed from the node repo
     −
===Setup node versions:===
     −
Install node version
+
Settings
n 4.7.2
     −
  [root@test ~]# node -v
+
  config set rocketchat service TCPPort 3000 mailPort 25 mailURL localhost access private status enabled SSLProxy yes Version 5.4.9 rootURL chat.domain.com
v4.7.2
     −
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 ~]# 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 - it is better to specify a version here in case a newer version breaks anything:
  −
yum --enablerepo=reetp install rocketchat-0.59.6
  −
  −
Check the progress:
  −
tailf /var/log/rocketchat.log
      
  System ➔ startup
 
  System ➔ startup
Line 136: Line 68:  
  mongo
 
  mongo
 
  use rocketchat
 
  use rocketchat
  db.rocketchat_settings.update({"_id" <nowiki>: "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
+
  db.rocketchat_settings.update({"_id" : "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
  db.rocketchat_settings.update({"_id"</nowiki> <nowiki>: "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
+
db.rocketchat_settings.update({"_id": "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
  exit</nowiki>
+
      exit<
   −
Restart Rocket.Chat to be sure:
     −
service rocketchat restart
+
===Reverse proxy===
   −
You should now be able to register a new account and get a confirmation email. Check /var/log/qpsmtpd/current for any errors.
+
Now we need to setup our subdomain for the reverse proxy
 
  −
If you have not set the From address you are likely to get:
  −
 
  −
Mail with no From header not accepted here
  −
 
  −
===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 (see here for my contrib https://wiki.contribs.org/Letsencrypt)
  −
 
  −
We need some extra settings to enable SSL with ProxyPass.
  −
 
  −
Add the FWS repo:
  −
 
  −
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 202: Line 90:     
  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
  −
 
  −
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
  −
signal-event remoteaccess-update
     −
You may find you need to clear your browser cache before it works correctly on https://chat.mycompany.local rather than http://chat.mycompany.local:3000
+
Now start the docker container (always run compose from the docker directory)
   −
IF you have Letsencrypt support you can now set your main domain to SSL only:
+
cd /home/e-smith/files/docker/configs
 +
docker-compose up -d rocketchat
 +
docker logs -f rocketchat
    
  db accounts setprop Primary SSL enabled
 
  db accounts setprop Primary SSL enabled
 
  signal-event ibay-modify Primary
 
  signal-event ibay-modify Primary
   −
===Upgrades===
  −
  −
To upgrade rocketchat:
  −
  −
yum --enablerepo=reetp install rocketchat
  −
  −
To upgrade the rocketchat configurator:
  −
  −
yum --enablerepo=reetp install smeserver-rocketchat
  −
  −
===Bugs===
  −
  −
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.
  −
  −
==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
  −
/etc/rc.d/init.d/rh-mongodb26-mongos start
  −
  −
==Mongod fails to start after reboot==
  −
  −
Sometimes it appears that mongo fails to start after a reboot.
  −
  −
I believe that this may be caused due to rocketchat being run by the forever service which means that rocketchat tries to keep running as the server shuts down despite mongod being stopped. This leaves lock files and prevents mongod from restarting properly. I think I probably need to look at the shutdown/start order of scripts.
  −
  −
A simple cure is as follows:
  −
  −
/etc/rc.d/init.d/rh-mongodb26-mongod stop
  −
  −
Remove the following files if they exist:
  −
  −
rm /var/opt/rh/rh-mongodb26/lib/mongodb/mongod.lock
  −
rm /var/opt/rh/rh-mongodb26/run/mongodb/mongod.pid
  −
  −
Restart the mongod service:
     −
/etc/rc.d/init.d/rh-mongodb26-mongod start
+
==Bugs==
   −
Restart the rocketchat service:
+
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}}.
   −
service rocketchat restart
     −
The following is simpler and appears to work:
+
{{#bugzilla:columns=id,product,version,status,summary |sort=id |order=desc |disablecache=1 |component=smeserver-rocketchat |noresultsmessage="No open bugs found."}}
   −
service rocketchat stop
  −
/etc/rc.d/init.d/rh-mongodb26-mongod restart
  −
service rocketchat start
      
==Mongo DB examples==
 
==Mongo DB examples==
Line 288: Line 129:  
  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" <nowiki>: "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
+
  db.rocketchat_settings.update({"_id":"From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
  db.rocketchat_settings.update({"_id"</nowiki> <nowiki>: "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})</nowiki>
+
db.rocketchat_settings.update({"_id":"SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
      Line 301: Line 146:  
Help
 
Help
 
  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
 +
 +
For listing out any passwords in the database I used:
 +
 +
  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===
 
===Database Backup===
Line 313: Line 208:     
  mongorestore --restoreDbUsersAndRoles -d rocketchat -dir  /root/rocketchatmongo/rocketchat --quiet
 
  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 366: 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