Changes

From SME Server
Jump to navigationJump to search
723 bytes added ,  17:57, 26 July 2023
no edit summary
Line 1: Line 1: −
==How to install MongoDB 4.0==
+
==How to install MongoDB==
   −
{{Note box| All info is based on SME Server 9 only but I have just started to test on v10 - see notes below}}
+
{{Note box| Manual configuration required}}
   −
===Install Official Repository===
+
MongoDB 5.0+ requires the AVX CPU instruction set
   −
This should work for every version of Koozali SME
+
lscpu |grep avx
   −
You may need to change the mongodb version as required
+
===Install Official Repository===
   −
db yum_repositories set mongodb repository \
+
Use ExtraRepositories from here
                BaseURL https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/\$basearch/ \
  −
                EnableGroups no \
  −
                GPGCheck yes \
  −
                Name "MongoDB" \
  −
                GPGKkey https://www.mongodb.org/static/pgp/server-4.0.asc \
  −
                Visible no \
  −
                status disabled
     −
signal-event yum-modify
+
https://wiki.koozali.org/Extrarepositories
   −
yum install mongodb-org --enablerepo=mongodb
+
Note that versions are available from 4.0/1/2/3/4 -> 5.0 -> 6.0
   −
If refuses to install because of no GPG Key you can change '''GPGCheck''' above from '''Yes''' to '''No''' and try '''yum install...'''  again or
+
Please check which versions are deprecated - they should not be used.
   −
rpm --import https://www.mongodb.org/static/pgp/server-4.0.asc
+
https://www.mongodb.com/support-policy/lifecycles
   −
Or
+
As of July 2022 the oldest supported version is 4.2 until April 2023
   −
  yum install mongodb-org --enablerepo=mongodb --nogpgcheck
+
  yum install smeserver-extrarepositories-mongodb
   −
