Changes

From SME Server
Jump to navigationJump to search
5,335 bytes added ,  14:08, 7 October 2020
no edit summary
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''']]
 +
However, due to dependencies a manual install will not work on SME}}Version up to 0.61.2 will work with this contrib.
 +
 
 +
Later versions will need my newer smeserver-rocketchat-0.2.x contrib which uses docker.
 +
 
 
==smeserver-rocketchat contrib==
 
==smeserver-rocketchat contrib==
 
{{WIP box}}
 
{{WIP box}}
Line 7: Line 11:  
==Current version==
 
==Current version==
   −
4th July 2017
+
3rd March 2018
Current RPM in my repo is 0.57.0
+
 
 +
Rocket RPM in my repo is 0.61.2
 +
 
 +
0.61.2 is likely to be the last version that can be installed direct to CentOS 6/ Koozali SME v9.x due to node module dependency requirements
 +
 
 +
I have tried to build 0.62.0 so far without success see this bug https://github.com/RocketChat/Rocket.Chat/issues/9943
    
https://reetspetit.com/smeserver/6/repoview/rocketchat.html
 
https://reetspetit.com/smeserver/6/repoview/rocketchat.html
      
Latest source is here:
 
Latest source is here:
    
https://github.com/RocketChat/Rocket.Chat/tags
 
https://github.com/RocketChat/Rocket.Chat/tags
 +
 +
{{Note box|Latest version is 0.61.2
 +
This requires node 8.x and a prebuilt module which the RPM should install}}I am currently looking at running Rocket 0.62 on docker in CentOS 6 which I do have working using the existing local Mongo DB
 +
 +
I will post a link to a new wiki page when I have it tested further and know what I am doing with Docker
    
==Required repos==
 
==Required repos==
Line 50: Line 63:  
  EnableGroups no Visible yes status disabled
 
  EnableGroups no Visible yes status disabled
   −
  /sbin/e-smith/db yum_repositories set nodejs \
+
  /sbin/e-smith/db yum_repositories set nodejs8 \
  repository Name 'Node JS 4' \
+
  repository Name 'Node JS 8' \
  BaseURL https://rpm.nodesource.com/pub_4.x/el/6/x86_64 \
+
  BaseURL https://rpm.nodesource.com/pub_8.x/el/6/x86_64 \
 
  EnableGroups no GPGCheck no Visible yes status disabled
 
  EnableGroups no GPGCheck no Visible yes status disabled
    
  signal-event yum-modify
 
  signal-event yum-modify
   −
  yum --enablerepo=nodejs install nodejs nodejs-devel
+
  yum --enablerepo=nodejs8 install nodejs nodejs-devel
 
      
==RocketChat 0.40+==
 
==RocketChat 0.40+==
Line 64: Line 76:  
From Rocketchat 0.40 onwards you require a higher version of node than the one in the SCL repos.
 
From Rocketchat 0.40 onwards you require a higher version of node than the one in the SCL repos.
   −
Rocket.Chat v 49.0+ requires:
+
Rocket.Chat v 60.0+ requires:
node: v4.7.2
+
node: v8.9.3
npm: v3.10.9
+
npm: v5.6.0
   −
This can be installed from the node repo
+
This can be installed from the node repo. The following is how to check and set up node versions manually - the rpm should sort this out for you.
    
===Setup node versions:===
 
===Setup node versions:===
   −
Install node version
+
Some of this is magic (to me!) and I still don't get the local and global stuff. Be careful with paths. See NPM Usage below for more.
n 4.7.2
     −
[root@test ~]# node -v
+
The node rpm install node to /usr/bin but the npm 'n' module will install to /usr/local/bin
v4.7.2
     −
Install latest version:
+
Check the version of node in /usr/bin
npm install -g npm
     −
Install specific version:
+
[root@test ~]# node -v
  npm install -g npm@3.10.9
+
  v8.9.3
    
Install n version manager:
 
Install n version manager:
 
  npm install -g n
 
  npm install -g n
 +
Install specific node version (which will go in /usr/local/bin)<syntaxhighlight>
 +
n 8.9.3
 +
</syntaxhighlight>Install the LTS version<syntaxhighlight>
 +
n lts
 +
</syntaxhighlight>List available versions<syntaxhighlight>
 +
n ls
 +
</syntaxhighlight>Install latest version of npm:
 +
npm install -g npm
   −
  [root@test ~]# npm --version
+
Install specific npm version:
3.10.9
+
  npm install -g npm@5.6.0
 +
Show the npm version<syntaxhighlight>
 +
[root@test ~]# npm --version
 +
5.6.0
 +
</syntaxhighlight>
   −
yum --enablerepo=centos-sclo-rh,epel install scl-utils rh-python34-python rh-mongodb26-mongodb rh-mongodb26-mongodb-server \
+
=== Install required rpms ===
GraphicsMagick  
+
<syntaxhighlight>
 +
yum --enablerepo=centos-sclo-rh,epel install scl-utils rh-python34-python rh-mongodb26-mongodb rh-mongodb26-mongodb-server \
 +
GraphicsMagick  
 +
</syntaxhighlight>
    
You should be able to install the smeserver-rocketchat RPM now
 
You should be able to install the smeserver-rocketchat RPM now
Line 104: Line 128:  
  signal-event post-upgrade;signal-event reboot
 
  signal-event post-upgrade;signal-event reboot
   −
Now we should be able to install rocketchat itself
+
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
+
  yum --enablerepo=reetp install rocketchat-0.59.6
    
Check the progress:
 
Check the progress:
Line 135: Line 159:  
  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:
 
Restart Rocket.Chat to be sure:
Line 156: Line 180:  
Check /var/log/rocketchat.log
 
Check /var/log/rocketchat.log
   −
Try running main.js
+
Try running main.js manually:<syntaxhighlight>
/opt/Rocket.Chat
+
export PORT=3000
node main.js
+
export MAIL_URL=smtp://localhost:25
 +
export MONGO_URL=mongodb://localhost:27017/rocketchat
 +
export ROOT_URL=http://my.smeserver.net/opt/Rocket.Chat
 +
node main.js
 +
</syntaxhighlight>
    
===SSL with Proxypass===
 
===SSL with Proxypass===
Line 185: Line 213:  
  signal-event remoteaccess-update
 
  signal-event remoteaccess-update
   −
Now we need to setup our subdomain
+
Now we need to setup our subdomain for the reverse proxy
    
  db domains set chat.mycompany.local domain Description RocketChat Nameservers internet \
 
  db domains set chat.mycompany.local domain Description RocketChat Nameservers internet \
Line 277: Line 305:     
  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"})
Line 284: Line 318:  
  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); } )"
   −
  db.rocketchat_settings.update({"_id" : "From_Email"}, {$set: {"value":"admin@yourdomain.com"}})
+
Log into rocketchat database:
  db.rocketchat_settings.update({"_id" : "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}})
+
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 357: Line 447:  
     mongoURL=localhost
 
     mongoURL=localhost
 
     status=enabled
 
     status=enabled
 +
 +
==Koozali SME v10==
 +
 +
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
 +
 +
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
 +
https://docs.rocket.chat/installation/manual-installation/centos
 +
 +
I'll add more later, and try and make a full contrib in due course
 +
 +
===CentOS 7 notes===
 +
 +
Setup storage engine and replication for MongoDB (mandatory for versions > 1), and enable and start MongoDB and Rocket.Chat:
 +
 +
They still recommend mmapv1 but it is probably better to stick with the default WiredTiger. Here's how to change if required:
 +
 +
sed -i "s/^#  engine:/  engine: mmapv1/"  /etc/mongod.conf
 +
 +
You MUST initialise a replicaset so we must add this to the conf file:
 +
 +
sed -i "s/^#replication:/replication:\n  replSetName: rs01/" /etc/mongod.conf
 +
 +
Start Mongo
 +
 +
systemctl enable mongod && sudo systemctl start mongod
 +
 +
Initiate the set:
 +
 +
mongo --eval "printjson(rs.initiate())"

Navigation menu