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+==
| |
− |
| |
− | From Rocketchat 0.40 onwards you require a higher version of node than the one in the SCL repos.
| |
− |
| |
− | Rocket.Chat v 48.1 requires:
| |
− | node: v4.6.2
| |
− | npm: v3.10.9
| |
− |
| |
− | Rocket.Chat v 49.0 requires:
| |
− | node: v4.7.2
| |
− |
| |
− | This can be installed from the node repo
| |
− |
| |
− | ===Setup===
| |
− |
| |
− | Add the following repos:
| |
− |
| |
− | /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 \
| |
− | 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 \
| + | ===Installation=== |
− | 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
| + | There is now a smeserver-rocketchat contrib to install Rocket.Chat with docker. |
| | | |
− | yum --enablerepo=nodejs install nodejs nodejs-devel
| + | Install Mongo DB natively as per the wiki page https://wiki.koozali.org/MongoDB |
| | | |
− | Setup node versions:
| + | Currently it is suggested to use Mongo 4.4 |
| | | |
− | Install latest version:
| + | Mongo 5+ requires additional instructions in the CPU that older CPUs may not have. See teh wiki page for more. |
− | npm install -g npm
| |
| | | |
− | Install specific version:
| + | Do not go further than initiating the replicaset. Users are not required. |
− | npm install -g npm@3.10.9
| |
| | | |
− | Install n version manager:
| + | Next install smeserver-docker following the wiki page https://wiki.koozali.org/Docker |
− | 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 \
| + | Settings |
− | GraphicsMagick
| |
| | | |
− | You should be able to install the smeserver-rocketchat RPM now
| + | config set rocketchat service TCPPort 3000 mailPort 25 mailURL localhost access private status enabled SSLProxy yes Version 5.4.9 rootURL chat.domain.com |
| | | |
− | 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 124: |
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. Check /var/log/qpsmtpd/current for any errors.
| |
− | | |
− | 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=== | + | ===Reverse proxy=== |
− | {{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)
| + | Now we need to setup our subdomain for the reverse proxy |
− | | |
− | 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 189: |
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:
| + | Now start the docker container (always run compose from the docker directory) |
| | | |
− | config setprop rocketchat access private | + | cd /home/e-smith/files/docker/configs |
− | signal-event remoteaccess-update | + | docker-compose up -d rocketchat |
| + | docker logs -f rocketchat |
| | | |
− | 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
| + | db accounts setprop Primary SSL enabled |
| + | signal-event ibay-modify Primary |
| | | |
− | IF you have Letsencrypt support you can now set your main domain to SSL only:
| |
| | | |
− | db accounts setprop Primary SSL enabled
| + | ==Bugs== |
− | signal-event ibay-modify Primary
| |
| | | |
− | ===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 225: |
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 |
| + | |
| + | 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=== |
| + | |
| + | 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 |
| | | |
− | db.rocketchat_settings.update({"_id" : "From_Email"}, {$set: {"value":"admin@yourdomain.com"}}) | + | mongo |
− | db.rocketchat_settings.update({"_id" : "SMTP_Host"}, {$set: {"value":"mail.yourdomain.com"}}) | + | 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 288: |
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."}} |