===Start Mongo===
+
signal-event yum-modify
   −
{{Warning box|Please check additional notes below before trying this section}}
+
Install your chosen version:
   −
{{Note box|If you start mongo like this you will run mongo as root.
+
yum --enablerepo=mongodb4.2 install mongodb-org
When mongo later tries to start automatically it may fail because it will be started as the mongod user and won't be able to access the DB files.}}
     −
  /etc/init.d/mongod start
+
If refuses to install because of no GPG Key you can change '''GPGCheck''' above from '''Yes''' to '''No''' and try '''yum install...''' again or
   −
Add the symlinks to start automatically:
+
rpm --import https://www.mongodb.org/static/pgp/server-4.0.asc
   −
ln -s /etc/init.d/mongod /etc/rc.d/rc6.d/K03mongodb
+
Or
ln -s /etc/init.d/mongod /etc/rc.d/rc7.d/S57mongodb
     −
Optional: create symlink to use mongo or mongodb as service name
+
  yum --enablerepo=mongodb4.2 install mongodb-org --nogpgcheck
   −
ln /etc/init.d/mongod /etc/init.d/mongodb
+
===Starting Mongo===
 
  −
To ensure everything is all right:
  −
 
  −
signal-event post-upgrade
  −
signal-event reboot
  −
 
  −
===Additional Notes===
  −
 
  −
Note - I need to test this again This is my initial observation.
  −
 
  −
As far as I can see, the link above to mongodb is not necessary.
  −
 
  −
It may need this to set on and off correctly in other service levels:
  −
 
  −
chkconfig mongod on
  −
 
  −
Create a service link in in rc7.d:
  −
 
  −
ln -s /etc/init.d/mongod /etc/rc.d/rc7.d/S57mongod
  −
 
  −
To use e-smith-service it will need a key:
  −
 
  −
config set mongod service status enabled
  −
 
  −
You should now be able to do:
  −
 
  −
service mongod start|stop|restart etc
  −
 
  −
Mongo should come up on boot.
  −
 
  −
 
  −
==Koozali SME v10==
      +
{{Warning box|Please check additional notes below before trying this section}}
 
{{Warning box| Complete work in progress - here be Dragons!}}
 
{{Warning box| Complete work in progress - here be Dragons!}}
  −
===Install===
  −
  −
WIP
  −
  −
db yum_repositories set mongodb42 repository \
  −
              BaseURL [https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.2/$basearch/ https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.2/\$basearch/] \
  −
              EnableGroups no \
  −
              GPGCheck yes \
  −
              Name "MongoDB" \
  −
              GPGKey https://www.mongodb.org/static/pgp/server-4.2.asc \
  −
              Visible no \
  −
              status disabled
  −
  −
  −
Use the above method to add the repo and then:
  −
  −
yum --enablerepo=mongodb install mongodb-org
      
We need a db config entry for SME to recognise it:
 
We need a db config entry for SME to recognise it:
Line 117: Line 59:  
  WantedBy=sme-server.target
 
  WantedBy=sme-server.target
   −
===Using keys===
+
===Configuration File===
 
  −
config setprop mongod service status enabled
      
Minimal config I use for Rocket.Chat
 
Minimal config I use for Rocket.Chat
Line 141: Line 81:  
   port: 27017
 
   port: 27017
 
   bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
 
   bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
 +
# Enable replication for Rocket.Chat
 
  replication:
 
  replication:
 
   replSetName: rs0
 
   replSetName: rs0
 +
 +
 +
Once started you need to initialise the replicaset. Make sure to exit from the mongo instance and run from the cli:
 +
 +
mongo --eval "printjson(rs.initiate())"
 +
 +
You should now have a working mongoDB good enough to use with Rocket.Chat
 +
 +
 +
===Other settings===
 +
 +
nano /etc/security/limits.conf
 +
 +
These settings are automatically added during installation
 +
 +
@mongod      soft        nproc      unlimited
 +
@mongod      hard      nproc        unlimited
 +
@mongod      soft      nofile      64000
 +
@mongod      hard      nofile      64000
 +
 +
Adding a user
 +
 +
https://www.linode.com/docs/guides/install-mongodb-on-centos-7/
 +
 +
use admin
 +
 +
db.createUser(
 +
  {
 +
    user: "admin",
 +
    pwd: "admin123",
 +
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
 +
  }
 +
)
 +
 +
show users
 +
 +
We can then set Mongo to force authentication when connecting.
 +
 +
nano /usr/lib/systemd/system/mongod.service.d/50koozali.conf
 +
 +
Add:
 +
 +
[Service]
 +
Environment="OPTIONS=--auth -f /etc/mongod.conf"
 +
 +
Restart Mongo
 +
 +
systemctl restart mongod
 +
 +
You should now need a password to login.
 +
 +
===Templating mongod.conf===
 +
 +
This is possible but we need to create a new file so we do not overwrite the original - otherwise yum/rpm will complain.
 +
 +
Something like /etc/mongod/mongod.conf
 +
 +
Template fragments in
 +
 +
/etc/e-smith/templates/etc/mongod/mongod.conf
 +
 +
We can then amend the systemd overrride
 +
 +
nano /usr/lib/systemd/system/mongod.service.d/50koozali.conf
 +
 +
Add this:
 +
 +
[Service]
 +
Environment="OPTIONS=-f /etc/mongod/mongod.conf"
 +
 +
===Dump and restore===
 +
 +
Samples - YMMV.
 +
 +
Quick little script to dump the Rocket.Chat collection:
 +
 +
#!bin/bash
 +
echo "Dump with Users/Roles"
 +
mongodump --dumpDbUsersAndRoles -d rocketchat -o /root/backup/rocketchatmongo
 +
echo "dump all"
 +
mongodump -d rocketchat -o /root/backup/rocketchatmongo-all
 +
 +
 +
{{Warning box| Do not restore between versions!!}}
 +
 +
If you export from a version eg 4.0 then restore to that version. Do not try and restore 4.0 to 4.2 or higher.
 +
 +
Then change your repo, and then upgrade mongo.
 +
 +
To restore:
 +
 +
mongorestore /root/backup/rocketchatmongo-all
 +
 +
===Backup with system===
 +
 +
With credit to Daniel Berteaud
 +
 +
Action script to dump the mongo DB on pre-backup event
 +
 +
mkdir -p /home/e-smith/db/mongo
 +
 +
cat <<_EOF > /etc/e-smith/events/actions/mongodb-dump
 +
#!/bin/bash -e
 +
/usr/bin/mongodump --quiet --out /home/e-smith/db/mongo/
 +
_EOF
 +
 +
chmod +x /etc/e-smith/events/actions/mongodb-dump
 +
cd /etc/e-smith/events/pre-backup
 +
ln -s ../actions/mongodb-dump ./S60mongodb-dump
    
===Vaporise or reinitialise the database===
 
===Vaporise or reinitialise the database===
Line 165: Line 215:  
[[Category:Howto]]
 
[[Category:Howto]]
 
[[Category:Administration]]
 
[[Category:Administration]]
 +
[[Category:Database]]

Navigation menu